From bc78a698b069c1aa8ad1615937286ee3ff45c1fa Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Tue, 7 Jul 2015 15:41:52 -0700 Subject: [PATCH 001/178] Added convenience method gpr_strjoin_sep --- src/core/support/string.c | 15 +++++++++++- src/core/support/string.h | 6 +++++ test/core/support/string_test.c | 42 +++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/src/core/support/string.c b/src/core/support/string.c index 6a80ccc841..f85f656da4 100644 --- a/src/core/support/string.c +++ b/src/core/support/string.c @@ -153,6 +153,12 @@ int gpr_ltoa(long value, char *string) { } char *gpr_strjoin(const char **strs, size_t nstrs, size_t *final_length) { + return gpr_strjoin_sep(strs, nstrs, "", final_length); +} + +char *gpr_strjoin_sep(const char **strs, size_t nstrs, const char *sep, + size_t *final_length) { + const size_t sep_len = strlen(sep); size_t out_length = 0; size_t i; char *out; @@ -160,12 +166,19 @@ char *gpr_strjoin(const char **strs, size_t nstrs, size_t *final_length) { out_length += strlen(strs[i]); } out_length += 1; /* null terminator */ + if (nstrs > 0) { + out_length += sep_len * (nstrs - 1); /* separators */ + } out = gpr_malloc(out_length); out_length = 0; for (i = 0; i < nstrs; i++) { - size_t slen = strlen(strs[i]); + const size_t slen = strlen(strs[i]); memcpy(out + out_length, strs[i], slen); out_length += slen; + if (sep_len > 0 && nstrs > 0 && i < nstrs - 1) { + memcpy(out + out_length, sep, sep_len); + out_length += sep_len; + } } out[out_length] = 0; if (final_length != NULL) { diff --git a/src/core/support/string.h b/src/core/support/string.h index 31e9fcb5e9..a4da485dce 100644 --- a/src/core/support/string.h +++ b/src/core/support/string.h @@ -72,6 +72,12 @@ void gpr_reverse_bytes(char *str, int len); if it is non-null. */ char *gpr_strjoin(const char **strs, size_t nstrs, size_t *total_length); +/* Join a set of strings using a separator, returning the resulting string. + Total combined length (excluding null terminator) is returned in total_length + if it is non-null. */ +char *gpr_strjoin_sep(const char **strs, size_t nstrs, const char *sep, + size_t *total_length); + /* A vector of strings... for building up a final string one piece at a time */ typedef struct { char **strs; diff --git a/test/core/support/string_test.c b/test/core/support/string_test.c index b59082eecf..24e28d68dd 100644 --- a/test/core/support/string_test.c +++ b/test/core/support/string_test.c @@ -145,11 +145,53 @@ static void test_asprintf(void) { } } +static void test_strjoin(void) { + const char *parts[4] = {"one", "two", "three", "four"}; + size_t joined_len; + char *joined; + + LOG_TEST_NAME("test_strjoin"); + + joined = gpr_strjoin(parts, 4, &joined_len); + GPR_ASSERT(0 == strcmp("onetwothreefour", joined)); + gpr_free(joined); + + joined = gpr_strjoin(parts, 0, &joined_len); + GPR_ASSERT(0 == strcmp("", joined)); + gpr_free(joined); + + joined = gpr_strjoin(parts, 1, &joined_len); + GPR_ASSERT(0 == strcmp("one", joined)); + gpr_free(joined); +} + +static void test_strjoin_sep(void) { + const char *parts[4] = {"one", "two", "three", "four"}; + size_t joined_len; + char *joined; + + LOG_TEST_NAME("test_strjoin_sep"); + + joined = gpr_strjoin_sep(parts, 4, ", ", &joined_len); + GPR_ASSERT(0 == strcmp("one, two, three, four", joined)); + gpr_free(joined); + + joined = gpr_strjoin_sep(parts, 0, ", ", &joined_len); + GPR_ASSERT(0 == strcmp("", joined)); + gpr_free(joined); + + joined = gpr_strjoin_sep(parts, 1, ", ", &joined_len); + GPR_ASSERT(0 == strcmp("one", joined)); + gpr_free(joined); +} + int main(int argc, char **argv) { grpc_test_init(argc, argv); test_strdup(); test_hexdump(); test_parse_uint32(); test_asprintf(); + test_strjoin(); + test_strjoin_sep(); return 0; } -- GitLab From 96ae8bbba2897e83c35ca733ed065bd26657bc48 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Tue, 7 Jul 2015 17:02:37 -0700 Subject: [PATCH 002/178] PR comments + some more tests. --- src/core/support/string.c | 6 +++--- test/core/support/string_test.c | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/core/support/string.c b/src/core/support/string.c index f85f656da4..8f59945c59 100644 --- a/src/core/support/string.c +++ b/src/core/support/string.c @@ -173,12 +173,12 @@ char *gpr_strjoin_sep(const char **strs, size_t nstrs, const char *sep, out_length = 0; for (i = 0; i < nstrs; i++) { const size_t slen = strlen(strs[i]); - memcpy(out + out_length, strs[i], slen); - out_length += slen; - if (sep_len > 0 && nstrs > 0 && i < nstrs - 1) { + if (i != 0) { memcpy(out + out_length, sep, sep_len); out_length += sep_len; } + memcpy(out + out_length, strs[i], slen); + out_length += slen; } out[out_length] = 0; if (final_length != NULL) { diff --git a/test/core/support/string_test.c b/test/core/support/string_test.c index 24e28d68dd..30d97de1a5 100644 --- a/test/core/support/string_test.c +++ b/test/core/support/string_test.c @@ -176,10 +176,17 @@ static void test_strjoin_sep(void) { GPR_ASSERT(0 == strcmp("one, two, three, four", joined)); gpr_free(joined); + /* empty separator */ + joined = gpr_strjoin_sep(parts, 4, "", &joined_len); + GPR_ASSERT(0 == strcmp("onetwothreefour", joined)); + gpr_free(joined); + + /* degenerated case specifying zero input parts */ joined = gpr_strjoin_sep(parts, 0, ", ", &joined_len); GPR_ASSERT(0 == strcmp("", joined)); gpr_free(joined); + /* single part should have no separator */ joined = gpr_strjoin_sep(parts, 1, ", ", &joined_len); GPR_ASSERT(0 == strcmp("one", joined)); gpr_free(joined); -- GitLab From 5d6789eb1c62771bb5d16a3de9736ea2cd1f543c Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 8 Jul 2015 19:45:03 -0700 Subject: [PATCH 003/178] Added missing bits from pr comments --- src/core/channel/compress_filter.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c index 058f920f16..bcaf7d706d 100644 --- a/src/core/channel/compress_filter.c +++ b/src/core/channel/compress_filter.c @@ -172,14 +172,18 @@ static void finish_not_compressed_sopb(grpc_stream_op_buffer *send_ops, sop->data.begin_message.flags &= ~GRPC_WRITE_INTERNAL_COMPRESS; break; case GRPC_OP_METADATA: - grpc_metadata_batch_add_head( - &(sop->data.metadata), &calld->compression_algorithm_storage, - grpc_mdelem_ref( - channeld->mdelem_compression_algorithms[GRPC_COMPRESS_NONE])); + if (!calld->seen_initial_metadata) { + grpc_metadata_batch_add_head( + &(sop->data.metadata), &calld->compression_algorithm_storage, + grpc_mdelem_ref( + channeld->mdelem_compression_algorithms[GRPC_COMPRESS_NONE])); + calld->seen_initial_metadata = 1; /* GPR_TRUE */ + } break; case GRPC_OP_SLICE: + break; case GRPC_NO_OP: - ; /* fallthrough */ + break; } } } -- GitLab From 0324758dfcb7eb7fadd3f2b6c5c9087a55fbff31 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 8 Jul 2015 20:13:41 -0700 Subject: [PATCH 004/178] Modified gpr_slice_split to take a char* separator. --- src/core/support/string.c | 11 +++++------ src/core/support/string.h | 2 +- test/core/support/string_test.c | 21 +++++++++------------ 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/core/support/string.c b/src/core/support/string.c index 74d98de5c1..9babbd910a 100644 --- a/src/core/support/string.c +++ b/src/core/support/string.c @@ -215,21 +215,20 @@ char *gpr_strjoin_sep(const char **strs, size_t nstrs, const char *sep, * * Returns 1 and updates \a begin and \a end. Returns 0 otherwise. */ static int slice_find_separator_offset(const gpr_slice str, - const gpr_slice sep, + const char *sep, const size_t read_offset, size_t *begin, size_t *end) { size_t i; const gpr_uint8 *str_ptr = GPR_SLICE_START_PTR(str) + read_offset; - const gpr_uint8 *sep_ptr = GPR_SLICE_START_PTR(sep); const size_t str_len = GPR_SLICE_LENGTH(str) - read_offset; - const size_t sep_len = GPR_SLICE_LENGTH(sep); + const size_t sep_len = strlen(sep); if (str_len < sep_len) { return 0; } for (i = 0; i <= str_len - sep_len; i++) { - if (memcmp(str_ptr + i, sep_ptr, sep_len) == 0) { + if (memcmp(str_ptr + i, sep, sep_len) == 0) { *begin = read_offset; *end = read_offset + i; return 1; @@ -238,8 +237,8 @@ static int slice_find_separator_offset(const gpr_slice str, return 0; } -void gpr_slice_split(gpr_slice str, gpr_slice sep, gpr_slice_buffer *dst) { - const size_t sep_len = GPR_SLICE_LENGTH(sep); +void gpr_slice_split(gpr_slice str, const char *sep, gpr_slice_buffer *dst) { + const size_t sep_len = strlen(sep); size_t begin, end; GPR_ASSERT(sep_len > 0); diff --git a/src/core/support/string.h b/src/core/support/string.h index 819ce4ac83..3ac4abeef8 100644 --- a/src/core/support/string.h +++ b/src/core/support/string.h @@ -86,7 +86,7 @@ char *gpr_strjoin_sep(const char **strs, size_t nstrs, const char *sep, /** Split \a str by the separator \a sep. Results are stored in \a dst, which * should be a properly initialized instance. */ -void gpr_slice_split(gpr_slice str, gpr_slice sep, gpr_slice_buffer *dst); +void gpr_slice_split(gpr_slice str, const char *sep, gpr_slice_buffer *dst); /* A vector of strings... for building up a final string one piece at a time */ typedef struct { diff --git a/test/core/support/string_test.c b/test/core/support/string_test.c index 7a58307d05..9023d0746b 100644 --- a/test/core/support/string_test.c +++ b/test/core/support/string_test.c @@ -223,7 +223,6 @@ static void test_strjoin_sep(void) { static void test_strsplit(void) { gpr_slice_buffer* parts; gpr_slice str; - gpr_slice sep; LOG_TEST_NAME("test_strsplit"); @@ -231,8 +230,7 @@ static void test_strsplit(void) { gpr_slice_buffer_init(parts); str = gpr_slice_from_copied_string("one, two, three, four"); - sep = gpr_slice_from_copied_string(", "); - gpr_slice_split(str, sep, parts); + gpr_slice_split(str, ", ", parts); GPR_ASSERT(4 == parts->count); GPR_ASSERT(0 == gpr_slice_str_cmp(parts->slices[0], "one")); GPR_ASSERT(0 == gpr_slice_str_cmp(parts->slices[1], "two")); @@ -243,15 +241,15 @@ static void test_strsplit(void) { /* separator not present in string */ str = gpr_slice_from_copied_string("one two three four"); - gpr_slice_split(str, sep, parts); + gpr_slice_split(str, ", ", parts); GPR_ASSERT(1 == parts->count); GPR_ASSERT(0 == gpr_slice_str_cmp(parts->slices[0], "one two three four")); gpr_slice_buffer_reset_and_unref(parts); gpr_slice_unref(str); /* separator at the end */ - str = gpr_slice_from_copied_string("foo, "); - gpr_slice_split(str, sep, parts); + str = gpr_slice_from_copied_string("foo,"); + gpr_slice_split(str, ",", parts); GPR_ASSERT(2 == parts->count); GPR_ASSERT(0 == gpr_slice_str_cmp(parts->slices[0], "foo")); GPR_ASSERT(0 == gpr_slice_str_cmp(parts->slices[1], "")); @@ -259,8 +257,8 @@ static void test_strsplit(void) { gpr_slice_unref(str); /* separator at the beginning */ - str = gpr_slice_from_copied_string(", foo"); - gpr_slice_split(str, sep, parts); + str = gpr_slice_from_copied_string(",foo"); + gpr_slice_split(str, ",", parts); GPR_ASSERT(2 == parts->count); GPR_ASSERT(0 == gpr_slice_str_cmp(parts->slices[0], "")); GPR_ASSERT(0 == gpr_slice_str_cmp(parts->slices[1], "foo")); @@ -268,8 +266,8 @@ static void test_strsplit(void) { gpr_slice_unref(str); /* standalone separator */ - str = gpr_slice_from_copied_string(", "); - gpr_slice_split(str, sep, parts); + str = gpr_slice_from_copied_string(","); + gpr_slice_split(str, ",", parts); GPR_ASSERT(2 == parts->count); GPR_ASSERT(0 == gpr_slice_str_cmp(parts->slices[0], "")); GPR_ASSERT(0 == gpr_slice_str_cmp(parts->slices[1], "")); @@ -278,13 +276,12 @@ static void test_strsplit(void) { /* empty input */ str = gpr_slice_from_copied_string(""); - gpr_slice_split(str, sep, parts); + gpr_slice_split(str, ", ", parts); GPR_ASSERT(1 == parts->count); GPR_ASSERT(0 == gpr_slice_str_cmp(parts->slices[0], "")); gpr_slice_buffer_reset_and_unref(parts); gpr_slice_unref(str); - gpr_slice_unref(sep); gpr_slice_buffer_destroy(parts); gpr_free(parts); } -- GitLab From b8edf7ed0131818fcd17aaf45db087a218760bc1 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 8 Jul 2015 20:18:57 -0700 Subject: [PATCH 005/178] WIP, code complete, missing tests. Asan passes. --- src/core/channel/compress_filter.c | 38 ++++++++++++++++++++++++++++++ src/core/compression/algorithm.c | 10 +++++--- src/core/surface/call.c | 34 +++++++++++++++++++++++--- src/core/surface/channel.c | 9 +++++++ src/core/surface/channel.h | 2 ++ 5 files changed, 87 insertions(+), 6 deletions(-) diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c index bcaf7d706d..102d37dea5 100644 --- a/src/core/channel/compress_filter.c +++ b/src/core/channel/compress_filter.c @@ -35,16 +35,20 @@ #include <string.h> #include <grpc/compression.h> +#include <grpc/support/alloc.h> #include <grpc/support/log.h> #include <grpc/support/slice_buffer.h> +#include <grpc/support/useful.h> #include "src/core/channel/compress_filter.h" #include "src/core/channel/channel_args.h" #include "src/core/compression/message_compress.h" +#include "src/core/support/string.h" typedef struct call_data { gpr_slice_buffer slices; grpc_linked_mdelem compression_algorithm_storage; + grpc_linked_mdelem accept_encoding_storage; int remaining_slice_bytes; int seen_initial_metadata; grpc_compression_algorithm compression_algorithm; @@ -54,7 +58,9 @@ typedef struct call_data { typedef struct channel_data { grpc_mdstr *mdstr_request_compression_algorithm_key; grpc_mdstr *mdstr_outgoing_compression_algorithm_key; + grpc_mdstr *mdstr_compression_capabilities_key; grpc_mdelem *mdelem_compression_algorithms[GRPC_COMPRESS_ALGORITHMS_COUNT]; + grpc_mdelem *mdelem_accept_encoding; grpc_compression_algorithm default_compression_algorithm; } channel_data; @@ -126,6 +132,10 @@ static void finish_compressed_sopb(grpc_stream_op_buffer *send_ops, break; case GRPC_OP_METADATA: if (!calld->seen_initial_metadata) { + grpc_metadata_batch_add_head( + &(sop->data.metadata), &calld->accept_encoding_storage, + grpc_mdelem_ref(channeld->mdelem_accept_encoding)); + grpc_metadata_batch_add_head( &(sop->data.metadata), &calld->compression_algorithm_storage, grpc_mdelem_ref(channeld->mdelem_compression_algorithms @@ -173,6 +183,10 @@ static void finish_not_compressed_sopb(grpc_stream_op_buffer *send_ops, break; case GRPC_OP_METADATA: if (!calld->seen_initial_metadata) { + grpc_metadata_batch_add_head( + &(sop->data.metadata), &calld->accept_encoding_storage, + grpc_mdelem_ref(channeld->mdelem_accept_encoding)); + grpc_metadata_batch_add_head( &(sop->data.metadata), &calld->compression_algorithm_storage, grpc_mdelem_ref( @@ -295,6 +309,9 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, int is_first, int is_last) { channel_data *channeld = elem->channel_data; grpc_compression_algorithm algo_idx; + const char* supported_algorithms_names[GRPC_COMPRESS_ALGORITHMS_COUNT-1]; + char *accept_encoding_str; + size_t accept_encoding_str_len; const grpc_compression_level clevel = grpc_channel_args_get_compression_level(args); @@ -307,6 +324,9 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, channeld->mdstr_outgoing_compression_algorithm_key = grpc_mdstr_from_string(mdctx, "grpc-encoding"); + channeld->mdstr_compression_capabilities_key = + grpc_mdstr_from_string(mdctx, "grpc-accept-encoding"); + for (algo_idx = 0; algo_idx < GRPC_COMPRESS_ALGORITHMS_COUNT; ++algo_idx) { char *algorith_name; GPR_ASSERT(grpc_compression_algorithm_name(algo_idx, &algorith_name) != 0); @@ -315,8 +335,24 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, mdctx, grpc_mdstr_ref(channeld->mdstr_outgoing_compression_algorithm_key), grpc_mdstr_from_string(mdctx, algorith_name)); + if (algo_idx > 0) { + supported_algorithms_names[algo_idx-1] = algorith_name; + } } + accept_encoding_str = + gpr_strjoin_sep(supported_algorithms_names, + GPR_ARRAY_SIZE(supported_algorithms_names), + ", ", + &accept_encoding_str_len); + + channeld->mdelem_accept_encoding = + grpc_mdelem_from_metadata_strings( + mdctx, + grpc_mdstr_ref(channeld->mdstr_compression_capabilities_key), + grpc_mdstr_from_string(mdctx, accept_encoding_str)); + gpr_free(accept_encoding_str); + GPR_ASSERT(!is_last); } @@ -327,10 +363,12 @@ static void destroy_channel_elem(grpc_channel_element *elem) { grpc_mdstr_unref(channeld->mdstr_request_compression_algorithm_key); grpc_mdstr_unref(channeld->mdstr_outgoing_compression_algorithm_key); + grpc_mdstr_unref(channeld->mdstr_compression_capabilities_key); for (algo_idx = 0; algo_idx < GRPC_COMPRESS_ALGORITHMS_COUNT; ++algo_idx) { grpc_mdelem_unref(channeld->mdelem_compression_algorithms[algo_idx]); } + grpc_mdelem_unref(channeld->mdelem_accept_encoding); } const grpc_channel_filter grpc_compress_filter = {compress_start_transport_stream_op, diff --git a/src/core/compression/algorithm.c b/src/core/compression/algorithm.c index e426241d0a..8a60b4ef48 100644 --- a/src/core/compression/algorithm.c +++ b/src/core/compression/algorithm.c @@ -37,11 +37,15 @@ int grpc_compression_algorithm_parse(const char* name, grpc_compression_algorithm *algorithm) { - if (strcmp(name, "none") == 0) { + /* we use strncmp not only because it's safer (even though in this case it + * doesn't matter, given that we are comparing against string literals, but + * because this way we needn't have "name" nil-terminated (useful for slice + * data, for example) */ + if (strncmp(name, "none", 4) == 0) { *algorithm = GRPC_COMPRESS_NONE; - } else if (strcmp(name, "gzip") == 0) { + } else if (strncmp(name, "gzip", 4) == 0) { *algorithm = GRPC_COMPRESS_GZIP; - } else if (strcmp(name, "deflate") == 0) { + } else if (strncmp(name, "deflate", 7) == 0) { *algorithm = GRPC_COMPRESS_DEFLATE; } else { return 0; diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 5f982f9f6e..04e5fc6b28 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -225,6 +225,9 @@ struct grpc_call { /* Compression algorithm for the call */ grpc_compression_algorithm compression_algorithm; + /* Supported encodings (compression algorithms) */ + gpr_uint8 accept_encoding[GRPC_COMPRESS_ALGORITHMS_COUNT]; + /* Contexts for various subsystems (security, tracing, ...). */ grpc_call_context_element context[GRPC_CONTEXT_COUNT]; @@ -433,15 +436,37 @@ static void set_compression_algorithm(grpc_call *call, call->compression_algorithm = algo; } +static void set_accept_encoding(grpc_call *call, + const gpr_slice accept_encoding_slice) { + size_t i; + grpc_compression_algorithm algorithm; + gpr_slice_buffer accept_encoding_parts; + + gpr_slice_buffer_init(&accept_encoding_parts); + gpr_slice_split(accept_encoding_slice, ", ", &accept_encoding_parts); + + memset(call->accept_encoding, 0, sizeof(call->accept_encoding)); + for (i = 0; i < accept_encoding_parts.count; i++) { + const gpr_slice* slice = &accept_encoding_parts.slices[i]; + if (grpc_compression_algorithm_parse( + (const char *)GPR_SLICE_START_PTR(*slice), &algorithm)) { + call->accept_encoding[algorithm] = 1; /* GPR_TRUE */ + } else { + /* TODO(dgq): it'd be nice to have a slice-to-cstr function to easily + * print the offending entry */ + gpr_log(GPR_ERROR, + "Invalid entry in accept encoding metadata. Ignoring."); + } + } +} + static void set_status_details(grpc_call *call, status_source source, grpc_mdstr *status) { if (call->status[source].details != NULL) { grpc_mdstr_unref(call->status[source].details); } call->status[source].details = status; -} - -static int is_op_live(grpc_call *call, grpc_ioreq_op op) { +} static int is_op_live(grpc_call *call, grpc_ioreq_op op) { gpr_uint8 set = call->request_set[op]; reqinfo_master *master; if (set >= GRPC_IOREQ_OP_COUNT) return 0; @@ -1279,6 +1304,9 @@ static void recv_metadata(grpc_call *call, grpc_metadata_batch *md) { } else if (key == grpc_channel_get_compression_algorithm_string(call->channel)) { set_compression_algorithm(call, decode_compression(md)); + } else if (key == + grpc_channel_get_accept_encoding_string(call->channel)) { + set_accept_encoding(call, md->value->slice); } else { dest = &call->buffered_metadata[is_trailing]; if (dest->count == dest->capacity) { diff --git a/src/core/surface/channel.c b/src/core/surface/channel.c index 5f6187d2bf..42d04def94 100644 --- a/src/core/surface/channel.c +++ b/src/core/surface/channel.c @@ -64,6 +64,7 @@ struct grpc_channel { /** mdstr for the grpc-status key */ grpc_mdstr *grpc_status_string; grpc_mdstr *grpc_compression_algorithm_string; + grpc_mdstr *grpc_accept_encoding_string; grpc_mdstr *grpc_message_string; grpc_mdstr *path_string; grpc_mdstr *authority_string; @@ -99,6 +100,8 @@ grpc_channel *grpc_channel_create_from_filters( channel->grpc_status_string = grpc_mdstr_from_string(mdctx, "grpc-status"); channel->grpc_compression_algorithm_string = grpc_mdstr_from_string(mdctx, "grpc-encoding"); + channel->grpc_accept_encoding_string = + grpc_mdstr_from_string(mdctx, "grpc-accept-encoding"); channel->grpc_message_string = grpc_mdstr_from_string(mdctx, "grpc-message"); for (i = 0; i < NUM_CACHED_STATUS_ELEMS; i++) { char buf[GPR_LTOA_MIN_BUFSIZE]; @@ -209,6 +212,7 @@ static void destroy_channel(void *p, int ok) { } grpc_mdstr_unref(channel->grpc_status_string); grpc_mdstr_unref(channel->grpc_compression_algorithm_string); + grpc_mdstr_unref(channel->grpc_accept_encoding_string); grpc_mdstr_unref(channel->grpc_message_string); grpc_mdstr_unref(channel->path_string); grpc_mdstr_unref(channel->authority_string); @@ -266,6 +270,11 @@ grpc_mdstr *grpc_channel_get_compression_algorithm_string( return channel->grpc_compression_algorithm_string; } +grpc_mdstr *grpc_channel_get_accept_encoding_string( + grpc_channel *channel) { + return channel->grpc_accept_encoding_string; +} + grpc_mdelem *grpc_channel_get_reffed_status_elem(grpc_channel *channel, int i) { if (i >= 0 && i < NUM_CACHED_STATUS_ELEMS) { return grpc_mdelem_ref(channel->grpc_status_elem[i]); diff --git a/src/core/surface/channel.h b/src/core/surface/channel.h index 4e03eb4411..db6874b630 100644 --- a/src/core/surface/channel.h +++ b/src/core/surface/channel.h @@ -56,6 +56,8 @@ grpc_mdelem *grpc_channel_get_reffed_status_elem(grpc_channel *channel, grpc_mdstr *grpc_channel_get_status_string(grpc_channel *channel); grpc_mdstr *grpc_channel_get_compression_algorithm_string( grpc_channel *channel); +grpc_mdstr *grpc_channel_get_accept_encoding_string( + grpc_channel *channel); grpc_mdstr *grpc_channel_get_message_string(grpc_channel *channel); gpr_uint32 grpc_channel_get_max_message_length(grpc_channel *channel); -- GitLab From b1866bdb5fa55a036b3beff4937a2f206bc2c4be Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 8 Jul 2015 22:37:01 -0700 Subject: [PATCH 006/178] Removed redundant memset --- src/core/surface/call.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 04e5fc6b28..53655e734a 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -445,7 +445,10 @@ static void set_accept_encoding(grpc_call *call, gpr_slice_buffer_init(&accept_encoding_parts); gpr_slice_split(accept_encoding_slice, ", ", &accept_encoding_parts); - memset(call->accept_encoding, 0, sizeof(call->accept_encoding)); + /* No need to zero call->accept_encoding: grpc_call_create already zeroes the + * whole grpc_call */ + /* Always support no compression */ + call->accept_encoding[GRPC_COMPRESS_NONE] = 1; /* GPR_TRUE */ for (i = 0; i < accept_encoding_parts.count; i++) { const gpr_slice* slice = &accept_encoding_parts.slices[i]; if (grpc_compression_algorithm_parse( -- GitLab From e00d2aee4cb4b1470b6b7a7b77d939f6659c680d Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 8 Jul 2015 23:51:37 -0700 Subject: [PATCH 007/178] Fixed stupid bug from another dimension. Thanks msan. --- test/core/end2end/tests/request_with_compressed_payload.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/core/end2end/tests/request_with_compressed_payload.c b/test/core/end2end/tests/request_with_compressed_payload.c index a6057457c4..0c1b065bd8 100644 --- a/test/core/end2end/tests/request_with_compressed_payload.c +++ b/test/core/end2end/tests/request_with_compressed_payload.c @@ -129,7 +129,7 @@ static void request_with_payload_template( cq_verifier *cqv; char str[1024]; - memset(&str[0], 1023, 'x'); str[1023] = '\0'; + memset(str, 'x', 1023); str[1023] = '\0'; request_payload_slice = gpr_slice_from_copied_string(str); request_payload = grpc_raw_byte_buffer_create(&request_payload_slice, 1); -- GitLab From 3922005878625b97e008381f6933ab1778bf48ba Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Mon, 13 Jul 2015 16:18:19 -0700 Subject: [PATCH 008/178] Introduced InteropContextInspector to be able to peek into server contexts during interop testing. --- include/grpc++/server_context.h | 5 +++++ test/cpp/interop/server_helper.cc | 4 ++++ test/cpp/interop/server_helper.h | 11 +++++++++++ 3 files changed, 20 insertions(+) diff --git a/include/grpc++/server_context.h b/include/grpc++/server_context.h index a2f0a2f990..5ea52b045d 100644 --- a/include/grpc++/server_context.h +++ b/include/grpc++/server_context.h @@ -75,6 +75,10 @@ class CallOpBuffer; class CompletionQueue; class Server; +namespace testing { +class InteropContextInspector; +} // namespace testing + // Interface of server side rpc context. class ServerContext { public: @@ -109,6 +113,7 @@ class ServerContext { void set_compression_algorithm(grpc_compression_algorithm algorithm); private: + friend class ::grpc::testing::InteropContextInspector; friend class ::grpc::Server; template <class W, class R> friend class ::grpc::ServerAsyncReader; diff --git a/test/cpp/interop/server_helper.cc b/test/cpp/interop/server_helper.cc index c2e750dcf7..0f8b89ced2 100644 --- a/test/cpp/interop/server_helper.cc +++ b/test/cpp/interop/server_helper.cc @@ -58,5 +58,9 @@ std::shared_ptr<ServerCredentials> CreateInteropServerCredentials() { } } +InteropContextInspector::InteropContextInspector( + const ::grpc::ServerContext& context) + : context_(context) {} + } // namespace testing } // namespace grpc diff --git a/test/cpp/interop/server_helper.h b/test/cpp/interop/server_helper.h index f98e67bb67..52332bf633 100644 --- a/test/cpp/interop/server_helper.h +++ b/test/cpp/interop/server_helper.h @@ -36,6 +36,7 @@ #include <memory> +#include <grpc++/server_context.h> #include <grpc++/server_credentials.h> namespace grpc { @@ -43,6 +44,16 @@ namespace testing { std::shared_ptr<ServerCredentials> CreateInteropServerCredentials(); +class InteropContextInspector { + public: + InteropContextInspector (const ::grpc::ServerContext& context); + + // Inspector methods, able to peek inside ServerContext go here. + + private: + const ::grpc::ServerContext& context_; +}; + } // namespace testing } // namespace grpc -- GitLab From 95697b64bf2d3a8d1cdbb7bb1889727bf51ce004 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 15 Jul 2015 00:09:27 -0700 Subject: [PATCH 009/178] Fixes to compression, to be merged back to the appropriate branch. --- src/core/channel/compress_filter.c | 112 ++++++++----------------- src/core/surface/call.c | 13 ++- src/core/transport/chttp2/frame_data.c | 9 +- 3 files changed, 50 insertions(+), 84 deletions(-) diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c index 3e76030dfc..69911cbda3 100644 --- a/src/core/channel/compress_filter.c +++ b/src/core/channel/compress_filter.c @@ -46,7 +46,7 @@ typedef struct call_data { gpr_slice_buffer slices; grpc_linked_mdelem compression_algorithm_storage; int remaining_slice_bytes; - int seen_initial_metadata; + int written_initial_metadata; grpc_compression_algorithm compression_algorithm; gpr_uint8 has_compression_algorithm; } call_data; @@ -115,13 +115,10 @@ static void finish_compressed_sopb(grpc_stream_op_buffer *send_ops, size_t i; grpc_stream_op_buffer new_send_ops; call_data *calld = elem->call_data; - channel_data *channeld = elem->channel_data; int new_slices_added = 0; /* GPR_FALSE */ - grpc_metadata_batch metadata; grpc_sopb_init(&new_send_ops); - /* The following loop is akin to a selective reset + update */ for (i = 0; i < send_ops->nops; i++) { grpc_stream_op *sop = &send_ops->ops[i]; switch (sop->type) { @@ -130,17 +127,6 @@ static void finish_compressed_sopb(grpc_stream_op_buffer *send_ops, &new_send_ops, calld->slices.length, sop->data.begin_message.flags | GRPC_WRITE_INTERNAL_COMPRESS); break; - case GRPC_OP_METADATA: - grpc_metadata_batch_move(&metadata, &sop->data.metadata); - if (!calld->seen_initial_metadata) { - grpc_metadata_batch_add_head( - &metadata, &calld->compression_algorithm_storage, - grpc_mdelem_ref(channeld->mdelem_compression_algorithms - [calld->compression_algorithm])); - calld->seen_initial_metadata = 1; /* GPR_TRUE */ - } - grpc_sopb_add_metadata(&new_send_ops, metadata); - break; case GRPC_OP_SLICE: if (!new_slices_added) { size_t j; @@ -151,49 +137,16 @@ static void finish_compressed_sopb(grpc_stream_op_buffer *send_ops, new_slices_added = 1; /* GPR_TRUE */ } break; - case GRPC_NO_OP: - break; - } - } - grpc_sopb_swap(send_ops, &new_send_ops); - grpc_sopb_destroy(&new_send_ops); -} - -/* even if the filter isn't producing compressed output, it may need to update - * the input. For example, compression may have een requested but somehow it was - * decided not to honor the request: the compression flags need to be reset and - * the fact that no compression was performed in the end signaled */ -static void finish_not_compressed_sopb(grpc_stream_op_buffer *send_ops, - grpc_call_element *elem) { - size_t i; - call_data *calld = elem->call_data; - channel_data *channeld = elem->channel_data; - - for (i = 0; i < send_ops->nops; ++i) { - grpc_stream_op *sop = &send_ops->ops[i]; - switch (sop->type) { - case GRPC_OP_BEGIN_MESSAGE: - /* either because the user requested the exception or because - * compressing would have resulted in a larger output */ - calld->compression_algorithm = GRPC_COMPRESS_NONE; - /* reset the flag compression bit */ - sop->data.begin_message.flags &= ~GRPC_WRITE_INTERNAL_COMPRESS; - break; case GRPC_OP_METADATA: - if (!calld->seen_initial_metadata) { - grpc_metadata_batch_add_head( - &(sop->data.metadata), &calld->compression_algorithm_storage, - grpc_mdelem_ref( - channeld->mdelem_compression_algorithms[GRPC_COMPRESS_NONE])); - calld->seen_initial_metadata = 1; /* GPR_TRUE */ - } - break; - case GRPC_OP_SLICE: + grpc_sopb_add_metadata(&new_send_ops, sop->data.metadata); + memset(&(sop->data.metadata), 0, sizeof(grpc_metadata_batch)); break; case GRPC_NO_OP: break; } } + grpc_sopb_swap(send_ops, &new_send_ops); + grpc_sopb_destroy(&new_send_ops); } static void process_send_ops(grpc_call_element *elem, @@ -216,21 +169,28 @@ static void process_send_ops(grpc_call_element *elem, } break; case GRPC_OP_METADATA: - /* Parse incoming request for compression. If any, it'll be available at - * calld->compression_algorithm */ - grpc_metadata_batch_filter(&(sop->data.metadata), compression_md_filter, - elem); - if (!calld->has_compression_algorithm) { - /* If no algorithm was found in the metadata and we aren't - * exceptionally skipping compression, fall back to the channel - * default */ - calld->compression_algorithm = - channeld->default_compression_algorithm; - calld->has_compression_algorithm = 1; /* GPR_TRUE */ + if (!calld->written_initial_metadata) { + /* Parse incoming request for compression. If any, it'll be available + * at calld->compression_algorithm */ + grpc_metadata_batch_filter(&(sop->data.metadata), + compression_md_filter, elem); + if (!calld->has_compression_algorithm) { + /* If no algorithm was found in the metadata and we aren't + * exceptionally skipping compression, fall back to the channel + * default */ + calld->compression_algorithm = + channeld->default_compression_algorithm; + calld->has_compression_algorithm = 1; /* GPR_TRUE */ + } + grpc_metadata_batch_add_head( + &(sop->data.metadata), &calld->compression_algorithm_storage, + grpc_mdelem_ref(channeld->mdelem_compression_algorithms + [calld->compression_algorithm])); + calld->written_initial_metadata = 1; /* GPR_TRUE */ } break; case GRPC_OP_SLICE: - if (skip_compression(channeld, calld)) goto done; + if (skip_compression(channeld, calld)) continue; GPR_ASSERT(calld->remaining_slice_bytes > 0); /* We need to copy the input because gpr_slice_buffer_add takes * ownership. However, we don't own sop->data.slice, the caller does. */ @@ -247,13 +207,10 @@ static void process_send_ops(grpc_call_element *elem, } } -done: /* Modify the send_ops stream_op_buffer depending on whether compression was * carried out */ if (did_compress) { finish_compressed_sopb(send_ops, elem); - } else { - finish_not_compressed_sopb(send_ops, elem); } } @@ -282,7 +239,7 @@ static void init_call_elem(grpc_call_element *elem, /* initialize members */ gpr_slice_buffer_init(&calld->slices); calld->has_compression_algorithm = 0; - calld->seen_initial_metadata = 0; /* GPR_FALSE */ + calld->written_initial_metadata = 0; /* GPR_FALSE */ if (initial_op) { if (initial_op->send_ops && initial_op->send_ops->nops > 0) { @@ -342,12 +299,13 @@ static void destroy_channel_elem(grpc_channel_element *elem) { } } -const grpc_channel_filter grpc_compress_filter = {compress_start_transport_stream_op, - grpc_channel_next_op, - sizeof(call_data), - init_call_elem, - destroy_call_elem, - sizeof(channel_data), - init_channel_elem, - destroy_channel_elem, - "compress"}; +const grpc_channel_filter grpc_compress_filter = { + compress_start_transport_stream_op, + grpc_channel_next_op, + sizeof(call_data), + init_call_elem, + destroy_call_elem, + sizeof(channel_data), + init_channel_elem, + destroy_channel_elem, + "compress"}; diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 74d28fe323..717158cf16 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -433,6 +433,11 @@ static void set_compression_algorithm(grpc_call *call, call->compression_algorithm = algo; } +grpc_compression_algorithm grpc_call_get_compression_algorithm( + const grpc_call *call) { + return call->compression_algorithm; +} + static void set_status_details(grpc_call *call, status_source source, grpc_mdstr *status) { if (call->status[source].details != NULL) { @@ -712,7 +717,8 @@ static void finish_message(grpc_call *call) { /* some aliases for readability */ gpr_slice *slices = call->incoming_message.slices; const size_t nslices = call->incoming_message.count; - if (call->compression_algorithm > GRPC_COMPRESS_NONE) { + if ((call->incoming_message_flags & GRPC_WRITE_INTERNAL_COMPRESS) && + (call->compression_algorithm > GRPC_COMPRESS_NONE)) { byte_buffer = grpc_raw_compressed_byte_buffer_create( slices, nslices, call->compression_algorithm); } else { @@ -743,14 +749,15 @@ static int begin_message(grpc_call *call, grpc_begin_message msg) { (call->compression_algorithm == GRPC_COMPRESS_NONE)) { char *message = NULL; char *alg_name; - if (!grpc_compression_algorithm_name(call->compression_algorithm, &alg_name)) { + if (!grpc_compression_algorithm_name(call->compression_algorithm, + &alg_name)) { /* This shouldn't happen, other than due to data corruption */ alg_name = "<unknown>"; } gpr_asprintf(&message, "Invalid compression algorithm (%s) for compressed message.", alg_name); - cancel_with_status(call, GRPC_STATUS_FAILED_PRECONDITION, message); + cancel_with_status(call, GRPC_STATUS_INTERNAL, message); } /* stash away parameters, and prepare for incoming slices */ if (msg.length > grpc_channel_get_max_message_length(call->channel)) { diff --git a/src/core/transport/chttp2/frame_data.c b/src/core/transport/chttp2/frame_data.c index 6a36485738..7a4c355f23 100644 --- a/src/core/transport/chttp2/frame_data.c +++ b/src/core/transport/chttp2/frame_data.c @@ -90,12 +90,9 @@ grpc_chttp2_parse_error grpc_chttp2_data_parser_parse( fh_0: case GRPC_CHTTP2_DATA_FH_0: p->frame_type = *cur; - if (++cur == end) { - p->state = GRPC_CHTTP2_DATA_FH_1; - return GRPC_CHTTP2_PARSE_OK; - } switch (p->frame_type) { case 0: + /* noop */ break; case 1: p->is_frame_compressed = 1; /* GPR_TRUE */ @@ -104,6 +101,10 @@ grpc_chttp2_parse_error grpc_chttp2_data_parser_parse( gpr_log(GPR_ERROR, "Bad GRPC frame type 0x%02x", p->frame_type); return GRPC_CHTTP2_STREAM_ERROR; } + if (++cur == end) { + p->state = GRPC_CHTTP2_DATA_FH_1; + return GRPC_CHTTP2_PARSE_OK; + } /* fallthrough */ case GRPC_CHTTP2_DATA_FH_1: p->frame_size = ((gpr_uint32)*cur) << 24; -- GitLab From 699b0f999ea3adaaa3942461aa825f807f4863d1 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 15 Jul 2015 17:12:35 -0700 Subject: [PATCH 010/178] Require a pointer + macro arg protection --- include/grpc/support/useful.h | 10 +++++----- test/core/support/useful_test.c | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/grpc/support/useful.h b/include/grpc/support/useful.h index 6eb212a311..d3d8ad6437 100644 --- a/include/grpc/support/useful.h +++ b/include/grpc/support/useful.h @@ -52,13 +52,13 @@ b = x; \ } while (0) -/** Set the \a n-th bit of \a i */ -#define GPR_BITSET(i, n) (i |= (1u << n)) +/** Set the \a n-th bit of \a i (a mutable pointer). */ +#define GPR_BITSET(i, n) ((*(i)) |= (1u << n)) -/** Clear the \a n-th bit of \a i */ -#define GPR_BITCLEAR(i, n) (i &= ~(1u << n)) +/** Clear the \a n-th bit of \a i (a mutable pointer). */ +#define GPR_BITCLEAR(i, n) ((*(i)) &= ~(1u << n)) /** Get the \a n-th bit of \a i */ -#define GPR_BITGET(i, n) ((i & (1u << n)) != 0) +#define GPR_BITGET(i, n) (((i) & (1u << n)) != 0) #endif /* GRPC_SUPPORT_USEFUL_H */ diff --git a/test/core/support/useful_test.c b/test/core/support/useful_test.c index 0804a81b7c..5827f0a627 100644 --- a/test/core/support/useful_test.c +++ b/test/core/support/useful_test.c @@ -56,10 +56,10 @@ int main(int argc, char **argv) { GPR_ASSERT(GPR_ARRAY_SIZE(four) == 4); GPR_ASSERT(GPR_ARRAY_SIZE(five) == 5); - GPR_ASSERT(GPR_BITSET(bitset, 3) == 8); + GPR_ASSERT(GPR_BITSET(&bitset, 3) == 8); GPR_ASSERT(GPR_BITGET(bitset, 3) == 1); - GPR_ASSERT(GPR_BITSET(bitset, 1) == 10); - GPR_ASSERT(GPR_BITCLEAR(bitset, 3) == 2); + GPR_ASSERT(GPR_BITSET(&bitset, 1) == 10); + GPR_ASSERT(GPR_BITCLEAR(&bitset, 3) == 2); GPR_ASSERT(GPR_BITGET(bitset, 3) == 0); return 0; -- GitLab From 541d5823d2d0a5a1748c4488177e6f55eb5aff44 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 15 Jul 2015 18:04:18 -0700 Subject: [PATCH 011/178] rewrote bitcount function as a macro --- include/grpc/support/useful.h | 8 ++++++++ test/core/support/useful_test.c | 3 +++ 2 files changed, 11 insertions(+) diff --git a/include/grpc/support/useful.h b/include/grpc/support/useful.h index d3d8ad6437..5b70447123 100644 --- a/include/grpc/support/useful.h +++ b/include/grpc/support/useful.h @@ -61,4 +61,12 @@ /** Get the \a n-th bit of \a i */ #define GPR_BITGET(i, n) (((i) & (1u << n)) != 0) +#define HEXDIGIT_BITCOUNT_(x) \ + ((x) - (((x) >> 1) & 0x77777777) - (((x) >> 2) & 0x33333333) - \ + (((x) >> 3) & 0x11111111)) + +/** Returns number of bits set in bitset \a i */ +#define GPR_BITCOUNT(x) \ + (((HEXDIGIT_BITCOUNT_(x) + (HEXDIGIT_BITCOUNT_(x) >> 4)) & 0x0F0F0F0F) % 255) + #endif /* GRPC_SUPPORT_USEFUL_H */ diff --git a/test/core/support/useful_test.c b/test/core/support/useful_test.c index 5827f0a627..34f4ce6870 100644 --- a/test/core/support/useful_test.c +++ b/test/core/support/useful_test.c @@ -57,9 +57,12 @@ int main(int argc, char **argv) { GPR_ASSERT(GPR_ARRAY_SIZE(five) == 5); GPR_ASSERT(GPR_BITSET(&bitset, 3) == 8); + GPR_ASSERT(GPR_BITCOUNT(bitset) == 1); GPR_ASSERT(GPR_BITGET(bitset, 3) == 1); GPR_ASSERT(GPR_BITSET(&bitset, 1) == 10); + GPR_ASSERT(GPR_BITCOUNT(bitset) == 2); GPR_ASSERT(GPR_BITCLEAR(&bitset, 3) == 2); + GPR_ASSERT(GPR_BITCOUNT(bitset) == 1); GPR_ASSERT(GPR_BITGET(bitset, 3) == 0); return 0; -- GitLab From e091af881af2e33d8b1351c8315d2d292405cedd Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 15 Jul 2015 21:37:02 -0700 Subject: [PATCH 012/178] Implementation of the accepted encodings propagation mechanism. --- src/core/channel/compress_filter.c | 38 +++++++++++++++++++ src/core/surface/call.c | 30 +++++++-------- src/core/surface/call.h | 6 +++ src/core/surface/channel.c | 10 ++--- src/core/surface/channel.h | 2 +- .../tests/request_with_compressed_payload.c | 9 +++++ 6 files changed, 74 insertions(+), 21 deletions(-) diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c index 7d6f1a87a6..215e2dc02c 100644 --- a/src/core/channel/compress_filter.c +++ b/src/core/channel/compress_filter.c @@ -35,16 +35,19 @@ #include <string.h> #include <grpc/compression.h> +#include <grpc/support/alloc.h> #include <grpc/support/log.h> #include <grpc/support/slice_buffer.h> #include "src/core/channel/compress_filter.h" #include "src/core/channel/channel_args.h" #include "src/core/compression/message_compress.h" +#include "src/core/support/string.h" typedef struct call_data { gpr_slice_buffer slices; grpc_linked_mdelem compression_algorithm_storage; + grpc_linked_mdelem accept_encoding_storage; int remaining_slice_bytes; int written_initial_metadata; grpc_compression_algorithm compression_algorithm; @@ -54,7 +57,9 @@ typedef struct call_data { typedef struct channel_data { grpc_mdstr *mdstr_request_compression_algorithm_key; grpc_mdstr *mdstr_outgoing_compression_algorithm_key; + grpc_mdstr *mdstr_compression_capabilities_key; grpc_mdelem *mdelem_compression_algorithms[GRPC_COMPRESS_ALGORITHMS_COUNT]; + grpc_mdelem *mdelem_accept_encoding; grpc_compression_algorithm default_compression_algorithm; } channel_data; @@ -190,10 +195,17 @@ static void process_send_ops(grpc_call_element *elem, channeld->default_compression_algorithm; calld->has_compression_algorithm = 1; /* GPR_TRUE */ } + /* hint compression algorithm */ grpc_metadata_batch_add_head( &(sop->data.metadata), &calld->compression_algorithm_storage, grpc_mdelem_ref(channeld->mdelem_compression_algorithms [calld->compression_algorithm])); + + /* convey supported compression algorithms */ + grpc_metadata_batch_add_head( + &(sop->data.metadata), &calld->accept_encoding_storage, + grpc_mdelem_ref(channeld->mdelem_accept_encoding)); + calld->written_initial_metadata = 1; /* GPR_TRUE */ } break; @@ -267,6 +279,9 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, int is_first, int is_last) { channel_data *channeld = elem->channel_data; grpc_compression_algorithm algo_idx; + const char* supported_algorithms_names[GRPC_COMPRESS_ALGORITHMS_COUNT-1]; + char *accept_encoding_str; + size_t accept_encoding_str_len; const grpc_compression_level clevel = grpc_channel_args_get_compression_level(args); @@ -279,6 +294,9 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, channeld->mdstr_outgoing_compression_algorithm_key = grpc_mdstr_from_string(mdctx, "grpc-encoding"); + channeld->mdstr_compression_capabilities_key = + grpc_mdstr_from_string(mdctx, "grpc-accept-encoding"); + for (algo_idx = 0; algo_idx < GRPC_COMPRESS_ALGORITHMS_COUNT; ++algo_idx) { char *algorith_name; GPR_ASSERT(grpc_compression_algorithm_name(algo_idx, &algorith_name) != 0); @@ -287,8 +305,26 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, mdctx, grpc_mdstr_ref(channeld->mdstr_outgoing_compression_algorithm_key), grpc_mdstr_from_string(mdctx, algorith_name)); + if (algo_idx > 0) { + supported_algorithms_names[algo_idx-1] = algorith_name; + } } + accept_encoding_str = + gpr_strjoin_sep(supported_algorithms_names, + GPR_ARRAY_SIZE(supported_algorithms_names), + ", ", + &accept_encoding_str_len); + + channeld->mdelem_accept_encoding = + grpc_mdelem_from_metadata_strings( + mdctx, + grpc_mdstr_ref(channeld->mdstr_compression_capabilities_key), + grpc_mdstr_from_string(mdctx, accept_encoding_str)); + /* TODO(dgq): gpr_strjoin_sep could be made to work with statically allocated + * arrays, as to avoid the heap allocs */ + gpr_free(accept_encoding_str); + GPR_ASSERT(!is_last); } @@ -299,10 +335,12 @@ static void destroy_channel_elem(grpc_channel_element *elem) { grpc_mdstr_unref(channeld->mdstr_request_compression_algorithm_key); grpc_mdstr_unref(channeld->mdstr_outgoing_compression_algorithm_key); + grpc_mdstr_unref(channeld->mdstr_compression_capabilities_key); for (algo_idx = 0; algo_idx < GRPC_COMPRESS_ALGORITHMS_COUNT; ++algo_idx) { grpc_mdelem_unref(channeld->mdelem_compression_algorithms[algo_idx]); } + grpc_mdelem_unref(channeld->mdelem_accept_encoding); } const grpc_channel_filter grpc_compress_filter = { diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 58673e783e..f4b8ccd6df 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -39,6 +39,7 @@ #include <grpc/support/alloc.h> #include <grpc/support/log.h> #include <grpc/support/string_util.h> +#include <grpc/support/useful.h> #include "src/core/census/grpc_context.h" #include "src/core/channel/channel_stack.h" @@ -239,8 +240,8 @@ struct grpc_call { /* Compression algorithm for the call */ grpc_compression_algorithm compression_algorithm; - /* Supported encodings (compression algorithms) */ - gpr_uint8 accept_encoding[GRPC_COMPRESS_ALGORITHMS_COUNT]; + /* Supported encodings (compression algorithms), a bitset */ + gpr_uint32 encodings_accepted_by_peer; /* Contexts for various subsystems (security, tracing, ...). */ grpc_call_context_element context[GRPC_CONTEXT_COUNT]; @@ -478,12 +479,7 @@ static void set_compression_algorithm(grpc_call *call, call->compression_algorithm = algo; } -grpc_compression_algorithm grpc_call_get_compression_algorithm( - const grpc_call *call) { - return call->compression_algorithm; -} - -static void set_accept_encoding(grpc_call *call, +static void set_encodings_accepted_by_peer(grpc_call *call, const gpr_slice accept_encoding_slice) { size_t i; grpc_compression_algorithm algorithm; @@ -492,15 +488,15 @@ static void set_accept_encoding(grpc_call *call, gpr_slice_buffer_init(&accept_encoding_parts); gpr_slice_split(accept_encoding_slice, ", ", &accept_encoding_parts); - /* No need to zero call->accept_encoding: grpc_call_create already zeroes the - * whole grpc_call */ + /* No need to zero call->encodings_accepted_by_peer: grpc_call_create already + * zeroes the whole grpc_call */ /* Always support no compression */ - call->accept_encoding[GRPC_COMPRESS_NONE] = 1; /* GPR_TRUE */ + GPR_BITSET(&call->encodings_accepted_by_peer, GRPC_COMPRESS_NONE); for (i = 0; i < accept_encoding_parts.count; i++) { const gpr_slice* slice = &accept_encoding_parts.slices[i]; if (grpc_compression_algorithm_parse( (const char *)GPR_SLICE_START_PTR(*slice), &algorithm)) { - call->accept_encoding[algorithm] = 1; /* GPR_TRUE */ + GPR_BITSET(&call->encodings_accepted_by_peer, algorithm); } else { /* TODO(dgq): it'd be nice to have a slice-to-cstr function to easily * print the offending entry */ @@ -510,6 +506,10 @@ static void set_accept_encoding(grpc_call *call, } } +gpr_uint32 grpc_call_get_encodings_accepted_by_peer(grpc_call *call) { + return call->encodings_accepted_by_peer; +} + static void set_status_details(grpc_call *call, status_source source, grpc_mdstr *status) { if (call->status[source].details != NULL) { @@ -1360,9 +1360,9 @@ static void recv_metadata(grpc_call *call, grpc_metadata_batch *md) { } else if (key == grpc_channel_get_compression_algorithm_string(call->channel)) { set_compression_algorithm(call, decode_compression(md)); - } else if (key == - grpc_channel_get_accept_encoding_string(call->channel)) { - set_accept_encoding(call, md->value->slice); + } else if (key == grpc_channel_get_encodings_accepted_by_peer_string( + call->channel)) { + set_encodings_accepted_by_peer(call, md->value->slice); } else { dest = &call->buffered_metadata[is_trailing]; if (dest->count == dest->capacity) { diff --git a/src/core/surface/call.h b/src/core/surface/call.h index 3b6f9c942e..5736e97b59 100644 --- a/src/core/surface/call.h +++ b/src/core/surface/call.h @@ -153,4 +153,10 @@ void *grpc_call_context_get(grpc_call *call, grpc_context_index elem); gpr_uint8 grpc_call_is_client(grpc_call *call); +/** Returns a bitset for the encodings (compression algorithms) supported by \a + * call's peer. + * + * To be indexed by grpc_compression_algorithm enum values. */ +gpr_uint32 grpc_call_get_encodings_accepted_by_peer(grpc_call *call); + #endif /* GRPC_INTERNAL_CORE_SURFACE_CALL_H */ diff --git a/src/core/surface/channel.c b/src/core/surface/channel.c index 2a3e20a557..cd71e03b19 100644 --- a/src/core/surface/channel.c +++ b/src/core/surface/channel.c @@ -64,7 +64,7 @@ struct grpc_channel { /** mdstr for the grpc-status key */ grpc_mdstr *grpc_status_string; grpc_mdstr *grpc_compression_algorithm_string; - grpc_mdstr *grpc_accept_encoding_string; + grpc_mdstr *grpc_encodings_accepted_by_peer_string; grpc_mdstr *grpc_message_string; grpc_mdstr *path_string; grpc_mdstr *authority_string; @@ -101,7 +101,7 @@ grpc_channel *grpc_channel_create_from_filters( channel->grpc_status_string = grpc_mdstr_from_string(mdctx, "grpc-status"); channel->grpc_compression_algorithm_string = grpc_mdstr_from_string(mdctx, "grpc-encoding"); - channel->grpc_accept_encoding_string = + channel->grpc_encodings_accepted_by_peer_string = grpc_mdstr_from_string(mdctx, "grpc-accept-encoding"); channel->grpc_message_string = grpc_mdstr_from_string(mdctx, "grpc-message"); for (i = 0; i < NUM_CACHED_STATUS_ELEMS; i++) { @@ -213,7 +213,7 @@ static void destroy_channel(void *p, int ok) { } GRPC_MDSTR_UNREF(channel->grpc_status_string); GRPC_MDSTR_UNREF(channel->grpc_compression_algorithm_string); - GRPC_MDSTR_UNREF(channel->grpc_accept_encoding_string); + GRPC_MDSTR_UNREF(channel->grpc_encodings_accepted_by_peer_string); GRPC_MDSTR_UNREF(channel->grpc_message_string); GRPC_MDSTR_UNREF(channel->path_string); GRPC_MDSTR_UNREF(channel->authority_string); @@ -271,9 +271,9 @@ grpc_mdstr *grpc_channel_get_compression_algorithm_string( return channel->grpc_compression_algorithm_string; } -grpc_mdstr *grpc_channel_get_accept_encoding_string( +grpc_mdstr *grpc_channel_get_encodings_accepted_by_peer_string( grpc_channel *channel) { - return channel->grpc_accept_encoding_string; + return channel->grpc_encodings_accepted_by_peer_string; } grpc_mdelem *grpc_channel_get_reffed_status_elem(grpc_channel *channel, int i) { diff --git a/src/core/surface/channel.h b/src/core/surface/channel.h index db6874b630..1d1550bbe7 100644 --- a/src/core/surface/channel.h +++ b/src/core/surface/channel.h @@ -56,7 +56,7 @@ grpc_mdelem *grpc_channel_get_reffed_status_elem(grpc_channel *channel, grpc_mdstr *grpc_channel_get_status_string(grpc_channel *channel); grpc_mdstr *grpc_channel_get_compression_algorithm_string( grpc_channel *channel); -grpc_mdstr *grpc_channel_get_accept_encoding_string( +grpc_mdstr *grpc_channel_get_encodings_accepted_by_peer_string( grpc_channel *channel); grpc_mdstr *grpc_channel_get_message_string(grpc_channel *channel); gpr_uint32 grpc_channel_get_max_message_length(grpc_channel *channel); diff --git a/test/core/end2end/tests/request_with_compressed_payload.c b/test/core/end2end/tests/request_with_compressed_payload.c index 0c1b065bd8..784a6cdef4 100644 --- a/test/core/end2end/tests/request_with_compressed_payload.c +++ b/test/core/end2end/tests/request_with_compressed_payload.c @@ -46,6 +46,7 @@ #include "test/core/end2end/cq_verifier.h" #include "src/core/channel/channel_args.h" #include "src/core/channel/compress_filter.h" +#include "src/core/surface/call.h" enum { TIMEOUT = 200000 }; @@ -187,6 +188,14 @@ static void request_with_payload_template( cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); + GPR_ASSERT(GPR_BITCOUNT(grpc_call_get_encodings_accepted_by_peer(s)) == 3); + GPR_ASSERT(GPR_BITGET(grpc_call_get_encodings_accepted_by_peer(s), + GRPC_COMPRESS_NONE) != 0); + GPR_ASSERT(GPR_BITGET(grpc_call_get_encodings_accepted_by_peer(s), + GRPC_COMPRESS_DEFLATE) != 0); + GPR_ASSERT(GPR_BITGET(grpc_call_get_encodings_accepted_by_peer(s), + GRPC_COMPRESS_GZIP) != 0); + op = ops; op->op = GRPC_OP_SEND_INITIAL_METADATA; op->data.send_initial_metadata.count = 0; -- GitLab From c0a09015b17d8db1ea6bee0cba5d868c7f6f6fca Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Mon, 20 Jul 2015 01:27:47 -0700 Subject: [PATCH 013/178] Macro rename --- src/core/channel/compress_filter.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c index 46590d7585..b41dcb92d9 100644 --- a/src/core/channel/compress_filter.c +++ b/src/core/channel/compress_filter.c @@ -210,13 +210,13 @@ static void process_send_ops(grpc_call_element *elem, /* hint compression algorithm */ grpc_metadata_batch_add_head( &(sop->data.metadata), &calld->compression_algorithm_storage, - grpc_mdelem_ref(channeld->mdelem_compression_algorithms + GRPC_MDELEM_REF(channeld->mdelem_compression_algorithms [calld->compression_algorithm])); /* convey supported compression algorithms */ grpc_metadata_batch_add_head( &(sop->data.metadata), &calld->accept_encoding_storage, - grpc_mdelem_ref(channeld->mdelem_accept_encoding)); + GRPC_MDELEM_REF(channeld->mdelem_accept_encoding)); calld->written_initial_metadata = 1; /* GPR_TRUE */ } @@ -313,13 +313,15 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, channeld->mdelem_compression_algorithms[algo_idx] = grpc_mdelem_from_metadata_strings( mdctx, - grpc_mdstr_ref(channeld->mdstr_outgoing_compression_algorithm_key), + GRPC_MDSTR_REF(channeld->mdstr_outgoing_compression_algorithm_key), grpc_mdstr_from_string(mdctx, algorith_name)); if (algo_idx > 0) { supported_algorithms_names[algo_idx-1] = algorith_name; } } + /* TODO(dgq): gpr_strjoin_sep could be made to work with statically allocated + * arrays, as to avoid the heap allocs */ accept_encoding_str = gpr_strjoin_sep(supported_algorithms_names, GPR_ARRAY_SIZE(supported_algorithms_names), @@ -329,10 +331,8 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, channeld->mdelem_accept_encoding = grpc_mdelem_from_metadata_strings( mdctx, - grpc_mdstr_ref(channeld->mdstr_compression_capabilities_key), + GRPC_MDSTR_REF(channeld->mdstr_compression_capabilities_key), grpc_mdstr_from_string(mdctx, accept_encoding_str)); - /* TODO(dgq): gpr_strjoin_sep could be made to work with statically allocated - * arrays, as to avoid the heap allocs */ gpr_free(accept_encoding_str); GPR_ASSERT(!is_last); @@ -343,14 +343,14 @@ static void destroy_channel_elem(grpc_channel_element *elem) { channel_data *channeld = elem->channel_data; grpc_compression_algorithm algo_idx; - grpc_mdstr_unref(channeld->mdstr_request_compression_algorithm_key); - grpc_mdstr_unref(channeld->mdstr_outgoing_compression_algorithm_key); - grpc_mdstr_unref(channeld->mdstr_compression_capabilities_key); + GRPC_MDSTR_UNREF(channeld->mdstr_request_compression_algorithm_key); + GRPC_MDSTR_UNREF(channeld->mdstr_outgoing_compression_algorithm_key); + GRPC_MDSTR_UNREF(channeld->mdstr_compression_capabilities_key); for (algo_idx = 0; algo_idx < GRPC_COMPRESS_ALGORITHMS_COUNT; ++algo_idx) { - grpc_mdelem_unref(channeld->mdelem_compression_algorithms[algo_idx]); + GRPC_MDELEM_UNREF(channeld->mdelem_compression_algorithms[algo_idx]); } - grpc_mdelem_unref(channeld->mdelem_accept_encoding); + GRPC_MDELEM_UNREF(channeld->mdelem_accept_encoding); } const grpc_channel_filter grpc_compress_filter = { -- GitLab From 9c512bdf98fe66b45532b6c2ead242e45ec07651 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Mon, 20 Jul 2015 23:43:53 -0700 Subject: [PATCH 014/178] wip --- src/core/surface/call.h | 11 +++++++++++ test/cpp/interop/interop_client.cc | 10 ++++++++++ test/cpp/interop/server.cc | 27 +++++++++++++++++++++++---- test/cpp/interop/server_helper.cc | 8 +++++++- test/cpp/interop/server_helper.h | 2 ++ test/proto/messages.proto | 2 +- 6 files changed, 54 insertions(+), 6 deletions(-) diff --git a/src/core/surface/call.h b/src/core/surface/call.h index 3b6f9c942e..20eb4bbaa6 100644 --- a/src/core/surface/call.h +++ b/src/core/surface/call.h @@ -38,6 +38,10 @@ #include "src/core/channel/context.h" #include <grpc/grpc.h> +#ifdef __cplusplus +extern "C" { +#endif + /* Primitive operation types - grpc_op's get rewritten into these */ typedef enum { GRPC_IOREQ_RECV_INITIAL_METADATA, @@ -153,4 +157,11 @@ void *grpc_call_context_get(grpc_call *call, grpc_context_index elem); gpr_uint8 grpc_call_is_client(grpc_call *call); +grpc_compression_algorithm grpc_call_get_compression_algorithm( + const grpc_call *call); + +#ifdef __cplusplus +} +#endif + #endif /* GRPC_INTERNAL_CORE_SURFACE_CALL_H */ diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index f08f90b139..9803102da2 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -93,6 +93,15 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, std::unique_ptr<TestService::Stub> stub(TestService::NewStub(channel_)); ClientContext context; + // XXX: add UNCOMPRESSABLE to the mix + // + // XXX: 1) set request.response_compression to all the diff available + // compression values. We can't check the compression method used at the + // application level, but if something is wrong, two different implementations + // of gRPC (java vs c) won't be able to communicate. + // + // 2) for UNCOMPRESSABLE, verify that the response can be whatever, most + // likely uncompressed request->set_response_type(PayloadType::COMPRESSABLE); request->set_response_size(kLargeResponseSize); grpc::string payload(kLargeRequestSize, '\0'); @@ -157,6 +166,7 @@ void InteropClient::DoJwtTokenCreds(const grpc::string& username) { void InteropClient::DoLargeUnary() { gpr_log(GPR_INFO, "Sending a large unary rpc..."); SimpleRequest request; + request.set_response_compression(grpc::testing::GZIP); SimpleResponse response; PerformLargeUnary(&request, &response); gpr_log(GPR_INFO, "Large unary done."); diff --git a/test/cpp/interop/server.cc b/test/cpp/interop/server.cc index 22b8910a24..91954aa9de 100644 --- a/test/cpp/interop/server.cc +++ b/test/cpp/interop/server.cc @@ -80,16 +80,32 @@ static bool got_sigint = false; bool SetPayload(PayloadType type, int size, Payload* payload) { PayloadType response_type = type; - // TODO(yangg): Support UNCOMPRESSABLE payload. - if (type != PayloadType::COMPRESSABLE) { - return false; - } payload->set_type(response_type); std::unique_ptr<char[]> body(new char[size]()); payload->set_body(body.get(), size); return true; } +template <typename RequestType> +void SetResponseCompression(ServerContext* context, + const RequestType& request) { + if (request.has_response_compression()) { + switch (request.response_compression()) { + case grpc::testing::NONE: + context->set_compression_algorithm(GRPC_COMPRESS_NONE); + break; + case grpc::testing::GZIP: + context->set_compression_algorithm(GRPC_COMPRESS_GZIP); + break; + case grpc::testing::DEFLATE: + context->set_compression_algorithm(GRPC_COMPRESS_DEFLATE); + break; + } + } else { + context->set_compression_algorithm(GRPC_COMPRESS_NONE); + } +} + class TestServiceImpl : public TestService::Service { public: Status EmptyCall(ServerContext* context, const grpc::testing::Empty* request, @@ -99,6 +115,7 @@ class TestServiceImpl : public TestService::Service { Status UnaryCall(ServerContext* context, const SimpleRequest* request, SimpleResponse* response) { + SetResponseCompression(context, *request); if (request->has_response_size() && request->response_size() > 0) { if (!SetPayload(request->response_type(), request->response_size(), response->mutable_payload())) { @@ -111,6 +128,7 @@ class TestServiceImpl : public TestService::Service { Status StreamingOutputCall( ServerContext* context, const StreamingOutputCallRequest* request, ServerWriter<StreamingOutputCallResponse>* writer) { + SetResponseCompression(context, *request); StreamingOutputCallResponse response; bool write_success = true; response.mutable_payload()->set_type(request->response_type()); @@ -149,6 +167,7 @@ class TestServiceImpl : public TestService::Service { StreamingOutputCallResponse response; bool write_success = true; while (write_success && stream->Read(&request)) { + SetResponseCompression(context, request); response.mutable_payload()->set_type(request.payload().type()); if (request.response_parameters_size() == 0) { return Status(grpc::StatusCode::INTERNAL, diff --git a/test/cpp/interop/server_helper.cc b/test/cpp/interop/server_helper.cc index 0f8b89ced2..58017ba9b8 100644 --- a/test/cpp/interop/server_helper.cc +++ b/test/cpp/interop/server_helper.cc @@ -36,10 +36,12 @@ #include <memory> #include <gflags/gflags.h> -#include "test/core/end2end/data/ssl_test_data.h" #include <grpc++/config.h> #include <grpc++/server_credentials.h> +#include "src/core/surface/call.h" +#include "test/core/end2end/data/ssl_test_data.h" + DECLARE_bool(enable_ssl); namespace grpc { @@ -62,5 +64,9 @@ InteropContextInspector::InteropContextInspector( const ::grpc::ServerContext& context) : context_(context) {} +grpc_compression_algorithm +InteropContextInspector::GetCallCompressionAlgorithm() const { + return grpc_call_get_compression_algorithm(context_.call_); +} } // namespace testing } // namespace grpc diff --git a/test/cpp/interop/server_helper.h b/test/cpp/interop/server_helper.h index d738d05038..006a0e31ea 100644 --- a/test/cpp/interop/server_helper.h +++ b/test/cpp/interop/server_helper.h @@ -36,6 +36,7 @@ #include <memory> +#include <grpc/compression.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> @@ -49,6 +50,7 @@ class InteropContextInspector { InteropContextInspector(const ::grpc::ServerContext& context); // Inspector methods, able to peek inside ServerContext go here. + grpc_compression_algorithm GetCallCompressionAlgorithm() const; private: const ::grpc::ServerContext& context_; diff --git a/test/proto/messages.proto b/test/proto/messages.proto index 500e79cc81..bafb4c1b16 100644 --- a/test/proto/messages.proto +++ b/test/proto/messages.proto @@ -64,7 +64,7 @@ message Payload { // A protobuf representation for grpc status. This is used by test // clients to specify a status that the server should attempt to return. -message EchoStatus { +message EchoStatus { optional int32 code = 1; optional string message = 2; } -- GitLab From 80f3995e47ae1ccd30a48c00ef8770cf18e51280 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Tue, 21 Jul 2015 16:07:36 -0700 Subject: [PATCH 015/178] wip --- include/grpc++/client_context.h | 5 ++++ include/grpc++/server_context.h | 4 +-- test/cpp/interop/client_helper.cc | 31 ++++++++++++++++++++- test/cpp/interop/client_helper.h | 18 ++++++++++++ test/cpp/interop/interop_client.cc | 44 ++++++++++++++++++------------ test/cpp/interop/server.cc | 25 +++++++++++++++-- test/cpp/interop/server_helper.cc | 8 +++--- test/cpp/interop/server_helper.h | 4 +-- 8 files changed, 111 insertions(+), 28 deletions(-) diff --git a/include/grpc++/client_context.h b/include/grpc++/client_context.h index 9df76699d2..ccaf582d0a 100644 --- a/include/grpc++/client_context.h +++ b/include/grpc++/client_context.h @@ -71,6 +71,10 @@ class ClientAsyncReaderWriter; template <class R> class ClientAsyncResponseReader; +namespace testing { +class InteropClientContextInspector; +} // namespace testing + class ClientContext { public: ClientContext(); @@ -129,6 +133,7 @@ class ClientContext { ClientContext(const ClientContext&); ClientContext& operator=(const ClientContext&); + friend class ::grpc::testing::InteropClientContextInspector; friend class CallOpClientRecvStatus; friend class CallOpRecvInitialMetadata; friend class Channel; diff --git a/include/grpc++/server_context.h b/include/grpc++/server_context.h index 3bfa48fbb6..268cd7ffc3 100644 --- a/include/grpc++/server_context.h +++ b/include/grpc++/server_context.h @@ -78,7 +78,7 @@ class CompletionQueue; class Server; namespace testing { -class InteropContextInspector; +class InteropServerContextInspector; } // namespace testing // Interface of server side rpc context. @@ -117,7 +117,7 @@ class ServerContext { std::shared_ptr<const AuthContext> auth_context() const; private: - friend class ::grpc::testing::InteropContextInspector; + friend class ::grpc::testing::InteropServerContextInspector; friend class ::grpc::Server; template <class W, class R> friend class ::grpc::ServerAsyncReader; diff --git a/test/cpp/interop/client_helper.cc b/test/cpp/interop/client_helper.cc index 48b1b2e864..9df79bdbb5 100644 --- a/test/cpp/interop/client_helper.cc +++ b/test/cpp/interop/client_helper.cc @@ -48,10 +48,13 @@ #include <grpc++/create_channel.h> #include <grpc++/credentials.h> #include <grpc++/stream.h> -#include "src/cpp/client/secure_credentials.h" + #include "test/core/security/oauth2_utils.h" #include "test/cpp/util/create_test_channel.h" +#include "src/core/surface/call.h" +#include "src/cpp/client/secure_credentials.h" + DECLARE_bool(enable_ssl); DECLARE_bool(use_prod_roots); DECLARE_int32(server_port); @@ -62,6 +65,8 @@ DECLARE_string(default_service_account); DECLARE_string(service_account_key_file); DECLARE_string(oauth_scope); +using grpc::testing::CompressionType; + namespace grpc { namespace testing { @@ -137,5 +142,29 @@ std::shared_ptr<ChannelInterface> CreateChannelForTestCase( } } +CompressionType GetInteropCompressionTypeFromCompressionAlgorithm( + grpc_compression_algorithm algorithm) { + switch (algorithm) { + case GRPC_COMPRESS_NONE: + return CompressionType::NONE; + case GRPC_COMPRESS_GZIP: + return CompressionType::GZIP; + case GRPC_COMPRESS_DEFLATE: + return CompressionType::DEFLATE; + default: + GPR_ASSERT(false); + } +} + +InteropClientContextInspector::InteropClientContextInspector( + const ::grpc::ClientContext& context) + : context_(context) {} + +grpc_compression_algorithm +InteropClientContextInspector::GetCallCompressionAlgorithm() const { + return grpc_call_get_compression_algorithm(context_.call_); +} + + } // namespace testing } // namespace grpc diff --git a/test/cpp/interop/client_helper.h b/test/cpp/interop/client_helper.h index c4361bb9de..fb8a6644e4 100644 --- a/test/cpp/interop/client_helper.h +++ b/test/cpp/interop/client_helper.h @@ -39,6 +39,8 @@ #include <grpc++/config.h> #include <grpc++/channel_interface.h> +#include "test/proto/messages.grpc.pb.h" + namespace grpc { namespace testing { @@ -49,6 +51,22 @@ grpc::string GetOauth2AccessToken(); std::shared_ptr<ChannelInterface> CreateChannelForTestCase( const grpc::string& test_case); +grpc::testing::CompressionType +GetInteropCompressionTypeFromCompressionAlgorithm( + grpc_compression_algorithm algorithm); + +class InteropClientContextInspector { + public: + InteropClientContextInspector(const ::grpc::ClientContext& context); + + // Inspector methods, able to peek inside ClientContext, follow. + grpc_compression_algorithm GetCallCompressionAlgorithm() const; + + private: + const ::grpc::ClientContext& context_; +}; + + } // namespace testing } // namespace grpc diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index b53535bd46..3a28c704b5 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -43,6 +43,8 @@ #include <grpc++/client_context.h> #include <grpc++/status.h> #include <grpc++/stream.h> + +#include "test/cpp/interop/client_helper.h" #include "test/proto/test.grpc.pb.h" #include "test/proto/empty.grpc.pb.h" #include "test/proto/messages.grpc.pb.h" @@ -93,24 +95,18 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, std::unique_ptr<TestService::Stub> stub(TestService::NewStub(channel_)); ClientContext context; - // XXX: add UNCOMPRESSABLE to the mix - // - // XXX: 1) set request.response_compression to all the diff available - // compression values. We can't check the compression method used at the - // application level, but if something is wrong, two different implementations - // of gRPC (java vs c) won't be able to communicate. - // - // 2) for UNCOMPRESSABLE, verify that the response can be whatever, most - // likely uncompressed - request->set_response_type(PayloadType::COMPRESSABLE); + InteropClientContextInspector inspector(context); request->set_response_size(kLargeResponseSize); grpc::string payload(kLargeRequestSize, '\0'); request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize); Status s = stub->UnaryCall(&context, *request, response); + GPR_ASSERT(request->response_compression() == + GetInteropCompressionTypeFromCompressionAlgorithm( + inspector.GetCallCompressionAlgorithm())); AssertOkOrPrintErrorStatus(s); - GPR_ASSERT(response->payload().type() == PayloadType::COMPRESSABLE); + GPR_ASSERT(response->payload().type() == request->response_type()); GPR_ASSERT(response->payload().body() == grpc::string(kLargeResponseSize, '\0')); } @@ -124,6 +120,7 @@ void InteropClient::DoComputeEngineCreds( SimpleResponse response; request.set_fill_username(true); request.set_fill_oauth_scope(true); + request.set_response_type(PayloadType::COMPRESSABLE); PerformLargeUnary(&request, &response); gpr_log(GPR_INFO, "Got username %s", response.username().c_str()); gpr_log(GPR_INFO, "Got oauth_scope %s", response.oauth_scope().c_str()); @@ -143,6 +140,7 @@ void InteropClient::DoServiceAccountCreds(const grpc::string& username, SimpleResponse response; request.set_fill_username(true); request.set_fill_oauth_scope(true); + request.set_response_type(PayloadType::COMPRESSABLE); PerformLargeUnary(&request, &response); GPR_ASSERT(!response.username().empty()); GPR_ASSERT(!response.oauth_scope().empty()); @@ -180,6 +178,7 @@ void InteropClient::DoJwtTokenCreds(const grpc::string& username) { SimpleRequest request; SimpleResponse response; request.set_fill_username(true); + request.set_response_type(PayloadType::COMPRESSABLE); PerformLargeUnary(&request, &response); GPR_ASSERT(!response.username().empty()); GPR_ASSERT(username.find(response.username()) != grpc::string::npos); @@ -187,12 +186,19 @@ void InteropClient::DoJwtTokenCreds(const grpc::string& username) { } void InteropClient::DoLargeUnary() { - gpr_log(GPR_INFO, "Sending a large unary rpc..."); - SimpleRequest request; - request.set_response_compression(grpc::testing::GZIP); - SimpleResponse response; - PerformLargeUnary(&request, &response); - gpr_log(GPR_INFO, "Large unary done."); + const CompressionType compression_types[] = {NONE, GZIP, DEFLATE}; + const PayloadType payload_types[] = {COMPRESSABLE, UNCOMPRESSABLE, RANDOM}; + for (const auto payload_type : payload_types) { + for (const auto compression_type : compression_types) { + gpr_log(GPR_INFO, "Sending a large unary rpc..."); + SimpleRequest request; + SimpleResponse response; + request.set_response_type(payload_type); + request.set_response_compression(compression_type); + PerformLargeUnary(&request, &response); + gpr_log(GPR_INFO, "Large unary done."); + } + } } void InteropClient::DoRequestStreaming() { @@ -227,11 +233,15 @@ void InteropClient::DoResponseStreaming() { ClientContext context; StreamingOutputCallRequest request; + request.set_response_type(PayloadType::COMPRESSABLE); + request.set_response_compression(CompressionType::GZIP); + for (unsigned int i = 0; i < response_stream_sizes.size(); ++i) { ResponseParameters* response_parameter = request.add_response_parameters(); response_parameter->set_size(response_stream_sizes[i]); } StreamingOutputCallResponse response; + std::unique_ptr<ClientReader<StreamingOutputCallResponse>> stream( stub->StreamingOutputCall(&context, request)); diff --git a/test/cpp/interop/server.cc b/test/cpp/interop/server.cc index 7605b2a6ff..55df82b567 100644 --- a/test/cpp/interop/server.cc +++ b/test/cpp/interop/server.cc @@ -81,8 +81,28 @@ static bool got_sigint = false; bool SetPayload(PayloadType type, int size, Payload* payload) { PayloadType response_type = type; payload->set_type(response_type); - std::unique_ptr<char[]> body(new char[size]()); - payload->set_body(body.get(), size); + switch (type) { + case PayloadType::COMPRESSABLE: + { + std::unique_ptr<char[]> body(new char[size]()); + payload->set_body(body.get(), size); + } + break; + case PayloadType::UNCOMPRESSABLE: + { + // XXX + std::unique_ptr<char[]> body(new char[size]()); + payload->set_body(body.get(), size); + } + break; + case PayloadType::RANDOM: + { + // XXX + std::unique_ptr<char[]> body(new char[size]()); + payload->set_body(body.get(), size); + } + break; + } return true; } @@ -122,6 +142,7 @@ class TestServiceImpl : public TestService::Service { return Status(grpc::StatusCode::INTERNAL, "Error creating payload."); } } + return Status::OK; } diff --git a/test/cpp/interop/server_helper.cc b/test/cpp/interop/server_helper.cc index 0f8e5ff4f6..8cfed2acb5 100644 --- a/test/cpp/interop/server_helper.cc +++ b/test/cpp/interop/server_helper.cc @@ -60,21 +60,21 @@ std::shared_ptr<ServerCredentials> CreateInteropServerCredentials() { } } -InteropContextInspector::InteropContextInspector( +InteropServerContextInspector::InteropServerContextInspector( const ::grpc::ServerContext& context) : context_(context) {} grpc_compression_algorithm -InteropContextInspector::GetCallCompressionAlgorithm() const { +InteropServerContextInspector::GetCallCompressionAlgorithm() const { return grpc_call_get_compression_algorithm(context_.call_); } -std::shared_ptr<const AuthContext> InteropContextInspector::GetAuthContext() +std::shared_ptr<const AuthContext> InteropServerContextInspector::GetAuthContext() const { return context_.auth_context(); } -bool InteropContextInspector::IsCancelled() const { +bool InteropServerContextInspector::IsCancelled() const { return context_.IsCancelled(); } diff --git a/test/cpp/interop/server_helper.h b/test/cpp/interop/server_helper.h index 504652c885..a57ef0b3c5 100644 --- a/test/cpp/interop/server_helper.h +++ b/test/cpp/interop/server_helper.h @@ -45,9 +45,9 @@ namespace testing { std::shared_ptr<ServerCredentials> CreateInteropServerCredentials(); -class InteropContextInspector { +class InteropServerContextInspector { public: - InteropContextInspector(const ::grpc::ServerContext& context); + InteropServerContextInspector(const ::grpc::ServerContext& context); // Inspector methods, able to peek inside ServerContext, follow. std::shared_ptr<const AuthContext> GetAuthContext() const; -- GitLab From 1c604fd4f54e0e5744a357818c1782ff7877844e Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Tue, 21 Jul 2015 16:22:58 -0700 Subject: [PATCH 016/178] Fixed buggy grpc_compression_algorithm_parse --- include/grpc/compression.h | 9 ++++++--- src/core/channel/compress_filter.c | 2 +- src/core/compression/algorithm.c | 8 ++++---- src/core/surface/call.c | 9 ++++++--- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/include/grpc/compression.h b/include/grpc/compression.h index 913e553ba9..e35fb03eb2 100644 --- a/include/grpc/compression.h +++ b/include/grpc/compression.h @@ -34,6 +34,8 @@ #ifndef GRPC_COMPRESSION_H #define GRPC_COMPRESSION_H +#include <stdlib.h> + #ifdef __cplusplus extern "C" { #endif @@ -58,9 +60,10 @@ typedef enum { GRPC_COMPRESS_LEVEL_COUNT } grpc_compression_level; -/** Parses \a name as a grpc_compression_algorithm instance, updating \a - * algorithm. Returns 1 upon success, 0 otherwise. */ -int grpc_compression_algorithm_parse(const char *name, +/** Parses the first \a name_length bytes of \a name as a + * grpc_compression_algorithm instance, updating \a algorithm. Returns 1 upon + * success, 0 otherwise. */ +int grpc_compression_algorithm_parse(const char *name, size_t name_length, grpc_compression_algorithm *algorithm); /** Updates \a name with the encoding name corresponding to a valid \a diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c index b41dcb92d9..9ff679df18 100644 --- a/src/core/channel/compress_filter.c +++ b/src/core/channel/compress_filter.c @@ -100,7 +100,7 @@ static grpc_mdelem* compression_md_filter(void *user_data, grpc_mdelem *md) { if (md->key == channeld->mdstr_request_compression_algorithm_key) { const char *md_c_str = grpc_mdstr_as_c_string(md->value); - if (!grpc_compression_algorithm_parse(md_c_str, + if (!grpc_compression_algorithm_parse(md_c_str, strlen(md_c_str), &calld->compression_algorithm)) { gpr_log(GPR_ERROR, "Invalid compression algorithm: '%s'. Ignoring.", md_c_str); diff --git a/src/core/compression/algorithm.c b/src/core/compression/algorithm.c index 8a60b4ef48..077647ebe1 100644 --- a/src/core/compression/algorithm.c +++ b/src/core/compression/algorithm.c @@ -35,17 +35,17 @@ #include <string.h> #include <grpc/compression.h> -int grpc_compression_algorithm_parse(const char* name, +int grpc_compression_algorithm_parse(const char* name, size_t name_length, grpc_compression_algorithm *algorithm) { /* we use strncmp not only because it's safer (even though in this case it * doesn't matter, given that we are comparing against string literals, but * because this way we needn't have "name" nil-terminated (useful for slice * data, for example) */ - if (strncmp(name, "none", 4) == 0) { + if (strncmp(name, "none", name_length) == 0) { *algorithm = GRPC_COMPRESS_NONE; - } else if (strncmp(name, "gzip", 4) == 0) { + } else if (strncmp(name, "gzip", name_length) == 0) { *algorithm = GRPC_COMPRESS_GZIP; - } else if (strncmp(name, "deflate", 7) == 0) { + } else if (strncmp(name, "deflate", name_length) == 0) { *algorithm = GRPC_COMPRESS_DEFLATE; } else { return 0; diff --git a/src/core/surface/call.c b/src/core/surface/call.c index bb1ed809f8..54f10261e3 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -495,7 +495,8 @@ static void set_encodings_accepted_by_peer(grpc_call *call, for (i = 0; i < accept_encoding_parts.count; i++) { const gpr_slice* slice = &accept_encoding_parts.slices[i]; if (grpc_compression_algorithm_parse( - (const char *)GPR_SLICE_START_PTR(*slice), &algorithm)) { + (const char *)GPR_SLICE_START_PTR(*slice), GPR_SLICE_LENGTH(*slice), + &algorithm)) { GPR_BITSET(&call->encodings_accepted_by_peer, algorithm); } else { /* TODO(dgq): it'd be nice to have a slice-to-cstr function to easily @@ -1344,10 +1345,12 @@ static gpr_uint32 decode_compression(grpc_mdelem *md) { grpc_compression_algorithm algorithm; void *user_data = grpc_mdelem_get_user_data(md, destroy_compression); if (user_data) { - algorithm = ((grpc_compression_level)(gpr_intptr)user_data) - COMPRESS_OFFSET; + algorithm = + ((grpc_compression_level)(gpr_intptr)user_data) - COMPRESS_OFFSET; } else { const char *md_c_str = grpc_mdstr_as_c_string(md->value); - if (!grpc_compression_algorithm_parse(md_c_str, &algorithm)) { + if (!grpc_compression_algorithm_parse(md_c_str, strlen(md_c_str), + &algorithm)) { gpr_log(GPR_ERROR, "Invalid compression algorithm: '%s'", md_c_str); assert(0); } -- GitLab From 8ec09f6530938c6126a6579ce85ee07dbf71d785 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Tue, 21 Jul 2015 17:18:36 -0700 Subject: [PATCH 017/178] Added tests (and bugfix) for grpc_compression_algorithm_parse --- Makefile | 34 ++++++++++- build.json | 14 +++++ src/core/compression/algorithm.c | 3 + test/core/compression/compression_test.c | 77 ++++++++++++++++++++++++ tools/run_tests/sources_and_headers.json | 14 +++++ tools/run_tests/tests.json | 9 +++ vsprojects/Grpc.mak | 9 ++- 7 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 test/core/compression/compression_test.c diff --git a/Makefile b/Makefile index 4756b75fdf..86bdbd36ca 100644 --- a/Makefile +++ b/Makefile @@ -773,6 +773,7 @@ bin_encoder_test: $(BINDIR)/$(CONFIG)/bin_encoder_test chttp2_status_conversion_test: $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test chttp2_stream_encoder_test: $(BINDIR)/$(CONFIG)/chttp2_stream_encoder_test chttp2_stream_map_test: $(BINDIR)/$(CONFIG)/chttp2_stream_map_test +compression_test: $(BINDIR)/$(CONFIG)/compression_test dualstack_socket_test: $(BINDIR)/$(CONFIG)/dualstack_socket_test fd_conservation_posix_test: $(BINDIR)/$(CONFIG)/fd_conservation_posix_test fd_posix_test: $(BINDIR)/$(CONFIG)/fd_posix_test @@ -1530,7 +1531,7 @@ privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG buildtests: buildtests_c buildtests_cxx -buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONFIG)/alarm_list_test $(BINDIR)/$(CONFIG)/alarm_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)/dualstack_socket_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_cancellable_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_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)/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)/poll_kick_posix_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)/uri_parser_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/connection_prefix_bad_client_test $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test +buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONFIG)/alarm_list_test $(BINDIR)/$(CONFIG)/alarm_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)/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_cancellable_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_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)/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)/poll_kick_posix_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)/uri_parser_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/connection_prefix_bad_client_test $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test buildtests_cxx: 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_time_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/fixed_size_thread_pool_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)/secure_auth_context_test $(BINDIR)/$(CONFIG)/server_crash_test $(BINDIR)/$(CONFIG)/server_crash_test_client $(BINDIR)/$(CONFIG)/status_test $(BINDIR)/$(CONFIG)/sync_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/sync_unary_ping_pong_test $(BINDIR)/$(CONFIG)/thread_stress_test @@ -1555,6 +1556,8 @@ test_c: buildtests_c $(Q) $(BINDIR)/$(CONFIG)/chttp2_stream_encoder_test || ( echo test chttp2_stream_encoder_test failed ; exit 1 ) $(E) "[RUN] Testing chttp2_stream_map_test" $(Q) $(BINDIR)/$(CONFIG)/chttp2_stream_map_test || ( echo test chttp2_stream_map_test failed ; exit 1 ) + $(E) "[RUN] Testing compression_test" + $(Q) $(BINDIR)/$(CONFIG)/compression_test || ( echo test compression_test failed ; exit 1 ) $(E) "[RUN] Testing dualstack_socket_test" $(Q) $(BINDIR)/$(CONFIG)/dualstack_socket_test || ( echo test dualstack_socket_test failed ; exit 1 ) $(E) "[RUN] Testing fd_conservation_posix_test" @@ -6053,6 +6056,35 @@ endif endif +COMPRESSION_TEST_SRC = \ + test/core/compression/compression_test.c \ + +COMPRESSION_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(COMPRESSION_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/compression_test: openssl_dep_error + +else + +$(BINDIR)/$(CONFIG)/compression_test: $(COMPRESSION_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) $(COMPRESSION_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)/compression_test + +endif + +$(OBJDIR)/$(CONFIG)/test/core/compression/compression_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +deps_compression_test: $(COMPRESSION_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(COMPRESSION_TEST_OBJS:.o=.dep) +endif +endif + + DUALSTACK_SOCKET_TEST_SRC = \ test/core/end2end/dualstack_socket_test.c \ diff --git a/build.json b/build.json index 2755703e1c..e0ee9410ce 100644 --- a/build.json +++ b/build.json @@ -942,6 +942,20 @@ "gpr" ] }, + { + "name": "compression_test", + "build": "test", + "language": "c", + "src": [ + "test/core/compression/compression_test.c" + ], + "deps": [ + "grpc_test_util", + "grpc", + "gpr_test_util", + "gpr" + ] + }, { "name": "dualstack_socket_test", "build": "test", diff --git a/src/core/compression/algorithm.c b/src/core/compression/algorithm.c index 077647ebe1..dbf4721d13 100644 --- a/src/core/compression/algorithm.c +++ b/src/core/compression/algorithm.c @@ -41,6 +41,9 @@ int grpc_compression_algorithm_parse(const char* name, size_t name_length, * doesn't matter, given that we are comparing against string literals, but * because this way we needn't have "name" nil-terminated (useful for slice * data, for example) */ + if (name_length == 0) { + return 0; + } if (strncmp(name, "none", name_length) == 0) { *algorithm = GRPC_COMPRESS_NONE; } else if (strncmp(name, "gzip", name_length) == 0) { diff --git a/test/core/compression/compression_test.c b/test/core/compression/compression_test.c new file mode 100644 index 0000000000..01349c22b5 --- /dev/null +++ b/test/core/compression/compression_test.c @@ -0,0 +1,77 @@ +/* + * + * 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 <stdlib.h> +#include <string.h> + +#include <grpc/compression.h> +#include <grpc/support/log.h> +#include <grpc/support/useful.h> + +#include "test/core/util/test_config.h" + +static void test_compression_algorithm_parse(void) { + size_t i; + const char* valid_names[] = {"none", "gzip", "deflate"}; + const grpc_compression_algorithm valid_algorithms[] = { + GRPC_COMPRESS_NONE, GRPC_COMPRESS_GZIP, GRPC_COMPRESS_DEFLATE}; + const char* invalid_names[] = {"gzip2", "foo", "", "2gzip"}; + + gpr_log(GPR_DEBUG, "test_compression_algorithm_parse"); + + for (i = 0; i < GPR_ARRAY_SIZE(valid_names); i++) { + const char* valid_name = valid_names[i]; + grpc_compression_algorithm algorithm; + int success; + success = grpc_compression_algorithm_parse(valid_name, strlen(valid_name), + &algorithm); + GPR_ASSERT(success != 0); + GPR_ASSERT(algorithm == valid_algorithms[i]); + } + + for (i = 0; i < GPR_ARRAY_SIZE(invalid_names); i++) { + const char* invalid_name = invalid_names[i]; + grpc_compression_algorithm algorithm; + int success; + success = grpc_compression_algorithm_parse( + invalid_name, strlen(invalid_name), &algorithm); + GPR_ASSERT(success == 0); + /* the value of "algorithm" is undefined upon failure */ + } +} + +int main(int argc, char **argv) { + test_compression_algorithm_parse(); + + return 0; +} diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index abddaab699..f0b8826c4c 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -113,6 +113,20 @@ "test/core/transport/chttp2/stream_map_test.c" ] }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "compression_test", + "src": [ + "test/core/compression/compression_test.c" + ] + }, { "deps": [ "gpr", diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 98ef004c4b..ee6a79ab07 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -73,6 +73,15 @@ "posix" ] }, + { + "flaky": false, + "language": "c", + "name": "compression_test", + "platforms": [ + "windows", + "posix" + ] + }, { "flaky": false, "language": "c", diff --git a/vsprojects/Grpc.mak b/vsprojects/Grpc.mak index 30ae286021..a5269cbe01 100644 --- a/vsprojects/Grpc.mak +++ b/vsprojects/Grpc.mak @@ -63,7 +63,7 @@ $(OUT_DIR): build_libs: build_gpr build_gpr_test_util build_grpc build_grpc_test_util build_grpc_test_util_unsecure build_grpc_unsecure Debug\end2end_fixture_chttp2_fake_security.lib Debug\end2end_fixture_chttp2_fullstack.lib Debug\end2end_fixture_chttp2_fullstack_compression.lib Debug\end2end_fixture_chttp2_simple_ssl_fullstack.lib Debug\end2end_fixture_chttp2_simple_ssl_with_oauth2_fullstack.lib Debug\end2end_fixture_chttp2_socket_pair.lib Debug\end2end_fixture_chttp2_socket_pair_one_byte_at_a_time.lib Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_bad_hostname.lib Debug\end2end_test_cancel_after_accept.lib Debug\end2end_test_cancel_after_accept_and_writes_closed.lib Debug\end2end_test_cancel_after_invoke.lib Debug\end2end_test_cancel_before_invoke.lib Debug\end2end_test_cancel_in_a_vacuum.lib Debug\end2end_test_census_simple_request.lib Debug\end2end_test_disappearing_server.lib Debug\end2end_test_early_server_shutdown_finishes_inflight_calls.lib Debug\end2end_test_early_server_shutdown_finishes_tags.lib Debug\end2end_test_empty_batch.lib Debug\end2end_test_graceful_server_shutdown.lib Debug\end2end_test_invoke_large_request.lib Debug\end2end_test_max_concurrent_streams.lib Debug\end2end_test_max_message_length.lib Debug\end2end_test_no_op.lib Debug\end2end_test_ping_pong_streaming.lib Debug\end2end_test_registered_call.lib Debug\end2end_test_request_response_with_binary_metadata_and_payload.lib Debug\end2end_test_request_response_with_metadata_and_payload.lib Debug\end2end_test_request_response_with_payload.lib Debug\end2end_test_request_response_with_payload_and_call_creds.lib Debug\end2end_test_request_response_with_trailing_metadata_and_payload.lib Debug\end2end_test_request_with_compressed_payload.lib Debug\end2end_test_request_with_flags.lib Debug\end2end_test_request_with_large_metadata.lib Debug\end2end_test_request_with_payload.lib Debug\end2end_test_server_finishes_request.lib Debug\end2end_test_simple_delayed_request.lib Debug\end2end_test_simple_request.lib Debug\end2end_test_simple_request_with_high_initial_sequence_number.lib Debug\end2end_certs.lib Debug\bad_client_test.lib buildtests: buildtests_c buildtests_cxx -buildtests_c: alarm_heap_test.exe alarm_list_test.exe alarm_test.exe alpn_test.exe bin_encoder_test.exe chttp2_status_conversion_test.exe chttp2_stream_encoder_test.exe chttp2_stream_map_test.exe fling_client.exe fling_server.exe gpr_cancellable_test.exe gpr_cmdline_test.exe gpr_env_test.exe gpr_file_test.exe gpr_histogram_test.exe gpr_host_port_test.exe gpr_log_test.exe gpr_slice_buffer_test.exe gpr_slice_test.exe gpr_stack_lockfree_test.exe gpr_string_test.exe gpr_sync_test.exe gpr_thd_test.exe gpr_time_test.exe gpr_tls_test.exe gpr_useful_test.exe grpc_auth_context_test.exe grpc_base64_test.exe grpc_byte_buffer_reader_test.exe grpc_channel_stack_test.exe grpc_completion_queue_test.exe grpc_credentials_test.exe grpc_json_token_test.exe grpc_jwt_verifier_test.exe grpc_security_connector_test.exe grpc_stream_op_test.exe hpack_parser_test.exe hpack_table_test.exe httpcli_format_request_test.exe httpcli_parser_test.exe json_rewrite.exe json_rewrite_test.exe json_test.exe lame_client_test.exe message_compress_test.exe multi_init_test.exe multiple_server_queues_test.exe murmur_hash_test.exe no_server_test.exe resolve_address_test.exe secure_endpoint_test.exe sockaddr_utils_test.exe time_averaged_stats_test.exe timeout_encoding_test.exe timers_test.exe transport_metadata_test.exe transport_security_test.exe uri_parser_test.exe chttp2_fake_security_bad_hostname_test.exe chttp2_fake_security_cancel_after_accept_test.exe chttp2_fake_security_cancel_after_accept_and_writes_closed_test.exe chttp2_fake_security_cancel_after_invoke_test.exe chttp2_fake_security_cancel_before_invoke_test.exe chttp2_fake_security_cancel_in_a_vacuum_test.exe chttp2_fake_security_census_simple_request_test.exe chttp2_fake_security_disappearing_server_test.exe chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fake_security_early_server_shutdown_finishes_tags_test.exe chttp2_fake_security_empty_batch_test.exe chttp2_fake_security_graceful_server_shutdown_test.exe chttp2_fake_security_invoke_large_request_test.exe chttp2_fake_security_max_concurrent_streams_test.exe chttp2_fake_security_max_message_length_test.exe chttp2_fake_security_no_op_test.exe chttp2_fake_security_ping_pong_streaming_test.exe chttp2_fake_security_registered_call_test.exe chttp2_fake_security_request_response_with_binary_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_payload_test.exe chttp2_fake_security_request_response_with_payload_and_call_creds_test.exe chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fake_security_request_with_compressed_payload_test.exe chttp2_fake_security_request_with_flags_test.exe chttp2_fake_security_request_with_large_metadata_test.exe chttp2_fake_security_request_with_payload_test.exe chttp2_fake_security_server_finishes_request_test.exe chttp2_fake_security_simple_delayed_request_test.exe chttp2_fake_security_simple_request_test.exe chttp2_fake_security_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_test.exe chttp2_fullstack_cancel_after_accept_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_cancel_after_invoke_test.exe chttp2_fullstack_cancel_before_invoke_test.exe chttp2_fullstack_cancel_in_a_vacuum_test.exe chttp2_fullstack_census_simple_request_test.exe chttp2_fullstack_disappearing_server_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_empty_batch_test.exe chttp2_fullstack_graceful_server_shutdown_test.exe chttp2_fullstack_invoke_large_request_test.exe chttp2_fullstack_max_concurrent_streams_test.exe chttp2_fullstack_max_message_length_test.exe chttp2_fullstack_no_op_test.exe chttp2_fullstack_ping_pong_streaming_test.exe chttp2_fullstack_registered_call_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_payload_test.exe chttp2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_request_with_compressed_payload_test.exe chttp2_fullstack_request_with_flags_test.exe chttp2_fullstack_request_with_large_metadata_test.exe chttp2_fullstack_request_with_payload_test.exe chttp2_fullstack_server_finishes_request_test.exe chttp2_fullstack_simple_delayed_request_test.exe chttp2_fullstack_simple_request_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_compression_bad_hostname_test.exe chttp2_fullstack_compression_cancel_after_accept_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_compression_cancel_after_invoke_test.exe chttp2_fullstack_compression_cancel_before_invoke_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_test.exe chttp2_fullstack_compression_census_simple_request_test.exe chttp2_fullstack_compression_disappearing_server_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_compression_empty_batch_test.exe chttp2_fullstack_compression_graceful_server_shutdown_test.exe chttp2_fullstack_compression_invoke_large_request_test.exe chttp2_fullstack_compression_max_concurrent_streams_test.exe chttp2_fullstack_compression_max_message_length_test.exe chttp2_fullstack_compression_no_op_test.exe chttp2_fullstack_compression_ping_pong_streaming_test.exe chttp2_fullstack_compression_registered_call_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_compression_request_with_compressed_payload_test.exe chttp2_fullstack_compression_request_with_flags_test.exe chttp2_fullstack_compression_request_with_large_metadata_test.exe chttp2_fullstack_compression_request_with_payload_test.exe chttp2_fullstack_compression_server_finishes_request_test.exe chttp2_fullstack_compression_simple_delayed_request_test.exe chttp2_fullstack_compression_simple_request_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_bad_hostname_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_census_simple_request_test.exe chttp2_simple_ssl_fullstack_disappearing_server_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_empty_batch_test.exe chttp2_simple_ssl_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_fullstack_max_message_length_test.exe chttp2_simple_ssl_fullstack_no_op_test.exe chttp2_simple_ssl_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_registered_call_test.exe chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_fullstack_request_with_flags_test.exe chttp2_simple_ssl_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_request_with_payload_test.exe chttp2_simple_ssl_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_simple_request_test.exe chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test.exe chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test.exe chttp2_simple_ssl_with_oauth2_fullstack_no_op_test.exe chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_bad_hostname_test.exe chttp2_socket_pair_cancel_after_accept_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_cancel_after_invoke_test.exe chttp2_socket_pair_cancel_before_invoke_test.exe chttp2_socket_pair_cancel_in_a_vacuum_test.exe chttp2_socket_pair_census_simple_request_test.exe chttp2_socket_pair_disappearing_server_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_empty_batch_test.exe chttp2_socket_pair_graceful_server_shutdown_test.exe chttp2_socket_pair_invoke_large_request_test.exe chttp2_socket_pair_max_concurrent_streams_test.exe chttp2_socket_pair_max_message_length_test.exe chttp2_socket_pair_no_op_test.exe chttp2_socket_pair_ping_pong_streaming_test.exe chttp2_socket_pair_registered_call_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_payload_test.exe chttp2_socket_pair_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_request_with_compressed_payload_test.exe chttp2_socket_pair_request_with_flags_test.exe chttp2_socket_pair_request_with_large_metadata_test.exe chttp2_socket_pair_request_with_payload_test.exe chttp2_socket_pair_server_finishes_request_test.exe chttp2_socket_pair_simple_delayed_request_test.exe chttp2_socket_pair_simple_request_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_disappearing_server_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe chttp2_socket_pair_with_grpc_trace_no_op_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_unsecure_test.exe chttp2_fullstack_cancel_after_accept_unsecure_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_census_simple_request_unsecure_test.exe chttp2_fullstack_disappearing_server_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_empty_batch_unsecure_test.exe chttp2_fullstack_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_invoke_large_request_unsecure_test.exe chttp2_fullstack_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_max_message_length_unsecure_test.exe chttp2_fullstack_no_op_unsecure_test.exe chttp2_fullstack_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_registered_call_unsecure_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_payload_unsecure_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_request_with_flags_unsecure_test.exe chttp2_fullstack_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_request_with_payload_unsecure_test.exe chttp2_fullstack_server_finishes_request_unsecure_test.exe chttp2_fullstack_simple_delayed_request_unsecure_test.exe chttp2_fullstack_simple_request_unsecure_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_compression_bad_hostname_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_compression_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_compression_census_simple_request_unsecure_test.exe chttp2_fullstack_compression_disappearing_server_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_compression_empty_batch_unsecure_test.exe chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_compression_invoke_large_request_unsecure_test.exe chttp2_fullstack_compression_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_compression_max_message_length_unsecure_test.exe chttp2_fullstack_compression_no_op_unsecure_test.exe chttp2_fullstack_compression_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_compression_registered_call_unsecure_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_flags_unsecure_test.exe chttp2_fullstack_compression_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_compression_request_with_payload_unsecure_test.exe chttp2_fullstack_compression_server_finishes_request_unsecure_test.exe chttp2_fullstack_compression_simple_delayed_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_bad_hostname_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_census_simple_request_unsecure_test.exe chttp2_socket_pair_disappearing_server_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_empty_batch_unsecure_test.exe chttp2_socket_pair_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_invoke_large_request_unsecure_test.exe chttp2_socket_pair_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_max_message_length_unsecure_test.exe chttp2_socket_pair_no_op_unsecure_test.exe chttp2_socket_pair_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_registered_call_unsecure_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_request_with_flags_unsecure_test.exe chttp2_socket_pair_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_request_with_payload_unsecure_test.exe chttp2_socket_pair_server_finishes_request_unsecure_test.exe chttp2_socket_pair_simple_delayed_request_unsecure_test.exe chttp2_socket_pair_simple_request_unsecure_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_disappearing_server_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe connection_prefix_bad_client_test.exe initial_settings_frame_bad_client_test.exe +buildtests_c: alarm_heap_test.exe alarm_list_test.exe alarm_test.exe alpn_test.exe bin_encoder_test.exe chttp2_status_conversion_test.exe chttp2_stream_encoder_test.exe chttp2_stream_map_test.exe compression_test.exe fling_client.exe fling_server.exe gpr_cancellable_test.exe gpr_cmdline_test.exe gpr_env_test.exe gpr_file_test.exe gpr_histogram_test.exe gpr_host_port_test.exe gpr_log_test.exe gpr_slice_buffer_test.exe gpr_slice_test.exe gpr_stack_lockfree_test.exe gpr_string_test.exe gpr_sync_test.exe gpr_thd_test.exe gpr_time_test.exe gpr_tls_test.exe gpr_useful_test.exe grpc_auth_context_test.exe grpc_base64_test.exe grpc_byte_buffer_reader_test.exe grpc_channel_stack_test.exe grpc_completion_queue_test.exe grpc_credentials_test.exe grpc_json_token_test.exe grpc_jwt_verifier_test.exe grpc_security_connector_test.exe grpc_stream_op_test.exe hpack_parser_test.exe hpack_table_test.exe httpcli_format_request_test.exe httpcli_parser_test.exe json_rewrite.exe json_rewrite_test.exe json_test.exe lame_client_test.exe message_compress_test.exe multi_init_test.exe multiple_server_queues_test.exe murmur_hash_test.exe no_server_test.exe resolve_address_test.exe secure_endpoint_test.exe sockaddr_utils_test.exe time_averaged_stats_test.exe timeout_encoding_test.exe timers_test.exe transport_metadata_test.exe transport_security_test.exe uri_parser_test.exe chttp2_fake_security_bad_hostname_test.exe chttp2_fake_security_cancel_after_accept_test.exe chttp2_fake_security_cancel_after_accept_and_writes_closed_test.exe chttp2_fake_security_cancel_after_invoke_test.exe chttp2_fake_security_cancel_before_invoke_test.exe chttp2_fake_security_cancel_in_a_vacuum_test.exe chttp2_fake_security_census_simple_request_test.exe chttp2_fake_security_disappearing_server_test.exe chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fake_security_early_server_shutdown_finishes_tags_test.exe chttp2_fake_security_empty_batch_test.exe chttp2_fake_security_graceful_server_shutdown_test.exe chttp2_fake_security_invoke_large_request_test.exe chttp2_fake_security_max_concurrent_streams_test.exe chttp2_fake_security_max_message_length_test.exe chttp2_fake_security_no_op_test.exe chttp2_fake_security_ping_pong_streaming_test.exe chttp2_fake_security_registered_call_test.exe chttp2_fake_security_request_response_with_binary_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_payload_test.exe chttp2_fake_security_request_response_with_payload_and_call_creds_test.exe chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fake_security_request_with_compressed_payload_test.exe chttp2_fake_security_request_with_flags_test.exe chttp2_fake_security_request_with_large_metadata_test.exe chttp2_fake_security_request_with_payload_test.exe chttp2_fake_security_server_finishes_request_test.exe chttp2_fake_security_simple_delayed_request_test.exe chttp2_fake_security_simple_request_test.exe chttp2_fake_security_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_test.exe chttp2_fullstack_cancel_after_accept_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_cancel_after_invoke_test.exe chttp2_fullstack_cancel_before_invoke_test.exe chttp2_fullstack_cancel_in_a_vacuum_test.exe chttp2_fullstack_census_simple_request_test.exe chttp2_fullstack_disappearing_server_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_empty_batch_test.exe chttp2_fullstack_graceful_server_shutdown_test.exe chttp2_fullstack_invoke_large_request_test.exe chttp2_fullstack_max_concurrent_streams_test.exe chttp2_fullstack_max_message_length_test.exe chttp2_fullstack_no_op_test.exe chttp2_fullstack_ping_pong_streaming_test.exe chttp2_fullstack_registered_call_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_payload_test.exe chttp2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_request_with_compressed_payload_test.exe chttp2_fullstack_request_with_flags_test.exe chttp2_fullstack_request_with_large_metadata_test.exe chttp2_fullstack_request_with_payload_test.exe chttp2_fullstack_server_finishes_request_test.exe chttp2_fullstack_simple_delayed_request_test.exe chttp2_fullstack_simple_request_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_compression_bad_hostname_test.exe chttp2_fullstack_compression_cancel_after_accept_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_compression_cancel_after_invoke_test.exe chttp2_fullstack_compression_cancel_before_invoke_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_test.exe chttp2_fullstack_compression_census_simple_request_test.exe chttp2_fullstack_compression_disappearing_server_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_compression_empty_batch_test.exe chttp2_fullstack_compression_graceful_server_shutdown_test.exe chttp2_fullstack_compression_invoke_large_request_test.exe chttp2_fullstack_compression_max_concurrent_streams_test.exe chttp2_fullstack_compression_max_message_length_test.exe chttp2_fullstack_compression_no_op_test.exe chttp2_fullstack_compression_ping_pong_streaming_test.exe chttp2_fullstack_compression_registered_call_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_compression_request_with_compressed_payload_test.exe chttp2_fullstack_compression_request_with_flags_test.exe chttp2_fullstack_compression_request_with_large_metadata_test.exe chttp2_fullstack_compression_request_with_payload_test.exe chttp2_fullstack_compression_server_finishes_request_test.exe chttp2_fullstack_compression_simple_delayed_request_test.exe chttp2_fullstack_compression_simple_request_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_bad_hostname_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_census_simple_request_test.exe chttp2_simple_ssl_fullstack_disappearing_server_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_empty_batch_test.exe chttp2_simple_ssl_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_fullstack_max_message_length_test.exe chttp2_simple_ssl_fullstack_no_op_test.exe chttp2_simple_ssl_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_registered_call_test.exe chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_fullstack_request_with_flags_test.exe chttp2_simple_ssl_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_request_with_payload_test.exe chttp2_simple_ssl_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_simple_request_test.exe chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test.exe chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test.exe chttp2_simple_ssl_with_oauth2_fullstack_no_op_test.exe chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_bad_hostname_test.exe chttp2_socket_pair_cancel_after_accept_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_cancel_after_invoke_test.exe chttp2_socket_pair_cancel_before_invoke_test.exe chttp2_socket_pair_cancel_in_a_vacuum_test.exe chttp2_socket_pair_census_simple_request_test.exe chttp2_socket_pair_disappearing_server_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_empty_batch_test.exe chttp2_socket_pair_graceful_server_shutdown_test.exe chttp2_socket_pair_invoke_large_request_test.exe chttp2_socket_pair_max_concurrent_streams_test.exe chttp2_socket_pair_max_message_length_test.exe chttp2_socket_pair_no_op_test.exe chttp2_socket_pair_ping_pong_streaming_test.exe chttp2_socket_pair_registered_call_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_payload_test.exe chttp2_socket_pair_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_request_with_compressed_payload_test.exe chttp2_socket_pair_request_with_flags_test.exe chttp2_socket_pair_request_with_large_metadata_test.exe chttp2_socket_pair_request_with_payload_test.exe chttp2_socket_pair_server_finishes_request_test.exe chttp2_socket_pair_simple_delayed_request_test.exe chttp2_socket_pair_simple_request_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_disappearing_server_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe chttp2_socket_pair_with_grpc_trace_no_op_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_delayed_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_unsecure_test.exe chttp2_fullstack_cancel_after_accept_unsecure_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_census_simple_request_unsecure_test.exe chttp2_fullstack_disappearing_server_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_empty_batch_unsecure_test.exe chttp2_fullstack_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_invoke_large_request_unsecure_test.exe chttp2_fullstack_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_max_message_length_unsecure_test.exe chttp2_fullstack_no_op_unsecure_test.exe chttp2_fullstack_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_registered_call_unsecure_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_payload_unsecure_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_request_with_flags_unsecure_test.exe chttp2_fullstack_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_request_with_payload_unsecure_test.exe chttp2_fullstack_server_finishes_request_unsecure_test.exe chttp2_fullstack_simple_delayed_request_unsecure_test.exe chttp2_fullstack_simple_request_unsecure_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_compression_bad_hostname_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_compression_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_compression_census_simple_request_unsecure_test.exe chttp2_fullstack_compression_disappearing_server_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_compression_empty_batch_unsecure_test.exe chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_compression_invoke_large_request_unsecure_test.exe chttp2_fullstack_compression_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_compression_max_message_length_unsecure_test.exe chttp2_fullstack_compression_no_op_unsecure_test.exe chttp2_fullstack_compression_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_compression_registered_call_unsecure_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_flags_unsecure_test.exe chttp2_fullstack_compression_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_compression_request_with_payload_unsecure_test.exe chttp2_fullstack_compression_server_finishes_request_unsecure_test.exe chttp2_fullstack_compression_simple_delayed_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_bad_hostname_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_census_simple_request_unsecure_test.exe chttp2_socket_pair_disappearing_server_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_empty_batch_unsecure_test.exe chttp2_socket_pair_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_invoke_large_request_unsecure_test.exe chttp2_socket_pair_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_max_message_length_unsecure_test.exe chttp2_socket_pair_no_op_unsecure_test.exe chttp2_socket_pair_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_registered_call_unsecure_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_request_with_flags_unsecure_test.exe chttp2_socket_pair_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_request_with_payload_unsecure_test.exe chttp2_socket_pair_server_finishes_request_unsecure_test.exe chttp2_socket_pair_simple_delayed_request_unsecure_test.exe chttp2_socket_pair_simple_request_unsecure_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_disappearing_server_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_disappearing_server_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_delayed_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe connection_prefix_bad_client_test.exe initial_settings_frame_bad_client_test.exe echo All tests built. buildtests_cxx: interop_client.exe interop_server.exe @@ -125,6 +125,13 @@ chttp2_stream_map_test.exe: build_libs $(OUT_DIR) chttp2_stream_map_test: chttp2_stream_map_test.exe echo Running chttp2_stream_map_test $(OUT_DIR)\chttp2_stream_map_test.exe +compression_test.exe: build_libs $(OUT_DIR) + echo Building compression_test + $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\core\compression\compression_test.c + $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\compression_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\compression_test.obj +compression_test: compression_test.exe + echo Running compression_test + $(OUT_DIR)\compression_test.exe fling_client.exe: build_libs $(OUT_DIR) echo Building fling_client $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\core\fling\client.c -- GitLab From c899319fd854e7d9476ab3c304c059a99e549a21 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 22 Jul 2015 09:10:39 -0700 Subject: [PATCH 018/178] Updated interop tests with support for compression. The support for uncompressable payloads relies on a 512KB file with data from /dev/urandom --- Makefile | 2 + build.json | 1 + src/core/surface/call.c | 4 + src/core/surface/call.h | 2 + test/cpp/interop/client_helper.cc | 3 + test/cpp/interop/client_helper.h | 1 + test/cpp/interop/interop_client.cc | 124 ++++++++++++++++++----- test/cpp/interop/rnd.dat | Bin 0 -> 524288 bytes test/cpp/interop/server.cc | 47 +++++---- tools/run_tests/sources_and_headers.json | 4 +- 10 files changed, 138 insertions(+), 50 deletions(-) create mode 100644 test/cpp/interop/rnd.dat diff --git a/Makefile b/Makefile index 2ae0cd052d..b87e4470bc 100644 --- a/Makefile +++ b/Makefile @@ -4328,6 +4328,7 @@ endif LIBINTEROP_CLIENT_HELPER_SRC = \ + $(GENDIR)/test/proto/messages.pb.cc $(GENDIR)/test/proto/messages.grpc.pb.cc \ test/cpp/interop/client_helper.cc \ @@ -4372,6 +4373,7 @@ ifneq ($(NO_DEPS),true) -include $(LIBINTEROP_CLIENT_HELPER_OBJS:.o=.dep) endif endif +$(OBJDIR)/$(CONFIG)/test/cpp/interop/client_helper.o: $(GENDIR)/test/proto/messages.pb.cc $(GENDIR)/test/proto/messages.grpc.pb.cc LIBINTEROP_CLIENT_MAIN_SRC = \ diff --git a/build.json b/build.json index 2755703e1c..172339eee9 100644 --- a/build.json +++ b/build.json @@ -684,6 +684,7 @@ "test/cpp/interop/client_helper.h" ], "src": [ + "test/proto/messages.proto", "test/cpp/interop/client_helper.cc" ], "deps": [ diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 6e643b591c..277901d1b5 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -480,6 +480,10 @@ grpc_compression_algorithm grpc_call_get_compression_algorithm( return call->compression_algorithm; } +gpr_uint32 grpc_call_get_message_flags(const grpc_call *call) { + return call->incoming_message_flags; +} + static void set_status_details(grpc_call *call, status_source source, grpc_mdstr *status) { if (call->status[source].details != NULL) { diff --git a/src/core/surface/call.h b/src/core/surface/call.h index 20eb4bbaa6..493a07c7a6 100644 --- a/src/core/surface/call.h +++ b/src/core/surface/call.h @@ -160,6 +160,8 @@ gpr_uint8 grpc_call_is_client(grpc_call *call); grpc_compression_algorithm grpc_call_get_compression_algorithm( const grpc_call *call); +gpr_uint32 grpc_call_get_message_flags(const grpc_call *call); + #ifdef __cplusplus } #endif diff --git a/test/cpp/interop/client_helper.cc b/test/cpp/interop/client_helper.cc index 9df79bdbb5..cdc04b0bce 100644 --- a/test/cpp/interop/client_helper.cc +++ b/test/cpp/interop/client_helper.cc @@ -165,6 +165,9 @@ InteropClientContextInspector::GetCallCompressionAlgorithm() const { return grpc_call_get_compression_algorithm(context_.call_); } +gpr_uint32 InteropClientContextInspector::GetMessageFlags() const { + return grpc_call_get_message_flags(context_.call_); +} } // namespace testing } // namespace grpc diff --git a/test/cpp/interop/client_helper.h b/test/cpp/interop/client_helper.h index fb8a6644e4..1c7036d25d 100644 --- a/test/cpp/interop/client_helper.h +++ b/test/cpp/interop/client_helper.h @@ -61,6 +61,7 @@ class InteropClientContextInspector { // Inspector methods, able to peek inside ClientContext, follow. grpc_compression_algorithm GetCallCompressionAlgorithm() const; + gpr_uint32 GetMessageFlags() const; private: const ::grpc::ClientContext& context_; diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index 3a28c704b5..a0770a9f35 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -33,12 +33,14 @@ #include "test/cpp/interop/interop_client.h" +#include <fstream> #include <memory> #include <unistd.h> #include <grpc/grpc.h> #include <grpc/support/log.h> +#include <grpc/support/string_util.h> #include <grpc++/channel_interface.h> #include <grpc++/client_context.h> #include <grpc++/status.h> @@ -48,10 +50,13 @@ #include "test/proto/test.grpc.pb.h" #include "test/proto/empty.grpc.pb.h" #include "test/proto/messages.grpc.pb.h" +#include "src/core/transport/stream_op.h" namespace grpc { namespace testing { +static const char* kRandomFile = "test/cpp/interop/rnd.dat"; + namespace { // The same value is defined by the Java client. const std::vector<int> request_stream_sizes = {27182, 8, 1828, 45904}; @@ -102,13 +107,40 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, Status s = stub->UnaryCall(&context, *request, response); + // Compression related checks. GPR_ASSERT(request->response_compression() == GetInteropCompressionTypeFromCompressionAlgorithm( inspector.GetCallCompressionAlgorithm())); + if (request->response_compression() == NONE) { + GPR_ASSERT(!(inspector.GetMessageFlags() & GRPC_WRITE_INTERNAL_COMPRESS)); + } else if (request->response_type() == PayloadType::COMPRESSABLE) { + // requested compression and compressable response => results should always + // be compressed. + GPR_ASSERT(inspector.GetMessageFlags() & GRPC_WRITE_INTERNAL_COMPRESS); + } + AssertOkOrPrintErrorStatus(s); - GPR_ASSERT(response->payload().type() == request->response_type()); - GPR_ASSERT(response->payload().body() == - grpc::string(kLargeResponseSize, '\0')); + + // Payload related checks. + if (request->response_type() != PayloadType::RANDOM) { + GPR_ASSERT(response->payload().type() == request->response_type()); + } + switch (response->payload().type()) { + case PayloadType::COMPRESSABLE: + GPR_ASSERT(response->payload().body() == + grpc::string(kLargeResponseSize, '\0')); + break; + case PayloadType::UNCOMPRESSABLE: { + std::ifstream rnd_file(kRandomFile); + GPR_ASSERT(rnd_file.good()); + for (int i = 0; i < kLargeResponseSize; i++) { + GPR_ASSERT(response->payload().body()[i] == (char)rnd_file.get()); + } + } + break; + default: + GPR_ASSERT(false); + } } void InteropClient::DoComputeEngineCreds( @@ -190,13 +222,19 @@ void InteropClient::DoLargeUnary() { const PayloadType payload_types[] = {COMPRESSABLE, UNCOMPRESSABLE, RANDOM}; for (const auto payload_type : payload_types) { for (const auto compression_type : compression_types) { - gpr_log(GPR_INFO, "Sending a large unary rpc..."); + char* log_suffix; + gpr_asprintf(&log_suffix, "(compression=%s; payload=%s)", + CompressionType_Name(compression_type).c_str(), + PayloadType_Name(payload_type).c_str()); + + gpr_log(GPR_INFO, "Sending a large unary rpc %s.", log_suffix); SimpleRequest request; SimpleResponse response; request.set_response_type(payload_type); request.set_response_compression(compression_type); PerformLargeUnary(&request, &response); - gpr_log(GPR_INFO, "Large unary done."); + gpr_log(GPR_INFO, "Large unary done %s.", log_suffix); + gpr_free(log_suffix); } } } @@ -228,34 +266,66 @@ void InteropClient::DoRequestStreaming() { } void InteropClient::DoResponseStreaming() { - gpr_log(GPR_INFO, "Receiving response steaming rpc ..."); std::unique_ptr<TestService::Stub> stub(TestService::NewStub(channel_)); - ClientContext context; - StreamingOutputCallRequest request; - request.set_response_type(PayloadType::COMPRESSABLE); - request.set_response_compression(CompressionType::GZIP); + const CompressionType compression_types[] = {NONE, GZIP, DEFLATE}; + const PayloadType payload_types[] = {COMPRESSABLE, UNCOMPRESSABLE, RANDOM}; + for (const auto payload_type : payload_types) { + for (const auto compression_type : compression_types) { + ClientContext context; + InteropClientContextInspector inspector(context); + StreamingOutputCallRequest request; - for (unsigned int i = 0; i < response_stream_sizes.size(); ++i) { - ResponseParameters* response_parameter = request.add_response_parameters(); - response_parameter->set_size(response_stream_sizes[i]); - } - StreamingOutputCallResponse response; + char* log_suffix; + gpr_asprintf(&log_suffix, "(compression=%s; payload=%s)", + CompressionType_Name(compression_type).c_str(), + PayloadType_Name(payload_type).c_str()); - std::unique_ptr<ClientReader<StreamingOutputCallResponse>> stream( - stub->StreamingOutputCall(&context, request)); + gpr_log(GPR_INFO, "Receiving response steaming rpc %s.", log_suffix); - unsigned int i = 0; - while (stream->Read(&response)) { - GPR_ASSERT(response.payload().body() == - grpc::string(response_stream_sizes[i], '\0')); - ++i; - } - GPR_ASSERT(response_stream_sizes.size() == i); - Status s = stream->Finish(); + request.set_response_type(payload_type); + request.set_response_compression(compression_type); - AssertOkOrPrintErrorStatus(s); - gpr_log(GPR_INFO, "Response streaming done."); + for (unsigned int i = 0; i < response_stream_sizes.size(); ++i) { + ResponseParameters* response_parameter = + request.add_response_parameters(); + response_parameter->set_size(response_stream_sizes[i]); + } + StreamingOutputCallResponse response; + + std::unique_ptr<ClientReader<StreamingOutputCallResponse>> stream( + stub->StreamingOutputCall(&context, request)); + + unsigned int i = 0; + while (stream->Read(&response)) { + GPR_ASSERT(response.payload().body() == + grpc::string(response_stream_sizes[i], '\0')); + + // Compression related checks. + GPR_ASSERT(request.response_compression() == + GetInteropCompressionTypeFromCompressionAlgorithm( + inspector.GetCallCompressionAlgorithm())); + if (request.response_compression() == NONE) { + GPR_ASSERT( + !(inspector.GetMessageFlags() & GRPC_WRITE_INTERNAL_COMPRESS)); + } else if (request.response_type() == PayloadType::COMPRESSABLE) { + // requested compression and compressable response => results should + // always be compressed. + GPR_ASSERT(inspector.GetMessageFlags() & + GRPC_WRITE_INTERNAL_COMPRESS); + } + + ++i; + } + + GPR_ASSERT(response_stream_sizes.size() == i); + Status s = stream->Finish(); + + AssertOkOrPrintErrorStatus(s); + gpr_log(GPR_INFO, "Response streaming done %s.", log_suffix); + gpr_free(log_suffix); + } + } } void InteropClient::DoResponseStreamingWithSlowConsumer() { diff --git a/test/cpp/interop/rnd.dat b/test/cpp/interop/rnd.dat new file mode 100644 index 0000000000000000000000000000000000000000..8c7f38f9e0e01b33798cbe743bd5f873b6e0a1af GIT binary patch literal 524288 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%0A^H$B%&A)%*t0}r{<;4h9Y@-L1 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	enj&8HH5 z4rHx~B#toYt<Dvvx!tD*2j)$bM)qI}O{pMN;)=S>)z>WfenA0Y%yZnNb#p+hmP$kn zS0&*BMv~XW5{VXABQT9Q2t?1pq6Poc3S2VAx4Zu1`rOdM(l4UO{WW=%&xBsXS9a=J z#Q4*olmfBxIZGr(v@n2p?(SsSF|<@NhjA=q6`ImuBRvJ`ER6S|2hM*3z<I1rB61GE zqVs-qJ#!HDRMxcGrue9pY>YNcC-OtjuOdDWwN)sJiL`oB{-vDg(RjzMz<uaY3#=Cy zrkm6w&ZD@>@GGq!vB~*~)bnQTtl=O|z<2pgZzVPxEGW+H5uv|DSTxGoh!Il<V=OLh zcELQUCjbh2Ods-fl)B6f2p`Y<0nru<!w<kAUSL;`Di>Ae(KGAKOe2Z`Bzfr-1wver z`s?1+P=5_zkAw7t<&3c@ENKHl&F4G-AK|)^pgFTi+P#LYjTo<9(;SB?qL7Zk7bxY2 zWjT*&e@oJu9n~VzdRhM~f}0|?lJ~ks(i+QK%q<kKQa>PeO+c`Ejcr*_n1MHJL(5%& zyG`T$Q#*RHXhZ)8_}eopRE+J|9$2%^cif>_S`ecGV9ME#kh@Yi2BT}pqKfT3lit<N z!X%$aHumA3ll)Zvu_Umn-(lD8bw^)9PKACGFTx;^7;R-iNvYRDKv5yhUi3B2fZ69h z**P6Y@Fv7!!rMQ!*Cn-b6Ecu;1RB)~@HX~^z`3%W4UXohg05{b;hL%NzMrEduGU%d z7LIak1zPFUyNi8QVHzm@5fdX5IID=4=TI4oq~HAx2EI%JXHNEYf3G8m?8TDkdT}ng znj$M@#E6bNnA-<fCoj04FpH99_NQ!F_3T2S$jxr|V^Y!)xZlxbFIt@YFpbfQs?H88 z>YfQCkTyjkS_=S~@z1uLFPYJf`!z#ba6Hjx)+Jt^7>-Q(ybj(U9^O3&MuGF^!R(q| zi>QoP?ARq|qf}Y}ul@e}B?W;nPd)BM=N-Xb-;bxDVO$5`Ta01AD84mZMs?=)g0NK4 zSevPA<pST0nYgb;JCg`{YztaT%{nT55%$IP9{FWvk5B1J0VV{&GX-_wQJan2^sR`Q z{Bn<CTHK;DQ_u>JMdH1EJSzm5yK+MBNXjM3qBQZp1n?>E@t6k{?vp^`iEQRadn5ge zy(0R(9b8Nlc43Vy1R{%>_iA=J6(|Qz7=uHJ*}XVv@X9DlgO+vfOZWaQZ2<GykstjQ znA##>(^kmq3c~PPZcdVHJ^@d`T5_NFg(3r8yQ@e$C`n2X3oN4MvQ`$YcK!YrVaPJM zdvZ)X1E$#PqRiEcrzO=hlJb0u<m<lWtHt{?cEgeOSc2JSqr7pG^`f2E?2>IQfk}`k zHA0|6AEoW_hsX6O2pk|2lfl9hz~KE<2e*}pk}iQt{dRue`3_&IUNq8pH*Yg6B~10u zX6OcU3<**PRmn(9f!&vK%lNKbJhwfk`hQPhRBuR+F9Ds*=2Z@RDqXuS4SgU4<ojH5 zsX^kch?FVY;#D=q75r69ANHgiu~Vu6S;@a0I~W#Wpr2~Goe40&pR8WE+b#i(N-zv> z7vp@{#lIa9I@L(xQw$|tm7?;%{C7K!dXAoOoBAqDzGH%C5M^Z_(%tu_v&P-%Y4M{D z>FgIkaU_m@Rjf%;XAe#}qK<DJE(f?V=;4^&w+$wa!eARUDH{V&B}n#=@%C#GsdTM| zx-s@;a_~3<E(nPNV}z2*WgaO&78JOwnYnWlp#dSc-Yr<VxoK!VcLWXBKllg#_l^TY zBfYDg{{1apj~G_ILY1>2?uE8?Uh`}`?M3?y%~|PB`_1V#>v)=gO2xt59=mCZt|Atj zLut7R(*<+%jx%w<&k@B<u+28bXhV<CT_8f3O-d9GQHN1I%Zpny%cL^sqgT1RZgePy z^A+>m)WL%`s`!KZ#FUzLbefMvWH-NFEyJ6yD?jm=z1)Gub34QQ7hxn2StCPfKs-Kp zJ+K=6Iu3x|pqN{J@IVG!)z#IuH)sr^d`scE+$5i2sJY5t=>IAyG~}u0w2xpk4&ZgT zX#i7p3V|574M>kx!(&F12ciCkSt=Slu{fo)deCkW;vgm{R{tL3O2u%iOq$-;Kyw3< zRvIYYI-a>+o$~R<8W}ux3}Ind;>{6*!g)FT>^fF1hA~$XVr?$ecqbyL>ROwvA~)y2 z3p(VjLD0Ql*3IGXb)4Rib-aLbcH<|xC&~2y7k=qYp3VNVR@R)8?tD>%bP7_2Ggz{) zGo0?Q+1qSwLfqm6mg!!af92=SoODT&Y=yP+%!kNV7-JgA<P$(0!3+NQGp_om#HrN{ zSsCMM_CDYWWDV`3F>Vw}%Z$x!4lypq<+K{F!Uw7j86M@&0mCP(OU)1}r^3<I><cdK z1(2MS$<5}5B8I_;!?$mVJIX~sBtG3nBF~ySjEr!I?Z^6&X9X>a(Y!b9i)B6F32K7P z;kErc_#d6{vaHFiwnw#-OoKF)&|J}~%u)^=ov0*M>O9acWoEt0YbL%74GmI0%rEbb z`X)zHnT11@doAXq%Z@lG{gQ*RN@C5Rf`d3X32Mk()rKW#Ci($Avr#Q%_VI76Yg#;N zzsG9MAo0hITzss&eM>qfQSb|7I`RAj5^udK0|1efT8uCG6Yn!zf9j}V2)@tGE8^FR zfmw#8=AFy5Xa3L`s=yxcF{|>CFj@-?;pl|XGxwVJ(ZHG<K~*hYsw3mzYSR~SebmXB zAp6_BZJ86qaZSi7%wK1MS#qJf;DlrvYl2UU?r8Nbb$Fb6#T8YcjZf>Ar0BXzyDcw~ zA!1Y#5+^Qt@0>(2tV9cq>BVd2dFRXtw_s(-)Jw`p&=+8xJl4ac)dK03-LvM+V0?yT z0&Q(${y*R>LZ&2}uCjtKR8!P&Xu&^kLAjm18RyunOeBH5v(y3SiWsY>rMKpJj>GvH z?rVL%{;kt9$-(NIN!{~o`3G3uWhGGj9YjK<uRN!o>$w26@9ath*ZyszPQYq#CV<4W zUy8LQd0uLV4ULAb{M%_wIQyzcvw)FSC?HLA0qoj}WR9vxUf)QFZ~f6*_%xlaUh~u0 z#|#&R1_X>S0W>pvUt1;ImvL<VtW+JvvUUx0Esu3xV$}yfYY{LwOC}tWwIDTekwT&h zi<IyQ5V_1vT{*A*!rJI!a8FUhu>2ESGmcY9GeZ7?G%V=r*}b8_)(P3jU}GNJl%|q< zo@owyx12MPT_neKmWB8V63f_!W+P<o`F9UE_$VJkEqZvz4{KsR)LTx2DC?HcnlsD2 zkb%nA3)o9T*+KV4seKoqgL6iMvDuT;N^qKns05vLanqPWHGd2BUZOao%q*~AXb43k zHEI)1ACQ<j<mWWUB}`}}XVfb6$=!H48g@QrIu?>cv5q&JHl(#~SIG)xYlL{Vq3n4l zn)`r*(_JSs%e4pMYEi1B^9`L<@(%O8?SL4pIOaxN5b@4XIu3c~P}Wehx@r612=3`Q zkxZP2^ein}UQkNx<w2N~YX=pjoPVBoNMrp`Vd$j&3@KSwG)gm|X?~E%!<yQRwupIK zAcN&|O+{14?HASSUU`07NEH*qpbT(V&YQ_#5=mF$$X+P?iB_4T9&*wsik8$7n`Rv+ z#WTv^P?0z_a*{O#Y6qvHuW!D9>n&yHVIOY5TBv-{Q_tuWW4}C!q45dUD3@knOU8np z;sxYLj)52LTWa1^7=9(hLS+uy4Va1M_na1PG(`zhU{*zR!V<ien^80_*MXcrI-Pv# z@+dE$+9|g;ZJ$+UWI}ZlGwh;Ey%d(Q-3)0cX->f*7k53sX`EPQ%mAAOTx!BHX;y3V z&M>ryMgcH>R5+r;(S3&}II$Wxfb4q2f}0&Z8I(GaKQevsE}ZcT{0&3x36vpBxpfas zffRD;K>DRK)O8b;#fPK^lU1DlE#VJL!lAQ6byzgCsgPR2n6aa~I=IOuHkYNtL0zB7 zB_ncv1VZ)T`aqVfs}SFBShTk~2Z5ae3Tx|lqR$P-&p$NsMGP#g<zt&Ks>Pn6#o{z+ z@{ZIbUfUBDO-wx3G;kZ}33%m{3^VgHLGw9%Z{nLrU87*kMKo&MFz~5l2jO%UJ7~Zl zYkGmQi+sFI0>f&>84em4(S#;0mbAaFO46{ya^q+-jB!N2PO0i&Mo;pu3%7sb=wquj z{TkY8@!8*|qO3kn5MYrDlJu3zAI@{d@sVCTP7v!pEtytHdIGTWAeN<+<ORa4BegWh zcUh-j5GZ^jNVVzBLWYNMqNWjAu%6E4kS0_DwtJKqX5MjBpk{p6C!-AdNiVvsT$GXL zPjFZA44Q#Z60z;;<$_XFjE?+fbmv<-c$+Cf;<uNe|KfoGE*EXO;Z0{F!B|krmw9SN zKmB-jqQC~VI*}x41`3wMrC)^vz{EF_0Wn=Kp*~DqU{dZS8N%^vE=TYxBUMW?rlp6> zcHElJ?q7mIus8$5P0vn9Zf%&>PKBi8OiUdf-tYnB(9yF{>b8-jlA^aN&6vck^! z)^nl^k~p(WR9SXYI<X*PIZ3}67w}TTTE2TJA=a(_=|@ZG5Fj(Sv4z5bE$E^;Im5Y! zXA_7mZ(GgnMJG%?<7q^Y2R(d9F|_w)BJH0=;%OKMp4-FCZi_^C81f!wI6Q_s5+^lM zA9aKfgsp7HX}ETz0fzs9qKp2nGdpf*;~YDbn&aX0HoK+3WM_F0QmY&&s&s>l!~V_$ zg%DH4;brYjy^k9ud1@Bt&~5`=(B$57M`B?0W*@h(C&a7~J~XVbMU*p0S~NlMp7wkF zY2o-GP8r$menPW>cOQVCV)qXv#}TkK8_9^8w1ABLO49>WTdTOntl}+Jc)T80uCxk$ zq3(m~%>Y7+H8Xl+g4##T#z`yj=t;Q5RmKE>-pA{TK^ZA9sv;N;mK9k)n+c@hXe8oG zf&(Vms|&5n*U5OEJ>&ZnDP}Z+;|kx<hflwz&@rXILJPNc3@~_+JQt5p<%-)BYU#*2 zcOK&Lw&4N^?vN7~q^?H+3(NEYa2U;73T>f0(+*}1*dCf`-Y5lMteeG}BWr=$DiCj4 zhY)6k3T{6W=s+!s<yZ&OEud|Or>&JIcBEgSx!*j*qD<I|rUMMRil!t|hR^IJO&~js z%_x(F70)ZwW6o~hq;b5SRrs(BRImx)%N4k|DzqfqL%(HkeHzFf)$feL5Byb!MMY6R zwLPBjpX$?8a<Jw<-!0f-`p>%|1Q$ly^z=dD&kfB&9v#B(7rq6jrB64c<K@k1HAI4r zQJ={f*sG2bB@*>+C2M4aJB`%PFVJ)AaMDt0ds%X|(cQV4X5>%WOu|o-xLkH=%}((W zafXI_+uE28J(r?N6;+I_N5Zq#y%ALk3N9O(d9&@7XPv7DNhWs1dqGvKr~wo#YXCh! z!oS(aYJoi1%6|T-dQCxufoLU;#zrsxGDb?&lO=KHwPgA$<zBmZCxwi;Ce^HO;S>0g zaCyJI6z4#R9*)fez{g-59~9NgE!Bb0zFz6RUUxjS#VlhIj))s_k|BmV?M!t-2(Ep` z&qCC#m>cLc`$SB!H5y<G9!w17hkY`q&_O#r!EU388<AXI-3G+D+$3(piOAy8?t;j7 z|8K^DTvH`(^_GVX#pCQ<@mAh(c-Xgh&D?HdR!$;k#o`u`cKy2R7Hg8J{b?9hB%a^$ zN}Qth*(iAsK^lUY-sEuYlfg{9jfdsw+m-N}Ie>Lo(?ne4srezY^&%j)y%7HY$s%&s z;|X3mszx^S;n<7=@{?*(lP7~zdi)i-xL}^-6rKgyq7KQ_tY<9yNbco#Y1?3E*F4i{ zTulGj1gnxaVB6x%z|?D!eqi`eQ|R537W0vmrBubHUDnTG)I>t~ff_($-eEKdnB)!J z<2~F<;5w}gN9HN?v^2#y9SnROxS;m|NZ-(tu@182_6p)&96ay>^sE@~m<cE2jBBC3 z2D(~!>_6igDg{FIsVBR_PRuAuv`5uqqP@zpa9O>yBmMWBz}i#!2Jka-Bj~V4s$_Qe zb=<^cjq-A8cnYmNMXw!0vku|Ai@6|^W_Iz*v8%jzjOs&7o$%<THOhcM7us1!eFT`6 zQ0RIU4VqN$adXU#m}ca<LP@@T>#Q#pN5Jb!HhERWu(hL10nd7A{X=~0%`A>4kIXGd zvc(1tzurgq#HPiD5hwG?9V4QQvd7)5ehb;Y{b-HfIr<2dCS2Y0oks#67O2l=2E+e! zprzCAa^()-xD&dNqCpRrQ9ozi4yh4wZleodKwIH#Nl-xCUYoblxhFlN?snTZG;aK9 z0V>SB{qQNza;ojCQoB8RO>2SI;2qDx_ti#pc&`m$LqkWMqJyp^(M2tVF7L8(0}SM; z=kN6_f4|gkKMAnWKH!1-!J|akIYumy({jtd;#2zKNvT|xJ3#b{LL~%|>Ndk8>Of7G z`C6KJ^!Ek<XyIw7WLOT)vlBBirv)!T36Nx*cc6vaH{3OA)EuyW&`x5$R#j1)hlD?D z${Mybv>Sxiyf3OV0n%R2xz@XXkWb$iftrC}FY=fKT07~qx;c&%@PnTtzwOWZkkkQ- zwQuLK0bC~*4f3w&Y)k)lfZnb~z_?rwHaPpu_;_}6C+8Ri91cCFCbwNnF9q;i-9Dv) z&cinx>LSHrk1;pF2&lv!Z(=Hvp9|V{0EB8r=mA$IDf_VT$*NK>91^pL%7NjV2+jyJ z;|s{M?75zajUx$Uwf^!zANe?auMF)~V~#GSRb4zz_3rGM4%X#~7!PzrRidzI%dVj@ zDd(-oF>9SazJJ%M<>2;d`<dacx`8iZs(iHh56szTe2&sgN4UOv{D%E_z~6gysTPwF zidhlwwlJ?zRbEAOUCwpw!}TPBT_G!$Ni95G>_A06_O3wiWfH3)|G0u%5C}I%e_s;8 zaB(=~F7_2PfYj8#wHMzQPz}ru_-0rVgg;M(e9wJob=Bp}1BQJEkNU$*9&1(g%5(+f zfq8ON7_R5fEvw-5o#VNiV9Zwd_h*}x*{A{Z43*%%gRX6AJ&aEDLW7iSaF;l}M5A;F zj?8h-3&E+eMkNq5yFmPKrnb07<*SdLe1%jWF0&>c6KZr1)F8roTZ_2x)hW2r#h;Vf zc8!yGxvq<BDp44G?86BX4GtLz6U^a*lw6(r;zag)<)uv~V%hEEw0GnYX8w?^$C*x% z=nN=m-V`(16x)~#hYA8=e<@AJ=cE#|knWrGN~!P6j;;E2Ns0SR%@t3*CzBfUUj7oQ zPhiyf9(+22$<@WzN4LwE@ejC?xSHu~8aB!+U-el{J6Z@2B2Or0mZ?Ms#_VoAu@y7T z9%%LkX063J;ey(M-gw4kMXJaPIRj(PvM*W?A`oVA=*Y$)rORNi&Gv~Rx;l+SFe2J3 z|LrZr54(3{ButhYog01JcvHk3HM<LzXncC=WUzf*M#Vu3pzu2*e0Fsv<S}tEV-VXk zC~kSa)YDKwKW*H&r2M(dKYx5?fr~sYevH?LH8eCeWHzR^<rY-JYMEQg;|-bvXnyjC zhh+`sbR{`HrB8$AAp?GVm1j`gB#&DN+&q;a^P7>{yZkay<`_I23aRk1b1aKV$&H{` z_E$mLs23j{7=hDecF9-3uO|#<*tJQh+$4Im2SLkB;JZ+vrf!ckKzA;d`+^=<W+%kN zZ(H#z*k>2SZM6!<GOp1g1_3kukcf7cD!O`<b1)RWZ+~}+!yYwZv!1B-UAZ5fiYRXZ z*(evb4SZZf5bUP^pc5u*O73kEc`EaetYm2(*ZZSzaLA8GOVbh_@8u*E_~M_iky{1_ z{|CrwFDvQit8Xi+*%NeA_rtjRrRg#R&s0mZ8RHH0b4v6+;~y(U^9Var!TD+wGbc-v z_I3A9=tpof89Ocq!pVNZ?)N7(UoaF6;?4eet_;5W7X={PdDdyC1)F$aBZeM(^$CCM zlPKyNba2a^_-2D*AP{0y3(i=*zn&Sr3cLc*>3^LhYfO?w5}M2n0-2$d)oG;vA0OGg zk|cR@|H_83oG`u+l*djY(!z5oDN$lKm8*?Lgf_(d==n*Hb&L2Qj?xBh6|k>uBk8Kr z8cRZ9R?WF@<vSA8GxPAQ8Ki;DJrX<6jE#dm)Izp;h-T%tnX5&QZxHF?%7>-LZC6&< zXOA+%kTw&`Mw`_<QwUyOQ6a<~Rfk~QoQ64A`$jc8aAbNTi#l(AF6WZd#A;M^dYMrk z50ifm1^8l<6{u7k-l<UJ%egrgftf`jG>q_~Ow~;VT1CiYb`x<(pm<Gx@7dI57j<)E z6j;HVjef46Yw3YrIi#@cKNhW3CkRba{W3fFS^Uv)C_VD>q}fjnk@w8>4SNJ6Y!u0# z!La7sPt+5$J|U0vJbd0nT(4cBAf9}PLX08Sg#&riI0;YNG(7M^T4Lg^XZR><GNWlC z%pZA->Sc3+;`%_{Xi2%c4tL20F`lMr?)m3Ol-49=J`#L55uE<GK-WxVdHi$+!pPdc zx`}h~NHX1aM1<W7_+6Ou2?K&lO?y%qJ1(m=PQVT>svKsYT(3aB1up+a!pvah<w?|` z96MV}{7P#7pt973tZ&AhKo3*%MYBamQ%LyN5+@R!g@lezB1MKM;N;rKSaPLGQX@&S zVgczCB`qZ<l1xZW#wkaRw0)x!g&1PF$?PT>kCB9E#2J)+wb$B^;~m)gFCwDrwS@;f z<>h`elj<vksp2L9fC~@qxb`L`9v5Hw{7uQyP9&juD{^STcGRXr5reyt<I@DhU@>;{ z<`6Z4P=$b%?8A&~SUlLil(wvqAWr{ptj+@qDL*V^GnPYsTW|c`PI&|+FxU65jHQCT zLzE<cU3nj3au|_=ewWS^%0JXhiIHwJVpwhVLwcRI;@`?3umldfWAtY@@7drGu=Jnt zR3lX}`RFW1%cO5f<zDJst0T!#lTTEYmN6XRMm!&t!HbhAQKkbn^L4lcR|v80H{w1K z=(K$wy(KjqYZju^C{!I_BCtI>Cyrj04a~ju-gkO)z`1u8x78+6`D96hl}(_!EE0$p zG5Be**u}SJLJN}vZKZCHTsG-``(W~8U~eI1Yk$V%*)8@E_6b$2JA*R^s&3fU4B$2Z zEgWW|#H=xot!)idhm2%DHBa9MNiNPZ!xHrvRN$4#<8Eqp&fIW2^7#p|p^YNTq9#){ zXxX9td5fsLe)Y+t)3|+^ZAav0Zg8#ZnJQGe&M8GbGR56A+C=9fTm0qeUm+)&*gKG^ zs$4Mw{{__L6frO^yS6Pjc`_d<SV1>^ubMa#<l618Kmr(#qRd^P={z&mCwWKeE?hH{ zL9niK8m3Yj?AZ+_pQvAeA5XDD-#@C7h<<{-$pt|0CTJi8=+2%k`v<u;*MINOeMA_> zi=4K_#caKzW&lwE3QUbRmTco7XRE!U@@r_axAWxN^ESp0h(2nH?OdS^aPBzxMt;6O zhEd~XB+(Ul*O8?{qK5(((AF6t+iM(js2;>Sb{rC@(_PTxw9ka2+SJhbwCnxSnfl_d z^%c5B%iFqZGZwbk@&h$9Ct<AjCx8A}V^m{cTr*q98z7g^&BePfbEG3g>qjO=HE#Ir z08`<iR5@9I)Hf%<YEE(5A;0I<MW#0%m{{j0e*B<c_<ymXsAP^iJA0D=)9VA%1H>+@ z)IzPjKJ4A2)$G%RCNLV*IDQWM-om6KM<VN1S<)dJD{T)^PP`GDBs)`nu4$JS;7+*u zB;OZ>PgYh?3(Cx@Xe}xpM}kgW*yA|)J>P3MQId1X)A(^*WTm6__{P^o?{;6x87v18 zR!2*^iW#BFn=QSHzfmXgOSik9F2jbuaWUFD*e}jp=I10zSisc`3*b!Q@%5A13kV>V zf)Oj6YRc{dCoipI0d5Si<2lb+Dk?N(t-<;2wO)OCS<_Xs3bOv6Z3$$}Y};1g;AKX^ z7BqG4KpXpW^fR_(w@QvoG`n%yCI5z_j~twaH6>;CuLh@L-bo4ZU8QBb-K$2m;&E!< z2H44p!pp{HQMje2^Hq6rVmX9Y*m)wl_^Ep|&N^GO>~pf!ms0;Rjz62w-JXj)yyVay zH&(wCZ}}Mj%Nlxudu7IY*e!BobF@nfCR3{G)c0Iz=vtD3d_mCs&X3kp0?Lzx^iA#3 z7x9;}E^vrKts8svnC^z(W_D`+L1fWUCJO<M)+W`1bo-|8t(FUObFRnJPGliPg{5kg z#sQ07Cfo{hnHN1-tF4y3Bocj4N~se#IE+nnzX*h)qbGbG8HR}IUx=VE))>5D%7+wK z6K?8ewgrjf9bYCJAF&o?RU*PSEA15z=C1`mu4>#kOZA@ed|B?Y3O?geCD-3P9wl14 z@*UVBd<^v1eDFaX<*6mfm5wxi-a6E8yuyE{<2y8IB!)B$K14jkF0;ILrrS|Tj7T@C zSM2ZAH)@>!_@~YhIbr3?v4YiBX2fD^0_YOnV5O(;XUgWC*MP=vcTgJ^^bhskr<cN` z<Igy*B~7JHe=)g0`L9I@AzK?v%53kKz#+Ib_RsotavlGcqr26iTerP28-j^>@@o}X zXYFeu2uTr>9D;ai`M=nd^OIi9S%^g^2fYZOoZ1om9;UR#U+{3lKmZt)B?}H$D;{{T z-LPTp%mDe%EUoUk-Z7pdEntDT9nSZo4U(%L?H>EQrZ==M;GoqgDJMD)@MT1<-uV5A z?CE{UYQ}~`x6{C-(@Q>|)qv}wX&xsW-EbgPYm%ANt!TscGff8>ay#N#RLp=QDn?!O zW~nmbSA=Dp?DbQ;a$mb%c?p;F3l`x5eZz9cYg>!}-GCkQpUBuYdW<pQ;vLrD2!r~p zxTuOZp>1m_N2cFhIb$Ks;ru}H5iO!mZ0z}C?2eg%tBj{()IyU`nc|NT0^!i{-RS6( zR0?oPsAtsDb&G6bu}vCY1jBM4`CK;zrJdpz^AuXsPsD{Z8Dt-Mt;-oRe5H-)MJtPj z7~0NQlN*-}d5tsJk3m^mo=<|g0e`EsYWR|Mtzrb_^o0tG#YA`}$aK4WCNttnKUrPd z_|n0Th+GWB0&PW}>K_a1K`Q&!8XRv#M`@5Gby>cs5*S_Hb|aP6OArhrqn*nkrcrz` zP(Fx#JtYGP1UQn<5GBi;Zn_&iO@@bZA@Y3G@3!0;4E((I@kAAh&FP(GD9R9{=PB|9 z!h>2*r;DRJb7M{iyq~@>JMq&c2f0M{JneCsTK<iQA?-6@YL{3ei9^LFT#}mFgQ&p< zaB54?@c-b=bsByZVw<cdxa^J6(8WkM2KTy{kK?*C#dv7XFTL!IEqP=#ue?Ksi^^@A z>)`enSYUT+N&?SH;U>$KU9E0E9VRzf!&K+eD<-$zi+#KxG%i$GzJ&swaFBg}X8Q8< z>zPBs#P$O5UEH&LPj}HqKZ+k{K)xv~!^hV<C<+V`g8Wv?jb7$?R-Q+{d!1kg=`|Wx z-`xyeJ&ITBqWpE#))TQ20)cfxJ!gT?P4I9f!F$aQ4cdbIfF3E+o}6!0)6HpOW^#jj z?wBSdAk88kLsr8A7@*_lk-f=@Cev6;w{Fd(<|l@@<NS89)e)tm2}Lqi712?o$U3=K z$h1B@30jiGrU8LhcgIvo#qXCq12<(zgrG<e8OP1FL`bh4PogWuN1I<np169AacT(7 z=_dIVY^pquq2`LHX8!a?1^)3b?F<+8$O*1TcI6u?Ps!Ifdm=@NpKCQNjD*4CTIA!k z@zCJ3QvPoYmsdr`zxjB_v;=Q7!#HW>9@t0H<CdA}<t5G3%(MP^3K$8Pwz|SKxLD>` zvD1_e*%jHPxRP?p7UP_p0ORZ|L#8SAqc;f6c)SW!m-wHp_PPPU)r%2aEBXlBXXLE) z25#W*QN+GEM2@31F%*AOc+6Xs=o|`rW4`!>YM4cEYQpV^Sxuje_vUV!|AXcd*qY%^ z+3U{~p}F4NTTl$9G}2xTTm3oNN_Oi8Dd4-D$$W;Ea`g22UbJdKAyauUg@6?ce{O;L zYUhRR#|eppuJ4x-*b?2k$8!X*>KjMdfU2@zFI_CFTis%V{-ijLESXmzA7fT1-z*Vd z3H=KA)PLzy?tvf+Of>&Ek*_T(exYf)y8DvNVn|Vdcp(cJv}6Z1`1~rLz&x@-`#2fZ z2_nNIjS#%{;omeT;ou?pj}0`_BGLr6${|&T(6PeYk+WSm$9=KE5TyE<fiec7GKvyT zVJxbByTp$;$P2(qi7k&)!f?NK&d_E<K$ASXd7|gXwbkzOg=c@+2`Ko0YnRO=N@ouC zwLy$!B|2S|I_a*jI!Z5Mx<w8%wY~b9m6KCa7{I0h)xo~W=t(%vOAc)$c+uwFS;t(a zR+~EI)=S-Op5%#ja+PB0`>7W>^;?8(XV#VhatJ-4Z55CVz|<OXP_lAb0D+Fb7#U<- z#W?_X#(y_Jsf=*`ejBGL?TN`D1!M?8LQUhA7cu52YrD~^rhoUKvbCWtp+{zA;{smf zJ*7gC2@erg3xPAyDdTxgQsTlcd4kz6J2K;yzFG44oRS86jjS@T)w&x}#%?1!6`^pM znXwC-Fqi<8?rkA9b+21D8WdSY8u!IQ9R)2<cN5;ue1)KcObYEpf#-$o&-&EnAiX-Y z5w;uc)Uqsc8>kIkRl9+rQ^&`bugO>86L;x*l7eq*U*ZqSn|oqVO}@Zm=2*Ww|Ic$t zXQK&IhPv^FePG?|=t_|M_0gt37qTD7i<s&3;_<_%+iM$I(qT$Q5i;z7pfda*&}J~V z5DK255D~H0LNOgCenMy>Vsr#pf&6VBpVvUS>!&ee^_@f0sPgc+OcezTDj!BA#})=) zoGA%26=_je6hkb$@}B0Uw*!@AZRyCC&Ymjb5B}eqBNF#78m{-hqX@iG7oQQ=0ayKr z#p7qNQdpMxdnT<bt1(gGn!0QCncnf6kPREYf8#`D+9fgAc^)$jCj_E=6rhB?{7jeg zb~G+V%xc!za83u|${_sc#s*PIy5S@IOq^InpxlTC-po)R*GZDeioXj<`j*_`N+dk1 zMdkl31I7)s?Bg&d+NrQGiM*vgDRerh1|yGyu6|82JWHWUR-7ngWCQxu)id13OQEu5 z<;Sq8L+0(xg&HU7B)FQMCS<YbcT}VDF!=S3t@&Bfy2R#OTRYmd=(iX}3m<9S`m4)H z5qvYvHUNX6rIc@Jo)6~_b4`L)6wh?TQkIuvNjpSl(J5B=XL_ft3y^VfrO>pqTc=zU zmnJuPoE);gKrD(zrF|&%x(r+HY6<nUiF@z3#MBEirwcLUERw9pgX(zupeYuF(NIjH zPc%`5X^~@*lc2D52C4=N(3FkHfrrn~7gYwVzWQb*g&}gcvFfY`q*$RKbwSVv^-sTg zXyvH&a>b8pO9t<?qPK|<-dNPvGLh;&@m8uGujU*6^BKVreYE0D#CBI!g<fO$m1-_9 z*6;Zha;6i!#MBS(R?hKX)^=Z9_s7qC2wf)TEw0R{*}G;Z#QV{s2QW@0B)4_DdsLic z_@*?o4sDSY2G)>{=g{m?-YN~ljXhXYjV7=Mbjth|fjm{RuAfzj@E&ZQ>IKlj*kYna zve2uh$8`Vul&!m&kOsH@`uB~JpF5j{*NnzO>)AhtUWH-7$1XK(2c%+$IIq=FohW}k zUMC?L(WNJ1@}uoSC)}Yqq2z>6j^R2SYET{U5PXf52{GFZD2C}Ah3pWfzDB2TbT)Pl zc-7kM>(J*y0NAjA%2fyc<`}{`aPa;d8$V>)jV?H7Q)<hNsp4t^(aYRdJNw>NC45^w zKd%~d4B!QXt-)My)Q{ZJ(-<O~4f|)3K{nwgxU)^LcZrtV%P*w>AkgW0Z2+QQ`De9N znJ0}?mqpAKil1$9vfPFjq>5~aH)gCS9Os*;>E#Ez;w&DU3`4#(jEyTQ1vHZO@P5P~ z#r|)jA9JwdA}aQtj-hJcI?w^E_Iac1CFrnM$S!rNWhU&RfAx%TlnO!x@!Q^Lg(OG+ zz%!0^t><IbNsYlQSSCKHl2(mSre`@LPPVuDsZE9nMUxc?yzTc+XBpy=ZKq4D7z)0m z{}1>Rq!QAnTmDt0=|rkf{@gYR7MN74{BGlK8<iOfL}(02F>-hg`X6i)r!GsXI>)Hh zO1zl^QQn$yYT|AlGK@0L(&iLYP`=6l!C6ToX~6YT$M38o);FQ($J8@$EG$`M<burI zwMFI@R&n)YQ?psY3`<Fx%BFAkHiZy)>hPrmX$Nz00H`Y5ra-=wr!K!)|1?nQX7YIt z@$z*7Uzm!ZffBW;=_{n1N-@06-;ByX@2mTCPhGs6H+0B7zUqEbwGEH&1~mDXknhF^ zVqCo7mcN_X)-NBkKtd2WFZbspb@5RZaR-pr|7ZT{T$usSzPTJYMl}Vt3eY23t)wYJ zyNj8NZjc@$eg9E<ywcBk^!^d8+=9nnTtc7)#yIrKbGGAS_Iz|5AW&A#>H#*K`{VQF zI9Beb0>TXb<NcZajnJY?3ib~<OpuD9qcOak6?;tn1Ic}mBtr>#zp`DA{ny-7mOvl1 zA?03xto~90ir<rQ(ga9{_Eh(we4{r66u->X`_x+z<Cld9DgfQ1P*RdHE1*3{nXRD< zC92%1iPtB5X0Gx}pFd~<6M6nWr;){Fp!4m&bUq}RzES-@&yj<am+1hhk3`+wcYDB? zyxN5{X;Kmh^GOC#XE#6hbmSgObQti@vTbZZ6w&EuoBE(~WI+g^)HkB#)}8$Sw~(dg zy~~k8hp&1$a*l$6>9`kSW%=Z6>O)XLIm(#RHiF`S)o7SjUMR(#^=$Zq7cv%1)BA#u zdMv#vD7o~b7}a4{LbVbp_m%MQ{juq?>9ZNoD96-8ZCF_p?Z9Mh$=vz}!@Q>0#y-yL z9nfjlBHrArp00EG7od9|-4<m^*l7O!!&~H{KQ6-W!h<7(P8F*`r<R2on~)~PglSLk zGSsEctHCM^<zRZ%zGx}W4V7d6X)h1vqe@tyom?1Z9<G@>j1N;_nRPz3p~7j4efW;~ z0&P;$DiiC7MK`{y=!n=?X1v@oK0u*QuwTl%M$!QlPxzsmBkAC#ZlMt^+6GM2<ejFD z_O&d~9cJ;QO<JFm7bW`<PB?gk2p@YKi|`{#L~_gvrYz468G`Stb<I7vyyjb@@dVna z(>oQkqW;;4`#Ha+URM}}?i3K!nx=y{N%=^ZZYXb;=LhhtqneBJvDYM@E$eqJzdF4X zWH=lg&u_)e-X;J#WKZ!gq^f}&$OOp@xls!RZ_jl=GTaJaWd%p#vbjCiSZFXeOv1B1 zQ4pq?N<HT~nfA#XrH>_N-r}i?!;A{E*{BS95#~~Tg6+DY*5u9m(O{^isLQ{~D2+Cw zcjWJlYfpoi6M4^OXysC}M;;6!?mz$N?tD!^5J6LecbC|REeVR-MInGpK%VX?8=u*t z*hb#CDa=eOQV3Ag3aPHCfvqY|u=N{0GJ@rM|0HZ)wUP%>p$}<W4hlN-h3|i8jfd{k z24v}6KSV1B;_NW*Q~?d6I-el3yZWJKOIpHvgYsL1B$!c|I<FCqYE1^PuGhInk<hj{ zXiR?EX+0Nkp#Lq096d9$8*^0aGw4aC!GaP*Uz-`^wL}ha;94uz`ISi*kirv8b*mMa zgv*S?f`yY+@WV2eq09@wr5G~fP~)qb4?FxqcJP^cI0+7(!mil`wmW=m87893XMMpI zRA?^$2zYhevvGv#6QL;kPHz0OEw5+1#^kv;+L7Q0azoKclLnXsmGc%Vp_|7SwVbFG z7)P@qg7b)(a7LDoi&&+CRp>oLt&=;=RABsZxW35yL!HgW$~yevwI+my--6%kOf%Vb zVg%aWX=2Zq!6)Q&Y#5xhz}mHEM>EKPTw>^)=|}Jm_!I2+1s5~>2k<Px<gPf~R8Gl{ z>U+3|>d`gBswgOWzaUNCUH8cq@CX>H#|O5|7;G62Aay4lPE^AFy$j+&936uLET@^w zOm;h{F|pON_;W}JI~I~)VLRIn=hF=)TC`Z7AT-n?rf%$RR6e+KG}b~Yl@i@qeglW7 z<r?puF%2`tR9VuZ47dDpj8nxa385#RbUv$>{gKd2EVBouZYvE6WsqJdFpX4t|8Jk) zQt*c{*&*HY8q=k0gs$TA>A)chRq$enj7v|(YYSv(_qY1CW1bxO0=adEwAf$WTrvra z4Yq$1f#($7o$qHne-AT#!?hctVF2aci_RbvNMZ;6lT9S6W1@`mrO8mcjQi##lBJm_ z4}SygM0H*<cepEA5DIr4(qI`$y)DEVuAe0qgH1c=<u3D^9wVI7TaEhMtBRJ(K7`bo zpQ?e9V?kt~Q)x%6()QcF-lR7|Y<Qe&+Za1!6!+IWU67S7E2S>M=7;L&<{Ls6o_~1N zlY8n)I-%15taimx%JAr<H-|D3ch<&I#RHFdtL7+qX__8_9Q&@6a6q9Hux$f#?!&MK z+J9jymeN9v*yN~P(bqwcuR_HCtWRqsEcrpn=2a9Rm|(SbSM;EO;j|$|6J<)Zd@}zV ziQ-YLkO2eI3EzJbvf?q+NAD2U@;d&3mi?^P+RB67R8f@O(i|H%!4UV1@8^6*L^-t~ z{!Mly>?cIdWM9nete$TIYK8MtXxE?}pS^$9JC5~!$Z~ze$?j01HXDO=ch;A4E|lhN zcrs3({E)e3kmNG)fy0L~3*5d5@DHN9;aEus<i~Zj<iE%v+h2;yRGo7aU!0cif~P}_ zx1`W;3r@Z2<xjEIJl;i1##xWwGxn1@VU0uBJ&_<*i;~$|`$LW039_dse|?4(DJ+q^ zU1dn$en0dH=gi<Aie7G<b-JbdX~<}@RSrtUQ1x}x3Zah<{jVFzdVs)i^Xr{V50~ce z$gJyPXQR)(46L|bW?C)h(|JTG2kJ~Y)<K@U6AT3f$xBz4A$)X%5$d%`dw7(Xfnh{# zu8gN19If}sV}Jmje8x-9+j%U}bkDpK647yc|2T#{Rfljx1k3PG;&H!2SUB>m%pvF> zr@ExSWDS*5R{E<HnmlMZf_rj$o#EaztL0_Q(lLfY{vA(qZ|5_1@LQQD$gh3?iP!45 zU4i_Vaj3q#0Qy+Alxk#fel>pxUdkfPC9=d-Fe2nUSbd_BfyJ4e?vhlCtm7xye@siH z)^v&h4aAqLA|47D{;<PA_oeF4x<PSV9rhuc)P$dwt-9NUZdv9F*E811rVT#fYu>J% zvmQ-%??I{)EbOp~@V*hk`44jUe&azo#1s(wRTC8}^Xh{JYBHZa%FB?h^|ujOFkGt0 z%C{`@C=`2>0$Y8DUxAX-ZPlJZxADllvl!}6Oq7OELoDJ?O5eok*%V6UPYfEuqC{(0 zE?*;h^l%2ac7gnGQt5D@YZf>9uEQRRk~ODV;Bd1-9EFU=@B#at^}R_RL>bYJXb|zm zD_2}7Ozl2U1uuV-N?XngDs<D-#^!PlkRzKC$z)EmdY7~Z*>w2}@f2?CA!-RzVIrAM z8~%IFF^L;@8Mn@pXV9*B#+vVr_Cdb{VwDkfiZY=_)9ZvD+l^FZkcmfAH{S*iI&`91 zB_Qb4!HI-{aIm}%{EV|{3Oy0gT0(H_V+h+Uis~%BMysWME}b8Q=|MYXQGC&gZXeKv zaisM+dZpkmt>P!{rq~oj>6T^>frD&3uMRs!#tDQ69=R%Kmr429{dpj?C7f*jrJWX! z`qgfZHZNg9%)(c>aF?{;E2w6LWnb8y_O>C_%x<tHCJvAP(jRIq+#unLG0CX?ipT}f z+E>14HA<kc<1BI}F~TvK9WVk0N;^Q2HO|k0k@6CnL|VnobQ4|&IwZP)#YnQs9HMtn zBmJ!Xb+6YmtUlei*19*Z-QQ7xGvo6l0!px>z+{=X2KwHmh@2`oFcL5?E8PwsHas%$ zm+Og9J>uRTw?v_OZQ0Azf!)T?alZ%uD+}cH#|0CKaNx@z5zq0JgQln?bmlsm=IPLb zto=G61<%&FDAZi|LCUBURKx<tF5h|1?w_s3N?UBw_sIQc?eoq{kC!in(KnzALoExQ zsuqaPOwB6$^d#7sO>5#>-?F2~t?CN8r6B#C^`_M`p&<b#=b6zi%<jV?q?qSr_jq8^ zgA830n4sgVK_(o|2mz}%?ive0<+D*U=Q)F2h|C#%0o@G85hrHVOLK`T5N_!(G2ye0 zdZRmw+ck9knnSK?AQ&-n5qUQ42uZrN-aTD3G%;!jF4mTrYhnT1$uZR;ZHY{2NK1?r zUvmXNjlb_IRyHa&oYcCrpu5*MMp`%OW$@Irfh8MLrGaDarPezm-pt#`63-CBHrfSc znW|LlxT+Ts?tazCE&i9HAL4@d&Oy<fc6?I4%AJ{QfE_()SR>Lb)q#E?6T_<!s?k>3 zwtUZ8nx@sN+(@S++$N8lTQvf{S?4x04Si?6v*@hpQHA-UEuOwxAKKzvHtsB-apL`l z;vS1Wi+a+E>6HYd6BL!@Iy<euaj&jk)Wz&<A@G%A@Jt0Wzb`74Q{w6VY)H|QhYVGp z!=4?Rfts<8>m9@DO&{rq6_ik~Y?Br9vGnDK{W$=$KeJC82qf>e;BAs_FqsYn#7Wq; zWk-Gj;AYshd%237{fxd_WnNP(rz-3c1J!L=-8VA@3G5Wy^h&mYFg=$<-l-_Gd6L=% z3tiQw(h7a@HG(_V&z>~}PcsQS>x%}GYhB5%RpT2(EB-M1#PyX=2WJ;ldc8aX^+zdB zv#qExIb*vkVi)szXFZM!uNBUDukd_{9@7l%uc%;L)SHw`lsu73Fo@$-7)!qK1P)JT z3tJaS5x5P6hiv?oA}3;v1?N~T2T?I3aBVHPMFkZ$l&`?vNzc1ae8|qZis)S4q)7~V zwgl85Hcg5t*a<Xe9F8uFye9o64D)J`n-Unz?eREKT-h#}FtGc~X+mhC?)4xoMJe(M zH3u?(<4|A2s&98f9Bl>cie}efO1J6Dm3nf)cF~@B$|-%4iuUaK{I)Y6CIO<rIVUMI z<h%1|np)6z>4qBe854JR^20}48k3Nu6&C*Kh!y`U4($D&Bise7uvD~J%i@*yA7l-R zx&z$XM)0kEE82DTP9lmN2&PQlv-ws5cf=fH)L^k09-`_7@A%)vVv%6h#xVK+=w!;R zbpZ5-zIfgg8d&3UJ!fAp#X+g0+yBbi^F))X6`etwqEFb;uY+h}1a@`%yj8tgT5S2E z(S4sH`>W6S+nju-{QSs>f`l+Vqb1$9P#Z*G_>~S4mwS2_UBaIxS|3g$B5GW@qwghE zsNHI0&Z~tFOgUO0&A@CL_>*bWb&yq}5^2lmqTYI-qE?0Oj>`SHVXn)4m;n8;!}nKx zk90VVl&rA!9u`&Nyy}$n!nj3=FmMUiBL$qIx0z>*hHGu%0%+7{^O%B-x)N*~3@6@l zVC(I!xkI9xHm)ROzgGLSAp;Bas+2zvVjE}ZzdsfrMy69k0WXl$cJN<>SS>BMl^u&v zyHn-6RAFViO1;1!4~g`&_*cS-YFojlYTc!dvfx&@`9H*&&F2}TS}efJJoH}m%Q8JK zMCGUZXnmnQMy8<at-Ta1<e*M#735mj?5g3>jE;UIGczH=Y7KVvwB}xz!O`S2kSXK) zPK=dBR;=9p*_f411FqL`m%+o;K1oYl39IBT5OMiGeM#}~xjBlTDZh#&{j6B&->Yi7 zq^T;i)3v&!w{n2(T|lrg3*reIjff&8BSX83NxdLkWc70JC%#%JpYsKcwb;bSr^K#& zVUUs1f_-D1Gw_zWHYHk31F_nxxHa>aXEC^|{HTD=KDK<y3Z$m6i%YGbv^ik^mZ*FW z_`bgmwu$~`DLBA$4%yso<NW>~9rye~bNujy7l#+Ngv(5x)tn~~V}ujBxUR}0xhc$; zL^q<8DCPM(%t|g!sss-CduMyONB>d|cHBo}gqT;w9Rxo6S}33l|CVqw<T9W7#fD|? z22<u41{)kJm%>OP#yCT1^JEZlh^a>5)u*-0YOk_ewE$s;-+G>F4x6rpmE_;q!>o|m zo^%1D&f4IlBA@v<5rNX)WQ=r8C*e)l5h{26vw||Syj3t;GZ~ZH0yIRpg{=i=!EmvF zkih1p%}M>8ngg4-`YKj&x%Aq)piC4<tnr)?Y&9x)yGYV!`5GkiIEEi_jHGxE@;~3h z<p<Afof<0jW9y<xxms!XCVOpi$L4=VxJ74M&T~}MW?-~0!{^5s^Vn}M7_mw;tCecJ z)WMbU?pW+{WvwbFkvZWeu)C2hy?T0m5tUpve<GiRQ<z0!ga0Z=)xZSUkcV%t0_?01 zhnvz&t=Qv^>`g5YazxX)F@7RGHo|JwRnADsG#!3w#l65EvpwY2vsKxx3<BiKEdxEp z>|h{Rka!ypqzw%kBE^RTpvkWx5!#_F3*4(?&cZ85AjBUP!s~WpuSF3<_loijW}&n} zX`sGZdv$|8$&rZybIf=C=~=estNC@(0qh4}0Jhc)^_;~suh1m)#xruD409~b?@+(x zS&2#uy;lS<Bk|<RbwlE)CodnMfuZE=aLYnJ9h+Gzt;V(0pTtx3kf0Q~eHG5vp9SoR zt73MH*ls|~nX#do$`-{+g8~@r_Ah*Jn4Q@u5SN&&XJQH8rbYw>e<R$!2D)no!Mbl3 z5=o7EU1~n*b%8v4D@tNZksgb|M#k%lXZQr<&`@K>kmxrGfrOmwbAkX4R9KjPs;ZtO z&>hC!-4bC{j|BQ&eMQX;>NT@@oUfDwd>KT@_?xfh;jaS-dEmFb$he>_#8ez$W&m-O zdzuW9f9!DvwqaT$DDaRG#9&sVbf*RDDT1k_zFmyj{uH5tfF_huFBmU0HTcUGU&~g> z$QLTQ5&t&FI4EGUzK*k<h=X<_l&q=&aV{hj=&lm9flW}HGHnOmUqCAo_s?lG05Rc~ zeCZg|DlS@@@XTxZXhZZ_$sj~VB5o*S6MisD$)NO~`7FV_#3W(2Trm`7<23?_|Im<m z8BV6)eavoekU!!mCGcp7jB5BAaIn2+)FJ+iT#Z#q7mB?X|NGv*-?@FbC#^n!lVqTF z*F?)JwT&~-Jz${v@z$N<Eans{cN8$NGOAohtLoLe(RZKHJ>QiHX+Fmzy>6@DKw+lK zlWC#nSLd}=HkC?Vut*gkLr*JT&+7FS`2$4XXnaYZzM6IDmAa51LC2W+AY<p8b5q9( zD)_dN0mpbn@*0HL2(<9V-}jnHOG=f!sARSkHgZ$R>NB~2mVd=`>I_~b_1Y2kmHhHV z!<>NlWKF$A4S!SM0{n@E=yUuzjLHblYdTUZx<pI>oBR{E&t0-W--jPg=Uqw>l1&)G zb-GP>Ym@X-KPBSd<GTACWeP5ee+(gl@Vs5(`gt`itgc+E8SsvP3kx<~8op;t+G1I2 zk!U7?2QMwk0sZFSFQ`8JkzM!FfS<AA=vuX^lb5&#<Z+W1Ka^u=S(HeButmMPT&nVR zBN}Q+soiwBdV8R<{w-&UBy4l&<lJgZTpef<g!3^_oZ?E8_A&gZmA8<sH<4WV82&t; zA#>2+J5)_7Z}{?GY=8gJ>!TkPi(N_*2!f%`KQp^{?$VX#hkiJ6-b^UZiOkyCy|6NN zSMkN=hLlzJ^FrLMWn4k$cLH*Gi$Z>njtUmU0hqpnJ?G2f4LQV-#SM$gGbyy?d044S z4~W%}mv;2#IJeY`&Yt573t`m^j+(vfmb3f4I2MDCEUm6uA1wI1NBmO!H;tpQz*vvf zohIphF8?29QKY^=@tH2bPWKK1kJuw47wI!l1Q#}cTfnB$+5dSLT7CQJ=RwjiqR?c0 z{D)n!2hBCSPI2ANBDO|+ykoAf!Ky1Z_LJ!wxnI|%ZGHcJ-8+?`44<~vG7-24cK&3w zwBq_aiw*Zfi-<+3;T1RbDFPvBEiL>c(g(5Obg{`!wRPp6vsuJD25fcP6Rb1BwNT%7 zIU_XI@7Ylga4eR{MzSDTwn5_j;(yzMO3m><j-YTY1q1!e`rrts@5gYNX0F*`%YN_y z+3E&|00SW}TkDMp#RDJRzfp8-1)c%Ms3d-I8ry&tEWQjE+B<9HLy+bSSLm<^c-e9O zM(c`0kV@|vtE?t3ti72fEuJzhlN@sii%}bNTv&WZt%fO9I1}c<(PfT(&;C(ht9BkY zTuTzH-L*k0u&I@k4FRBvmSRp*MUM%SAkoj(?(3(SKJ|?Dfp;0yQ>+Sj`dZaNXqj%D zB_x_alOg9wCeuSBhy@B~JgQE(`<27wpg{bL<fDlBOTozrpmle*F?fx((@K2_?_1te z4LrF7GA0_BYqMvxJN`S$^r$a+NWv_iaOO=v<HCo!EhqiFs`u$C^Qzyx++tP=`DxdP z8u3?KQhO|d<G+qRX-z;DZ-#w`=UL83ESpvvz^0H`@S9B+wV4%CJMrB1>g|Y;In_QE z1>M8*7~gFFADfKCrezcPskdnbC;A~+;yVg4n??w<(-JG6lY(4)we<>T+EM{yXaYLe zx+A~~`%@JSsfXv2s3NL<p+E1{{Z%q>CT%;QwC=<6C2DuB$NKv^%2w4h!ovh@b1grS zpY@p6p`q1D+SN;=Ue!8ky^tA;6zJ&+I5q#iPstzPAiNvY*^OhMn`qJ4r9n49sJgHa zVR(9Cyge>C6up{;&4STSH5fcfw{$0TfBg=wL4@Fu;|;^ifB5pkw<c%8L0d5@U9fS& zxk{-Cr^O-3K&?NaOSy;%2f$y{;=EKxR@A2e!>-X(YU&<i{uIi@5~LEYqM2;_IB5w! zzLK^%jh%%g=IaOn|9pz{teM53`A>c|zbP+F0=Fl1nV8II`3im7y-0^++a@m=2FJi- zV|K|s@CijQ+~hUs|I0j!nD$wy4`}eI{+V&k#r5XI!vQLoT>9!iROG70-1-(Uw=;j% z$djICh%z~^r{ktVV$&x0f+GY0REi)g*?@FcdNF@U-Q<kEya+yA=NW;t)dWR;-BfFl zsYV_I55o0lE~tKD_)8!UR@b49TEZto)yRAK*hp>;IILZ!>>@7DBe?vGoT%x^#GEZ! zY^5tmrn2SEctvPj3beLEJZxsi-bigsh4t`%dyObA`K6<-qb&uB4Y>2|^LZWm>}n+; z5RY-VY!DR@9&@@c9JS)qo$&jcNK21Z4RFz=ad^ox-D~BoDymOqcZ_&epW(>o!}=S) zNMHlDy1b%&q9CPgc&yVbhaVN+ef$&JSZiW*Suol>x#rzwCA69leN2(kp;+smBtiK0 zra#b@-8dT&O0CLVy2+M-%zHC73a@FVi4{hZ{#)eX`+$pGM<=087RAS*sq@WpK6>NR zw*ib1C&DZjH#K2HZOO3SA&S7qQVngBFQCUV-UdpPhT15+f?!xhxbu@No7@f`jGR{) zlu1oH?0`}!IlQMoOt3f9SjoeQjN^^&1)+)M(3~;IMBv=XY1MDJK!Z)?;a6%Tujnf= zQ9jrfJV2JB>*wC&@trGCo*LyHU5ps!=4tu2YB9hfLWcx2WRsXjRpemHLHKpmRbw~T zoapLy@K>}%0E95%6O0MoX8k5YxZFUtk$@|Cl|pbDXbGdKg@FVKGJHqM^!09K1anry z*}uYsU@MC2L!B+c`<YyceZ1%85_Ub9#GlJ?t0E)@TGC3EZDULnk3f~p?poPp*g5}% zd7E=W6zPuN(p``ZaAs3oyEolL;wxI=k{?|`iK9#(K{8I1cUCQ6R|(Oaw^Wub{Zoar zu~1f#<pxx)^P)a=_PZD)&Sw68x36>fLAk2H)Q^~$K_Rx#D<qKHIj^AK-8Xiw6%r$s zUO<-@&vPlycHpO7%YTf7Y_3)9QP^2Th$k9Vk&zNJW-0~@Ccp5BK=#2*^oO(Ncyo9@ zdq6|pI!ztEaRslr7-Nmk_cK62U1;5O0Oxq8M2PP11YQ1532NQwK!>+}`XrA<P3iN6 zF&IZWGe6$d)k^__aa$}&m;+%J@<EjXAw78{TJ*dDEHQ*-AxI1P=wfYam)Av6J@`wV zLJ7$mHGqD#EOJ~1$DJRgPi<=_2=>}}<%!aV$@#o^{?|R?9ZG@?W^}OhRh#Yzl03(n z+M!g&=UK)gbWI%9i~i((Rj~4M;p{SX<z1ee8+2zorZx_8k1WNPE|8VCC-2d(pzshk ztqRx1JKE|WFu!f*F?&3F>r2Z1qUY0wH#-}Lq)Rht`;+tz)%%kBE}~&9=WS|~bA}}Y zXwvvr4Pq^qQ!UGUWnM#g02}1d_r=M@%a+u@=E?<+{F`dRS`a5Cyzjqd?SBbhh$554 z$M|7`W^W!YiXsD&X#UJ`LYCtJ3V&(2Z!<5P^So-ZiD;X&)3$}3#vQP1%g*zLQ{e#? zuV-^xV`dwh^bqp~29h(>UbWo2#ABCFolB<t5|z%$z?X9R?D$Cp0%1i9qm91dcnk@@ z_mW4)5LU0q0=hj1jYOmDb0$ndQoiU6DuhRxVkGTPOik<noUiVgG^Ro7%pQh+-ZG;d z4SW-9Nsc-=&2J@IULLUqB;%##N6c(N2d!5tE3zwta4qPz-b30uWQ8~=Z*TwE6}V%| zty_d#ac(fTS{DTeir|9)W?SFZJ8SYV3x|CCa)#*|FI5``Y$+RGfm9u;K!O&_2W3Ms zB~3;iMI=}MC|(hB#rG$ZxI8N2AiAG37sh51pouR)M5_0By0PJX{sGJxH|C;riCLgE zOQ~o{a%lvIqP~UwpSBK8oMHysyETF>g3By_LL3`?H24?-Hphgd@&N&ix>gapTcRL- zwAW;k``+m@Dwvk0ZvZ*V6~MTss>4Cskj2fuhiC;?7PT$mg{nwT8@`5kbec2*3iqVH zllY(EKl!1cQpOW^hv)Zi*xuLGUZIDxD@v5yFs66|s$a12=saywfpP-`vcA->&hzMF zUj-2&@cI={zQD{5iJ8qFzFtA3e`M<-7XpkyMKlA+Vb{dR)CgZ?AU#!LHVAb67V#pR z`Vp(^#0f{s#4ILmCSM9ctI!Bbe`hx%_`$po<a7kua@%k-Olj+UGf^;T|2RinYB5G6 z%2mRo65|MlZCH)eyzSf}Ael&ap)b2qHBO31=e4aSWSA_Rgdn!vcf||<o_nX(jXj*a zl{{j1*KSzlo@O?S<C9~l&<+=0)-@H^v_Pk*(D2|#xJEF2{4OXWv|}V|m?s)4J`M?g zv$oKkcCJFhOD(br#4fherP{LAdQW|ebuD?5M@6+VTPtSRtRZ46POs(4ZIXs~Q8(x0 zuk9o`re9Un?tsTN*9^K;;rU#pl&;)H8r?p|_XqSQcV#2A#`X2$b+_(T>U4_zr?%4_ z`Y?I;{0>`oYlLVAIR&?eRq??gykBS39$(Anm$Fd&D9enw(34wDSf-kQgRAo@mrn9H z6)0WZq4wK|Gd^z#m_z1;8rT=DuYMo65rQv1X65U|Q=!En@&!ad2JJENL26UV=FpZS zEkdZy(`7)^4N$wH6pN376gM(hGq4ecN7eHrDGwbvKA0Fot(Tn-lzj$apBsh9k~xIt zoFoiA-048Wb%-)sJWuNC7!i)eXVl)FJV|Y-7&qZx+CNoVzn-0Xs<+5AZr)Ui_Rm3J zKk*h0I;E7A`PnC6`Z`8<z2HC)$hT~z3=K`Wb(ea@fWW$0X_1?s$Yv`I{%)8#`!K(^ zn`H=`)x<a3Z*@FW@h42}!W_d{&iU}^I=yGCW9Ldr7e2x&cr;1VgNku#<(z4n5EG%R zTvQMJ$7%XBpKGdD<PWPSl#<ZH|E54E6?@KjAJeu+$ss7D400yll`$rs5a#3W>TwhU zVjB;}V8kdVTL4uiLiA&(Q^}uPO0;(03mI6R9Tbj~wt)dSB=K-OBY+&eIs2nZciF2> zT5>BXRAWHy(NfWn0h^6abrl0mcB-sA68xsb?;*zrP8z_+z<RzdJ$$cLKmT1gJ6*_d z76)GW);XS$eeU7hGgzZa+nzdYl^_ahwx+>UzpzMfWO^V!sr)WiBpJwfm(HNq{b&~? zqk`?Jn4~<S$MS%ydN))$5Lc3J1ACV|&1beMy$}4zhF<=ivuoW0RE0DgrI;?)ZH05I zm!^w4s&Re@+%#%m?g{`v?c#Od!f--OLN<WZMwHHY1JCpqr6^pUVhbl%fCiUTC(gnG z_#$8kL;KACY7F7@g+&*O^(`9}SDA>pX%Fcd=TrxlgffC2>L786=&&+n(_EJBGe`6z zas&**Z!Isq+EzJgItE$PmC7-=dDI!$kU&Q=B%pXo%3)YT?<&Eo_QA+hsh0`LD33DI zjpY;Ne0@@x=r0a8Hqf3^;W9L~u{h}4JHf7n3iBF^YDh(rtAj4V*|fZ=?cx(kHur-5 z_IHSb=6Zo(={+-55M%(PchLB>w}4w<PdvSVTA>VYkyDJaA(qLjXpbG6hIL^XI`@rP zDhhzVf;xng34>%Ho$!3*_(Ll}N|7wX9r=#_LyG1g^LXNh?5lv{S2P%ls0TyR9wjFU z7a!A_0~LrkRwONyP)8Qb2D9nVHQX`6i)l$qHIR8dcMa^t!-7$*#w~tt$3W6ahmV)X zqQ!?xTrjyJCYQP?DVkov9h%-_G{VE$5Vsm_1}B@8oNK%#XF)7jhG{SEHZi9MW}Q|y zyj+&VXs8DEF!<{oyKskZHxAp#yy<JXmv|XL|JH%}t$gt(FWHgHoTH(vuS^x$>vuc| z4M#&gP!W8`4h?n#;wbg@6^{P~Ssuxk)#64?F0N$0bf13+?{`X9hpvj{B?)ykZC&)O z;>~Sr(L~1)(&>_%a5|7mZ#IcAslE@khuRa*lB-aseekuD)_q;Q6oe&Gzp_GLc?FCV zkTj*B;UGTCXGF8`3=%tfT+*KaSXnG3z0Fjj&5!us$p~-8#L8lgP4b<_T;)a3svu#} zb~$_!&RIb9EIBINOD_M;Rv8lT*^etNvnIgcz#?<4@ZE7@I}XMRUO%SDyTXLONGbHh z*WQ+9k>FL_^8x@{UO!?5ypyk;1=6#@^T^(wS#)O!Zon2kq@VQgH+!=7@JPT~mvF(E zn;!9{;nNo3Y%l2whJ(R_jyl^<aE!l4k5<C`dscv>d|H^?B|MBoKXN&oOhR6{P>)t^ zbN}zV9-!(h$8Z^Om<;{^ML@d0>HtX4q1Io<g3AqWk2g(a81bzzJ2g{cJ{D-chHw8h zGm=j3%OfFwnfxKG2<8yaiAywytgaipUz7V78RvVRKML;>YFiYn=kR7q^desLb9O~e z<@Jysl<{xA=4NJP<1Hys+O1k(pn-J@M%(!i7%3k?@VR}F!}S~z18VF?<Onz>`xtac z`}fpn0}<-~wS|7SDd_VTU-yu#N;Be7)H^vmjUo&Q$8viFkZ9<&tnVvfWf9r%i2^`r z`#-)|5BA`GjOByc#G7p(IEX*$&MTX)h!31I8-!z&8!XIu3b_x=UQ9s~`dy^a<YNxS zO-`5F#xTcwXzp<o{c#w4(l`Zo`NjlzRuphz;WY1|t)*6T%LV13BU<RV5CCY~ss+)F zYHbYM3EuxoM{NBr4dM(iT)b4Dm-eml=PpEgH-cp6X2BOM{6&RjGaV$)u=u}<`d*zo z`WlvpIC=Ubl(KgLJDtf7({|EShWyayJ6grjxQOAE%SMC4h56E-1^N3e*jiMneTE5x zYsMY%@>YOJNWdk5B<$;yW!<@^r3&vjoR&oss(t*|Ms*fldvsex2?h8IyS)}skiJ-{ zSQ%QwSJ9hKg7CM?mnh6I{1TsPl!cgVFfvj1;nU_NN~@%}sn67I+h8q$ECKH(HFrK` z*?&GGT!3N)aLy9k%bfa|1-Crc?E0ac_20_2CtDxgkJ~9P<Z1bQ3+Yq~P|y4pyC&98 zYMI&VK;}2AIauzm;qZb^m2kN4D?a~VvwO1DQ^sMewzY3w`|);YjwdQjID`PxVFwSu z^vS<t2e39GgXLlrp1QpGIia-pbFJ;KBKr6QX&QBL^RnihjpT-0W{^zKJk23x>M2aN zh=d;=Lnr3mWc)_sgn1mXz)3JyRUoM9=BQ2O&y|r=judS@lqksEv&9Z67$7DGX>O?9 z_~nL#?=ZhKPFEvmRcE5$qlG6DS#||AznSk+?O0LpzHvQJXHS;_3N7Nx9<eZGi4=Q_ zCj=-qd`V%SS1ROlXcX)8bL(F1qK21;5?^+ZQ7Z(nSdky{5yOK<YuQ^*v_|%r-%iO` z?#fW4X-(p9xw8O=xwqOPcX+|yqyvEeEs&JLCkC>URNh!y6&~Q1{SAM#6=6U+Zb`TO zhJU=Blk^T!CpdU!W{X9Q%*y^BiCNJrKi8LgHM<g$hwJX9*3MM9i;pEk()Uc}nfnX~ zf29~>#*Sy1%g~C!l2BD>ayclc4=iW@o)RBZF~YLozOK-{n+}35_wV}8M_u&?b+FT4 zGiY#OR9V(J>lPM%mZLttflDGnR%|GupG~GLX$T!P!$>FXP`%mT<|mz#Aq^Ie=ZM61 z&4b+f0jZfcRfxIcDf-XEA0vs8|G;{l$1J#^yYD-~KAjf+WhDG?56|9^L`?)D&_1dy z)GL2l(xqHVZUr>filH$ko`gW5Z(eQSI;80y5Ggy`k7~cC*1)d|14uIBl(I~gjqU;Z ze3r3C@k#v^X;zSKUY#_{NTUdHPNH>>_M$ACjK|}ITF#JJcoQaFj~bY)?*h_Hdcs`; z@<R0B14uAVnw_$CPr<}#kYHxqSO$HX7rjKsv?T^%Bd&sg`!(fkkBXjj?&Q;-Goevc zoLIZds#J4eRLiQV%Qq^CmmTV%sw!ltrAbA%t0CN>8@GF1(I7V@G@9Vu3(;7MCDQU( zW-N<ZJHdMS6bJDVO_f8oDX1)uImg&RlW3zYhCjEKZFQK-2l_EA!ew(AComN}w?O<t zUCeU#JUQVjBLpaLr5QY?@VYfD`P8@LJpdF7dlZL-FzP8*bj~&=l)032zjiW}iA`OH zYNfbAV3v=O9nnkurF6PJ^<Fuwj0JKR_u|9=1ta}DexE~7GTOwQaCUv%1j+BGLxzvn z$vBqjFU=V`1)Dg9X?s?OjqpZzfQX_k+gntsMrF&svx~#?m+IP<I_@k$uVtkHt>1D( z)Lf^`L;AXh6um``<^8#GGdLi7C*|LAROqrza^y_eNX<lCFbZyWla@|}TD<nY%8YzF zeCgvArERy<frA%!sLzvsmhz+~w%V!)Zz+H>3J?@fG}H4Y3fLKK`v0dBl5Eco(EZ=* z5^4Jj^rVrHHBT+Vk)%BygboJPFOM+#!e@%zHOPU(ct8vbK>&ETP&s4p1};KSf%}R& z`W{=98-%Q+Xph1jk#x~-;y>(sap^C`7<2dobl;3$w)3dRQ$L4M34Y7is@3=!(eD(E zKNPwBkwLf$b(d)u^6E6I>=H-{Rq{z2Z(H{*bpB)}Sj25P_!sCHruF(A`u2m>LPL$^ zZu>qQ_fXf<Kpq<h_7Nd#vma3$hUz-TlSBaz4~}5ONqnu^BLDi{+Sh>qPujZd?R{N) zu<Z@=+nY=`;u!LxWji2H6_fc#tkb7`?DgMVxJ7Zmsa=brl9~*8-UP>cZ@RkMgtDeJ zExl{A`Xgug761-+w?QyY-&$n-q6)(G9AG5jeIdR|A407vnh>m4F=>DX-_OoLwuyAl z8>7gcYPti;c^@O-9&|7s1M}f7R^kC}mi^1aC(;%#+`Dxj7)?Zz`1&IoGY2Qw5Il#N z`~$D*e$2_xwXUR~grT|%i_jc}7n)Vn9^RtMj-h#mP~AJfmK1wr!R3g@HHQ{0Ex_5S z*~li22vT!nhqIMGN?^)9rDpF_6A3n~gQ9P0X`WHCVWyZk++ZPixpS@Ts=4tn$IQ*4 z`bFoH*&4iDS#RQK=D|m$iMAtqWJ~G)P1ZQzB)-~tUQl{IFF68Ln5i;o)NwzDRfV8_ zR15p%1<U-8FmrxR#d{>t^vL7hd)0Eisv;M0H^#bl74j=$n|3P@5x4Tz3|Yz!0-O;A z>``0sFr4olk`!k+Gosb|{oo`5X{YkmMBmNwBnB<eob}IA^pK=?$l)(KJRBhvMg!#{ z5sFs|<gutmD9bVIho3R>M-|WuDdVGgXxwiO?~Ddtzyqm1KpgTEJ>enO0(e*nb2<$0 zs6~Z%5Av@CiZMJWzN=Z&$Q@uVLFiZP8V4FMZ>Oq#7SO$bPjWFe64K2gd~+HyRc-;( z13F-n@9fik7^=yh>Mt5tgmaJ@f#(}2PasfS--gYByK6Xvq#n%Set#Y^u=yY%W3POS zI<h3P$D3rC*wZfP$FzxY1~t*EEs2p$P83o?$-Xu1?&=_(RQtTe!0(nso>apU7deg$ zfnXBlyIu1IS5<?_!vKywj}$_!o%Gg;MoKk1w!Kj5Ars;Q4N3r%C2iU3Qs*a7C!@of z%eAFYWtitoQ{P))r-_#FJ<qj~q{Ke%Zz&sMaV+X$<515&q3+n*^NrCy6I~nFok#dC z^dVq7CBN}$OT;6mUTVt<Z6EpraM{`Z`2lKGP|nRd$K+!-N?QyaXD<RyNnUx3Wi~Ek zJeayynE3B(_<KXu5WC4LY}=ob0xdNgaz0eyR~;&o6c|7v52PG0nR?(lKptB1gPn$H z(w!l`yzVN#!2o87?!Q?jUSqzh$a-Iy`$rQVs%5@emj4??d6U{DGz~ZD(%JTuOqNI0 z_|)~byzCYyM8kNzJGpKQ=Gb<u+Ez!$wPSMK%f~12@zD&^XC4~{M^$1Pz5)@(d8>XZ z<g8-{HJ{QCKRyQGxm)sG;htP6D~xTg=CA6bTiy(SyzLsgMv|)l=lJnOfZwXo-BA0; z8EcY7O+!r7$^E05n0dZxe^|Y1Zq28bZ1zJ@>PB7G*B8fM7a3}$%IBs|F8_@3i$UF; z8Jid@9is{f-?Q~hyQ@^*GQX*^R{PN(vLX52ZsI@%+sl(Uk-0|~PX>uVFuvl0yY3X; z1$xlf50C)V@YBL^Nr*39?<5Acnjuh&V98OHzQCh-`*_|)2EW>lHhfqZ5dlQ;SsJD6 zp`8z?dKx!%(nUnG6bZ*n0K$RkM1qh!WcVgr8MmR?`eV=<5;4xDo+TSN2=&HSQE(Rq zU^S4my(5#@e9b9{BPgs`e^g}uRI%}jyzMtTbQi2BgZB>w`QJ=akeJwt>j(!Yd;Z@` zk|T&rl52Y|@(1%|a_ffltI7pH9ST=^bEfIs!92oSNCd(#IkHHPKLu;6_9;&)-lE!v zlXXh~U@!!7>kJSp$I$U<wMl3!H$^Z2-*DX+WLp8HDtteZl7tUgx~rjg;W1U?oiMZz zZFz!t%Mnio!`c#}1r-!zR(Ln6YMBD`2h`<gpVGJ(zHS^=>{d?Lmv`oJD2e0aNQqw? zCwB@jBpjk%!dljE;bJO&@RwYmvh|p2cZyq>eQS)ii{o15=$FiURN5CRh6$#wYd>CV z*l_rk?f@hluOD8rGo|hCAZVsYggJ<kz;2b6T6(H@HB?ScJ(Otd!Zt*t2|T!$7kqC^ za5d%f5lS^(3b0TPZ<4o`0RIf1l}GqL4a7VS928`#$qgfnlgIygj{ahQ{HB)J&soBL z)R0L(;dK81ZmuYjOh`!*hm&b9CTI|sHMPiI^G(oklI<#oPEWN$u7tvzOZej6!hNFm z=hMmT`&BfTfjP0Z!3pVAu~Am$FK@e++2zT!h0e`72XH)^i7P$sX2O9~KFjJ;?hD`4 zJQPx6DG?$qqvi|kq_0mvv!vkBXZugCq4s7Nd<OKW>*DZQWsFoi@dT@=VvFxp&G2Xf z(VRSeq_j)*(>WF7?1@sQn47T|YK|-!9qFN4$KWCr@nKOoh^pwk_3VBnO=LepVLGxo zgObt@y^*>&N*T(-7si$M>ycO<E$GU12~w3&^ZH3I+2R1=-}Yw`+T{vG+dm9fg1&h< zwJ_k~3tjfquABg<5Ey55F_n87o19BlOH7z;pIB-FaeQJ3K6+C)Me9;KG@mE{zEpdB z>ziOw*lS-PAkV$Jqx<5~bUXFlUpf#U;*Uf*Oc+4><}Bn0gWlR*@_Itaghn6GIt^ma z$YWoPnNM(4xK|~~qm9ST1UlFC{@N%~CFS9N@mRbOz8vT6R4^kR<-@!AmwjhbOYbX< zy{UM|Kd*b|i$&tT*)-}Eh+};gNE@-4vK-zMhnBDd;FSEQOTd#{^xnNzXnt7S$^7<< zhbWjR{?F&7{0lPty1N$_fRCc5D6ym32=!9G(G@)u$h~}oBBtUhIyy^O2E&`~TmpMI z=hGsLjcIgs5CjFBZetrgLAw|)E8?MR)Rf>jr2Eysp};HX6v%k#4X{$y-QHAs31V*j zWlNZug7bLOj)m8&@eu<IcU2~6`Z>kxF@eVx*KYglU6Re=B19ga$Plj$8abCfa^1Ya z_8NdQO<*6c?RAd@jMKs<a2*9+K^0qvT==FE`uQLB)U`5Slm2=O^zYQW1T7r9ElLZu zhmvvIvpDNTBdS1s;u%x(?r~f;i?;7Ej(k2975!pH`Jevrpa>B*Kg}%!&ab4MQ!X@= zwM_jamR<nETAF@EaPULn(+a66!XZmq8Q0Jko896Lael=U(+30&xKDdfZYaK5d7U^f z^nS8gx6YMilP$!b^a;xK9dujp^#Vn}Bd<?z#u!Q<CL6Pv5vv5R94ZY9&DcFEFfAvz zBeY89Oy2-NiC&|JU`q;!+WCKX&KwD=lnk<{*tBhn<tT+i#^$k#SzZbk#v_o6JkYc6 zca0A@K^IL(3PX$~9<Hm{yb^X07baF|s73OS;?#~P@6GKJNlDgMqC*-4^hFK$Rgz%4 zls<N%K~RmD+u!K&@_-^P)95+6rn1vNz{IL4`p|}lAbMA_>zOmqlP<#e4E^e+-MdJI z)21#|mzS(lL*@JbEa6c<`hXm2^x+Fj<})1bK4r&eNhvU=?toy;ML`$p3Zimyz&QW> zj??pssfK4XM~Jx|t;#pS@r}906{4wlmegaDN<qVXrj&<t_f!^HrCXt+n#bFxU62q2 z%ERJ{S{vU$ane7IIjj>+70Ep9pm-w<B+<R6Z+TQf^&U=Wa}TRehRKpi#p!I1FM|Aa zVggA;Wq?U3)AA5llh~Q3H2?uOWp&tP>Voi*z}W*kvv>u~*|Mr7*W$~jp~K-zJHrbm z6y6!w>RycV0%b2g-T@?9`DB3yLwr&fqxUlF0pNC9iG%mA$iF);X<Iq04IqxIy3lt* zgJMS1r|;cH{$q?tktlU*UuZBF&wejGiTi25WI^qKcVv=RN9xYF_!l3HXmNT(yIR#z zjte_;*U<AyAaFpa!gh@${eKL)y0B^IHm5O1wb6wF>cW~vM5?sb<Q32s9@HUfNG56> znfvkJ8{+6%6b65m)>OI#hi3=>w_e_l9ZG-vAJXjJdLtujuzy9ahCD;>Fp$(#t@yAg zLjs|NtNA8?guGhgVCx&DNS>!Nh=q?_0EavJ0-Za$#GSIC_UJDsy_>;k*K7-x7K4H6 zXSCQIf<lCXDNcq0{|Ly|=sZE-+z%1l)rm#^>(QHk{gvKYT(F+rJyNL!uz6xOUoG0d zWZL(im1x9`m!nW#*IqnjiV7ss+8fpft?0N}%6z$>mg1r2`*6wF4U8_HJr6`e?5T$x z!_~W6V`m4Tcl8P-Tui>!Kv3q|nQ=l`i21z_jc??GYo146f*#8D(JkSi)bYNvmN-q- z;o=);O^6b`3lPb(EF9h{8+~qRcFV+4MV)G*i@J7OvY47CBCRYucRgi&H9O3M_=S9r z1=#v+`eEvXVUv!L!(w8OpM@m$qJydLe<V2DAB_<nf_8p@H;`LVQ7@Kul&`M-yV?<P z#TB{1qVxv(4_-J22GKypX9q1qyFhJT={ub?IvM=rzqw~ge0K(gj0BGhGd{_g6Xr{+ zMtfYO${+Y&E3z9!4(iFb@F_a+3>n$vQr=ceXf6C$Qhp3;EZ4aYBuj43aXzzoz~Ipc zm$8C@fLdQmc~9cnXKmjh;U@`QhXO^?gd%9mU0+v9`r#eG*-ruT!MYPn9lpEE1Q?c$ zwg9^5pUJe8zTXYyoKBzZj6!lh`D<!uTli<UWbZGcQG%ZIeaz;mJe-{B88}wO5ZoiT zj(;(y%km|ot%OVRpESeMkb{ZK6%}+RXdk|n)$d-DM}v1&m$3uaHm2EDkn~i&m&#;| zYoog}qC~)zB1mtk*xv=yQuTvPC4PA)0HG^em1W|fd6c3D!S!o^dmpmgC+t4N2qS@G zC-$u|eJPlyTBVq`_NDV-ys@a0&|0@7Tz>?VS{u_jQrxZ^T|B7MvHf1QXIAtEH%eb` zpknOqs<HVi)vQx%ucY2c&j5lAJS8FSU5C4yJ4R=WiHpFR+cJ@2({{ZJ#8U9dfV<mS zfbqVHHhsdGR-S)ovAbdd;Mv6mIF>j76>4Sd)46vf{g-Clz@?wU(v-WogYT`$lRgW^ z7J^e{>P}S+MU*h|p*RiByIl1@+SJi;Z2_hF&04cizm!XTUyH=Bd*)wg$qYPP-H<^m zD4ZNe<O8=_?<~a79Exc0bBa`8)+#Ymh!{<aH!%V_dI=!u{M*vW@$(bxDaZ}FODB&F zV=@-$UAMLRaOu(?`1Y=rF^fs;iHPMoS-|@blTC0hL%P>~(>D|Wxe*$szfhzqZ(FA` zs1lAAU`6k8moN$!yR#bD{A^E(+0=v}7ruj@w{{DA*W!+YaAEgi)uNBdl<N3_)0i?% z$xr$iyWUE|jwBk8NK49*V$0suI!<6;Kq$;sJKIXM+c0er4$yf2em92Mv^DpuyJopx z{Kgg?1XwdVN4BQtq}saF@k_@br`xPLAcNke`jfwb>4X@}Luz5iA%S85d3QenPBAa| zSnm8@gVc_cJdR?q#JM$HVMXJyTZ$RMl?uG9HvTh*%F}4kp(hlQax@D(%Ri7ru415z z(E6%1Tj0gVc`EraWu9N@+#%_>V9D;ESb-uBL9kcQn@>@A+s+?JzycKmS99g2W`YMx zSCdqL7#^T<AG=0g;up>ENnAzHZ~nA9ef+rskBGNZpez^oDHtKL>7Z3TTEY!3kW^Es z_XLD$fHuOWF$c4+^jesY!RY>P2Ic2oiHG@N5zQF%UWo|gvnE2vLms`^M4!g*<_RgE z&D6H4|F>yPkckG~0D7=z&M=<H`3-o(Wnk7=)M(~g!m?+cdkjyZJ)<O}a?}C2{8jGu zKRZNfz4LgV#jX3DzqDp_8zg(rDL^6wp>7;ZPEZLmc}I3kOrBD<pL<hz=IRHN!e1vX zp`37Q2hfUoGrQhb^oJ$!(A5SukqIGqOM31*GI1Wn0rnNhz{`;K>XGLNkRL-JIS-6^ zvXpZGk0$QF!rhnN|7gGC@l_}?`V2=X2)O(tU8{Xv9RYZYb)o|MDgm#0#9)Tb|2*ks z-D6yXOeW>|gQb}~W9q~1J0#K~tR1C&hD=d`_$9D&RFeL<yRPb_yWSsjG;SI#w0kD2 z=05V{p`8yScN5>Qys7VCKh`^RA*!Q9pI7ao$r0cR*<tnly{Sm{SY$cFEkG@Kp5;HE zNyQ1cp)ACMoKV6+W{z}^t4rm9HsPc)wo1f#SNpcrvs7Ui=4jmIz>0`lhozv!n%9#B zvX~%G#+h<vu&GL0Yn3tn*2&#y%lOV;%W%WrR9|I4G;%zLZxv5$G6z*coE+;F#KO*J z%sU)8=!6;OeH>OGHBA9e`Yzr(#X^l-52fyX6L%<^oBSe8SSe&1dz&B#C~G-kTpqqY zqwL|S1VNT1E0dT`Tw#AOBM8l|ChD!uH4U1ajFCta`Cu9>&8=bn9M5NxE5_nWGu#RJ zQ$_MA`pD=Lh<u_~pqk-zE|CaC;wcySS5*kZ_+udgpwahRTBvO3=<#v?|At#^(dF0< zDuYCn9pz6i$|V!q>C+|(`7p@>X-AZS9-phKj#pF_z#f}N4wOYEx*3V9Sp(53u`ZLU zr5JBz$@^^2YZAF{=CU&9>BVNBz@*1ej2&pWe4q2K2eQ+kXKc4&qMYzfg3GFV3zDeJ z8r+92cHBH?zAnv?>6fvOiBw{|Al6R$A8+S4Tl}!f$6p;jp9+1y{i)_0#aaq_<=%RM zxN8i<hph^uwDvV=n!g0)3a2akgS<tAmU!AG23T;X4z4OIBs%)`E0FP&^Bm2NqS5M} zE-wXJ2Z9&UI|l;=!jG#-W}6zD#JFrcfIf_9%3>%uqVDXyW#}n?H1eMqKKBLxr-T>= zQ{JQxV7r-B>_tDtAeR?4E#8tl@`VOweHa&=QD0+|(=AW%#|fAnsFC~iTU~jx(M?Ya zdimtJ;C9Hyn|;5p`-~xvD!zR)qE|P`PGbcM4@LjjN_BZvEX%`CM@=l`KNvJ!cNq8~ zIo7^P#I2&?X>!MyAo#^E^$0q%7%dFUMyrzmhLD${D;MoCh_f}n?{5_ZkTZf8^Sm)2 z*ZjlKs?!Rb|E&-k=o6TXd#ylNEk=IXFZs@n{IZr0T!H-dIBl3jSCK*+xm!#SEm9*i zXpB2@4i6z6)|%G#{Du&8)<~c74Dg5uvZX<6_Yy9YhWwL1^__Kf!u#IC&nP!OdcpHZ z6Sv{lkVDC?F2cj_c;b=#u38tpbbr1g8R6C9OY0?tg*eBDK#e$cUm6lbEj?W6MK)RE z4YEYL$b*xd;!^k`Z2{VXCfdLRCUG6U6-JYie|jxJMFv|(tkowl2u}5o%e7Ne<JvR- z55nHp3RWy|WS=g5oAstp%v%jUQ1$<}m2-{ZP5q@jzU*hvd@o`d6S-6W_Fbc|qkd~H z6gE8HxO$D-P>|uv7er+*s?w(Mk!BWavqvxzi2*&4doMDZAc5}2{&%$z<kz2W6nHkT zZ%->G!b51Qbo}}jL&{u{8|2(pz5L{IToKH*CJ#;#+%%q_O)?17@uiBNEix&%&S7U( z@$<<qKm#=JKwkKw(@j>bWr%u5nqUhfI$p9pX+WO(gDEgxOLh^2s9TG<YksJiDH$Xb z#|^^PrQ%IOf$IN2gk>^khX%FhXJLtW6>c>w@AOvYGM(|azTy#po>dr>f#LzS61`l{ zg^%n-AB`qr|M0cMD%gW+8)26cha)bNK2fn%i?7Pzs0xRB2P9tMnbXyhOa6reU&d{w zq7d8HO2mCWn>PLmAMwD{4fH=RA{0?oc}TG1r(hJuvVq`gFk~T3iSOeTPPn!}F3k{; zjG<lbeV&GxpRx1!F(}hGO<Y;LaxE#yDU7jfIIC6zbSN`mBOhYhP;^Fs&Jd^MBzeKV zv{Ax9C)3&jOi-GPcI#do(Vkb!Ycm=JcfSBr?^Dm1K*V25T&2&O0HUSa?P+cY%5z(} z25G`~eRrEGVy7s+Fd>3}n_?8ZaGlO6(YE(|mBvrJyh$;+Y>|K(Odwiw=Ms<EnSHTE zXwnWxgdQ92fIWa&%ks|@#@8YB7Z~$zj*-^q22l0YfFCt;(M|?TNWNrh%e>s)ovIc~ zs+~aXLnm&eeF>i*`Mc)9`Gb@B@xhx>)6k*&Jb~_-aK7=r(;c=PNCaUrekZ=ji%s5j zRB)bK1>ic$Q!#2O&6waFac1JGH%jNrLaRJE;=xZvJP2w$m|F$eQK%Y95gISHlJft^ zD@4{C9mE=&_%*_VKwJokZwPknR`gjI0MK*yk(7in4$Eo!yz8n*dJ(=-hbk4mt7Cqw z%e}oxpNJ-=#7Ea~`udV($os6@p8x?oo}I1B4)~FCayX^;TX6w$Yj%R<)xxWApuL{5 ziN8ayk-U9Nohq;air`59jlq8uNNGKdTfp6-hZVgyAqlywcY1j1a&hSHN6qE}5Xsq_ z!)<Sx{sDIYovFhX{}e&*w!8UU4m<qjF*`*<BeV-VAt?V>;Cy<1$c##y8ha5y9YlYW zI{)rRmp1)dyYb*CRFQWQdY}QlJ*{2*O~p&r_x1z{(iDjCOXW-hl7?V76EG?fSswN$ z9d5i+l=52&h0-tAuaB8J^&!UVh$FPcj#|BD@92T9nJ@OZ8%@pxIbuxCki^;u(|O}8 zN&{bDD_2woUixP;f9jl(7`+06&#XV**$(Xc#m026j%$fG#}TYAZOBlkvE7J%_P*I} z1U=}49(yE1Qm_*^+?vQJv3pn$R4_yyWaI}H4K&`-cvuuKy5v4i`gSEtO5cUHhgE*u zth5mxez!HsEm6m`Hy^v8!hpW>Nu%rdu3m3P<wJ0}6f%F32<ey8CN-kX%^<DG#;}Lw zrv<-=J5b004IY{0Y&37SI+93<v?C9uwJLaB)Hzd|Xh;08bX)EH>NI5kw_wiUjwaXx z5l%4h5a$v!z>o&%>&IXiTt^mjfZZ!s{1ych7QudiXy*USWp2wAM|dBu=^httdaD%X zjdvjW<teb5+DQJX9bidaAb3f&d2iMl_Bdv^?{lOQHbEhL*iB!W3a?+gLDpL5DusJX z>r)D?!}7_~p@HL_S@1C2%gE=^Nw`w!gI=4_yOHcmeG0ZKtaBJNfO{|My=sqopV(Jb z!u4LLnx!JfZpR)xsr@p_qkm6;&EU^DJhq#(Vb%Rj)NZ2(L4nz<Sv)V&p%9)=Z!BtP zs3)t>=Pqr)iEy*F_S$Ha(2eY(y#J@i-`ts6*yCUGv6tZR)CV7Ksml7oGd}#wG^hs4 z?MZy3PI4}Oxe9Hs(q9B)`K9DGhoqc5I$%=pyq`-}<7AJz&u{f4yl)&;ePTLNBrftB z=ypytV-~tBqn;^P2?<(jOtHBTf!CUJvv!b|EjsS{9!fkv<Ug=j=AH#XbVsH!uN~-b z!?gj5-pEnG<qV||PYu=^*;b$p{|6<3xt1JHlSfcex0+}>^CwXoLvQROr?ZzSKbEe+ zc;~?^KKlY)<z?mcKH8<)r1M+%C1_4vGzhn=fq;~f<Q=-xfDzg7C9JQ>S@k&wejpZy zGHR=p;*PYXjkac85SyKu0YJ^2E@g|1{k?mcR2`~LF3=OYYfG?LI&}-ug^_-30*+)M z()p%k@C`N3u3$gC5>hxKBW$#sg`ZbMU}i;0^V6%OvnabwspJ0XoHJ-*3f^~$ZH8nE zZ~LWYB<<Q9fDz6Y5|$mfNzw43Lq0mcpO`Z26Dxc<e=uVV)l}<t*a7#;$d+x7N<?em z<A`-q81r5Epek%=rP?n>>l(`%tUEaiTe=1UL{R;EV!5+!s+5ug*odCRrv%6Z7!pUf z7c$Q?I!@dMDy^VuQ_ffx))zSpp<%g&2$!^32<=eeGlsE4as>MXLNRN9rVVPzeKZny z_%^}bTUF$-iV*Af5J|F+8d`N+P_QTHL4ixGy<ZECVBkeD`Ni*P1G7r+_?k-_@*)j{ zS}OX4(Waq9Tf8}!wlX1&ar#G;UaWw+3BGSOvxKLLzqGn#cw&~{xw%N_Y9UZOft0#d z9^umwnW3Dodx9|7xhde0r17x+PbBZ4xpk=o;BquC?ywq34kQ_eSZVQW?S`C?@-MSp zfd!gkEE=?g`|arv@M1IXa{G#I?Fvb;&}6i*gvh&xU8PA#r{qE<ot~s|Z%JOeWJFMQ zp>7z?0|Z_bj#W~bt&n_J%uVZ{G1`#7JsD!3098lKP+1x>2;;bD5kX|&pZ#~A>FyJE zso-EQ&Ee(fM&}uvdkt{f)P}BW+O(fy`LLg{(#O`LN4~?~2fO*c|7pfby7l~x?9CUp z7W(y1!39@x;tLz;zD-n|Z1EF?z?05&u?H!drU-5kDRcXvkU0UpW%WV*)*$8JbcWZV zc0VsmzMh8&(x}wrf=H;_+xQ+DZgG;A>*ob0(Rg}-8Nv}eKW|6~9~i7&_Dm3|03E{S zODkQ=L4oJ8LGm^ez*K^xD&QUym}eDynfT7CYMs=`Ub8ct48QG=zmwe5_5#J)y-3do zPrxkeRq5!q-6Lw~#l%m7y?0_0Oo^o8Ypc4Y7r}|@XEQsPgMrUuhpTm3M$ssio2F^( z`eBAnvZrMS@<VA@*n*;|<`un_GVj2En4f>P&^(W0^;n4&WJSh;?T0*V>3E(C)-OVN zic;ka0*|cT7(-lxqsJzSWfJ^4AP}uUD#{mi!cTPfu7;2Pzm8TFcqb;JIuzjsZ-5q{ zII$icawng{Rixo~Y?27yCR(EYc#VD3;k&ejt+Z|2xN7WN{~*(J_lgjJauyFBhWR>A zI0ri`E|IsN)zddSbBk9;*v{#QYr>;R3kGQ8OUw%988e&KQ2w8?m2F;87WDb*-glJa zz2FQqjLdcH31KU=Igz{`Qaqq3RI;^jCcj;k2z*jbb3KRj8=rbY_n{WY4dG^W1bF-X zY`2udwdBY;E5x0{XIc()in7M2c%^~?LNH#1_d4Ax2QA^)ZN{Eoo|u1cY200C;<NvY zP<l#1pXA!*g+F|r{Oy{p8bg~^*c4HWWP_;JDInrOwaMd1%r}y&+`u%podQ2lH4py_ z1`Y)~bN9byO2lnG)AdNFenk_MAv{#`{K5S(h>)uW8-ik!X@I~{AXZ@kGu0TuQ3H#0 zA4xcIolC`603ldP2d+tLHXK;O3dy>CP6^=FIyPyBl|)Idm9zm6j^9OPj}7R2vdKN7 z+0bemE!J`YuF398Qjvgs5?#hPlR}TA8rZ2aG7@W1!cK-{hi?lHkPouic8LwibHKHX z7{(q{%*>J$jzTe*ns~2x&|vZNN0k<)AP&san0061wp!`ORrY4-mD}J2GU!JPGn(bq zBVL$^GFvgEeyf;dDgRymZZ0u){49iL(sb{VGYbkFk2dVI#S~Maawj|e28B^AFmk1< zu*oREHJOd!pySRn$J}mkh7DG$V$jyhY<zBgb1l8lYpWpVz)x~-V~S4iE`lPSQlfga zIF9BKY?5GX5IVbDb}BNN@^H^mqv9=kN-Wl1!1JhT5N9}~+kPQl6E6mcr|(59=OU7+ zQj*YA>u;;mZ-u{o^Mo^HOS+=YO5`x3;MFHBq=)t3&n4I~wtt7)Lt<CigCy%?dccyT zw8qGJyR`8n!zD%XvvHOZ!B+`EZAV0b?$%q`B5^~UD7^uo{t5ehC)w_{Jrvz>#T$(> zQ1Gn87T^zZ(Uc*7<>bUIdtDGH_kY$qX9JEOL&NH$Zd0y%YNzTpP4J8g{7Ge9ZoJbf zFcDB<vUpv-R4{f5M1WWErQ{l)WI#Rbb|roztm<%ZMU8|~5trfAVbJ~7q=kPm=>^K; z4ftV`r`^Hzjx8tj@;XVUyteN%=<wgsG+iPep8cgtTcnCi(B~8=^#g&hw<pa7d~K&l zgFZ}6Y%?XNDG=vDn`ZVi%jEyHWZY!iv32>tw{{DtxUrO6-kAXsIC36kuOl;Z7dtNN zQ65(m;`XP?FaASh8H~RZ8i9%nAH$|qj8*nx<<iOa2Hf{rV9>Wdtz$|^zcI_xo%2#S z!QLsFWwNVbsHc32T5zw-%!lmd*Y}Te{1V9x?W0UGI=c6zpke#!#dH2jTuCYFf^`D2 zA~UQwn?XoK=Qz=SgTPrU$({cKdryd)I9A3=t{0LJXWinfn@qK`<qw=>$7M9HaV3vL zS|%y9Q_a*BIY%!DmqwTV3ADWk5C=G{S!(BFZwKac3nrXRy2WbKvGh0YKu3OrOTfFt z&9p^CM{EQMC?c09T5m#1k8z0*?GLm7&%W4p6i7QvU^Rx5vyC1^Ox=sCQqrfKy`yo- zG5X4wBTPZy4(#$SB|m&xOhfq_p7TqH7Eh`VMd8o5ES5E5r>1O`@wgaX^nldQmZH4X z4Pfy&*5Oj$TU-ROcc*5rqE|+~z)W&g3&)kawzWSZqwoOp$x_A1B?d}mV!OiqtK8Kt zVhp9Oa9T5wxZ%kojAIsO_)mq>c*-y$W9}&M*(#W(%ktOEA}q50`fWvSx!l!UxkXyD zRDOMojla_(w3Ty?jx!~-FD=R*tZU8R)lQd%9nt!~+E{E2lQJ_dw%Y#ccHx(vRyj_g z66%Cnnc}Zc%JaQ=n2HJP(Rz5n%D_1=g)lFJUFPW0Kq^6;LmUL#9|3O;@fRC_jc{4% z<=|>hOaqf+9&ndJg-?ED7zE||QcFh$zEhBr>7|{aUR$TocFDWNnH!3e{4AxkuntWq z{2YuQz{0C|r?lc|KGA+GbH-k8DQf0<%upqWfwr%^CYpcyWns!p!wTW>!s}mB*+Vb0 zD;Os;sM-WNjee<sQ|9;jECT2r(d)mont|a8Bo=_R5eT^CmeHeKfOXlE5nN=13lxSr z>ow)voxdG|QqI^Us9Hr_)U+GiAn~}mq5!h0ZLz)GuO12>DuuM-WHO8ZylCS!I77`# z;msV}>RS^rDO=I)t0XW*Nv}(PE|`M+5{dwQm+-pj!zwfQpM_#J8F>pliV0yPpAN7d z5qYR#MX42Zn4yu$YNz9EUB1=FP9Z7V^tXsn1xhba8ZW31-1Bfz83GMZfb#1A7YXX& zuubfV7trsr3>YWpucPB_#I}<QK93cY1nleLd$(p;*U!i)@y~o!t_}&H3?8`QKXGXv zm$TLX@JEWXgm}-Tz5z0d@bj#w?V5^0dG5FL@&h_@VD&|P3jIhUx<n67m6KrJ*81&O zd6N_Ny&77eG`y0eaj!D^x?BW-rj4S6w~FISLgpnq00S}kYPygZCO|&KA77=Fhx*u> z`}_UD56l7o-*IOY7Hk4gq_Lrza$Z?qOH&0zL0a$)(qLP57Ev!GgqYCqbS1=ZeKYFL z)Pv&GiCVKk*aUvPmT}Iz=u;|oEP(|Ba_GR+OCFMv=US$*Ie{Obv>ty(NQ6UmZUSV3 z2`?rWJ?2=^#Q9HSkVNg&?I(j<<W46W9vwo@BvsJ!N)>Qzng31Q@riJk@vh*uUu(cd z6t1?A1_!!e*kzP_;Bs|o%?IQpf63l^gDBD*L#`%g3h^b!@qEB02z1aBm>>8MA@ZO% zTt;*?yyAJ_as-Xh-*X(IgFN(O5}(3`Co5}^%K+tYaf~j{*3BbLX$V>I%tPJ-8PT(A zbi^+KS+03swh{yUx_wV1xn>CG=7xy_ZjIzB7iqwyN0qz0){B2Tg9dMaS%B8WK3w&2 zj+&Nk<!T=A!y17sE~`n;<S0E@gH+`~nWhBF+sG)hD0RN8h}1xU`e`iU3Ml+)CtPH& zC{Mm6*b$8i9R*u(cN3aHmjt=C(~C>&kHxfv`RJhkYM_UbD7Wf8a?v-vV^6&Hoqn%+ zXg&=??^7>&BJTLUAeTaMQC9|7HO;ieSj|y{09T^$TIy`Zk>_F52b46AgHtX<h1o@# zvLccaVX47FUd%e*!Fg*S^#UshS>ue2E~@q-EqCPCZbUPHg~uG&A7nV|MsCKa0$yS9 zvZf5%x<OZioaT^gW?zAM43)mEpv_$SnJmV4_<(LzP-yVNyPbygt4ys0hWVQ?EURiT zO?pyf?DIAh6cExR;=UAP1AM79KZ1<eta64+P<vg+^ZN!Kn%=As-P5zEY#6sHD6}$z zu!478KTIy>y6IT$^(rEbK|XMa{x{+YK5YAlZ=)G&CbX8%hxPA7krrRGkB1(z2#ips zh~l-3U3Q)n{?uwW)FQ(zsM9J|pv?gs5NXgKNW@lkLT6<;`tepNN8xqZQ|da7{D=GD z#zDJQLf3T_S$~|jPN+g4MZ3-vvLKTOFm!D_Z=o9TSWO=%8;@|l?>vM>K=ETRp1`(a zO_>oOtjM-3x!V^(=9N7oo(AI=%p1@51`rax@T581*n0|>`H2qssMi&(*E}Og#uvRJ zbCSfmPzbVR&FC_1S)_WF_aEgWLqruH%%h=4z%%i?IeWPs4;@QXH0aAAF&16P(^ogJ z9n{F|L>)Yu8c403g<^@2{E+$fZP0lc*@N8%9q&wP0`F*AJ`8{+3gS%V=ISvF0jI0< zIPcpH0s@)W);**kNw*H=_K{YsDziD9SP(3Nh)<W3*{=E`&V-OxPf$H9Dvs{A=y9a$ z-j(l~l8fpP^M+2IAjJ>$O)V;VvoKd1gtLx}H(7dQA3?IG{^+&p8W8UrH0d-1_8)9? zD4Sq*#u|X`jWWs7@tF<MMk$t6qejeF+J!4YNZMNfG?8gU^~Hgt0ls}U+>NkS;$_{M z`{l1ww||ki=0P}!ot&;E5eGMs{!7$D41XkIQ$!P|35-YVvluei>psK@`PbsN03CfD zTPN>GP*-fQNqG??&>6hpCLT#4hoc?D?KwHf&PLpXx)@9Z)-oU8ifInz;54tq&-^=> zpiy!$$zyE)Rg^vI%q{}E8nnK{ksd2~u(}Blyx!v}x-0#rpep;wMo0W08DaSR*O4gi zLcg}1xs`}(!7W72gd<yK<JhbuAA19S+4Eto8F`V!i=<)Eu`*}1h6F=NCl3dZ6u=(h zpZ5Q~Rz|tj`T&Mt!dop6^@{vR5RyYLCFL5wGLGPcB!0jl)v?U3Z0^u`5|J#PbG8K0 zpO|R`nTAnIhQ-x~QV9B4HxH^@7Rz)4UqRoUW2xr2Xks2IM*_=3EWy%Bl_M`&$0?&h zQx!C=bl7s&Ex2G2O#$8%a}$~-tMYZD^c4|5pzYZm4jQgZ>c5>jYH=(`+x1yJ@IEx^ z&PZr%n352rBu_f$Q^1={j6m*tPF0pP<Gbrtg!troI)N}~)<hKPsbl$gI^lePUg-<V z>My51uCTOmA6HU6%ip<iFO3D`KW;1eR2?5E@NwErAJwC>Uw;2&#>1DrDOt~4+NO0% z$rNAJ5VT*b><L#Kh?-3p<A;@U03{80rjWkjNX~}C+&M4A^1?kMew+SrN^wbJB6KED zB?o(e>+kwM;`1k&Q_Q^uAit*QB-ZafbG+fQpuXP$fsse7cZH#Vfg>4ZO0WKYblEoi z`?j>zd-W4<0IFXX6{=b+8rxr2s=F55iSnJvm2go0CrC!VSgU@73_)no`)0&#Z!Df~ zW#~s!82uRD)1&MZe;-{7AgHP888_5dY^_rL^c{m^;CZbgc;kC5fz!opHLRZwr9ZjO z1plqPQ}J_$jV}osbN;M)(zNWB#5R0s=O*M?QPnp2HhUFA_zXT!)jO4SieWKARH1jj zM9Tk-)X(F%o`JvrLLYb)FtbZ6f3+yX2>fAT{@+*Nu(P=fF@Z=v-UAc*zl)<i1G``H zJ)E!=s$@A2e6yB?9?E&uJ1Th~*Tb8qoRM~l$+fpDlbC!i<3d&;8L05*Qq-}9xT=!n zU*8GPV38<Etew0+)0!bS5n6Pr4eeVvUWr6<IWxda3J`lM?`rwSwGh?pzR%sQMVh-i zLm0+ruFgWZ|A{ieNEpjVIP(S*UY(6$D#aTKN%B<^Kzbzy5kO0=4l$)x(C=o4^V$<* zfHw}PgAGZalEgdjGy@(}7rfCZUVx{IRk=wrhvw*I06w~dxgn`si2>C?!Objh2Ht_a zuOEgst=Lv1GE(;UOao4RZM0FSx(_VDTLOx6^7`H6k-0}gX(ziS>fmU1kxGdZG!Jh^ zG81Cb18LYm1uk#h-6hnj_*ef-LZjvhTxZno@!Hss=KYef*ZmiLKP5?{)oRQ9kqy^D ze&&mW;oT8l9>~1V6F4j;jm8jbb~TwlsYb}0oYjLq=Fu;@_rf1^eSxYV^~{7d7i_#d z*bKE=@In~UcsuF1kB-zK6nSVw`h*LFJqK>*36`##$Q(pqm`uM!>YVdf#46?m=`Cwv zl)=%G5_%ihIU}JaSnxw)f!ab>db!IwaBOOLIbWL=wouy=x?|0L?1^LDz!T|~+h#5B zH}&bIZqqj;3i6vz{J@?sjZH|TwB0{T3Or<1zbjGL!ly*GjP|8DT9tKQH7R=Q0}X)t zZ%_0qToBtjK8~gF%Qn6DA@3eAn!F$ULif0~eR9n^1`*DP-1cjnube3DV+I=~q&0Yc z&-&lHL0!rBgoCjtveSD?8!0M@11-M3CtvW}y4mhY>f5v1R0c@6E@jBU2%)9JSgEj; zBxn!QGG6Y*pO*Ny0+v^Nlf9{<>fd<$5F-Zj9}~jynUEHQ`H;*sp44hdSfpEzlANax z4d7gIL8_zqaiw?#9gjH?z5p++Z149#g6W_b5va@aVyTd}^oe!0DfD|y;2s$^9Iy9< zBR`)mH*+tZ!FZw)#G4>5YpCX+d8L`un!?n#xG!*|IT+zhD(Sp?J-Pytbwt*!Qr6c0 zD;V<E?Ar;j3+q+N1Gi<dxy|5WhZ8@MGW$dX+8~02x51Jq$Cp#CXiC+rC{sBHo`Qh) z0Lna89#Hal7-E`^%>zQ9%wKadu4iUR!wR;0x`>^Ug1CV6&|>-`Ey}4RiuKEt17Vv7 zfx9B%EQ46}*XK}ygj0f)>-Va-u3mrh`&wF-Y{|W*NnQ%*I99<dxchGD1Tb~#E_^Nn zB4tv!tF#1S>CS7$m0LsuAN1?xK?49(KPSn)_rgSuNPD^#y7OAx#cM>MoHZ+&%cr<~ z8|*-intPk~Pf5WG)8nmcBIAm=zoMmVe9<5RaKv<K(a?yG?E$4)ZGv+FV`|wGn^}Ol zx1+HRY%*~t=4lZNlypNwK2X*^aUly+s-ClPu}s@?Z!aQCT0eK<j_o8Owf(U7rHY}7 z(QJ>@nSLATZV@BL{$Hl`f6v>H@{sXe>mDJZH9Pd~b)9EaA^J8e?#}RK=&Y4hk>_Ny zWpe~xJ?-~kmA6if0lqDd%^{@Bb%AP&s}A`2hl;E8Cf$rRxd2k!3Rt9MaLM5NHkl#< zh4{BLjEee#RK=1f2clafxJgq8>Txt#{uCln(cOXiQqW&5kK4;+-<;$QHbT9S5%=hN zP82<3+$d`BikYLRA3GUZGBr;(aS^3+hg3iMTq*>=6zX-^Ktn?Ge$-Wyc`}}Kmgch| zAY&n=`0@R|%iI!ygv%!}JnN=gLmA-o%YM6$GBMS({u;k`^$^i+k^Jp+TKQ@iVIr4# zs(8lyuJF2#ed<;Yj^W5-P|S_ZfBkt|3l`vdn7*=3lst-@_AArR^ayQoW&vLGv~Mst z<WPInn!1LA4;GJ|aw+8<8{Ooi_glBAWoo~MP$BK1mFjhS)s}vE2Y);c^cH*r3uLCs zepC|wx{BT0IBC;D&&#p!*S8xelKALCj7X>y+t4LrrH<KwU>jTlf0d2wbW!`PkYLWH zJ5luDoabi)uR4da44BtT?;mcLv_}G~pkMLK74gu}sM#@NRm4iCE99FnQIdng7H6<s z&~jad7|4NC?9%c(;34lR{Y-twK~&8xntzq`M~bUt<9Q&eb&=<+H;2Q(MBeTxztxM< zFjHZDAlMS^P3tb8Tu(A05Sup-MPkvx8|DjL7Ghlv(#m!f71ENqQ@-x-si}M}Fp|J5 z2$GBy^gnF9|Ni|!4Q~X(3WZ)Gd-OH<m}o$3&RO*x9|h5&XwjC;^$K3z*6oZw%M|3M z!vwYEllzKfQhMPYPYF9;<e@O@UcpRAaD2kTn^7uZf9PWj#R_o;RA;y^22nQt)N`9- zaftAxRuqj+zu2uhz(8G$c@WaPAf{+D9{WX#ba~z!W!KlIS@BLO%kk2Z?w&i6b%JOs zx`xSS*bG`|?9%DfH3$X|2FX(q`;oUadleixtoZyMyhFn+ErR$GVPB%*4CQPr5qg91 z?f0uDKAJe_Qgwa(>F{Wh`amEtH46yWN7#tF0_wf?;-?bo1qgUo=T84dL|{lyNF50w z<K?k!J1TGMsBN8{Vg9{dl}`eqHH@Tia-UajR?xM<7Zp6Jru9WI)O8jvWojVSk9>fL zh$`N8mVp)5+abK1`|$l|W|K4(FdhZL^jK!XqEF7r%z(^QV4)b$IGn%1DxGkY(pJ2+ zlaa4xD9UnjI4VwPDPwK`UBy;BtnHRoc$P{N>sHFqIcJm=9W}3PE0!lkVs~kBe_||x z4u5WnWNqag(-xtQ*+UF?M5&F_7EjC6>Y6pQ*vU8yj~{I?6>@LF$#tc-Z1=WSq<HlI zXHdm2YsDz5J!-P(D9n8QiZg~T+Q(JAhKl2j=Q>M4>1NcPg+?sKVmoPRp4pZB(Zy_` z!Ou{Uj_b?dKmc;**<q$OLS*BI9e{i~^CGO!1O4Mvx4ac<fe!9lEY&m2J-qZ<tdJn9 zQV8R;*|4NZUTBM;Vcr0iqa&;GzFkayAp247!n9N@k6u?%gUzM5Hy)&OpZ}4RE)hkA z%&C`>IDVNe!KF%`5a6qnw}MI6ZS~O^Q2`xA7k1?5Y&(CAmxLmF;?rxDBJ@wE4nE|0 z_u}uEEj3gRKaTi<SrIH*6ch{{NIRP2%O!ai5c^p#8?3Vn;uy2I&T4X1rP|BE`5Yq- z+T3aE+uQ=Y9b9;KBfD!u`twY)xuw|})0ke)3$dI4va(2zTcGmB4)68(!q;0w3#-<r zHLzEGXe`F#{J{z6a1{;z(6Tu&?fn&sco{vEg#yV@S%HB*bpB=5irt>Epm=^{eME}~ zf-~CJf53^f>P7vvhNiQZTh;kv)}K>@NehPGfz^Z${JHeEb`Nd*3)TgR%%%=MZ*oWa zA(PrNLa=&R!K6qAjw%CVs&fnxmqKX%1MY|#Bt(j-B$^EER5eOA{h3@j>by{G>q_j3 z@5a8T9E>N(2P9Fp5;$<4;bDT^(kLhP<ofMBwfx$NOJer$|2w1}<fr7d-0oF)8HqSa zzVjg05dgBDZRNOTuh3i35~#GBvMnziIl%l^`XgyEkj)s*4!yicS=M-}_&Yb%*+&I= zeNBosQM0rn`S}_n@p!iS9=bBxlH$?}$LuPR{ixlAyMv_yaB0-pO4nOf1#vavK<Y|Y z#Q>JL;{_k#EId9=Wt64|5r3ws#+=0R=&Rlu;uX=Ie{hK)L{aUEf9&600rOs#BmJn0 zuaZ%d=1@Lsp;Q-EleKZmyt}BgHfd5PF`^V*J@^f}=HU9QI*VJsa{yI9s=wqs_c2Ww zg&y^L2s|b)zGIfm=Uulf$csy(4ks48DeKy_&|JH9&C0+|y$`BgNE)rKBOpjS&_l~? zl%o|}$M$?XXjvNQ)yC7|^6XERlHJZcBh<$PV0bF=R<xtb*fy_1`*M&&v8;J91+ey@ zNg9<{cnZf8^{Lq)NARx3!;VjiUOtM22+v6+;eeO+_o38KDs_bUS)F11-zGQF#XfQR zh}gi@ieZ;s>|baj=_L?N3p)T%xk;sgV9#rL-9E3__&rM*m^$X4+a9UNK6aCh1fXql zP#8Op*<JL}GHh6zh=1;~a8`*u>Zi9PM$>a{8mtirKUT{%j>K<VU$ov*c$gdEi7H^7 ziwMXYauz|$KSnqznp=wtf9n!JqCx;{W%Ds?@F+cGn2HmDm}wE6X`{`M1X-uvR7oxY zW-l$!!tI?V2qlBR3P&k;LZ&+Vuh<*@t^P_rLSQw$ezMy=V{B+eMI&HUBk8HoZi6#E z9CxA3`^*M%`d(0>x?4r?iHJ0^s8Q@JS_k!6xge0tx(wG2jT{l^Jh1ngjC>42P$8Uj zY>NDFpMUzSP2!D&fK%qiQ;7R8Se=1GQ+wCO&bG*n!8v3Dh8b8PO1f6>$bOyqa$Yr} z7u&}dV<00bzXWW2y2h8bQ&b?E^!dfyTntrT+Vg1-nT+l8+XEX<)hU#iy2?JRED_ye zehDX^rPw@Jyr*qnR4HQvdgvY5Dqu434IYj^Ck7>fh<#ZNE0i=o3s9_u9e8Kz&tsCw ztP&r|Gxf?Q{0Xli&SV#yDY2=O6&{n7nUJ;_M*+C^@XL+X*nODsGx}E8N~zbDrHDVW z%SNGP(RH&=PB9j|!lXr%ad5C)kRgrQ!sNv(nz*TZL>h9SdoL->wf(QjIaD!zpMOHw zIK-A=JI{-&)|Dvbuz`;TS>Ml6!2@>4N=JCsbxetlq2Psyw8W9cuyyxVYkRw6>tvWH z_v%|SQA!L!Ir}i|c)T1sY#gcQwipZa_PleR{ND@>sxF3EeJ`$NpJH8+WWMhordUS@ zFAWI=Z9?dIhgL0ZJ~V`AEG5xM;Un@Ee;v*0n;3{`ZR=ADT^05lMvt#CaRx_tMZ^Hd zAY!V%+mVl>^){4B7*9?q>im~cQeUE7;JVYgr@B3=C+d;XB|r*FTXE(CUb*Gf3asvi zLm@ymaTrpU2U!oJ3zDXG2qfNN5!aZ%_Ub0ToR^G2r3w=_-(}SKQ3Np59-Wt3jo9{u zE@RHm_mJQI7+ZR=GD#0D884+CJge9S)OH+%KSv|peU}YI36@~1rw}TSj?<#p#Uqb! zZfjlab{<P`7Bc9l67Vm~hEuH~;t_7=h8pOirc+thM;8`&ye|Sfe-x+2h{ZtEJT2`a zieNd{Wx-$PSuS}#rRj3in%D&(DjLJcv34L(+@~6bCLdS>7q#x#-r9DXGxB!A+|%k! z#^JpX=?F7&*^#`YQJny(i!5bMRpwzMzVdpfx(k#<k-vYF#i$WuhOR8c^kSyJtt@d` z{teS9$J$vFYMP4*x-ez!{y^{+CVTPMI<3zL+%9U9$-#}K7}z?~i4>Sq&u$tcBEOR; zZGh(w=24w>LeVGuH=TY04Tcr*u?qE}0Y<z&=s5=!+W2cN`91$v8TGvMu>l$4b;L(p zxw*t)1NYLHi4c7MEz;$47rkiWT5ar>D*q;C*}lZ67?l|VQ`fmvSlhBvL^I-18hfsP zF#@v_18y%8E#|7Y46rM7VH~hJsV|S!QSfm%9EzUT>r)*A#yKZoh_;lpyoJ1hPq62k zs%3dS0cWzzA^79nrWRg6f~^iH9Mu@NFWQL3GNLc}#yzw&4vJ(_Q2-C5t``6dU}iA^ zTzPaUWhCdfqu8|Yi-syq=+WymbK@;UAy{dvclnVcIFhsZ<V-LbxgkR#X{)?%YeZ}o z2|nHTaSZN4-CtHIw4~r4ay=WQ7ozhwSy=xlMy7)?5{~evq<t$R<05w>ISd;15DdIS z{deu@*JHJm^jZMmbUgRQhoKpBsQrEIt4-1!5h%~n=+b&^^5l2#sGYeODfzt9$~5IZ z_o=)tHtt2KlBj;tjK>FDSB9l#)teqbNfR>fy-Y^}(u-6*M<by{(G8g?3|cocd*A}K zf42CsAap25;yHO@fB}B*>&Xfr)Cr-pyrF8&b3R~*Z$LSg6hM9ZfT39ambe&ml*yW4 zy2z!s0~5)dxG)OW>dVKucqie#h+s>R)fAvXuDbq89wCvz4c@#SR5)yColX)Jbc|Dg zFGxR{KWbAvjYG8ALEWHFC%qnfbk&W3ZF%^fS_YhH$6w{NH7(u3j3<r0*E6GvEU1m4 z<K2%iv}~tUA3r;Sc_`G+k1hUiAPImpyLG@WiJM);y;|F$M|C<ev%l6<0Roxo^BI6N zpniA$-gp>0hAp)}p7;|L6?al6Ag$cym(Rd6IB_4pU@^?X_9QyyrjNbX>ei-w(!KGj zb%bhu^$pkk;5Cto`Z<9^i}yB*%AxR3GD`y{w>@lT^L5?_exywv^7SO%%yuHajfd<@ zM#ejiWv^VdxPV;^0uec#ZdNMTL*kt?=)(xJu+Xhjo|m{|*qhlXgX_2;fz2^@D-AD} zKuisAp$DY4zAxhlwgSffbYoty8XvxE`lo<;U{=}Anja49;j3Png64}A1v07X@$Cco zS2Eo#%=&HE%6d1q3lmX&FZy&8R~h=JWirTolKru3Zo~}0o;_cNo#>VMa#7OW!1y-I zg;K1$D-^ZuF>J4zXR5FaazW{pQ=;xPK<nM9c?hGZY%BU~$g^M2)0p6O7F#Kz>yVF! zBnGEtf)bOAuY5M{`@?==47ZOiHFZg#9fWunVOyf)?$WTh*5NN-vKHb3@i(D9lrN6D z>B<s2x0;rQq8k)ovE>q@Pz}fEQMlx#VB-9paifL6nQxS6OV&XpsKsiZAeo53Zs!kG z{@&_0h-0}GM?XMN5>;f6Pq7aLtS7SMj~yt>YM1+W1yY8@#6;>7<ng23Js$uN#e^au zRR@if4}*A2z2&Na@Pf~L3~0cCp!7Z}fk6xOsIhW(N%htmUao5_no9+3KJ^8bZi!XC zdSwk&fA$<|^F;c7*o@Hxr-H}80l$cP1@d_MxnvD`lq@74eg$C6*Q2MNr|k)@9bl<x z#B7&uAcp0;VgP=Q`wwHFP6F#wA8<ViIe=@g_^Y_5_Fdz<(pEt+SmvBUD3LgQ(=pe~ zv9<H#iEVSch<0^Wm0Mj8P3onLEEnvsMBNY``IUQna=@s|xN3;*U0ubCQg8M)*G(?j zH8wc`%4#EQ9L5lDPTM}=yN3gm@<@IUz+U`aXl||mhTJW$B%4}eY+@;hwUmo!&mC<z z`5tkWd$eV^TvHtU8!*vIJm{Q<jp7?;h~s;8HKw<5X=zByftin(JrF#dCG(@JrxC&Z z4`8>3VgMc14@$Bzaw{!)eD@Qh^&|3)WIjKaA5i*e5SaRj+Q&hl7ROB9-IJo9lgl=D zvkP7V(@!;9#VGS2k=!{PW=pPd%Ix=~Wz5f!)^S;A2yF6tfHh8MdhS2TIje9fJmc-9 zvVbfkS7HB--VS6GRxOE14K}Li7(mpd5gZ(ANnya@wbk?kjzNclT8t0F<z0A~Ilk3u z-=_7^v>v_$c!XIo+&G%dWE~4uK5Qw~itDkE21=AGow>melTr9fGnRkb4{P}#!`r!t zz?+H1*b$Y&)D1X=XVdHKMdG{dtX_w`{=g_^;Zgu<u8=J0k#@R(FSs5T6RSq|;{*@9 zIFF1tY|grjvtDWQU}}};jW&YSuJibgdQfEZ{8$2qv1IU)j(=%nFTwu;XZ~8oq>m=a z7gV+L<iHJQ_akLP&29yU3CLJ|spjFEj;zAPirvybPuQv6j3TKU%rN($7!oP>?c>sX z%uND>DK_~ScX{j_6E)GK>T`tFY9DS$&rV2gcJQvJN!FCuDY>NjX~U{d577LU0GQ@a zGv1p+S=?uzueorlUO|(AAo;&u<>YW{H${BINkBq-sa`rR3Qv!cO6_J7WN;GdkXemC z_y`Yx2H31c7n_*Z&)(iTx4IqwP7U(#n#-YKVLiS^$6>c<<xJmlQNm(Uwa%BH<R@BC z*khHPNMw7G=1u}6Pj|nbR1)H=G#|8aV8}v4d9O6mMx;YzVOrcrlo&4p@{udxh<~G% zwJ#Pxx4d{3?WpgG5Xq;-3=JNA@J@HlAjM(t%leVHe9`i`(w4fcJ#TSk#HXcAP5(uG zg*v0<OZa6E?SQ5Ff0Y?dy-CbL*2K$n%r}c5U1=fAu?Fh*54Mf*L2ty|va~q4vhL|u zZXVk{oDL9Zs(TsD4&6&o$NPXfH|}70Fq#=xX`$PNS%hnUa6bYu*e|Z(lAzVhTx<w- zAKKPtfTvEXRlo=c-H{kyOS%~8V6@Kgg?wYJ+dkA<ll3xnyuSKlQ0PI~x&^GmZ`{gR zSI$Lj<xBQd(>o{o(5_%m5I4Y8))TVH2QoBv9)an%@K2hJS-H|KBc*&GsN&HlAsx;B zeX-0481v)hC>|}<4d7EFL)p!yFmNs6ZO*TDzl_ZtsH<BlY-TyagI?u4q4475b9*UL zcei#G{Th|^ZF~H#4BTc8Ytd8<h+E0im1G+VvL#F>Z%wN5@_m+|{`TMsdpBsZ_#zgm zKuurXGW)?^!?0;IcYgnSazy*B$DV^n=Ob}D&0OeaJkoDpR(q`+li`=!iUky1#eU*R z5wX${enyNnpqU&^Y}>t(g#jQ%;|z`dnS7uWF7O*U_~TWpozF7@;MPbC5~xU$iKOMl z>Q|l&6JUj?eqWO8mRX^<_BxUh)|cS$1lAf_+O!TDdLxL+(She`fViDLWx-$QM@G!X zh5Q^LL8(@yJvCs5<u=ZBu-SG6|JH~C<}&7qr&i(W713qdxbA~nn$*JN@ox)y1E)ZZ zz{)M=KzTBZuls}h44&9@8!<!9c0*NUnYl9bq9!~TdZ8%M{8Y)xcpw@}k>$M!MC$T` zAu&Pr%B!C|U_HD$IJPuoYcG;-U{W{_rOKP-8sF7dJv|Io=lA145O+oaF)bS(WOg<( zW-A#XcO0*)j<di=`1Vi=8!~=cwjJ=^Aq!_lminQ|^eKK{-NVe>Rxr1;wR1Z=t@Tx< z{o2i|W0&#D5tak7v>Ua2wND`2fEa(k2Mau?hlI1=ZjlzHNjhn}0bDk*K5}u`C7$ht z7v74L4~E|^q^M8|MPhvpoA32GfuRYqv}Wk?2kskE8c%c9Fc#?`lrEmNxdOlX>2%IA zPV}LxqVjbRd^_0z1^>d-z|C(}#C($a^5hVT6OJQgp1Cx0Yz+F>Ncu*eFmUCCMU)xu zao@~#Kmo~YGHPb7@bwa#Nf>$#dL1!F#zjAC>HPgkQ7l6p-NFq%7Nb?5MJMasJq^=- zA!#{F({tkPJooeSHl8kXzAG8H2v6gSaXVL2*L}~}9LU<>d510fK9yDh1Q62y@JGfd zcAP*~0uXAY>-+b_{;+xFX@zM)Oj`S#)m`mOR5nepQ)E+AxYw)jj!kd_^HU|yHo|7n zdJa8b-kZ{DLwF=`lM_ly-r|D4_~CUIy156^z$Q)`ex*lRv;$pM_+Ce)18`)GgYhlk zft*K#WeE_qVo7_@IlND1YxLYVlSE(X_xWI*2Hi@GdRpOGKI&cn&H8VkBpg)%2Fy)W zD`&c{_5+h=l&Sy>c7r&S4IeJ{nOPE&lPUKg>P7i6K_J85D8{s?bBQG>xP05t+-R_e zCsXK!oEGvOI>#j5MWaGR$7R}R1Hi}Y3Tsq|vpW%KQ2!mM98kCP;{uByjOr=T@7Zoz zgY@HB<D7hR8ioOTh(Mp?lO5DP$#0=ZqdN(nH~z`c0#q6Cc~i6de8e+9)PKV@<fFpl zgufuUzE+n#B#TcTW!-8>d2L!yl_8wKu%4cv5N<~~yO+TBICAkFRC}_kk*FX1LfJc9 zsz0;`xq-I0|IO;q-rt#7Xf;ZbEUT<9I57Z8s9IM;B?P%ubI02}FHBtC1<~jhUf#_N z1HRH{aaQKwF-iX`4vj~cdC<n9zd2j1IT{wW5W|E`&D8@M{@0k12K6#41kaj9-iKBD zE$G9PG!4CR31#TQXLmcvYvyV+BqGp>NK&akXO3EKLtBFh09TmKmFH!1`-ufF*8fW% zXm|0Gss<QC$Q(+qh$QxynP&3qw}TZw^yAp)boxf8Qcu|ivbExp$%LY*9z*qce=ptP z2?BqqFj_HeW!FxGGyv^)>UDlC;m9XLw#48A4HLW~>4i#|Hvm%?MHakC7T3jW#$1Ag zgGPQ9$^eh;E{EVKH~iBcsz;3y$0NXa@w`p=h6v6%2s+=jrKLDZ@-2I*PlPcD%*cBL z<(^~?1rK>Q$8aJ*IzyiAhz#<C6zflmGscRPz#5#kTIqY~R!jpLNbz?3OW-5jEg2ae zmk1U{bWNgbBmik1(Ra2NubC8(`>X8IVSjnYC-i*^Y79+4IdrB2_35ECmyXGUz6U0r z@f%mM$8|JMW>$N_X2G+MOiE6iIYdZ_)gR;*X-JOg4<?MVZbae)4h_1ud|kxKSao_2 zLecE`URcfQ$gt*7Vw2Gh^rhg@*1JJ+KGmjlMV~lN5o1DCN6;vCrLG%iY?U&m&?&X8 z&s1<oW^wMMVfrzS$$pmf`)55a-F~xm*fw<<!L^^rkSnq5k+S{O$56Cy1&pv4BU<79 z@04vqUGpsNx+yswU?FVuCvUt--?~AnBym`()n4PGnsQ0tiA4VIDP)RKy)qCK?gpMx z-yL5kUe-B%g_jx3H3VfN9Zq}M2#7&X>Y|kFO{p6!DH#h=RyLR*A{b1;%7C6wjlI-E z!QUr)IuXlx{)~6V@~(t4-`uEr@n9G-vnNb<zxdf%9UFVU266ljk*DM*!!5Y1x&y91 ztTD#T_JU!f&D6JvBL7w%b1kT)yAH-~?Amn>1&Pm)x0~4E`PUl<Q9>q4*!bK4$x)yS ztVq~ifiEu_kI!oBnTdJB!F{5=8Q{=uXbG7(>ZJAbFdzfUSZ5M}7VyKD&|r6FlOI7H zY=wa7Rc=z%YqiWH1KK?ibocSS5CdK&5v3|;!!n%AC>Mtb0vx!w@G~G84*%MyHyA** zxHgaYPFrLs1IIx%j4Vp`g{l*|Sg35qE@$=7;gV0!esl~9s9kr)AN|fti6oTd3!;FV zPWm}@;PGAb6iNpG9Dv}V-<J8eQ^}p0=;8bE=;}5y7mQTD$OSdQm`xn8I2v%;+ILK4 zH){dLF2u;&%0&>=b_o8IjxMrH@^p4FpqaPvlm5n%u-)PBU;rtB!Yr8&y}M-{(%xw{ z`UQ<aUR%gTE?zJPsKtzrl8DT;s#nOxdz%k3cc(XIsJVQKm+R!jsk)}Hif{}<((vvY zXc$6(OZYNvrJv!Xa?%kg(KPYl?#`nW=CA^ru_n4!Rgq|-@>DS|jqKBKrW-eF>>6$Y zBA7}m-5K#pOfYLqS7!(EYT~W$9u?rn;<m$OH(E!E9?Y;xTl!V^0RR2oC>U1h`%O#C zW6fpJ>gB=h4hw<sm4Zq;g2?&F?thF$Ui-Zsb^E%^B`E`4@X}m<1~HT}I|czq%1`v{ zoy9jR`RR-K*oG`?ypNw>D3bdidufNkvvK!-AjV}OB}HLSIJPgp2P#_BXh-gblTj*b ze2u&b+?RE<+i&RMl`-K^QWX3oI+*UiTr~=$_#jR8Y!GZJohh$d?(zNhxPc)Y0?#-9 zjxh59sxkc+3RVhfJ9gQE<)Bwnj^4WNImd+MZ(Xgk%g(oR%Cx%{jDSq}Isnt^hrLLC z<4HC`vQ_Dl#Q;S|wFDY;?y;sMkUiM=G3c#ptV6#ur)BS18XZr!gTIc)IK#2Lf>`{3 zf4LxFhXa!beP^x<VUTv|JiP!uB?V?m+h8Mex7GmN?|h0yPr&<w9XUoELP>UGY*#BI zyf1RcFGC`0UZeMaf6(XPhC}kRSUjX9Y>ojqiK95&!bK*Q5<0yeX}*v?mW8g`^G9_$ zGV;E7ef0yYLjnQ0(|{iA;A?~z-ZFeUQr{`swX=Xa516-B(UJ%x<4iq)v4T)>#}NKp zjYHEU>ZEO<Br#713g`2cO5|lMd_MlAZ&S5sGp$a_lyF@*)m*aJ;RtO*cP@&QPm<?K z1jS%c&F+MxSF>5-48o>wyuPM#j!;Q*^#dP~2KMFewGB14l+2Sonmj%7vudq=5Sd<Q zdjYE33(t+FA}%C+X%$#fswp!<tr#L~W{)!WRs0;5@|Bm%ppbMs&MkaHXwCDz!X+OV z*(vkz9J1YYLRWLl%HAXwXLHHQ@z?fNjpJWdK^G&?^|d>Js&eXrU0uIrN-oBd{6TNa zgLp^nAjS}wYSX$FRit`sw_g)8MTI!mv!`?1G=58hVw%gbE1~4Lvh?N@AVCtLr@y*I zAk~OJcbzSxeQkA7)ECLr1i@PZ(_Ds>l4qVgCaU$9jsmW<sg#oW2u4Wviwv;j_Yg*1 zKRxGf9GdSq4$V2FaWpwVokhOXPdeyS3E|=`l@5muggdQjc~D;-O2Qcg6~mcbQ%DK{ zcLhpm>&(sWjMkkDd{>LFV0vb`UrAWDafB6?1VBy*0b`%=IL^|g?7$rLfLt|cGe1|X z0<!;l2Jk$&N8O;IvXtAz&IT=t$!hK64dA^Z<8#&CVxj0)*K}AR_lMHo@Oc9qE2f+H z-<k*=W79F4{qleiXf-pqEL=l$l6!1Z$810fYc3Z0|0zamfYz;vljUxnK;@U3-Umh7 z!GWD%(*7m0(##>c+NI44eCCdTy&S;$U8)75C(iNURKNWf%@B$&<%B5_Yl;R^N6N|F zMzv&e%#}gk<B+0{z0MctF@$LYA0v=y%1fO)tpah4__v2%<@ho^1E~^ftO|>!Jsk8U z$)Yzkkf&?~*TQHlXivgeSdSjok~>Ot#(-toUq-K4Rlo1twinEDvC;&6wMt?7@~M=X zE;GnG)tytJQdb)*He_@oZ&`viV%95K{3I5;0BVgN-Gh8<Z?_11x1R2Um~m)t$5_yp zbT5JKwW+`P?dViYe+SfA%tw%MUO$q%<Nk{h4fd844&F^s#8@s(6jVLyYwsq%CvX>} zVFR!<lBSNp28{l<mz4DbKXPr<-heCZ)|qy_fm(xwPq-eeZB`NR;0KmE=ivlbU0|~~ zz<PaY9x^#q1Y;<Q6JiRXiMgj*ym_ZQMiQ2I$L4g3%Pz6~YJt-0)O|9B|6N_AF|W#K z3K_t7cNIS<>j#tiK^t)X`A-auD#OA!Wrt;k?RtR01M_pbm7sLy_k0k)B8cJCd<P<u zyY}{}jMhO;ht<>(7@rHZK!{3x?Mgc87X{?NfFc(FzTpbXS*ls&2o33#110Wa7QCEr z+5<(aqpY5GmwB>?_vxfp7fA6$-ChXiucSmyF2j-tK2c@?BB#@orMA(RZzG$zxFeJk zB)1dEFuY5Xccza_-gJg<G;*9chRs|1lT!BqHCrOn<dg=W^<DylKjj=PXh52Wz}?ZT z*1zz{zaZnpTZYEg!E@PF;^wMb!N_se0NJ}aq<Ot3m13A@m3Hv(L61=(#i}RE9adh% zYhz7X5!np|pvxdaKO86gdldjL_+zUdOro<#lmp%&JIsw!Y#`29DJyvA{rg<9gqYWl zydYJU??dkh>#jb{txFIX7p6o#c_lg)OfHn=@Y{!4UwKKYIPOzUS~4LHmegTWxE#&2 zSI>b%5-Eu&xLjolJJH&c76=rxw^;?Bak>_QT=@r06H7U071VT{KN$Zxy|h3TR^sUi z<niUq1x|4a7wS*`vpcm<+SKcF>f;mR92^L@eXv^3E?|R(tq%u4^uCU`Hg+Ls^`$)g z`u%0m40XxI8M80ruHAwj@qBE=Yn2u{3s+lCbL3B-NUE`!qea5X6tZU(zg+_5Lb|M{ z*%2_w{Bx0dGC#%WV@@IPKz8pQt)OM1d`*$;i7tI{?<9>K{eajI69N_wKN%&imfi!= z0IfUfzK@ZTv<!^j-c-M1^$(z*Mq?&ieWLYYHGebOyaqTCsJH}X%+YLH47}UAoRwnW z?c6@Kn%7=J&zILUCP~>lm)4{mbl2+QYJKwLQ11GiRsT?dr?F-r$NNbIG!u^gAr_1^ z#0Mim#(XX9CK%c7g^JDVC(c6hz4&HBz(LHvh8?4MxJh*|`L53>U7wTsj(nL(B##Ro ze621G!Iy+44%irh?vQo(Ji_}*m$v#|45XKd<+~(ku09HPJ#ZH8^ml^z%WkLX)NuzX z8Zx}WgGx=K6P96L`16WpMMCc|_scCL0VJLb^nHzs(nk)idKmjdo$&)KEr$Cwf60_0 zqTYCL`v|$osF;WiFfIf%_+X~yhdNU>?ZZi&Qf+OLMezP+?><Dx?P_4!pW{3#?pO@2 z(5kiMk@EJYK@T&wDP4_tr|N7vdAkQIa@t4ytxA3&s!1I@W^`JfO)g~1SF#aW^hOl8 zwo9_nfa~LbfZEx?*wu11HA~EF3IF-;%!aQ3x6@)HUcmi9_&|AKR7c#<IM{nPxSlKL zi<7zo;=fp$edQt15?rcFa#(TWUZtPv1i_KWkA|ed{^bDk79t_QiGC{QK6s(On!h1V zYu0nD{!ChJHvGi_F>TI4*B<#G_fVA*F0+SW!4qe%@|$J!>T_~1oQc(g<pX0TLjTGr zdKFV>0j)`j38Rw<f8d8<OEkoLzkp?_Bw7k#EPT$%hmnm!#=Q15KshmYo&M;BISec5 zpPDY&9QCZnThM1nt=S;)9sF#ojcCI;#$tR4i(b34+*O*f*|pr<E44Wr-o4IBBHp** zXrJ@SE?a09YJon*pm5y%-RA25TraSBM|IjSsLqkcdQEpKW+db;GfarQqf8p)z7 zR?WB8rv%;{%+c_~{q)<v-3d$~>_PoAvB_8E;7?Btynn}QVL<%V5xy9V@P$A;j$c0l zlHmWJ%Hfil2l=5}KD3cFVx+&Sdk!o)P{>9F2eBZPX0g)}Z|)Ld#qwQ5fslvJ4A$e^ zSsg*=z(7*9RhQ@$hOTsX+^ys1N>%#!t;lAU-q!3W*C=7x_a*JkQDOfNBJ{ghmVPGz zC$7BsEiw*wNXuHeZ^6S&LV=4zBzE#IFglxH0mm4mYfMgR8tZzZg2}81mS)y>OjFpW zQG&87D=Ti#ZwRfLNOZbb+rjS}uN(h&uAKJI4zO7QcW+y^l<cVD1Igh%6SOa=XK2us z&-5fNxm65%>!w}0q@)VUn)wfpkH`q6?)jm#YDkBUdz+R55mO%}?gFvFr$7*dsRYrL zxZN$juHeT*Q4o+~Gvj%VZJ(cC^Md%zRt9^ykm8}QU63yugl*bdiYkERS-RSavAXvf zh^y5NTKxFLPjl@64(@`o%|}hTc%51r0Xd`exW!RuZn=0+nC@btQv2tK`cM&Fi<s@U z2tqXH*6sBNufO)E;QF0^XCi;V@uq;B4D~56;4qsK>uh8TYyfKf?TsNK01#0RJsNlK zJt^-B!T^YAnOqcc<q3kdg`Agp&ymo0kHeNYK8oYVEwGj*DA&B*qT2EKOuuPE>AKz= zCT`ApyP&gyZH$j=neQR*;w(x!8kk;=&W+Kh1ZZDgJix2Xse~ro12efqf%cIlOFATp znhsl^>lDg_2%&;Nm6;1R$fB@Da@@azRmwpreKB=QodF%gT?@sflkLwSw%kCjfX&>y zjhDS!y!nE?9cD`4Z%1QecFSQFnb~vCuQhx%aZ+dIhy1_5qW>HC${VmdyA;Gv+|c`> z2C$Q)E^C3?y`<9oStwt$ahHS%?CpJ~P9t;tsTLc3Y`~_q8a)q*rGw7Z+_bX@SkJ20 zK2~}rM<4WxZ58@BnZ<|YE1*462T;tZ%9I(bYS}7nq)TaER*!x6(;QuLQsv-TjTIni zj5*oA#bdx1*@RG$(vB1`gtGXRYGWw!qGJWcg-E15F}J>C5lr~*g-qBTfq0`mciXFL zqV3u+&_&}Zq%^_EH0f<3kMr$aoiaXVO0>rzI5U@Tq-skT-t~0%y`(Upsp4}K%C7^# zyRmb#T4H7>2%x0#;j_8r{F~Mu#nW_RZKkNAxRAeq7mm1MF)ob(Bk*@90FY}#8<T4| z*U%$roh8@0$xG4F<tjq5t?E*rS@jTSWi`nVtoiv92~5PbX$r<9&H-hyL8CH-FL5CI zb@N=a?~L_L{d0}f+J-&Z*KF>L^0{{{!MJjkp^<VbiLydDebu+yyXbWrX8t&A^(+M6 z@pXiDb}2IIgDVrz<#!r$RpQ7E@RVx3H#&vBBO=DaRGXanS*Uh{9(YUh7&w>A29<%o z8YAdvKlpTT6|Fm{oTJ>SkU*N<@=DvXx~)5ho=(WmuuJ@v=d@~m4k{HJ{BJ|^He{$u z4pN*T8V0=K&hC3tp6<KbEBVjcB)(dyfy|C7%W9vdvXA7d9-!qv|4bX*A74w7NwYQo zrARxFc6s6lM%08)>?{Opb3Mjp7AFW!f_98x_TNO>;X_86ABoOI;t%D&WD~yzzRHis zr#p3mJyVfU6}=TUH6~<wpCAND!3(e;En!=Y7ZQpf=1T&FJlX%OBlM@s|A>^U&S>d$ z)cP;E>=XTA9+_`@TGpO~4wP5c2}(sBFB3620R^e(49&BcqWkz2{g^bSc#L3lyAXyW z4}0-vBrYKJZ|1Lr*}|{|NSf|ex)K2v@i19%+n&ovIH%1)H|bCH!bqu1us#yO#b%z5 z^b{CqL?LQ=xuQ$?DFW#eFv5HZ^S?RJrU0zv*R2?tQ9oV%dRq9`@X%5P#;o8n2|5ct zVEoV3uY2)JPz(TR;gf&-aLaS@ux!e?BfHYXzlGq-JQAX8CcXD}WRR^kFNV+Lv}d=( zxX-z*#g;vq89%p80^QBc9nqOX0TInV@2&rz-*bhJth?P=7}|YKi?@>xK&Rizmeih( zbnE6}0bTZPK#wc;IS<(z4z}lMxzj(||1(*ph}%@1tk~|TwXOkLnNYRAN{oOiR`ZQ1 zV;6h&O|<>o`UR*L`yqg^49XkYvi}2d@fwN%m=2$Fsa1^f7$O<XA4p+$mTnh$et_m> zmLdz2kd5G%fz>r<9JE9vhAs?ou-|VV6@S6!Z-wpKu6u&L7Ku|SyoAv7Hq@s>@y<;* zk$?Lzl{61chMu8QUYwgja|-asZ#!cKTR4z%^&Pg6%yd$}8<ps#xCu;ilrh4#%qf09 zYp(_*Bx9*N($Q;d$ucKg<r)6Jn4`EH^lB_jMDDd84TW9xkV|C_mXN*z@OPJiVKctc z{C@aE!im5bM{ASzKI1I`vX9j`#|a6X5%EAz8EbZ9A@qyL2|WyBD$M{cz27J>xkO4V z`rlj$KPy7A`zvadjQVOM>{_p#2}u}FhIVEC?R}iCAtP;5l}p11{Ubxc07HH9hFXD| zimsy<DS@y1gk-E!+5ngwh-?@TKNwYHBxPr?mX?cH<%?PXi7lhqXF#5n&c(20kOiMh zJ&yrYvs6uKECxstWsudi61HVO<9UV2rQzqK2}`ae>QlvKBk*}}!~2UV{(CFTn4YIn zQIxmsa_ud>L;~jEi(3-exjH9i{8^#TZ(MjRJGOnD-mx2hx&qxSqbLdnEOygPwx+l4 zhd+ih?UB@t&=TD&D!%$L=iaQtOW2%T3&xal_%Oi`r~OKvic>gM%y5y}nB}l`dY@V9 z_aBsFfO@42*FLwmr-7Mmk6&{(brbmPR0HZmgR0wYcEmD#{zZM5of#OdqEI!XehFQf z9i%AvqBvo>Avn4%T(7bP4;q6+%E3APHO2R|(A^VT26(&RO@+EYYP_vN>SN4Q*w1*) z=KnpwSk2V!-I1UG&zpXXz>(6W+SJR$vSO_@Lox<^+)h7ambHi%7y=7J4HV=RL2g+# z<(e(q+*$wJE<uApS5rssM>~j(zD2y1pwhcm@4wB2VJZUxfZ5GJn3$YDpl=7Q76R*a z)(_PsLMpdCoiuweDx(Rc#XXxd;tupgw!lR6*pR-EOu^=yNo1~2K{b&Aw;*vY3kX`e z{CXhlR&LIRO`^WY2NwevE}Jxo7#Iwi)#>L?`8<DA9dk;7@g_VyCKW|J*DMnM-!uij zOMq&(BBGr3g((4k$y^Pwcl|_vH!#5womyUycev%h7s>@KP=R^Kz6Hn(vI_<k{s`~k zbuH$|*XmS3<^OZ?_)!hh_yW-$36SP}KPn(iDq)m&&BM;mMeS9+-<HZ`Mr@8%qQ=d+ z(y-VADceGFkS1Y!`%t_!Ckc+hVWa0A4Hu(ssvsI`Ah6qs#Ya-nV7OG}{F^^hGGfCM zEAnPe__wdlucmKp#%ss=-$gg%u8$GkKAS2szOB##&{L=k8TNWyTnO$N!gQAW*a=T6 zw<I(rn>u*i*;*l++g^g8=Bw!g*q4$qYAs%0rQ>-uvMpY>$gmKb_bb~zTE3I{8M;JB zmNyXm(iuGjDS~cO=F(%S0#lZ_bjyZbn^wD^$=uCkpP?T2wjn46ICJdv+tRf+Pc@hm z*UPKwmt5lxl9#`O-|(40-h|}ZF;$gIy_b^Gdq32;?${>j%Yh&BbMg2zyg2GyXwJWH z7N<iLDI@dCz-r^PuK@7*khd6J1hD19zp)wPgm@w4vz+xkY~V9gQ(f&BkO?g|*J#dA z&S;oBHJ46$zzqQ_2xkJJICV39tv}puySyKz^~zn-wVk>0nPIa(iW_)&Y5IxH%IKMB zi_}Ujv1E_+8s}0tXKQ)I+j0A)ADm_qVnQ(xhP;>zsEPFKNFOrZ4&pE!BX%8r@OI{u zF}mYl!UOoA$8V>;c4x)s``uwtpg^1W@FaJcY{u}Pi>Q1h$G~p+Wl-CaCet=>T><}} z3|3H6d0C=MO>lQ#X$+U%$uwp)cMkSho>!iFo8RWEB;*U6T%NtwezwI20W#IfaAK|x zCH;s$`;ZmJ<iEo9M-y?XS+Z3kn%moFv{#L;LsZ2=RA&@kxnEi;eWWvnL%MN?fxt7^ z(9Z-QfE@mwno{z7Ivem5HOZp|)412}868K}F;vMKInxCHh)%@X;tD<)D+Z94B35)_ zRZ<T=Ssqh|sL52_ZENGI@9(xv1sNdxa=wi;!lJgr60#es_y4_e(Y+V_oIEr456Mwf z@Jx1xT=F1bkER>qJD30lyyUKs4>dSLeRGIh?J4_-?qL5A41mBkxNu-RYrJaBF`UJ> zWG0Lm0Xj15pIx>!#9QvB``<x||4nSKf`Re*AV^<N>m<qqHN!CAVQoYZB_bLR@2B&| zd|6@q;_h6zmbd%v`Ap4oB0;c4)8S$r4ldTdgjw%Anhxy3l$-~66e2}2cEI3NCMv9J zaVJ?oSRdXb9dLQI>)-4`qeR12&4=QoI&_uBLi*{bN0#$!+K_hlILtAO(^h3#auq_| zjV{cX#!D}xDYvnWW66ke_y49X61RJ9R~Vj}wJ3HP`PDMEy$*3iIdZU@f4ZD_3lCLf zORcJn9)YrpNr6L+d`W0*Y_J8yj{a9ffAcpCCHClr#>~1zfA~)ueJf3;uvE9R(KugN zD{=Y0qu_udKqJy_FM8J8yfkBko@cHQ3P--r;N~1Uf59=s@ow-Q>5w6D-)TIXh;*}a zg~BNgU7?z@+yMaOja3z_38U!b1WZnJfV&6*zf`%rbI-)caltw5l!1I$k{Zj;C0>S& z?!Ac%C{ZFqS@VHuB4-exKY)qFOtZRZHiOwaReaM~!c%Q^{v4%V`G;A+lP8K5bsKHA zQ)3vQ$qElCYQi+zGSuD=^Amow_^zbA?{yPaK>kFfS<txSjXv?G_;oG_m|g!(h?{s9 z84<F!lsBDeDEH54#u&^p-x14qH7eAfxH6~Q=O;t9L5pGZ#(KC3+3N4YPh-=zC7ZRU zR|Z(|Z5o161M;~cU(%_&&@#L3!VG{no0dmT9j(VR?FW6sFgEW0_Ql9@tBlX4QphgG zb8n1ICtBd4(iEfE)DdS@o(f`8T#nIE%OmCRd<duTM@d{okyZZY(E6GDwc-X(hpcTx z^ux|@U|g!Q5U)Il(^mwX5lQ-U=GGm+Jvh*);D<@C!`qD^6~<}_1%?p{Ytl}x2`^Gm z%XnxAt6BxRondug&jty}S~&#vJG?h;MIX9RmJ^V#liO>){dfE?I<;OuTSi@cT`n-I z6uw8!py??_?9Hm>q#paT62e-(#K<hQD7T&ZyyHQMH{~kxM(Go1$M23ErFEmCt5@Bv z*t|-l!D0Dgbu=r0m>%D<|8kGQuK#bLnmPP~azek(BPo(+!U-qZ7Q#%$iIA|*EAMOu z2z%llCPg>wJmUcMoCm>El?&!oU*Q)~@I|R+X4binbz%JP?NCDG(_&t#-*#E7mKShl z6hf%XaOdstzDH$Xz&3MFK*}(?U(Q7h#A>n?VP}0~`c^fAM?Rd3?$^(FY?~9bXbJ}; zVm)W%Vfu8PMk4CJva8S#`t%rQX7^J}Kzs`+UO6sX<%m81tm4%63uWSBcJcbbh4iS3 zDv;MXo057+lv`{ykhHm%V~?wWO>%iDy6O|B=Lhz7MIA8KY>*>6{TW?$ts1Aa%ea5_ z7j8G8OoBjAoYn2S)4RbhvCU<$s8FeJ2JfPz@c7H$)ph(8+|P$XN2eoaTZ7Fb0YYrA z#cOp-A+zTy&2L?KnD=2Oe{9P?%(V^4hqvl${LS*%ng|57Nq$9??vK{Sp6^YmbZIQ6 z$=nCP1zj@!W}0XJQq_{_j3?XnGcd-0G`-Tk%p1w^uD5mUsU1nFiViG*Zbe8?LNr&u z(QQ{C4OuIa%Yh7BN-KBev3VMrOo{XZb5;O1;b=k?@+Z!N@Z<}TDUDfIPDW@dKhMvS zIf^aa$NR9m%ia*O4+(5SsKqpTbte1N%MG8o?)QSdO;H0<{uLxuBs#;`$6-)XzGwlW zL%Z9Uk6vlzLH3x0?<el50Gy;K7IW-><cuVye`Y2us7Au}3=mF(ESk0>1C<8_^p{Q% zF(SG<OcZ$lT#SpkYdJyv=5f!;;lwK{z01HLYa7JGqpo{$-U|hw7a^dT5_|F_(8HwO zF&Hp#OTtoqjyf};7xqCSd<Rj?+txU1YY+&dS{}mxx_(?CLOe&T4L?_{;_{`iWfbVn zsYsguh|;&d)21TCVcvnB(^&*15WKXm5?~sw6gTC8vnnQ#<*>#ot0sK`6cH57KZWCJ zKJRV=z(z7Q9$`cbkR=V3-JqdQ)Y7CuB7-HEQw<3<CvOXr&U0j}A}_EH{oM@9cUek( zKSP8CZv!B6hZhjK-KPE=CbnwS-y_inn0rUmUvS!ZT3Z3vJrv%e<^f<Bd4VfYsF-=K z#&f9ld4pJisd!c04mEpz5pK`bR~my<6Njt}QR||S*i|Dop?6S>|AhBqz>_yYp4agX z{-`2%%WZ*v4sC0}0-qauo9Pnzp-st95x%5u(`=;t-m;w<=pu0io|PD-J}%UqZlZF= zsuF|#H?xui2QCof4q;H9p4sTBv2)8n>)J{03CuH;RFGCW)`dNB46Kfsob@BcBVW~c z8xVa(>Gj?F>Hg4npQzMyAxL2pjM6<pCp=|A3`$b&a%vXdH3&7IWOR~WEZc2%$JFEh z*z!IQZxL1&CZxum=TqDK=C@zwkD|r2wb-WhFgm{zf&Uw2+jmmYVJp}oXJ%o2-|X*x zs#C6`Pp+7A0OUrJQ*M-NL^y{ep1QEea|}KuFDvxpYU6>k4s13kj2GEz+i{vD#tlC_ z?CvvCg#9w&$y3wzGo=Cg5NnbFfv5&tNiVU&k&6<4tv#SZkn9*kBb&cxDrO)$m^|+* zW0X2e9Y!6+U`e$%rjWi!E{l~;IcL?l5nZ)equrAnx~l?JJ-#g)Z=|XX4jDVP%Hs@r z_Y27xVv?`i|Fs9AWp!Oa7uZM&>wx7Nl$J;ztX_dy#2XpREltYhnKfV|mHk=*tR<@Z z)sy+$^DEEw&~V6RI7zF1wVVMtWi9&d$P^ISr?Gn>^=Fqc(0qa(%)2n~Y|!wP=NDp- z2I|ZbgS2p=c&i7@=jsSlu}TgVs=HHyIS+=jK~Sk%ERJOXR`4sw0D~uXamN@;Kr@)J z1BH`J_F@M*F{$+0ejFt|MgVeFamEXJ6h4{VtA5KeOPUQq9_eFcrngoFDM!G?Nwys~ zJ#tTz8?#cT+UM_3Vgy`xFB21n7~oF6ND0NhC3EYU!}lF$KqJW!>mnI@U)e?wxH4SU zVC?qqa8cH%)%+$;&;Qm|S{@dk5}tj1nh&mqv0{usY_!bb41bhQis`Oa0~U3AA?qE2 z5N&I`;bQ)Q2au>Nll8gu@Yj=^tM<O8g$P3NZGje`94hh-2mvP*kE!6OgWF+_(5{_8 z?G+nz3FK9X4lGPuV=JLyaVkw3rMswm>Lq=u8V`9w>CJI*H(VAK{*tf<!XBn=XiNws z78oc3!uoRzV7F?$(j9F%{cQC$uH;~#EFx&xYiF9x=U0r|Gk;*C-=WXFrUDEi2Pj*n z(-qq5h^V!lZYgl_#u2lpuh*et4R(<L5!Y(0B_5Q&(o53PTgb6dvcekcvON_7)tL@e z_ZWy>DbsV{cg+%+T;NP~W13zR7?dz0HAb|W%Hj7HPOAYuKryAA-WHH;=0i78NCYI@ zMSx|Hp3~}u&Nd2&<^hR}GSN(84~Xd)!KuS6wO463*Z}2<?$iR3Ni)}I9{te?ER{?0 z`7VHp-5f05S^NyO9_EVX{R>bR9P=Nq?k!3KQORm?y+Xg8(D%FC)!;o@$VTQ~akvT^ z;f+{5#`Gz&cpg%f^$|3?7|5r=L+^)d--z8Sp$zyDoXla|E|gC6d|v_y0Q}6IgGOrj z-ckxhBi`lO83x2~QRrBw1sN52<2QSEJ{HjWf_NLJ)WKrw9{y?4BPRh)P&>HPa7O#& zsbF*%M;vLhGls-dh1>_$xD3@<RS@;qYDjQXjMQyTRh*c!d$UqgaUN(6g_9MZ$_n`7 zDcu$$O2PA=AUf^rQq%!yl#&fzi}Ya{6Fq5s1p6|CC6q@vONDaX;!&~s(kSzTUZqmi z(q5*Hrq}CP6}cTjX?>V<77I>$GiJ<ba3D5?LmQJhz<u$8L1G{W3@4I@OI6Jg)1*~J zFxqp$qBZN(Oc>*@jDlO2SU?NUj&g^J$1c*>L}Z}6J1xY}5V)}Sg=UI9vo6jY=WYfp zG=#c${OK)GOyPm`hz7?+WW`mrv*?u1)2{hhQM`M1LoG*3-qDK#S2HA3_P2D#<pkbI z)U`Y>@;0MJD<ckAW^ihK(2W1^#Gu#DtUvlmp8uaRH-Ml5^xwa9nKH;;h{iN0eE1?i z^{*9R2wY&!omPyaMU3dbm2JrDu##G@;Sq_Wgd9RN_Jzm;ZKHibVATk6Kl8Ik<ha_g zzO~L)rY5~UwrSCuaWrb;xnfJd$c39m8(hHiF)4k5$tzU1Mbn}ZGXv?2VhLKb`=ZIW znTzfgz-(7%Tnq4_A~2CTEwC|#fSuLWhd>ja<IzRo(%`86$uK!WH4Gv^+793(a_n`- zW&}eZ{bh_{P&*fBd$!3;tvN@}-c~}naj2)w<@0)Md_=^*nxKuzI5Z#p%LSdX-$MNo zk6i(J-NRv@cC{oGb&G1~hjZgwXrcBGSt<;wkbZ1>;I5aZ$8`p0sY+QA7x;f|;q#9t z*@4F5*sHyZE2d@ER^;tT41!9$LBr5$2LDGN7jc4gArC6qs!%ya<0Pm@%kQVf&jh>% z!M<S0tiq-A#zN(MpXG#LvmI#+&Gkh5W_tq?wp11NxQ!$%y`;K;IcCpB#zjrv?4_PU zy64E+Kg1nJL^~8&6t`mr(x$27;7_9-SBU`RbmJy5pG4rVy7_;B1BRle&6uga`U7P_ zUc&(%H%vL4w0)1dO;I1hT*Omup-|F>+cU7m8eM*iujdJGk15Um8m!i8I#G)IvD0Jt zBZL0dG}<5BbZ1TmVjV{J$L8}gfm{N*2QVval&~{auEsT+9{rAZk&yd2Z48&!Bx}AD z(Vx6}A+=pWUAMmlYrU1)DrEW<+QQ7e(Hfkwy-ni`w=20nR}Q52*6IGdP)7a~lV6>$ zv97m|mH)xtlCA~gWo%n4xtqsO5PkGP6wCpaD|zb8H#ybpvmOC2xoT#<s{oqIoL+Yv znpgl@&Q3)?qAGZr^VP#ayX2;Ixp<+IX&lL}9+RxtI{iQjlNGQw%aB96b~S%%sJGcd zSP>Hg&g;EWi)DtLf1uOoBmul`x~-A6fmm|LO*<)f7AT|oaH87#&=)vgJVXJM2~k^$ z1e@s-ld1uuFq5bo4&2Sete}|ia!c-cxo-4y|J9=6)a`u`Z<8ro;I$(%j|rpg<n0hV z(^csUQTp^&AU`ljyv>y8oQC#CSY(yUQopQ7(qyDHVaRiKi^~}@CWK8l2^w2&Q?Lsk z)D6+uI<}@Y05b7>Pr`FHK4#CRLZbqmh&oW-==Cv*<_OXCJ3;|3gm33-d2N<k`q~ei zs4Qb8+NM?I6p{B@6sEoh51pw_1N5O(^xCe#)QW5<ABIm;Wc<0DvoGSlmEg7Mraa*% zT38*C{F`c~p)zpEL=}ZY=(uSOAEQ44h2k?|0U!7d{Q>$+K<W>@dFOSG{mLdk-7DGO z&2#?gpe0PLoxv?S(MI-!acMWhW}-V%X}@57qU0P2Id<D7z)*(Ji`Hq%f7!t}!iYYp z(_74N=P)QxGqbWl%2un0jq=94-*uB&26*&m2sz3y5vRc(I*Q{hnB@7_82%jv#(gT9 z>6^-H9{+u#$pC_h>AW#=W_Z=G!q%6C;ka@Lyz<Q}Gk^Be%)T{OIe&j>MQ8+3t75fK zOA99Qf3)upQiI=WZj^j!$=gFI8C4?|THDE*FQf&Ss|e~rZ30iH3*6^F_t0jrT7}h} z#?*kT)RXt~hn(J19mWgy)?z0NyX&DVC+YIC@}J+FTvwRW!(HK(z&JYG=c|zO|G3Pa z7euCu40B%BMSQT^rKq;XY~dT==sR%OAEG!d!|^wNEFvfyBhYD#9z%<OxL&O!@1S~~ zJQp9+jsHVOieQv4WIgU>5oK3)-SSAlSVSw&I?}qx0t;nLC#6`6r76s7T-6iFvsdt{ zssR^wn+9<{`<)*OvipbZzS!K>-RA!>$?nEtrW^usM~S@p>K+^|QHeZb2m8<cV1OA6 zvXoW*mW7WL@oB&?sqBatmaGP(Tdja52opWvYC)9!@Hl~#3@+$(nP<f=7=2m{Qp3h# z<n0$v9H=hWoM7FOyT|(`APciK{vpQoABFj1<0Uy5{1<7Cq_DSIm^vBm<<I@G6$Mo$ zYmuu1ONsgCxn>hvuo%EC#g*lrx7m2IgG@Rqw_-ChClM3}o?@eEc9iT~Z{5SS-y$~6 z%uPqW_v^;Gb~SOfUqiCzeKM6(xe}yESYar|`hsTvs$<utPBV0USftfViD*+!X$7`* zpDDpECvfNGrMA)5Y<OHzmy7}WlqBJR^;rnAjOmIxaEgwDDrdR>h8YV04jQ4eIk?NK z6gO+Va9f&Agn_2pHDbH82%nh)72lFyJDI>Bln}DbX4!U^R-<&YKq$=-@PJC5IDnm` zS2ru{6+DHxjE~+_Oy<?%$Kr4d<tjl09#vI-Dn1V+sGB0~;0)PISAugTH48GTmRnSj z_|t}#9@&P$5bmh!^Uu`x&nbu!(C;Bkt|gP14y+9TJwU?0T7Wp&))(={x}OO_n8uGe zl4KhF*GN`lQ<E01z3bV+Ewu<8_QRcHoUd(J->X|FN<TX@q3%|VU-C2*zI@$um+LJg zr}E4Z{5=A3fvo%3W<onMJdE-;W2}?=it{rI)Y1_I8v$8zWcE3k%0!%dzCte5FPdgU z(^V|frKq;ma8Wejt;KS=*2Q)aPP*joXt4hPy<!-dzi^Z4pIS+sp<1@|AB8q!{`oLn zc6&TXQUwsiYiL9|tEH(T9=t}!-g5ACbZ=D$(f93WQ7IPue7@oGc&1C&`^rO_QW7}x z-8B}Agb>*BtLIhxRF3b`|9#7KiAk=c8b#0!l2p4mYNg2<>93e8kDs4yp4-XcP{s?3 zR%RPGz#_(r8w@Y+D=`n{z3vS4GYQ@(*d8bNS2^bjU%V{W`Ipjx`pq_CWc4Q)o?lY4 zXRmnJzCnf`df}?!?3fwQ@(JEwEk0M1zrvgyHC#E|`gvZGkazQJET{8F!JLLwXy_#1 ziT~{n8nrmXxkXBS_l4+^PaJ4_zk0z-7cXiO2>woiHRr?z+&L^!>~f#8hm%@Ca~mmg z`(&4u@N_oYgE2Q~ySo!i>YI@(VHsb|4%tIN#;~>9sI>D_%vD!E!^Iw^MS8nrMS88X z0?(GZ5htr%4lW2kn1^!`C0%iqpgPD>gVT3D!)APhUfhV??*l&;yAS`pcIAV_WB~ak zjC6#1_Y6b^cGH?3g#|wthAW1xIwY=1W4C$CUtPewJF%RrVs5T%<eCnORXy6hhj3Ia z4fAc;ddH6tnQ-YrZ#kQ!FSQreB;jeW=mN>PLU+WuVjET%twC5$S8!Orw`sS?liUp| z#)#Hyf5@7WR?lUz5%4Q_W=m8gw>ysU=L6>lJuQPsa;g{lXJ&L~N%}lkgDA=){K|!n zEI-5&AFwdI`p$Qe!KFqUBDme9Jbz1u9$4#A6|et(hiL?ch^nvM=q)OSk|y78ug*#e z&Z)zTKK=c(5D<r0EBM0IJX6{#F8yLR$<mR$^iYn>kg{w~J{G;GaY9sDQQ*)7H=|A? z?jm+B{_n|+Dx}Jk;0%AG1ry1NoI}K<+bvGw^z;L@gQh3uI$R;-kRw#;67q0zQf8<w zIP*fCeX%8jmYJ+}ZbNViy74dwX)51d?(-Tk6$5(<BCpw40tzgyb5mg9M`#4YB{;BG zuXz2M2!Uv*e@GB!<SlnLdjYANKT1dlpD!#MXasO0NM-ggS{cCSjc-$9Yo*?Up-%T; zsdFwo`rYS@EfP7UIzv#tAALo;ZZ$v8+^Yc5xPkDhzpq4trNbOdznXa{7EuGjO0NHO zEUN5e&Jne+(qK76v(It<v*do}UCxu?{4R;Dz^t5lro35Z`~r<N0Hf>@4`s^JU|pLH zvNrVk@OWm6dySogmGfCBKWQu~OC*2TZFV5V<ENI>F+u0{Z%;G=hDHo!aYA(<A~PI{ zH{6&&Y>LmE!kd*6c{wh&Cvp~LS&C<~KKJkXQ<%ZAn1?1=a1Wfd{cfLi*Em`(a}d#o zYIpGgwoP8I?DiL^i>z|0ue#J+ZSte|%<96N{XK6#R`Kl2gx@PZtwG7%l8FjO^={GM zA*bQpw0on?%<*_lN82n^=+-RLX6GnN*&!r)4#u<!YKW&KSDvFo2VrB)trenpeMQ4- ztRj{3p(!bMDPhk%h_5ZChJ3?RHFMMhlJRYXg~%m(+jb7z=k#-ZP}8G)j0wu)zJc_H z1@~@S8OSKS;+BbJp?_%VdI>+Z9sOI+Gol&<GgMqW%x#WL1N?q@258O2?nENb>cM@y z&jI^Bai1I0OdemlAGLeDxBmF`jH;zdJZ~r%6eY^tod?T3#B8!Br}>kl3Ylc9;){B} zsv4H!sXD;O{)wx<R%)6gtXpI>u=2qL3dBqQ7eCl-Z4rvWNQihD<@!YmDeQ1VBR}|U zx^VJPl`{?OnmBpe`d4{&AEDPb8>Mz7U3-@3EyqbcK@~FO{da*_Bv$VQ!z<%!NXeHy zUB+?NI|X4c@i%6N$_8glTwe8;&O84tPNsd>jnvMfKCE+7`i#qXMXxO+;jTZ8*5CAT z_ix=;pOaz<)@E$om^N(bSZT!!8TR{TypYRR=E8Bdedt$2&&e5^phYH6M7FM<ps~sd zy2*%JPSRR+aSZ%*KwOS$b#}F-s>ISrbUNu;LgH%xdk}jL_`i-AZ;YEm(L~tx{a`8a zCp6b>9=0>io-98rsW8k($P&h+sXGSNIdtJb^XCP-e_xa1_stmLu2bYN@9nS3$M2%C zg|!0_3j?SRZuL(la%$UZ;?I&N7$v?8pyVH-u^g+|5$>U?IH%?04KR8tB)8w=|4ks` zVRyP%PQBU{G1v;5F4W;KMo4Rg%+cI)7!am9XaacT6$@U2*Th)=g|!(Sv1+*62k%|E z^*Cb(G2{)sp?eBY{zTwYqAd$-s2@6XrrDX>;n+eK^lXIsRL4RytC3^IH4R7^;aj{0 z_5f%{ACB-!i)$h}^I;X8aZ^s9qie!uA)2+IN~@Bm@0ALegH7uFtN=7Zx#BchCu|rx z-P0o(zxp5|M&S`0Jr#}av0R905<rO4#0&-SQO48Yi@C!2UO;+1iPn9#Ge&qjco!c@ zE*k2vM-@g1_hh3x1IFIYd{4oo+iZR1Q1#{Q6LQl%!23lCK;W2<MZ?Qml=#Jnb-bcB zPThDqRSPrQthjos99#miQscQ|2a$05&o3uOyh@x?WoL1-;z5Q^iMb`$hGH%mrY1Uq zyxHjd7>-Cu!-BsiL)?pa!eyqoQ~kLtbys-{5!&tX;Y{n-k5t_G2#OO%HH}bnu@*8D z)m|h|y^7#<BdxM&S3)%TO0!^k97osgaz5=FwmBS1w;nM5GR4H)t`oLU%>V6?ddkwT zrPaNh4SowKX$9pTEZh%Ew>{9;emD4=lD&kWfLVs#@AVLbB}e<0mOFhtB?xzczqAIO z7XL~o1kQr4#Z}62LXU}l2SG@nWA(r*!jbPKF)O6PomsoI7JHPdENp#xBZ`Nnk?#aT z6?4#uR(!&mw2n%kqEyS;vMBS`K3_%$W@qr*T>7U-Y1v>r=CY&lF-iM)A%H+0iFM@# z0>u1uR1mDq69OY~2@?7k7$iD{zo|2HCBP69*BNt>FAUu?8!5gU`QOGH1EOLpYX!g( zCe0Z0@J+FIueQ%g(-^$Sl45Ru7CTg+i(RONcqb530>H@id0I<mBDHmOff%!@lAj^H zA@u?KQF#HplUC*mS4b3Tzn;iWd{uEP`A<ullj^&nbHL$UH_&;9&le?IxS4R^|D_&G zRnXnB1SeZz?RvjkJr{qgf%s$mh|t%3lji)_n9iCbXRiukoW3fn6A&i&Axa>z=|3|W zbb}2!R-EJ=UF8#IL@T>XrDA&DMy}||R8n!?yjdBkR1lDH{N_GgIj2CSMMJU`>o-kB z5Gt>G_FW?3s($NmU&u)m4IiqHjkZ=s`M|NCgkH{C+~lJ|tlbRamIBSF;o6;)W{T1J zOxb8>$fQ<EA*VN>$`{e8FPTEeyWtKkaG8h4#;RWC+nL}hCpsQUugh?$F_Iv|)?zx) zIlsF(VaVzj{co}V?{|-gGSnW-dS8uoDhdbfEXgJo*8-x*v?ToJd%J;ip6`AXmBQRu zNrjcAJmxG3td3ZB$v{4SVitKNc1cxTd#pTncF?cSGK@ex@AoSW!P}GUM%IQV-~74L z&UZLb*8b25v#RQu@eBAX!2=1~1GM&)kC$VNgD>o4xN4YO<7erR2hC5cmWAo2zDIwc zg4`D@WKt+{PhYTry_;8Mzh}lR`DgRUDnU*UwW#<)Hs0)NeJUpoGg?rh*u*fU{7|gm zwtR97@){J2n@FP=lB?P?7a%zh=M!57Vv1LHF#KYw?egfRwRi5=d{v@>^zSW<TnNoW z(TWeBwL>jj)a(AM`xs$9x_Zf<C8Xfq6b6@9p_9AgM>1P5Q^K%qEdrPo-o!$nkj15C zD;+dceN6B&dC>nuR{>SIkoPiyWGUSaTU@f=vDS4w09Vqgy?G*v_pJdIQRllCde%pW zD+1rpr)3{e<JWR+0NTjBzd#NKPlh++y!kZTY)NE5US8O}{QnlXw1n=rE?V4)$J6oO z1?omT;~5sx4%vE0pZ><Cz?iOE$Z)^>XJ*0zw3AgF%8U@>49tn8o^>PCiw2q0F`4bQ zVz39f;CKhsqHkhi<acx=C`w?E??iN{@~scOu#y1MG3kSSAP@n=A$aHF$7R5Zn!%S` z{uh*^s_B3DM!G6x3Dk>cZSCDQUxM$iyF)?_bq2xV;dZiWNM=sQ9g4v1c->*c`aL56 z%=Ek5)MDu#d+2I-pvFEpPw*~IxjS>0I->ID)iVD@DG`Jvuk>d^UiMM}UKMbvSi;4j z05-H%W5@An<VNeav9vSw*zR-!aH?Zl`e*W>_f?7XYs}5M=$`PDs&~o36oc?@#J^J` zUlc9J(myh+{au-xo0A|#g}1id!kFf|$ZuY5^hd3h5u)#T^CUd9!toG9+Ca88gmAz6 z_)JJcCVJ3yz$cLhA{3IEV0pogXjYvp_bW`)@5gf5NE23UfqU(4dWy|NftpAWt*l}U ze5XpA@Fym$Q|V)AiN_@qUNcS$(MhtvbE5d{4i9iQq|z!J6^fxqb0nOW3YWS>trKY$ zy+rQMwK+Urt^1cXQ;I<{*v}8jU6mat|I-Mo?n*Z*o<AOAdfArpZm$g|iRw5UQ!J3L zpvJr0A?rUx$NY{sIirxkX_)^Y>dN1yJJ0baX$6SKin;mBWeT%zw<^wOrUYTf4*vt{ zco98(^0wtwW9C3)|6u{sfSI_AxmOC!`eW>!S3l(O#JVAVbGOy@bjUmmqgd+HbM5Rs z?J}9=#Oru1H*Vb~;yuX@Nm~XK0sk%t&ZVd%>RpP_%+*iyn)41s4VXA}1G%pL2+Jb$ zFa9et>XHadQhm0hTmz`8_sHWkY#3<XUCE0^I*hsMQq!~inn+gZyTgLyX*atUnev{0 z04^-fMX!M4A`oTGRVrAnoqYy@Q{^xhrzpjMc_$NHzJ@{U{~sT7ZQW3#n^Ng78AckH zMEoHq+EDw4*Tx0uP^+=`n81eq(<C~o0#^^@lHWqQ<~Ga#-JhS=nf{Gc{{hmBE21T} zX?QWb`D8}XoFQTc4VcHGnrZnILxS``p$Qw)0<IjQCriONOE0-4zU2s!<6W#g^}X(Y zgfQ$!OMN>c(qCvohTMSLH1RB~da+$a8bqN%f{I=K9&v7SfGwSP#>nYC^RNzpA(xv^ zfCEC-YSJ|a9k(`La)&O0C}yReQjib|3A8H~Q4iIDwnNnQdx1{%6T59zGKNk3t9F@S z&UT!Nq^4)nObS|;vW!mm4W%e?E*PcaXZp1Pf0NgQ=_MW~S`a!_qAiUfD<h7G>LqZ! zMC!5^t0>-^KYv(4JtOJe8-BvZNMIjUp{W?(t*lT_)38xHWBo$_U|E2g_I*trp{9%7 zh?V91rli+#7O=-7px|Us<(t_qFc~D)^_~%j_E+YyLO$sffwaoS`kOyzr<a7o_|*@s z6R3s#AB?F_<)2=$T{lv1H4=;*)9+dPB({Khrq4KjS4zXpX9fwd{|pLjsDzLWvFM*3 z^S+b;5ZxC@{<E^H%5oK0b}?Sa|6$@MC*3%cI$*rg?@ISqMoD8K2dr;fKdun$()L!$ zVEp~}CHhCz!w%?%!_JTeccnB!!4u25YGebIVx&quGBQLZRM!O0O%*Nofv^v>dwfJ| z=nrcNDk=Kc`D|TsCyKzxmWJ#(P<%j5M|~21qZotCm#bG$S$GFSwrZBUZv_B}3RmuT zDq<XSEtQbOcsSF0DrZd9(3kl&E9u8~<UyU*4W`ETX+i>Dw0$dCV3p-eYe{|>=fA#^ zvz4u!>zIYOEc@W9h`ovs+vT~1@Z!WQ^dCjeD%LP)-qa`PdZzd8f&dI=niot@{0sfr z){y?QU=yaw)eIkiI?kuw3ta|q{eKx#q#r!N6?-yWyfPyHV{--1s00`N=3I}-O0jw_ zN>KigpF_oPyqomq?-UNSxE9aVOj5hK%V!u^q~ltwgD0EmM=<||0q`OPfpMCeUIl54 z`?fZ<UsmN*>R^da&m7R#w3Wg7WI5ly)=GjZrs3^#bgDXmUqGDLzVbih8`f!&J;AR3 z`F%B{87E8K_j*Eqj-?#5FP20Coev{Q36WP}ZM5%tP#%KA!<VD<zP#z1)VqiViL`Ol zG}s`C1n<;?jih&`afbbgrVZ?#2sww-!$JJmYtptzD7rz8>6J=(>}XSgSb=DoJ@abX zXTIWGX8Lr-Y*u&sTn=VCur<6fKxR#Qy`QebZ-7gd-J@W_ei3Jdk@lQZ@?}r>qS*FR z_GiUJ#8zA+gW1A5m(qs6R7Y)PVUe{p*PQ4pZO6o)wLEvS`OyHTA@#Ow8U4{zhkEIg z6i<bY9)Vup!zW`l1|qxzQFO$Z3DLSD*7jY~4|TewR^azaug)&+2<48o+-h|3VRJ#m z;!Wt;m3<=8u>FYNS4HO~uF$cfC4vxu^KVdze{i|`mRig_g+m)S=m2;h33EadYrfz+ zhLj`2VKw>LS0_P{PdDY$XuqY48!?YCL#*q-MS81WP6X(djS=NrtE6YuFPZ8klLuYd zju6N2@Z5v;jg~|YpRevefIr3alnH#fJbfvA;77;qmbAW3A*C?A;^9RogRChLIs6;A zN4j(t%NFt}WlHcbaM?&ptS8ye`hiG%x_C+Xoc(`+Ge{WhL>f4;vNWASy!Z;zvMl<k zRMsF9A_`7GCrT~f86xKx|8R=mRtGXo^UkNIiexpi<sMC%c@e@ExUAy*)fO}vSJlcC z@LL;dPaUsy!j`~JN;_tLf)yLX!U%?xJ{*&=5p#`8jwqg?KmU>so@O4j|6X4Kxi8>t zS+Ph3qURb*Ljl_#Nhsv_68P6RHw!kcGx@x4Vb96T(Emiq%;fodN_pFbm6#9u!?SBh zi4xlDug|h)TU3%8b&pGZfR<x7RWhn55%GSn*g)gTs}AoNyr_e5;_k{!_-y7Kw;&mg z<t{)x@X<cFjiV+WHJ&s?8(eg>+%bM08Eh*-&={^0rz)b2A_A25f3&W7DC|9uw5eZ! zb7{8Lkl`U^-;0H;1d$ENAD@3xA>j#fbRYe+XuDBKkF0hAf4smv0*RE~cqoz(@Ma?t zphvLnOlAzek)%jp!Wg4A!xQJt!)<?(F|d*)D49~sWgW2_l5YWQN?sT9I@2{`Xr@4q zk|aPg#hxJKOGeP7vIvnMGnTFtR2tOy_UQNkT^#*~16Lf={iyy?C(;lv07Gca7O34f z?r$xR93>5_c-l^Ip+7EBmmtQ-hDH1y0UPJfFCT|qJWPd$qXocPt;N*2PXyqq0wqhV z*j-Ml<M-BiNLLuE<p}F7z&D$*&QVCYTmY9Ap*Pe>?Rot5EXa@FpJK*<d{S|9jogdB z<3CdZ*JFO}VQ1B;U;4oeQoWENPq0P&tUpa1C6<$nz)U4Q@!k-<?VA47IeYb5H!eyi zhPT)-J7ypaJB5kPGR6*fh`IyJl@Z~fuPUk3+|~^W5;Cxz)(sgstxv_12zl^f-O|F+ zzv6Wv9jFP^OKI2@QO{m?z0^X_b;TV+xmiARdq5OM$u~4BPnmR)0Y@Y|YMLPl36eEo zh}Q%PCLYcgLt~Z`TaGGNfOywl_iXy_Zc83$@jDsOytbFMc&bA^-Y}+@zc<5d#HuU2 zdIRxui%Ru<wKP(KnWb6!6<)B<oC7brhn`%WG}YPMLNv2~@A-mKc>MGEH*su;&>B#f zz|7pszFe#+)3NXDWu_EU6-u{2N8)79&%+C~ByRKNj#Rk=ngq3a(JW99R+^tn<qw1{ z5_5!Jl9VD@ISo!8BeCHjP|lh%`)@cRhdPAP_`u++au5AWl8>*UV=QqbnIvyA^1x5e z?R8v@hOJh^2KPa5S$Mw1O4gLhey3^EspBoe1+Vrg8rGxEwb}`p>4F;s4xfnc=Po~; zT2N{YR<%^x%scp<$&L=(96+b)5Rv~PE#op)U#ZCoK(f4NH%Xw)H%aN6-ZEkbeJ=kP z-n>(pf1mx)Sy_$y*C=#`<g}PT=prnOfrlz=r~4J5HFcEeE<fJ^!Ad#MqW_~*gY&TX zV;OI!#JDOIxUSUbD5Y_}kj~F#06)OoctHqg>@SPUhI~Z4PY`&Qa+y212t1z*l^E?& zE}lXk13dUk6A8yGTdelQL35M_uY()bB@~rF(<B!%KdRW%KreiKjsIWWH{Z6RllWd3 zqr&9|*m9LE5>rg2RZij1{Hrhb2~8IayTmAygX9LJ2-HblZQB}897Gu-__$X3PNo!V z^sYUdwRF0YFT%O&0Pe*|%(;@{bxRWgfCOt}1b!UEP>%|c>G@YQ9eR3zg903~FOrb} z-x+B7m*(!=9>J8;qe?7=7_GwkeoW+7J${vOO_bCaP&N@Ui7jn%hH-wL?YV9X*g~xI zsmrs>?d>1Io@N@36A%AIChHo?yYA5}^mUti=}j;JB&=ouhTb_J(>_~mkiT|vC=gU{ zHxH!@P%8xgU>8+~(T;9e=mRWITC2w)#y;q(Q__T1_gvn&{|+j5m8(qST_f-H6~S-? zo58$44mT_RCF}PH;&33%ZO%Q;_&^Eh$H=o&A3nlgN(aUmbio0`ezLEP0GkL_fj$g6 zK0@?Zz|&J|MC7Nc;t*~guX3mytWK-7{U6SS?R}#MY~q_Vak9*yOP7Wvj>!gh`!3Y! zSYy6~9tA?ZEMcEP&jYDxF>%=>+c3Nrb`>LJO3*UDENt`4$>0bdAKVBOq6FB>N#4Vz zKQG%{Ftr>j!swwEx%b~&qe2-+4ocDYa)C;%_ZXvWOHpb}opxB@S|elBvq`CWo@26{ zD#Y*$Ndj@Z<aH%!>jvy^;xq*A>Pr#rB>(|oO2C4?bwV~Qr174E{|0OtV7*mGWn^v6 zF*;S6p~95%aokZA&kW-!c36Lk4*5mH8=xbMU)=gny`c6^VB{>ekHLU#89^1mnC_s{ z1c9tDr+s-WBZrU}4?+_=%&Z&>jx_f}%HXABoK>_8k~#T7(3VqqTpGX=WH{d7J1df3 za}Ekd>Z|)S^{!VO)zz(V4g=#X05FlP1TXr|aO=75>DACBV1Y=FwYLw%nXJH8a_5n% zfX`RdN&SPX<;eqvk_Ni<OVXe-QDMNhqmC~kAhEY^VxZ838*GNXysvxp2E3xC8dKu# zfM))*_!PL1SGv&Nxn3>#ukf|3@xb=I30#_@Bgy9tIE)_iHIqt_W5jGBu9n-S-K^n( zbd=#9U7<ZG++sPz{?z&-DGFmV-Vu$d@~mZGSrg5s^OD8YcUMD$8iCQ*spFjer0_RR z3@Po;=CC(;flOIrEZFhX=2iP1^)#Sf{FXRZm|`=4-jf2T-&zF`QDoqaMF}F-jQidL z*-4QjP-_R+cJvwZ!SC<vq$L*KDv9Bf;}td|e6Mibg|(VnXSDgw<M{UsSfmgOFKr(& z?}sx?BTF%CDnR}9(Th~{6)<W4bBJr0{{p$uo){_YbdpU0y+#kPCpWatv5~sxBs5!| zb)vElV?AA*?fx_>0MndS50-)}AthJw+fcJ|`{L(|GufuuuHDc0D~oVC-=XpTPk2A} z*KHe^(+MYM-IiFxkPXFgY*bCbuh7a#6tJGR6wrN&P=}jexclzqj?!O>^-{Z>;ss8T zx+_zg?SOnXu&pK$!_2+nR5?iry3OE>;$JWYjePAu(qR%xsRpL#U}k??{!cuEH#{{5 z0VfL^JhT^pM4Qk*66;UdmAw==2Oc+<NhtqXT9awV9!Pp?D^w={^9)<f63r;0VB>Zq za6d4Tx&_cv6|WSnrCOT*rzc1Q@$k+lQQao4=B!jX=Ju#4=ESZp;iBjvRME(MP_PzM z=D$Re9&pmT<hykUEZ@{|#o`>3nwwW~!6n1!2aPt$oJ(!#)%x3ZD**r5)+N(MATTDH zT2Jt~fc03pUd;Y82gIP3mD;Xey5}2^K9Tib<<gioi?z=%V#VKYi8-7L#Y7Lo%!B-r zR#Q_vc3{pKShU=R*G_rJT4;HC5ut{?`yXz%ZeE6YD{@UXCEA98pOw0t3@G{BS%G;@ z&Mq!yv8C|K)3EMHIfD*k1YsoLaE6^Wu(<gU({Y@B@nMZAT?|Zy`Y4<xD{9tTcCo}1 z8~Mi$U-gKufFJ;qtUoxX7Vddd13p5JJz7Tt`QWPSlXh&LFJ{?Zqon&2YnolQ3q-BB zJ|VWf=cIWvDLW^kDD?_04M9nCwSLf^>=`W36|{G<;q)l2+0r7YBOJ7j@rn}8{MgG3 zb{Mkzukw%_dQYrGsqry^aLk=0J9ZnY&bJN*T)_h~lGC79vdwB?>v6Hr-!%98{aSf3 zoB~?Ov2HN)&idn07>Y&#tj+CBxPo;XucHkrSCHr5Y-wf13%N%(VX|Kk7Ck)1khGxF z=q(lKfq1aA)R|1^mZ*ynvm5=bxwS!l%Kx(z`HWed_PnIzE2~esg9w?Fw|FPZgw7Zq z5&uj9phfTt<M@vG^x+U%x7lMx0Haj#hCeMjfs{elo7bMI&_KrW(kxTnAVF!1NuMGj zau|O|?5a(lBBpKtPI*)5x)}EX4v(E}^Q7)U3xvlbl^ADcXGxmhkzs4oIrQKq#*ev3 zXyGOWH@?jD+ve)wqgJv9(Jyx+5OBLjxb8`PWcZ+-e07mO;DN3Hh#mS(`SFNph*kHk zh=j72X@P~QM}fTs?|3DA&)2;yVvnNoEJn3w9{%APgX5I1l)7{QQEq&H!9;m&q?Pu& zvImafP{5q{Mluk3m%i;bni%qk)phi~fB~)`Cq*O>I~22SttSnUtqwbM_*y{uDB%>O z5-bD{%E&40RD%$m7J1O~m!7TqOZrL^RyQS~@`ZEF$IOHO!Y;gBAdftSch^}Tg5a46 zqA%9#VTQ~H%@QnTz_sKC;9x)4B_j|OV$P5U<vqGis-WIIG)}uKtVc;`ebo}`29_?Y z(mMeB##u`FL4WE}K=F?etb}1v-@lo<D?i4W*oT%%A#3C$YdkaCy<&}5Q3A7$Ao6Io zPwNgv1%?-eJo&(0C%ZKeru;}WQ(En!X?bCU`nA#o6?fW7={vKcZX{qGS+a~#Z_?02 zDv@$_mF;XVV&fec<c*v8W^+AwNfXZPF5N;9?jn@2s%o}2cLI4!bXaJZafn${$B3!h zV`^5OTsWz*E__Lv=dG`QiuT<Te;Tp67>CfT5!_{Kz1bmou01eo5W*5h30DDaIexd{ zy7AoJ^{=9LnWS?Ah~B=~j}|Um1IUtoMxU6zgSDvBQ-j!t2UfffGq37qS;$EmsnHal zlH!hs9wVs&xWWSn0HS0lc~syWvF&g4eNsA=n@DDsR&W3aK6I|1)loH(p+<9rbEk_N zipuBca8fPcYHxomR!mro(xoqnmW~?hz4%7Xr}%7nn_z~WTV6QkaW1vJtTT#1=6bDZ zZ7CHh<MCaaS8Y>naCM&w#?ENc0@YG0Q3`qWKUd!iYDXWT6jsc-W0%#Mw|8IsQv@{) zW82+Q@dYSgw%qpbl+ONgnVpCG?)*db?e8n_3KxGmU-3R?RGp5E?8{xn+XTIL=n$YW z4|^SE?Y)$1BPgT#F-KdPehut43I61b8mBx>#7q(l4Ed24amcAkLMdZ-I3ZqmEg$Cd zhm|1IlaWF+u<~lvO6>J6$YrWm=C=Dvp&pzCv}Ii}@cTUn(4lO*m&{@Orv;6P@X<&$ z=~pE^7TTyMYOdkXp(d{GLe5!}%6$eI^+^JpTahhnooXrz`JVK2WFHK4#G}2tldG^L z+#gWfDfZuF^{chc!N|J#()OMfHtAoJuk)wH_8&7MWJt3trv9b=sY$B4sGmfj`13l# zF&F0BoV@k|EfA~cFGzGH!%}l6qI!(5@@9L7_*(-6^v_YGgeAIG+ZHhz_0-{M??a{G zX}p{29EB1hI``>)sjLWTd75|RFx@6{?k!VZ>M>0KuMgzDaQC4|{?g9*0cy}7GeMS~ z)Zu6)XX@y<2QbE;2mkzwOZa^#V;x5U`PJ}kL^?c>`SPjWm9R5>P4n%4W#6V}ioSsQ zX7+r5{ZI)zEnD$Jf{CwZqQZfIAtv1tD_HZ#eda)-Dz^^lP0D%it+)6FQck8klN5rj zWa!IZGY9{GxI6l&P<vqMAeJy<9~B@)NrSu9r6boIb9?<C%vyd5z85hIhdHm2V2?_4 z*Fm9xYb-h5s++iA{r=@n&dKV0n>Y48XEJ~c6ASd9(U3Z1)1_x76Qhy5?!Vits8g2% z6|Cg!b>=I*k~Xa^?xfc;e_zumrHVFl1d*2Pl<s1ZQ?$&X*@ec=)Wkxj!an}-ap!nH zvncFSFw?gfr*>GmvDX8P5?kb>stlze05k>~LYi2kR8a7Sp~1x=$q?86W+)_Zvy$BA zeqx;_h(|uTUzNs-W2o4`9r9l~*yW*>7gc#D{o1F_wP8C^6A#J6sr;!Zydo15W%q3q z(wAtSKHL!>67Xf_qibA><GpeYj<ub+NvsvjE_D_r^@|bJgSucl{U4cGCMfJsYv?># zKya<PC-=k=eWZMM&U50>j%}P*=nCx%8Qg^_#h7hp0UaXzm?~0XAJ{_Dx<xLB<0@Xu z6>rG#s4EjrTzQH8*BG1E;yIt?FS9vdt^6A`h~E$y5voN~@M&AYjFXljeB$6a?6Lbp zv(GPM%Ed8lp2~7c_PBN8jEC|ymG5+(cIYOhoDAmSb9jF}hkfalgb4lw`3^8H=jay} zxBeqAI9FS*H!-t-ITaU8gYFUIap)vFQ(mU%e`FiUUoR^%9lMc_v+lvTnZy2Twf&1@ z%7@k?)Uj-;*5>*EO7C@p*ZG3>HL-^$&hZ4ebqH0#_L!moz4+-=KKg!bZwIs4B2$T> za$916Zy{SEn(<79^c9`B?PFs%5}H7;tZ^Dr4zs1gRM^)Cs%lOu>nO<IE{+aAxg^ZS z(2l+XassAU))Ihs&$ef%TXI&**f^TZK*m~eu_!D;yZQ%zs}#P<0H*8c61I~l^meui zqkzXB&8E%FfZIHj2@pJn<{M5D<W7j`vSb2>)CPTJk_cKp3t^9;IG)%s^QSZxakMtc z{$lQ=hWVncaGQz^S4HX^Y(hpsft{@`=#vhW7e^`pWbzAK{S?BxelPrw!LIVbB^1s_ zF<FE~D&)=2ZnrlB^dB4-IN2`>Q|_K+Abg6N<H`CAU!aJ`d7yo^<CGd8xSZ&kvg(6f z`|k$Ln$vx>PKUI-S2Zr~^jao<4JC8v1>}9f&Mf#WDupr=Q^Ifpf?qBT$Lvl<xaIgK zJmQGkOUpS$oT|c>gN`VkkI>28YZ<ipZTyW$B=HIf48=0iWr#(1HCXKDEFSu+mq9B! z<5|&ED_lABjH%s`bahJArQxw`JSyA{ZxNAh0R|W7%vH_#miIPaF!ASY7Xu~lhN>x1 z7sb_t|4jJ%!eVVHDMlkm;|rwY(MesXslp-lH!PeoAJ?_xU;&YK5ok72pGkntU$<CG zMY}Dz_u`4|@JR6U^&NrFzqLdX>DPhswj4Q|JpP1#8_MyRn~^Uv*wRv~OtlNRjl2~Y z+aVTF`!?0YkNmySR~$e=m<ievqyS!5_?kLOTxN5~k<1A4ay=#Vr9De&AE|rPD6NEi zT<!g_6qk~xfSzicGv?5U(??4Ghgg2{1GV7yM&AI6^U|N`%`?{$$~OEJAC;t)2^khJ z`YEe}mz1y;TtF4=uZKVFIC9_I=Z@MOsZgbKzn3dt>8~hj<a?~Vy*to$o&?{&@@M;b z=~Hi16-&m##TQA2=cN>spzIP9W{;_|Pv$0279aN>>lL}EqRJ>!lRe+O9i+LIgVtg; z34&No-ypRDWcRJy6b?C~NhAbf+py|tY}M*~gE#Nx8=$~!I#t{BVH)KXurtoYm>!N@ zb!QNRIL&P30GrDwc^ipR#<#jL%DU#mcKG%l5{JdPe?J+%hqnH~6pewz9{ujTs%4yH zu$;uYzO;_<&AN^WjKeMnph!l-Y9@G{ZIcYC=R}kjIOhMcXtk6fjr9ja(2a7>2aF#@ zD&V|?7Ix3YissxkY3p#QO&E!<-)Yir;xU*|aAA^7NFP<Z!8i@mdECf!iJF}Ur~gX1 z2^h6Mp;R3$b1PYs>%5YYM_~f+s-_quCzg*q{jLjG*l2)sH&whdCVyG)hUhG6lL}cu z@Kjp(@dQw5kk(i-(Mtm%gR*+*WCnJlP#(2sFLm{(Qzi^a8sda43Y=DlPO8aOq;7bS z9hfTs1ccd$d$oHIMgaSCQ95s6L{RNEh*!+d^ay<)l6v~0Srb;UW96SyE^>(kAhz|W zyk}RXp7B1tD25Q%K(1H0lM@Pu?jjgFisf)|NCtKb!{jKO*w7nH!>n<)5{WEE@!LWr zDV6rn1lB7ZDG*+P98Qr5jE6V}6e=V-=?6w^E(igY*d|NmhNC}oa6*AX|Do4#7Z4CB zOr}5Ddw8vo?M_;JX2=Pv^qoGNsaz#K#Ju(22a2=IxC}KNwGZmBS6oOB=+R+3_Zp)q zDr5Cimz~U~Xg>gn6h{Kjz-7%Dao|$Xa4C}#KPru0H7{M#m|5n6=;VGra+!_`tD>H0 zQ#Mva2!4dS5fsgLqk0Q(61~L7m|l@#C|G{?Y_gf%^RT}%2!Z2)p1)OG{fmTryYN6? zBw+T%rfdA`%F%mOoe7WPI`ZG6k9^I;j}CTh`)-#}4iL4@ZFLwL=s|0uP%%_=r40nX zAD>>jwmn0W1wh-KnSC!nj=P-SEvSH@r<8Y5%w)GJX1QF-6oYJ%1`S48dJn&-D%$Ut zBO)QM1}dJ+Fyi7)O{yKl1Y^%fq+$u*^(Mj8u!`v{d=c^|WiPLKF8}9zblhA|v$BdH zF-6+t5MX$VwpNS`%rG4eI^qf#kR=BL^k?K(R8tDpZs|TY<e*5Y(kzBRSw3%4=m)cD zcy}otgz<{EL7fB@01DhLaN>xON>kTfJ-33OF&{XFwK`iLyYl4`l1kFKa6~{hEGGHR zEeR<mon}aGI*uZGpf}X1K~@?5rkIVA&=3L$eS7Q-{zifM>x@bzc%bb%6fBKoR=Sjv zV3)gc-%kJ@KV40+st*J4b($u~A!81dOJH;-`7(#y-PJd>R>L%2jVnjF>=Z`R&`Qgg zk$kwXqRh$X?59mRiSX!X2n7D=lHvM>7QvB6o{#5R<b=+Jx1s9dUb^b7a8y|-yg`kt z>+$(7Zy{Z}1ELDuNfl$JuTR!_)*b032s^W}@JjAk03h3*a;K}ifFHrbSx~F3?}R<} z1F~+vsVr%Mdr;f!!$g^4n$?U<0BH!vBRyy>jtaAXkM}@keA8;lsfb`=MPYQEs50nX zp<#TtHP~yebPvj$v^RT)SOPUsfSxNOtxGqE>^!1Ob=IUgU$MSpzq6%ts?$D1-sO{i zYiTzjy?WE(fyr+L=%zURlw5GiK1j7+r9i=6l=ULK`@IapjwA*Obm&2Lo(szn+J_S% zbD*?SlvsXYaYAOtofJdwhlRsYsek>ql|~QRLf;qfY{TxUr8SI%bf!@)&X#9E%EpZk zAg8*yXC&9;mQ#(<W>Rus*LKr5jAL*b;r3#;&;qo7*dWq|rPh85`MArNVu%zbVdege z{I0E#Id4KQV83JR6id8MlwU9D#<tX;J?hy1TA*-Oi2hZ))Rk2T5WTc}Y%jkTu!S0& zhVYPU$imtbE1d7ceN&`ozX<oXSm+Y`gDqU^^f0|;C^Q)AE^y6O4)y2k5E-ApKQ<`5 zVnB1_$!>)UvH)U)b!dk;XEBi6v5ZrDq#3iNzBoP{KHQ^F>IBNt%i@$jZIohjvJSOZ zGA5}yCcjO<90m)t7Z2A>UeVP?m)-VC_&rkG@clNzO1E2chS7*MCN8Xb5A?j){s><W zW>qn~1C=A|^bI5!Ko0+N%alD_wek0~no*ZUd{KVwTp0gl!e#7AP0m6*bVo$K!_1Q9 zt%}3%q{o!SB;L4TFFS0}w5TVdHMLVtsfx+2{E~1MqF#@S)frKWqCuGw^N{Vy5o(&F z@h17W_C6oThkX3k9vh{F{;;1NiN5!;M^6nCAnXd$9VGShaI}}Q?zr8a@mFy7@8k=q z{XFaV%(2Go800V=o%RTA1+1Iu#t_Bf@D|e>L+RFM1jghi+VPQC9~jUWzcpUuI=*Pk zj)OX(RHR&c|KgBxca)mX+XwNsrxrbuSSHru;zb{8q#NfK3N|{p1k`VN3NqWAhfV!1 zMz9LF-n7b$gKnrM(!c@J#Q@Jl<72?Brdv>p{e13NF_Z|eXwl>e<f3Qb5C2oWWF)s~ z5G=M%=sc=p^0DX3h+~mY%+_$xv8IWfS#lblrk_Uv%4Xxaw)$+rR~wXaO)QC(<FeIk zrt7mZVr=-_<O&IP<$elV()1f!>W;0}Yqfm~eP+KP+5N;8w8JnCMHz-@`kIg*w!6HD z;UVyozkK^D6YvbOSePmR2!NdsHHW)d**)L`;)@)~3$$RWaF!@(jckkp`Fj3w*pEjz zk8kT8w>hHmn%cHU6iyMtv8HMC{--)a#H|%@Oy3DNYhYj#*w4O}D3!4|T?IE2PO!sr zpPD+PXP8IU8*3G(wgk4v<DZP0aGUT756T(PwQ9CGYLSGZ6*7PHw!T(wKYmz;_vnb% zG2#Ul3>*hs^%yf?8q`zYP$y1oU<N-QMI}12cf&2*9pd)`681vLToT-uzR_5O^8PUQ zH=UCuxk{cVP_P0WU24oE5+t+T8d$F?6KFkBMG@D~QyquCjpFl`eesy<>6(fw%)%!u zppOwa={wVm-qIlkr5W&kUPCJs>o|EpfHPa{{!o)*H|)Xs1S{h{Sb=vz_1;xe*zne# zD#HDRS5X(s00;kTxn(S^bV47o{M)C>`LCzOsGTm4D}%8r4oug996O@@BA#W2+c?WG zsoD~ONkzU*(owA$i6krs<JIyqy%xTDFoDU}JSXTQ{^8y=D*l8ZtR6aHIe$-CkdAw< z5y3W<Q}j`bM5;u@me{PVYGwk3L>A@bf7j_2-yyOCxA5}x!~YEFntpxH1s>JXvOY*l zkY33M+S!f0L=G|J7Bg?*AIU30RZ}lH+o@xS{8>;wf*slDOftfm-j~ZcM#Njjyczi> zbb?00fd89pC#=BC0SRe9{b&i%&^)7US7d6_p>A`HOW}@Id1*2kwcnPNbH!#;%<B|9 zSR4lhZ;pzRf~PeQCI5vNchJeru#<0$SURk>CxrX5f1eN4wp;IO7v@g^9s8V6jKOG0 z;-z7dQHk4vR|G2Vyq;)v^BSC0@E+;b&iMj%OGa`L4zp_3w=oNsi>co}C}@~zm^@{A zP;@n98F005{-N`^PhorpCS97NRrw&q$u)maysr)X(&L2WQ7g;jb)CZx*_i-G(8z7~ zx$uH4g$0xY^gHO__F)(N#nV%7QC8;V4azWa@Ex4nfZckpltMc#Vs@D4MxfX&22Tt+ z&^rH7RdSxi;(qWOuRhxc_}&BtUbh8jOE#b0A!9dC_HFdFc+-^q5Y>*1(zzam`t&o0 zcaJGf&+y3e?v)KP4)N8{q^*JBQ-N!C+{wBS+p)%D-_QIF+_JlA4jLZ6CmD!6c?6!D z_a=j@ZS1TejJ7tNfcG93VjG=BW~(ZPL6<*ppup}(dRUY>aH;13jc!xV^^pP>$#Hlw zPClH!lca8B#yea?uz5Uf?4?#d?Y{O~66H>&cg~rq_qS(^QP{v9Le_e7yVCe5PH*AI zva1zmu8TJ2s@vjF+bN<I0fB#?WWn2<Mhj5{Ms39_JoNmKV_en(r%p^8amKv;(;X_p zqq0T`s?p%UIy~aJ@&mc#aFA>XX<m!nNo_!I-NIblk2>TpIY5I5{nz_|;Kk3#mXKE{ zn3aA$iK<dCn+iE{SnExwTRRo`GXv18cQK*=m-}X`m{pnkTEMV~71c2(`@^7jq;V17 z1|}D)unT|fRBfSHs3NP>c-`CHa_F!i6zw-ir0+f>w8#M6?8N~AGS^S>&LwaQ5v6f8 z*h6zHiO|v~N{A6}8;~xoE#Zgs*{8z6#g}|%!E-Yuc|Vx4bj9Zwq%TO|wgQbSY=c(% zg@r(yCGI1MAhz2k=y13Y*{%~SInq8kS(O&6Qy7LUEMGxVel4r^=Cpyyc&!1RlDS^) zo(DIR2h?VxQ}u|jQH4OZd__{F{ts9HGm?ITlZ8WXDrC+DrNK3<jV)CWsC)1$!cF}L zxOQns;l&c!JDhSs0A}dGK~OT7tj2d>kwVa<F3O-?iCZ;9x&V@B)^7%4x|Hg5t2j6B zh?j(Jz1f;%3g|*$-9~qy1x$ilf%&A{Nu&GrbQ$?pJV(G07Qfi++SEW$PXDB87Y;c~ zg2GsV=I~Q33DCG4Ra2^RI)@!ER$3U`qEC!J@&7zGMk0x$87>l6p)MO0<+p~h90S<^ z#SPT4Bgp}*#r7c~2KdCC`4t>AcR*pI_fT7eoyte<#}0pLGyC_5yJFe}YoQ|SdI?V2 z+Tey}@OMAilrd2x-Pj@{25IYcaOaDacVI=}*tyc_^)qFI307UdX@m166*T(s1a#(? z2JT7&$STeFK8pbCLh$m3)OG{0F(E`RGnj;}894eHxU2V4?{WM4dNZU$?{y*<L8j#_ zlQnCYL&HyW`7`fU*vJfa4b#yh6U5!?I2`s`O3IbM3<Ix-1RC_z2~BlBL}Kcol#8h6 zW?e5)Al=R3%TOHfnf`>!K`mdCDS7Of{SQ@gv8s(3a8!X=BtLQ{#0@aCNAqhobs6Ut zaZr%D0*OB_JKd`Ag&g;r4##4@@!)vgfx!yJSmya}aPs-855Yc^>sXAdvtKM%Xv;_! zwkPRHb1>{KL2E}4mGXfK6hh<O13?RbNK_b2J*q}`XF!{e4%LeJtDm;CPrt;fe}fHx z6b=fz4c?;Dr?TY!lO1cYX*4BlweHQu)}7R@VOzj15*y*Absr+UTULb$vZ$b3txc}O zzT<+^=M#+O{L+abC4drDz=;jOze7GGg#&?$EBoG3N0>mG;)t1ockFV=;s)vt{-@Hj z=0p^jlxpOk^{RLUQnkWVV}64j;^vG+7^t3JJ)^Tc6Y!AV;o`u847g1NT@)0nbHiYk zKzaJNBPK*Ik{vgT9aN1TS}-xO6||qdz>=QF5#PwJffTo|Hf^j)Y?ihaLP=LyR|{)T z#gT<98iPcdWXrZh51kC=&}s0V>I`Z3jBdx+vo5g`T9BCQWhtV)ID~jlqVAuO#wo2D zTrz~NI;L7NI0$XsZ~RshE>=}r$`*-Kj1>GO!$UTAzIskh9Ive>i3;(VVgofibdeoW zN#;UqMG)F9#AfA~HP4oVe7QceQa$2OYKkPLJqnz^c_APWA1}A6ZgLzSP!?jJ=qoe6 zERPX0*Ll%$bhtGr_>)hH0YtaO80~pe_SnU<IjDev-ML2b!wC_!g&uA0JUr82=U%Ud z)hIt0x+;fA=SLFQaQ^QQ<%AGJ1Lxs0%IGa3b&VboW1iw~T@M^%TsuXnzOls@W7@}4 zv8sLP@nX8hd2k7e3z4hen(QU6ZIduV94fPUAUC<VEM^!KX-Z~<XT)2@Ed>K4tU`0Y z8ZqEiVoo-v3V2PXonY~t)lYH9nNB0Y(tcdaum}aM21+UCwliN{-?!6Y2_cVEi_5QB z3h0ss_>N`Wz+-XNLc%{Z`I-(r>S%#{Li`30ytn+86>%HZgHCV$%R#JbW0VrHTtwbB z&;}pmg+?3teSm1^p-}i*XK)+61y_ng(s?R&|3{PBs6eC(EQts8m?}(N+Ay#<Hqfps zLw4T%`8x?sZBu+$Q@<X37!Kn-Xbq1qEe<IFC)Sr)MK($VRmundB2f5YFF)Jp{YlH1 zJewKj4}@b4$AA<`x<Ftw6MemJC3Xt)$ulw9n-gA9p(}*F`(crS)*?|nmBlYouC9Tw zc@-rGvXAs8k(<IFdp{oST=IgMNb;XNc~j~mv569PooEQ=m!SK&>~S5h;iIVt@BC`` z!G&S0;G2XxH7DtMDCZ9VU|Geptb2`lg6E@5Mk-=SblDNhGANwrg!O9S9Z<UOLDMqU z5r<L%2yRmvNI-RogcT3ZqGZ25Ytic8sIik(vzT1RF#?FWShn&;#cZjsMr5oC#5N$* zLV4-J9;1ESG7;$ch7%2o;sO3C;%f>{WRQ?}_v|L#l?W>0GWnAOC@FiTU%5VZH5Wev z;z<Emh7$OALARlR>hw0bfOxqkr3;nVhmbdO@Pn2{$9>_<2|-nodht|Alv+_99%Ul( z&0s-*kUc4Nr5&&E!_D)t8<1AEaEJ!6Dc8F^I%VR!Kak26Q3vEg$1JRzxd3-69u^f= zudfIHnh@6zT<-0Dk4TFWu{9D%tQ!!0I(5?*{~hC@-gPPD4qBJyK=-%OiCeAd`$zND zAFqVXNQ&_(3hRX6v4Gy-dg$IsGN5G0r5hc?sfnXw{+#I64m8eC^6&UFC*9MwpHG7^ zAM;m9&;M1HD+u~_n(wT)2a|+hm2Why(xCi6Mx8#}I~1ASo}x~0;o{FGuVeIK`>Nyt zuL_brJiM5k$2wdIH=`E2AYoD9=c1Exbi>elGcw^2GuSV9lrP*Os0bl2mt&>8dtdg+ zCRh;wPy^sc)29PtNRKi{K4_hnHWR9_5|t;C@eq4G)!S^-lOI<E(YlZy(0i8I*}K1U zot>EMUZta2GiIAIsNOR?!rqileY+3&F%F8JdoZ2!@=E3@V*67xQ(L<e<-#H?0bTU) zp~w~3nWRsd!CGomB~X`xJxcFXhiZ@pB+IJ{_v#w_8Cqi)n9yf@5H_*w<nC48=xl?L zX&}1p=N2#gQO);HcmZPrH;M{q7Bq6FnC~{&^&nBYxgK3Kt|}!o*;pjt|3%2E$t4zi zU~sFYyK+;lLuSB)7ccJWIk$b0wYrs?b>vtzI}L-ia4h4o5fvAjr~D`)8F8tWM`14_ zZa$=$`r}Naf@*%7L}%4v8s%5B>zT&b<4`E~Fbjm>i%@Y#cUWwn_xd&`Jp8R!ABtuz zbU$$~dyU~Nc~^+|=W`f=sFGyHQ|kyNgU~_QpOC+sS;Ch^Bv@X4`6$#A)4Y<CFv*z$ zz8io(H!zWS=$bm!mJ6o+AreF^Ppl^p4%?INlznvBjw_t#(0J}D*(SDX$U3sr>%@vz zJP<>?D}~kL_TZaO#+bCw=+8am6B%I&1;nvxmIN15wE?}H4vo{|d)J$0Qii>J-Hdw9 zh_M2+k1+wWZ8hgKX^PDk+BtnMxHU+1`{YwxW@yV1yD&*ne@)B@A(vKQW2@tOb~L{< zg`?OPCqC9zY+t-0;oA-)kb|V3KO&UAvr&I-M8{r>F4`moDlUMT%Z=eC<MmO~<KA2H zw%&ZX3v#PZ#;#sb9nTWY;u0j#&5AWu$X>c1#?OE*t9wzZChJ@2gQb*;0m-EX_(6wy z8WzBrU#iYquXu@QUajMp%q&&Uuu}VgR(L$G0trSw9bIJ?Y=j#dX|fS83Lnn~Y)Lz7 z*U5hKqND|r0%%)rcJ<^@O{wOEu;J**A`fPVZwLz(0jw=26^@#lF|i0DYJh?$R{%Re z#J>Z<77ISbS^bNtx__?_ZYTfycr(t~`NGTF!^K{ESZ_|XY5P;K&l?Y0%hV$ZjVJ+0 zib4skbY$>=3k)lMAFJ^#3r`WZp9Gn4UA8H7uy|3(N%w9M`bAc~_qJ&_)1TL%c?hWK zQ6IEbPhjs1K?73enzg<lQ$h&R-h8dcG=hV#q+e<IuVQVZydH1ka;)xj)HhBg%9DeI ze+AIRZhmgTlG{NI(LJd<!t90(A1e%>RRjNZ=19r<Qi9A*vxFMTv2F^tD_<mq`UP*M z&$n_8nN-tth6^MqF~FpHC<YqyLdaprZNF4TWZ;lSo5eavo<uXi8Z`;s%Gg$2*R!VL zlRjS#<abs(5&^YZj^=bueV6t}Z6OL)3kcfCMA084J-W_W@Q)@T0#2E=fSa%@I&#+G zYT<{{<2SCO7*sZ@chtUo+CF|gIL1mrTh>hb>y9A1WcZsoXh4LU`hre<x3!eX5~r|6 z3YrYd0|PcU`BL2ru7{)4<7+B{cIPOlQQv3Z+@{Zo42ly|Z}}?~ES(xhg!kc?BoP>L zqy(P3fTR~hkH};E2v;aH#@sVXI@0o`!2jfPx1x>JECo;C7Hsg~oaGxy%=i0Mu{SUz zExL*C1+{`Fm%`ope^1Qu&X;Y6g_IGAS?W}o*)ZaGkB4pUDtV2qv8C4oAwoO>>KIPm zM>nw-46Vjk^E*a97xV(LR|l4s93KBRclV5()LrqCb+J>K;nNl-D4U&`t>W`VTeIrp z{RHJbG(p67GN6MzSX(M$FHeoV<(#=z3S3I;=WICm<uP5@fD9r{=>BV%ObxRh=KA^t zc`O>T_7!rf4Mw3Y*z_#G8%0}0C1bgc%;g)2O7_nr32K=bf>7?Q_Grjwf{Hbx-w7xC zPBkU8v#9h)RlXOEn{w{4)5vO_)Vgx+$1ru0$~bY?IgPja9)3@-kGYy=5^OOd687fc z?>^Juc)l50fiQoSF3{t@#yEjjST!oYa4GxTu%rI`%3{>5Lz$c{_Zip+Z~9A93rEKW z&Va&KWne_|%%Ed!HC$s(5UCho8Bye}d=N|PoUoO+u@AaVj8DnHLxn4L7)s(eIihxW zl~dkNcrDfZ)!3Q6uT^RzOn%88t+EK~KXIiQDS;xYtFU?iF9_f#$f*RKIxNw#wQv0N z@|lk!MN+H0p_z2WEgOOPJllL1O7)XLKCJ*siBF{`E8<Edc{bQD*aoksI^yb=P%m-F zN$ykbFhhcrj;S~Gb<eeWjzz!@7O?8PR3M#;K&e^A)+8Q<p*wR7O92?cCfo=|a`#TW zO6;9{5!6vk^?tRB2GFhdD2!+O|BX)(?#ICo4fNbu14r&($c}Qn6@0|^%c-6*Cnqs; zQXwy(%zSc}CwATCl|c$DxJ%Udak@M-bfmKi+t41&)0AFTcNdm%4#rZNZs+%l^w*-H zvhfKResDY@{TPTD-f}990v<rpYbmC;efm>rMll<b&|1AzTMnu(%ocsGaO$FeNre?P z&2@lCEU$`o|0eTUR$7N_Ww&&vZx9gf39paiu8o?<j}<RZI`M|Ln#wM)V<0VJ!fDYj z2hMvLlmX4NXQ2@#jH-8)mn4i(gPX$qZ>nOR5YPT?n7YJ*V4!Ck0@KiDpb+f=vk%uV z>-z3aq5~X#R2|_-*`jqywNLZ+d18GTbWF|j5K+Gy7Snh$JeR)eR_Q7Nxi}Zy;1aFN zd2ZqUIgy(a$5V(=UI84AGfg7X<J$kMU~)RG(DMjOqC_Vf#345f-NhIidxJYbGZ=Ki zyD#@Qr^mOz7y2^_FsQaCSi+WG<T#ClWBxbv?`Aww|9Pqq-3zG|NTJBKs@-<jV3xTl z-Hi^Hb+#6@#^{b60_7P*U5R@p4FYPpKJC`E<h$rIr>M=NhVvod`e%d7*88_7F`=!p z1`s-L-v(Wl9n|Z=jO~)a^+ZgH*ipO7fMnF9*_BM~SLErTzPR@@2Ah1VdUw6iaM+S@ zQ$7T>Ob0AsBVg0Y4W9nXgAIW^HFVQMC44Ks!%4->YkUXf@t5Q7610N)Pu7zq>84r$ zKpZjKP`>-xdodVw*B@f*Eo(K~5l@fL$r2TC$Y_vq4f-UNa*(>Pm1*Doswsr*wW}MG z7b}Ak2?_Sr(Bh;2&b@r-3khmHl&`&QiZY_Z__~m=O2T{q!1jy`@}uwc<T1mS7UMm{ z&)%^HXGU8gL1SPk+LM3^kuoQ6W$bbbj;@q-QsyI-bPx2$OXz3=Yt~sq%)MTw?C>%; zKuv=tD*1h<R+(e?3J}jgqxch`E+>(M8h|<sR<P{wCAj8_N$GESmgA&)&AJRYWa@<% z-<H4=8@gDCEQ;xKzPQrW<$&XoyHORC0t@M2LG`oA0BSbwWF{z4)uU5hk%m$E8h3PC zjO?4oJQHoKTHp-7T|t~ayK#Jx2)*ar=W)%r?PnfWO5YWxS04IC1QPR>*vg6Ibe%bW zG-oidf(?c+yx>*(<aZkDF|VW||ArAzW2?WTX0LvU1P?=;@8!^^{|B&q3=)4k-B`=} zP9S;<M0anlBb1kp2`mYQBGFu6UbbBIO0vsVA_3ofsbUh5T$ZbxI&;GJ3mYcBkX*)& zNDHtL_v9gk0z}+-8p@?nl6erwVGgS*>)UB0dZ0m;3OYI@+!%O=0uqsq_@k83k&Z8~ zMWNIhc<Dr2@>6Q9k&mPEp0ak$Xy1R6&mEqZ{YroHQRmjN+{n(s%_c!RSiP#)!@=@u z{U#%7x;FkceL<os{_C=x^}tBz(c}7xu1pz8j<m&;K8fGe&Cc{I=5VAq5b568$NlPd z6Mpax2jWg8I|^$D$(<47WXRwzInerjyDNH1XY;BsTxT$k*Scp7Sjvt+s&cr!8Rin$ znD0W9YS5{kxx`fCu<N*@8`LQ<<V5Ac1x#rm0^7_Juz~$myypC<Aakmj=>(5g2zlqo zRJS6gtr2{))nUFp0yp!Vb5Qg}1$H*F4>)UUJN+LAklPbU#~*c>RO8sF@zSNXV*lS0 zPz69Npe{qi9y+TWh@0aX9p(wvY#Pq~svX75nyN!c<4>yuRYs9szpBl=^NeR1xhJB1 zI9`j(&DPWQ#6dPq#W|@RwJF5^-+|q20zkn(U+~Exq!e@<uw6@?#{6vaQL+w!nM)0H zm`+sN^aKrWzkbqYe5l!2cCYOOAkt^ZBtW>GXd8q^bVri%!0XP;MVGdum?UL(i;m+M zu+)9uJmlrY!E=DfG5SD<zHQUAn|Dwo-d#PBW%lz}<EZ6Vk1<?WP*W%X;FIeV)QY$i z4EvlU+G4PiciIUy1y_M@Hr&(tXjFdA@h_nwj93wql~$)cZm8{wnPta?x8XDCHAH2n zO1be}J2fo6G_a{X_~GA=nI$29_z@}4P|$|$!7rK<B0PA?S+wI6Cj$CXwyIr;^E3eX zUJW0nzhKL8;nI@&C7)xavhVXfeM8L^aO>IH^Ty0E7FzeD13EhyPa3u<ps{39eyytL z5C#01|Ks#y-20UI4H2#zjpADfK9qI{?N0CWnZs-qsh}@12>gizsG6Y|{L1>6ZZTX` z;<v}se%#}i&#m$+t-QiYFHxp&Nbw{X87JNEQmEeho6(ZRr6D2<nx1*}8)DZBnX9Jp zYJ>?BaJ2DaW;^Wyc55{X!rzstp56Qh2#R{wN1l4BdMzTgbMJ$VFsn~E6FXAPE~`}< z|8Qx<xXugz)+tjCw#;_w?opW>)Jy}`Z<V0ajYL1FNCbLX;|wa^x!^L4DE+IP!h*?` zxYzQ5#swuZ;oU&XJ))l)f(wih6VS@pf^(7R)%!6A(X2)D1_+w?H9X4kcknt3;1C)s zBd$*$P}lLr#8Q+lE6tmM?D>pBzXHdo!N^_ceJRa&NDlSM+aH6s-tIx4G~EDfV?H}f ze=Z~YPdXTtl^&p*(hhlDkSPBZfIN5v?74XmCE4cRS)w3pA3s;smKuuj;^Ox$G2=z$ z|Gr#GBdRD%xA$3PA|9%rwchF+^i7nPOXQ{OlXp|D!otZZ>~%tZ@RHQQHR}v8pK4Cy zp@itYmV-?eKj`2X@6c!*b>Ec+k%|-L2`yDQgQQ!P%a@U=d)m1u2@mL5+P|)8Z>iE9 z(B~C$7WHM2!H>X!q(oya9S2ZSZB@%kwpn9d8{`}T$am740@#K_l_NvkD9pTA-XX!e zeK54u=n+B>9)`^fDrY&yGzHvq)}zQy2ftWpkXXa@tIp+CZ__NYZdjfZ{ui~Ak}=E- zO0ry$xBk0e6AR-=MT%#5^kZvd5Kw%eWg!~+@S4P}wwtH`AX0a_s_8pRUMNI@o|<6W zT)*t*uwJUe`NPFy6{bN{F;tfmvu6|;r!US<Ti>0*1}I<gc__8INPqwkL0wIsZ3sQD z0riEGxSbMtd3C&9^H%KDg22bk`>1d6kW#2{&1XmpXb`wrjH2^1>rk&)<%c)};d(yd zt;?Gaownw!XWZ82r6s5cb{zv6G)znRptn<78<{@<ofAffg{D~(0U?^muulb~-qkOd z%pq#3HwJxm!i22Zd2{z5ecwsGZZF;>*D72fRI`3=@!-7JyJa|RQh^%)sXHh|D8-^9 zNZMJZj3{oP+*NbxJB^5~pl(L>UoICpXX4*FHXV2@TcK4Wi6jpfdII-M-hE^uBs0JD z4BZ-|LC<$?Gd5fUT1jceW*(Fs8vxZ(c3tl>j*~#@6DIkXL`7610Z!SM2v>X<ay5~I z*1JbM&{A+;%3BVJQFPa5O#yiAcwySGW)?iqJZLvgFthK&GF5YJ6y9zdaX<waOvC59 z|E^MAO3)oT3awC7oTPFWaHj<M0<mRn-SmDLm-mWU%Tj8X+1oI-t6x~5;PGT^84xpS zK|lDUZK#(4c*@$m`1qjVvFsBjWK!%V-^9_IDyU70&(lG$xhfQKtuu@DsR^Wxl~>c! zS5PFqHa_k8B_y+d{d9b&37=>ck+H?s^jshR3|M+jc@41%ukKsv7C8i>7N(YEb2^`( zrjUHWJy4P}^KR}vV+``d!<6+(8$^|T6Ce503`V004Ku9HYTKtV8%+Bnt<mXF8A8nB zSdN3L(!QqT>M7{sYEVHd0R1z%nvO42vV#Rv$5azgeukoeYEaoRK0<VoEdk?P%;r|{ z9r+M3{rSfAT30D)@iGWF>T=0Naabry#q7r0V`k4>_?NBhHd=i!62*X=<3KmFtb_-M z#L=<Bf}XEFs_=VaQ+qNFPFXHs_i=Vcz5F$$AYGhUb$3Xpu%13f2?nqBpx*g0$H~ZH zIBw=5$%JWVNNg!aX6v#61OCV)pf@=00AXE=+&6q27c%S*ooRolD%K|F!=s}Ac#M>E zKr|e^GLx56Kr;rmFD-Obz5FcBsll=bpj=GcXU1A}&7Eg$`cl+r=K$<}LnB4uAd&7- z)bKpTQzCzjf#jjQZDvqoOv}G%RIA;zx-BARtXMm1a*iC3qhr~jTBz6cB?bWxe7C?U zMdMnFz(1&^YOtH^o7#j~O4Js39wfHNqwjWyZgox8&|%0oQmXt>*2r+>^0CF^>xbsZ z0vrE7UJlqr<jzOTfqU{&&TH|em@7@bCN~<TUe_>0M5EjnqqIw+Mc&V|O8kvj#aj~# zowrwj+@DP#`JPOf(Q$m_(rA;9LrT@I{r=}(?kDDS%c4<T-zXel)rTT`D**hgE4(3X z+cE^{Pq`%$WGvL6GJJu=$b3Kfbidh!=&=8WNUJY}TV@C78>;qtuO63f5xq#X(I9yE zlpfkSHp>_Z$ec>-G#exQ+qYx@GJ3m6FDCkPjwW@A^?}Gq-VN~F%e#(<X{w##dVOo` zI|ptzgt+;=PpHjx%jSxw(5J0xM=7_wvA@zOXbps_p&A!5jKVKwHX#+Lk{c~_2Axvb zO{)uZn7+w7caJkcodI8_rDq*x6tM@(69B-+U~5a8MnETFp=Y|lSKz(TqKqhzk2mKe z6uo%lm8n~ORHO0+VNAw#&?#8Ps9C0cg-R_^z&j$kV6H_vdj}H`t--SAr$0dtjE4Tw zI+h#B@PeteYM9{0?_k1Hr2;)I$B3#Eo>?}qrrBg2R8nEUmLxL`SOR5TkT5J-1HS{i zH0@GgAps+(WioF~!4lY372^iD8Eqm4Ux1Gn2YD@K`t-MobOxq$EwtU|;PK!+_Sze- zeloY{IMLQzun`N?W)Q8%oIbm5Pet}YRZ=<*jA%w^_qd6gxm&g`8Nic43#0WMxZ@Pb z-01^r-Sm8tSw_>4r|!Y^kiXU|&*1K8XJLK+mW70{Z6C}ThF2@xDd~E-@s$uo>IF~q zg+p`9dfmcMmL^;Ib1k5Ko;g^qzKwA>vt*tsUp5N6Y#m{w$~Ozmdx$GebrOwE+u`gK z3i1t)E{3VB-cPy_8w>Fp=)>^(dwI6h0t=ibU&@3CS+Efbpl~i?N+v&dV;q3xOi$MF zH!hENBsz;O?Aj3z5{@-$5>3OmA2+NXM}pOJ_mJZEF5TxO=+IMqb3nErV>|5Lr))tY zu<0(xJDVi`RJtYDdOplHbo$~tE8?_w+b{UH6PmZp2_}omS`ayI3(Yhdf)ZKV{K|El zxQsu91*G5~%jSn!V|Hb{FrWU#-F)Hv7u7vUHF6RXEOpQx!WmUH*GW1z$k!yr*1|Rm z^DOubbC1oCmJ)rBa3*h`_zTq9J*I89H_M8|^XSb=sP?ed)rZRO*GAf*CERu;Vb_!{ z-rio&XMm)H(XJv1%4Jpf&K+8W?BP{tR%dL<pi*4fci@b<L9JHH71Gh!!Oo)t!NgF~ zRg|d1@PdR7U_{s%s*dRV0WeLvNcF^jD{x$*8VcD+*N<Gbg-mf<l`<}(`dL+<I+*sS zh*sb}Qc8BcE?db_IqCbM<_LjLF7(}r<N1{Z(mkFi!eI{$Q^$fqBiSa)^3zTi7`)a1 zjJI;D+!Ll;uh2G07UN_pb(GF(pBr5*uEHjPIP8Kc>)?i_eX{Eiya?gMRbIe4`_~Kf zT*Qo6@LpBjmKI}zx9DS%Z<s|Qeu%B~_pLP7KSG|=EvUPcquUejTb^S5d-U~h+Nj8Q zCTw2GhZ41CKQ3+sixtfwc=@mENtY<ZztZ|~Z5)1Qj!N&Of*8*LA9R0s^4v?;Id*qY z%YlSE(5;3=G*8Xvm(NpNkvSr`n?>7=rhP>wMQV|X5v7zL2QwQSYI)VVZa=FQ)v09R zrIwn6&Q4L<cjdBl6QC`(6SdamQ7g;;QUiE4Ht${q5nNE!vrsTv4!$rh=yiZJwlwsP zYMkg!U{-I($=4G1Mpudq7@@Lr4*hU0_A)h9A*(VYmLlWvicD&)wMkWuF(%tXN5Rh~ z9lwN3XFnH&&b@jCiI57<wq~iRI~Wtj^o*97uorF9w{z&UKjj_Hjc%qvWL=4emO_() zV|f%!7Qsn+?Qf?^BU#^rvbTrk(MVGSe5`RHfPfAL?k}q;U5h6kM0qN3RHO`e|1i`Y zp^SJbkLD#`BVP-0m-TEX`0?8X2Ma(eAMk@jB^yZ`VifKv=N9+KDCsbw(el`!WnM^Y z!+=DHhF9dwC2XAB+8GKG2f@62m0RN$BJQ2tb$_E25TbH%JhqQL3C(uO3V!=N+3^jE z5FP<(cn9D{YXTZ{(_QEWx;@I9!7?0VqoErhUv5IZaD3R||NCOH>6yu-6^#*x`Uj+^ z4&`|~&hfnJ@6jDU!=q~_#bEDi+HtBhhr*n&%e5_iQBVh=Z_bU%Mi3-=!n7JZg|hya z+;!qd<pBKe`1UJfUO7cY4_8qHbqf)x!&e0lkY`QD*h^*svfknNp7k*OOomFC%vdeO zczs2AJi{*StXIw)i5w3KL6Z5(+^o`uQP`D7yCv9_;@v9#B4Uk%#OZMf7-VvR-(W`A z$~Ql9&wAy@&!+PkVb<T}gdqV6dHVufQufH2z}!m*Cg<OR*z!To`lfU434!8?YA*BH zsB*-Nz#X^pkWMW&<xKJ)oFUQRyPRyrl{;}zHdxP+mqEW+a=h_LP1xnkQKxoH{Rv}% z`OI#f_;`k};5m`PltD&(;EUa%Q<5+K$mVI}2%)%*U##mxwuTW9XrlwoyKZsRI~6Rm z?+Y#@`6{lj&CCm2fybZ5^N)~wo8ZHp{9^L9od;szVqbR8zCL%QY<~q>TMGFQHT>}Y zJY7<lQ_e%owav1`c7#5T-8Z3TEG$E)_da?#7V8y1`5yiT^WrFU^<{a@np=p@)ly5< zpwwhoUdRx-&^5Kpj|PM{5GCC!GuS9fTzmrdmBo!h995xQ9{kqhCH(864%!0}S=rJB zUu>P-g<SKDSv9;llHOM_VrpatgB({WQ6nU<&on8MJ4k&{En)t~Wfu_b%B=S(>sP+r zD)`*RViq;i_kkolJZgUC54gP2-1}C>@VQmJp`S$<1&@q^vuAasZ>>Cb!z8h`8DMd- z#2X0u=tKlSGcC3TnVqyxnim^;^uXNp|K+JV8>_ak*nw)J+C+)6M`xmZ@blEpaAUj( zTwu^1(`l`&)-|I^SN|X~uEW!=&|{V9MhNl?ma5!8F&obiTcBGEXyGpc3rSmv2h&2% z>LNeUTRcHFLS06s>U`H~%pV}gQSI370kRq#DCp-T7G0ELCSA<>fu3p#teg{UpQ-xh zR9WVPgv^O0%<@%iMx!N!V(?J|m@Nj;)9#^$a}o^SI3UQru!j2J@zAfr<^efCcTj*j z6!j~kM*q=Lc}`~EIPRWK(m%irXymY~b&ivvaS2?)zv$?z)_sC;Y0_-hQgJZMNoxSv zU5@dI%Gr*=^LYkXP8UQpQ8cpz@aY7QOLW{8RI=_(Cemv|Jg8qogqP&+YV!y-dl(|w zqcyWr{ixFctC%EvB!ULIW&KcvGMExYPjG@QfLT%kNhzcN{?L<os5uPH|4S*x2jJ^4 zL^Bt-9%e$BuCnq_iL2Ktv_>}VT9r`F-U9ps?bXtGtBgo%+MkeeZ?EH*Vr-K2WfHi$ zg@@lsjL^nNH?+Kva~t>E6*;lF=)weqF6{hHsPdN2Tv<cqG7@_6`GZ5_F<Kk~#{h6C zz8Z2vz4B5ZKhewR@TWV_@_0J`GOX!T?G~|^#vW+A$xmoUYB?QTK98z6e|1Tjl|T`P z>O=22%WbA?+ce0YVZ=8I-Qh)rq-Y>*$<`I+j{hWXXs(mj!}k2HQI&~cVy{TqRj*{s z&h_q%-1Fpm=6<Cm$KwKn&45Gkwn?2iddMZbXq~td#YY;@zfQM2Xtmqw9`|-H6YkzI zYgD`CvPB=tumdgm4I=Z?fR5f-_X7CwdxHhlG$}ROcu3CKM<U@6Y{1eqRxIQ5P9qi_ zsHq_d@h?iB`Hu)KnT!<O#*GGdU+jg)LsO*&MSxf|eC%3K?t82Bxl6b|d-3f@laA<j z#~fLRg>Eo;V2Dov!rK?2eyj77)Fv~s9@(6k&UN7^_5H$2{?u{&f@9CL_9e@Cy>Wt! z;Ej1z_hZt!a(20U4+6f*w+f!^S8@G)A&qfyx@sReZx=xj<-XO~pkC)gBl~VCggqp! zv_ZPAguAcu-cSfF$D>}&`3>ENQ0V|o?7k;LFmiYL-<zvPY*wSp>jdtqskTfLjG6>3 zyNX@lyOl>i_Vgh#uQW8n*Fnc82DgJCN4{kB0qD3wd0}K3<ue5dia(!$uB*9DLep(2 zVmp;7Gn6W8Wv075{IB{hgRk-<M7Lx9knouhhumwFt`KBBoY#S4dO_1Dn{25##w_Lx z*11rq1K%nJUnN3q6^r{y^@*iZ7yJh?NT(in8nc>K9?nU}Sn?>qJ#V!<>3I{|+hEJ5 z#S%UCD12=Aaa;+7T~HThBeZsUfF)rJ?3CBr>D4Ts^B>igbAuU4|37|LFF>QX3Tfhk zh0ZO$q96EcUWBl_%(X0SbaNbi7iFx_hQ8))ZVeb28AMGG-7^!{9>kLK^+REe*uI60 zK)3D;M;Q`v6IHj18Dmyu3mP5@A;%StNl{5hYIU3q3J;AU;y|!!W1hq;(Boh5B>Cm6 zaP$9pho&k1tBx>*XKa2`{!M!*wAmSj4oWdSg<fLQ5_ce~z$qVsKt70p_>29xY;gXo zN(d48agn~(xSq3b8$C5u=fPdyV4Y(T-(oa+k>}1R*eQ<5Z{&0hYU?r@9~4x(rF|0Q zL?H_HEy@rZ_BMd8TD0>K3U0_YHE3z&{P9x)8-gKsZEf0-vZN8O2*RsJxRAH#xBBaR z@B!Lzzp&H2Ox43$4Pq;klM|$$$ILojB*!=LVT!CDcnEV<o2iLQLf70;xWdiq`^wM` z(1>3drQs@oUNDBir|U;sdD#<05%n&33{X2@sqb?Q<%uGw!m0?=IhW^>oAS|;O?Ume z1sLArV&4J1w=e3G3hG`1!{Q>L{Xm`G%NCzftn_An+5@roPE#I)QHKLuY3+8C`a~Ld z3(Z68hQ)iu@;+(sNGmHobz*6aZCEW*?ho*MpU1^bz58+d_gMMgF|t9*I^|)5%8`fg zL;9&bJGC?=0U`CnHl8XBRe+f?Xr)Ye?44^irQ@I(Ket(F`#VH|%oNl;k{}8m#T9;? z?Y2cl1?G!Z@UsmmW#Tvt>NIxzD{scXJ!V%w2!3c56SBVorqF9rkW!wFgk3r{vrI~v zas2;_zE2)A&q*}${MOmp@lB)Xe_VW5{9z5$p=Rd>7pOlWY{y;M`=(LO)lK{GflVY~ z&Z1locS!rnz%bQ8qp)u@W1K_WGdl3FJPLu-_AswOq|uB5DVda{Ww~B?;G3A{`->_m zX@m~Xb4#wwdo@)Zxz1n<R{D)Jp7(pAe6=Fm`~swjZ6OA7tL#OVw*nvRw*?af9!xdY z{_7DCs#cpAF==n!6E5dU?!lung|aM3S*0<tzq?{^2RX>6EViH1suqYiD2C6YLQe)) z_v9`6q0{r-{g|`6V{u@HZ(#m_`gI!RpzV1udCZZ)^+!n7Ikt*vrXbAb*e;VKd`6sK zkqi#*Fc8K@hZ=(kGhpz90EhBrh-%-8Vco18{6#tvuo!;y-HLCjCYye&7;*rTYXQ6; zfE+xP>;4INq-`0`<kJ&lC5v;&2jZL@JvMb2QqUOSP-Qs-q=r|nT;Lz^aceqr{?f&w zk~rFV-7n|I#o`I*VmbaWXYbl(8cNZAHtIXj>MFh)&$&Tr<p0Uyo_7*xG=gIr?PBCv z-O`HSNP$U*CB%{H&ae@>8y9-)Dd#7*@eMH<ADs_|Y{U>A36t}l8REn&?JgqQ>*%o# zI4S!Lp$Y10X8mE(02Cdl-W_DZQVm?Ch|`Q+4!!#<EIjHm_WDr%nyad@3{S^iC~A{V zIC%eaXp=a$rncLt>O|h3WGq#Ag~Hz~<GvGZv~8T8t=iQoBIjj&qDfqs2<0*A%Gwi5 z6VosKUmA(d!fR~!^@W3vr!Q!e4u19fDg-eg=k2px+!jalR%_i5IH@k!#)7D?2?k$% z#&SeL_ZS7T+^S&hd91#Zo)RQ<1{DbH<@e+Cl3-E$NXaEmlR%jA$Y_V_XK=*)mva%w zJK*|31^!W>nQtebw)l}2v-9Osll2^pyI*Q!A`=1Gd7Yu}#2qmx!ZkFuMfcFqc*$er z21-T1G3)LSk8;c*jOZ>d;A;ga$KOq4wQqT=HJ)ksn?1rEeAIbER5<NVz3l192>AQ6 z{L^n+UPD*QJQ{9$tC?+UPD^gnwSf$Fj|m8OA>QdpCn$uts~g651vtm}Yz+uwkNLZd zUmuRJ8}D?X{A33d3%+N3A}PGsG(dB+GF5`TY1k2<^F9tnFBpe73dC!Z94;})^<tFV zuXfuiR$G9`RFfx(o`viiu0`wEriX$}n!I$|z%)r1TNL>kdH-+4$PZEKX8BD89uVP+ z*JwVSpvqN)nVu*mP%lF~IJo{~cEq_*dPGKxaks(T-#is7vF>E~O4p_i(5C22h@e+G zEWUiFXkU|RUgdE`+X(02Pe*2ODc`)#iN$-6`K^-4_I#4~i|u-r14eLWiqMcEU#0Ew z)+GG8;6nF|lyLP?R?F66D2)12|ISbXaj{u=0mhd~_}e|Ppl?+la1Tq)m+?KBQw!Y* zebx9sFPEKC4Kbxmk9c|&{pBYb4Xpp2$T(ARFmxP@icbn3d2TrSjG3|&otrC)VOS}$ z`c00}pO|2a#k8oP0tYNhdij!|snx%EQ>dgbt9ekWbe_=>gqSSAhpsl4MXv7$HvWf4 zRvh9PvBYAGDra`S4!bk({{YMDNv9qN>uSb?ovMP1%nFVnob~e(9lM}WBKwWJ`mn~P z=}QS^N*}ZjU=ShxV*5<hKOu(Ox|@>3MRR>c@h9Hya{N0KlY|^NS;IRUgc27O({KEi z3zlu!H@atT<R&QF?jMFyVjVU;=-cbNkkUQF1QGijRF9g#WJAm7nIp59kz|4t9h2+D zYDwsy@jwtIkrA>*xuS$2_<v4x*@S*oK~<d>n_FCeW8VETG^8VGkH_Cse3{4HDtkp7 zH!qaQG$Ip}wwO;E-*rRgckw$iF?$sn)P$h+(Kf33W!p2)IfjG<Bzr72597;x6ZNfu z+jBLLd#fsHcWNL$$$b{GnP*83N_N8mMFq!!DaE*k9B6{b5ZQ_nP4;vOc9=;V1wC38 zf&Om2r#nCs+`D)4apTpqNC%V+ijgZp6_1`<&Y8w&Tg;jkCsL>8N8*557o{e^6D<jb z=Q<EK*R$0ylXpD)#%(_2U#8w&T9i|Tx47R0PY%5H%e8N79`qpU)_hr_3dDT_M?cT* zO~Lvw_n>7nP&Hv1Gx|kyD8#PqW<+YQi`=s|Cjxt8UBSK$I8ayr(ryQfRpeo{jz2rq z|BAV(vPB&n$TzXjSb>Y8WfSC{I00z76#jzj?lYR+C_+-$`6UyG07UWkj11o_NVNWb z<jy<nf>gx3CGuZmneE<kc0Z`Or0}A_M$VN`Pen<3h<}jh;ww5kis5y(M}+ZXzME&M zq;CNWh#Jn>0%^VPo}qhL^Tv}+%Nr+lvsxrB!9RUgVQaze{C1R)yQ#^`J#Nsw1pgyM zy#pp8M3W?gQPDU~D)8d9M@|R_VQ|MIm419PWEZV~QNB2G*-><@^A;tv0WR~MSDk=! z54Qs4S}E<!U<$aWP4py?W~^SI4<c(y-RN7+8<Pu$kbuK4Z@0}IL&Te=>_D+D4V}-< zR*4o7l38=g9Zq4B1yJ<<6rawL%PZSdWz>htL;1Ikbg#V>{FLhHKcF>uL6|dOy%m7n zQNopPT;B!$iZ$|pw$qim4^Y7dfv`6Z5!6@WndftQfh~mSA6Bw3aN_5KMj)uV0o)0) z46dTtC&>$pX$b9ED`F$=n0G{&Cgk+2yW%<0ZIy1St3Tny7ub;;u$@N}l=>;x8iDcu zk)Ln4QSs6+dK6S^mxDf|P;nA1_U#hvLbJt9@vvvT$UMD5FdSqI&{B(MwB{r_oEk0R zoRB-OYQVv1J|c`Akaqo28DQ10c|b+gd8iFsc;$TX9IP^IuA<@p#bUhN3E7JT2-cvG zUJ^M(BbBX_d~UsgP9X&cEAm<GybANhNkzN!DBKC2jB5G6eSRtQfCG9@z9K~AF?i&E z?}P-ztbK2WZ<(XPtXqOkN%z97V1ATQ2rgf>2LO`k4_`JfdSZ;!4#NO15`pEqyA?d( zMaClU2!JtCIBXT<_O6p8k5;-5w^L~kAgzOTBM4|S<P+L-s<mE-of^{LmjD_<V>%+Q zr~|(=9HayyiH6A|=L4XHC3nli`czzg-k(t$K~+^I`+NnFWvDHR#OR#rg9t7dx45Xr zirKl9QLYO0!U|_W{}Lre*;K9Wla;LaSd`dz0nMv$5nTy|5+i0e!POl@{wPGws|w1G zZ4YUpC22tc2I?58YdS121kT?5`_@{=q7HQw%@r<uNAY^Cc(K6&0ZqZV%sL-A+ZR)F zVHYwiG3#z$C>2Y8U9kkTuf@w$FV5TJwHpqQ^%fC`1N-71w>qlxE%&)|O2c2RtnTHC zWKP`<$++Z+Ch7J(alo?6#wG?U3Nmsbq6UT%^PGuU`dx@;<dV<U3X)MS*<0O#`}8lI z9&QbTCI#Q2{FY>)z17CBL2yi6*ep}(i;4ELDxHuT5_7~s<}??Rs;hUlh2erSR+$k> z0B$3|Ud}oFyH>_W8m=%`=ytJ15=|v@ZmL~r84GIR5;{GJoi<tcrFQv0+zN&w1&@pC z@Io#kIfRo@B%}!ml9&!71dV?Ci^QJhZTK0VqGe=<$yJ(*T_$Vg@C0o1^f(dCC+i4s zqqeeCA)QGC)13^2oP0e?=nBOw3iAe-Ec=!>MsE#U|8{$Wfz#L`IKfv{#eXO!_a2%~ z)}TtikEXJr7TzHQoB=9vAf;PNMY-hochO5Gx^3X9g7ClruUJD1!!=dV06r0<xbAM# z5SMzw#MGt$9N#}z?jLhZzd}yf-e2w=V2zd~<VP$c!l2g{{MXVk6OJbx2%<1V;Tvy= z9-zq}*XDO6^OVs*I%L}Y#7_ueg#xJ|JCc)EjkxfsAA275siG^A2oJai`KbqvtAX+f z@ry1B$4qR^0Zx~jZOe=$g7@Fok0JxDL{Q2doH<W<5?dj}B_&A-r0pV0M<{_Vn?y5K za%xzb1PGkNay@0YEHu2Sh$pQ!AWLhsm~tBKv#F~TOmQMAyLBtQCV@yW7!$u!e`8`_ z1jjXE8t9ks#lAVX604x#R*ltk9DXM$y2}SSG8Uf|!M$aEVdK%)VHM_TAii9ur|^J` z1)NI=yEI;r)bee+hjn0(Z@BoQa%h0hzWv`8j;}x!`;9$zDQ;FKFS2VoYVKnJdtz*N zS)8uLbNqczMkeBOkfFEJr_N7j?W-L}g$spo@!Y`AieK@}o5NtWBsLR8dJh1|KVh$7 ztFwwN4_T<8)B~hRHdmET6~YXW-QgimEmRY@SC`(6Lz}L&<f8Ruy%QXn>hBKxAz!Sm z7~E}!(!{XbagqaHprD<V$rlo!#)xC&DF%w`MqNh768-ukcTBG#<mL+<gsU63>>7UM zzwyz;R99&d^1ii|8+@!LDlE~!j0WMa7oWV7y^<GHtL+p#3ea`AlDaHM(1HP0C3yR9 zM&@vKKt&8CWL(Sl61Vn{R)PbvKydga&<lzs7yV5Eq?tM=J`XMs{o~XoP^cS0E!sCx znSbnwX<Fs}>^ky>8aTc96ER#cuCiQv4C~Qrf}Lq(jI@s5n*<fpF%$gFv=ZAHSuwcB zqS6hS@5FrR*yC8o`RpaFA3nY4qCz7AuYX)WxIb)98;qKr?m_$?CmP0SEsu8{v}^Ys z+Y5+>`3%^vr(U78?)0Xn<rm7F#+m)t`+Zge5yR=>Zig9t9!voPK5C+mv}mpTT4O(% zw$a}zbP5pXE><s5a4e0)Zgcx&>OfUI)G)~LS`J@l`Sv+-J%gwdN)W`g>!SlgPXilL z+iUin=_ZpYgx8Su;-wKy#}zUB1Ko|*-nx)xN@zZFt2`u`*(GhZv=f6MV_L#A%|Uw^ zv*>3jr?Y&0UG0qHp`<{8Sf~##(?MJ3MNrq~7pXz1Tb{9UYV(W`)zvmMj=mBoElP*Y zK${D7Q2hEEHamP5ca?)>Wv>nYmRkwR5wWc2M^#8+WBv*M`s$I;X6|O@&sk^jCDST@ z`hMp6IDWDE{_=sd+<p?UmD{KgrTvg0`ZwjvlWWXy=z_Fr`z$?3#(;A=_<B?>YA#XR zVKVZQ;UujW&SP<Fat2)0c^qH#m-4k8?}SGKFHhf+E@;^yx+R;=Xy@D6GS}JW%cMZ+ zS+Y`T&;Ct};w~@!{HW?K@F^V;LT=xZ?NCD8bB>DxqSfED9YMqZ8vzzi1@7?E5}wz` zjIradFwDP5_*?4C2c5JrognzOFb;`<m@ck;7>Is5>&ROIlGPGrf}?pdIjdC`^UYsi zALkYON_e2-{c<gj<WN&ugKwjrMsf9sr0L`c=g^_g3r2uXC3{3$j*p}_K{=F)tS_na zLK>FAKmSn<3DHT&*u$pvSHnoQg6m>kPK`ih?*e0AY1PGAtmV_QDrT2jGDhXLx*XBZ zY%v!TahTe`R=Y?QziiHVy?da)bC?E;P=6si6MIYva`h-8sSvUDES2a8R$97E_HQt6 zEqaA3U(siF?KXG?<=V&30AW=EKiEWOVSvZ+{a^wUp6q(-xIL<)<GG~<D~*KJccW_C zmd5<9ZzzoJ7&O?TjU7!-M`CS&E*QQZI#rU|qw#QQ;>m|}0P_O!W1lnmby4kvRb@-R zNjw57Ij?IzkYnFSCvFGQ-ep2h<njd8_VFBgpDtqSb_X#Kw+57;gRZ#L*l&?Zs^zBe z4KyFbs19m>SNf_wktqlafUii5rrmmJ**3XECI4DuBO|=E1#clLk)r+fs*#Ioxo-+f zup#<>;KTmHzSpuB^_#$eGa!Q10U%jwe_Q05s%BR|$NZFgnri3za-v&(iY-;7)IRQy zh};eGw3UPAb@T16`Sk$i{(Z2r0^D4*)bk`X)RiK>qmP=tWsb+sc>=ay5+fsVpTxPP zw-04@e13GCZYmSDCx_irB2dXk7W;K#retd{KOi&E1rIDd$Z~kFkl`+ov*s;h?7i&G zPuCFG=d|lJyh*mm%IgI2E{ec>WIDu++KPYXh8HSh=zjlNt<MddFnZJ`wxa?Be?+5Y z7qcCk8146aZoq?Y?Pv}Qm?oj2!({nBXMfx!>JKQ%9(u^wZZvH`rPyQQ-E-2j_k?rz zc>{*3nXVtDT~llp3xau%Rt9He`MIB)$}`Kl)^0#hzm!eQU7PqI<iHT~r18SeS{(uB zB51swuSnUyd+kXr)71^K&j?HzOD`xt5jN6i8uCTjs<`_Fo3<F0qNusfl9+3F!!7I{ zNg0ymtr7bLcTWYr6^T02M_0JgfG&w)F!x6_IZ6dDsiP!JvZjI?jj~4;l*m)3Az;Bl z`WcfzzGy#pJ(p3HQN<HMWd+28TCpf8fxpfAt1rd<8M*>(9j$-7(oj)5ji7|!I3yC2 z?#g!Opie)6jZ4%`6wyfimm3CC?qSo1KO&iVCpLr%e9c2-7Iik<ftT7-%m)03jAvr( zuNT~mW~9YgbY+8q<t7Hall{t#NL^>+JQB=+i*NABF@>a+E5>jY{<@Bs86_hIIs%sE z$SBD&J87zA^OzctoeVThcKnD?>{b12I1y9rDn}zcN>oHe=G7_Cg<YCu?P+K~D1Lq0 zsDCmkP+lez$adjMdlU2WZD97aLW6}Bp8;|#;7}&lX*EflT_3z~NLsQDqRVVPmi6aJ zBtPpM<GGsTzpto#k9`FG9X8ky9>})fGTGl>R>sEc!C8JYOJORNU7FMzf%(u4Cb-EY z2wEsyq+&U8pZ#)!IGYDpJEg~mJUcuxQrQ+TO~5E7A*^<YQMfyOZF~dyn6R<!f_b)p z5MrTc>&=W0kKIf+%#+s3wI~>mf_~6H`FQ~mgaW75SO|_ip^ZVf!gK*1nesAG(DaUf zl?E(TBykekXUvI4-%eIL&Bm4bc^$^te*M}nB|GQcy%dS=40#g*;g+=X9-=f5DLf*O z!`n$*{}Xcpg(<$ld;qT?L%~1|_kj~syR|?XY1h)jhWDB*UTo!)mS9!QBX*hmdrLdd zA2X-~=3Ygv-*}+`3)JtYOn6zEr$D2I^Sz#O@?qQ?+wrq=%xMGu-+YRAwmJnESP1`; zV?2Iw7X+B19GV;tUm%IBi!g)d6=$l>7Na%fs5o5nsRFXdR(SS&*YIC2bm(7d=GTwt zWaWqY&^!tRAf(4E<!1x&sCYF9OTeCwug-itxIP0UqkiazZ5FT$T2>=#4*RvZCEj%L zz=O3U>Jup9Y((UXv(awI-R7&s$jy+HUlGbm@v!eP-Ekm&nEipd$GAF~otUbz7X`;* zw3xYIeG9ONS-%2HWSr(Yu%&vPniQKz6IsDUa?bcj!nw%w5HEQ?<;hS3&JQr_?8)OF zuv2N!eA2LX_^PT)Z7X^=*dbZS$R9;Y3_aB-n$9lU+1VSYLw`i=#jszKDVn1{F#i8- zP$=Si**v}so%M3R-C}GDUu@Va7oq3^F<+Rnok?_DlZh06*6noH@eiW|_mC=y7Q4{+ zyEf@)$Wi6j&7ydLn!VW-R_fMIZ)*fD@PgogyzZEn><%Dtdwpph89rsLQ*O9V#r4lj z1-DfE6_NpWQfKZw@a-QOc{Dj^?w4zH@NqEjTmCCMCG>V&F0-uIDq#`CI+7~+*K5V; z3X&iW;X~;IKp)HYnXP^>k)zfGsbz{}sD^+8<pdW|Ji6cV!1fw1RcvWqhf6__gB5do zP9IV?YM2_!6F!A8oyH=H;&x@L34AS<KTUybAjY^_CNt5B1sklLk3^pGwf!}oiSd$; zx?=Yv@LZa^1Fej=vo15qC#@P7d0852Zp4S_lTUXgC_sH`pDkB<JO#Ht%y&Jx_a7yj zphxsyMDQq#x+v(1$Dn>38*<Qp1#A3>TA+FhwN3X+QcDo>#ZB@y(^uROl#UFe#ds}8 zL@&uZ&0b}N=gBjuZ}xZ8?ly=#ZK$xS++9J1&Oj9;Df68yl`mv?O8qB_gCKq($h%`~ z;J7H#;iHlgh&Gs!bs}vs65M{PMa+8X4>GxFcatwW)b!@qR;|h;!cnAHqvVDdoJu+} zzT_wMK$%w})+Qa)_i~`8kP2oJhWOgaa@LmZz=Cbp!{4ZwhiHkUofCgs39!B&K_n2n z9W=nix`iV^qnsTAz6CuSmB4BBFg*|r3N6HCQ%3;)vS$t7iDJ-{96BKxsv323`g4dC zH%AA#izsc3BPojn2u)rCdk@+QPAEniNZE&ck!%_&V=^ddeRf{WC@47yu&yAZ*{T8d z)i00C13o=qsUV7uM!f8?PwHfwDpCbXkGWxN%B0Jh*o5?%upt%%&?SH&JbKq5wP7O# z<}3O>atZvp-xmhf!r@Kx1hAKnJd%(?%TZ<y-Righ1kZA2zfDX(MpIFXFmerglceUj zj0HY#&`<sUx%SuOF#P0ud4HB3<kR9Xya>jP;fS}05X=~N>i^<j@_eEBaRya41_53T zCm9Nc-1%Zar=D3dXBUT!o0Lu=EkLUhKw7ZNzL?5>Efd&=*K|&uq;5o4_4MDyC=NN+ zVMgaYkSw$A(6*2R1qwBj>(ERHUvLue>#A({1iwViRpndWK;Ua8w&(9B-)|nP{y<u3 zC-_%R<nj-jd_s-1g0MjcFC;W0{szwV(BYyK$Jc~lZ!wj6j_HN>zx*PH?JnnhBESUl zYr&YhIbdJSLhVSp3oaFBW@?6P%Z9j*FPyOlcAO{S8Yn;iaixQyuWnWv2xWj7=E|-g z0vgMaZU!m3-43bnRgW@R-zKyMrL&-`@%xA7cj>n$-xZWlV*9RZyT1V+e}!BPvtFI# ziWsZ%YcOkq4RyXs*@0*2BepB*?3r3rT8a&szxt3jdJiw6I)h@L$^W;`J()5z*}G+= zb)QH#|E=e!=Vs)minaTS4$|GXHNWkRVzJzqk&TfeBZM8#U;C1;Cma){zwAERNZ#JX z&4G9HH#buV35JI17JkbP@HR|&>|Ukg69q7Ygs}uiOTW8K);juEE<|UhUs8+91Hwzq zX7(!xyOk6(AmLtkR7K?kx+zN1SKO2P%b;Q;Ep>5k0nK_Zz^{-~z!2Bv0yeMUmK|Mp z{49a;4y&Q@fK@5^c^8A`<-RV6;DuMu(S6D+YKj8%4sZS@co(5g#``5dC#=S}Zx<9l zcY2|pokl(Pofe>PA18$z<5q`1FKk98yqZ;%3$1*0)0j0w5lxA~dl#%;Y@3--Vd7g@ z*Q5h+8KsJWl0gP^!#VLH8(KiJ!Hrs+iWzs)1k(dtP0&D1uK`JwH2ltp{)wF~V7c!1 z_4}b8MLulZh2Rj~T?&|e!eNBUz$RkX{oM0V(Rj~lH!Fz#8rZib)p}P3ua4{_`oiI} zp?*Rog`i$L$ur?gYWxyIVu;vGeJGXsQZod2*QQe*ZSp|VB7Tth1UZE{f)d@E?)?d* zKYx)mZA)YtRD`);VWjiTqhtrIF0j&fj^ug7W$6=^xx{U}^YD}$06NtR2Y|56*%BZT z2ckLpL!0o(H}?YWf4G;bWe3IA2sJs6<xf32*YnEaqcGKPx<r*pjFmK!3l0yY0p*m5 z3wAiHp@Tr_$fSZ5LX1Gg2%qHEd#kp;nrc>UnSWq8bVcGMt8KYEs<E;eJy)LGEREBS z^JJ|NFvaTArtUesP<g+H40$T^YF=%v0Sh2$0z;cY|NC(JE_z1sKSt{S@(NS=sxQvx zJJkwV<3&RJ^-1O|NP+KZurbrODCvmEgZa#;qSIRb<eLI_JN%x>ErB=tsf^5syO2}N zY#5x`09t%QT~dN&k;&c|q&{g(U}TZWx*ZCzH{1{i?p}p}U^^5K((~NefxBIjw7pSc zwLMC$ZkKi?ZuOf@UdTv?UJ}B8U3iRQw{k?3ef?O$SHg70_A8IR7^iYxx;DUgeFC%C z{0(*Erl)e{msyq+gmY7N$#Tt7jDBk4J(z9rO(*s)vK|RR0_lxx{s96tYsxUA$Iz%8 z9|?^}T>jS+?ffoH6Cwj)Sx7YsNM$=D{79)X<JfQ|AV^v4>h8PtYz_WgZ?@;<gQhH= zF;7%r?2DHKA;7s~aKiLC@?<4mCRv|0c-3MoT4LEE;=!m>?jx2^b|EJ08BUY1Q!DPX z*P$|^=3=%7>K&#eWd<{9B?0g0NSh<w`Co*+2?2Q|vIzDLl;ID$_W|sam`*z=UXqe+ zQ3H^-m4v#qxvtH>$f8LKZ;3ib1^d@4y?ds7Zf#RTXrMy!xDGs~J`$#QMZ54mq?e!A z9G_mcfD$&Su5G$s(}uKH1c`Fi1Z6x`t!DU5+wu1dLS6~=fqhnS;1%qC5ZPXHXt`;( zG}|p+GprAS;})Ll%WmwInw=-I17*W%CqkUE?2ZqAOUI~a(@}-iM&R#HEHDR3<5m7I z75Eu91xSR6kQDOqDr}!)Eclp5D2T6bNUf$+i4CNNi#-qYX9D#%L`qmrP2*-?!*FUX zuq4!<1BHy3^KSV%pAWLiq^Y3lB#iH6-Qm#8EYC_oph?26-Kx5Bj7Kb~gmXDr5H*F^ z#QTa@dz$qU63vv>RcRNag>H%xP`3Bn_z;~|Z~Juy*sw;fjsrl?;r-dj&~l_O!*gD6 z%1(HZ?reoIq{8KI+DvI%l_a1>U2qW68PYb4@I=oo{3fm|!}AO(BzoIG*(>H=l#sK3 z_RKm+5|F-Ot7Z~90x_Yi2gM$9KUs9n**)$>M-e3p`ZgPFCVxg)!U30(C3lFz@J-J` z$-H6(>l9jId-?*|YOPl$2k*eGj(Vk%($z(X#I{occ1fbhSv2m9iBBfjx?c~wLcDwv zY=!dmyGOC@N-(aAV0dlhJ2q@Z?`YtnJkvFJp#_gBQi{_ef10xHlPINgKGyIxh<5l& zR#F{k1AbO5Q*Rv=6U=ZmxKukvPXvd~W)aIWx|Nbn{~uC-7hOgF3uB&x)n_Sr^r^gG z*foIMQ}DCgH>CLrs)Mkf`_p?ogyrQjaHGNJg=rjg?-VQfjpbWqVG?I{2ik&r99lrk zwfm_}&R2xh#@m=m>1pZh=hSpQ{Z{PjUk59$s<i5M3(hwjq&L@PAXpe04=Qxq+525v zg5vFgLQqVQ2QbFajQ~YJy1#zWEQIr!r)o_*n}{rfFL*)SacYVF+<bS9Om~)qS(J^a zJ&Id1y->0HfQ*=DUl^SFUTp((ZeV^?FH-UptbbV~oSA_QxwzW4>Oyo~C~A3BrfDXu z=C>)STK%PPqM%4ZJcgeU)yIzYet{8#9b%k0*d^tN$SK0SZFkmOw+p%_VX`9>Xfc1P z`$_rh?}fKEaZnW~)U?_}+a7mP`~Rlo?F>i_^-Aj^)D>Iq36uyVRK<!|m#&kINK)#b zIIcCrtB#*EGlWTgv0vOZszJ5G`k-v$8PnljziE@e(c<zuh&>N%{B=eb0wSMkGC?6r ze}7(h2>?Bh&AUW%m-!J<HW9UGr0@bnxA3cVi3+6+k`}(d^*-hDSYKF$V%e512$$bu zAFC?2MG)-Fq=Y&S7lTV|5Xl>LFv^o=(tDZxz$woZe=^_ZJv?!8n$6=y%5yOx?eB?v zcFuxz$z(@TC$_v}*!%uh4lXT=f|sPg9lOoYdV^fQLx$PAN-(>X53C~I(Knf=Ag~KE z#ZxKtLVZq%_AmQsThpO0b*Tg0m?%uCH-9)Y2&k3AMTsvIOqU~0Nu7qJD=|TlLO&0s zs6p5~zfHD5A71#;Ec3pOW)0W`lSV=pa2)?p!j5nZAga(L18<RiW8_i?8lM;~TRV<{ z7n80!ET~VT^camHe}O^{YKWD-ShDa_F~v?dooYz74xhc@cJOU44N|UVYap@&mMIA^ zyOl#+K!<h{fwlu7kwFVC8U+afACnff92drlC+N>$Lhij$h$%lsr9cA}B8WUncGG~m zpQxATgn@rXi&|ezc-%A0lbd!TS?P^WvWqnAk9(akU@nNE!32N8cHioAm2sn|O5j@^ z5d-E_SzuOXIjp^m%6oNY!8+e~I6eBYc1oI+ez8n9aO3w(U$#w))L;v8Iqv)SEU9jJ zBZd=Ldy9P~W5GJnlz=V0o$(0H?9pk0l!Wq?(0T74L8VS+PW!*33$9<G1hK}?U{V=w znK4Lg&bc$l1iPeJd;|HcLR-<>7Td*Dz+;qdsHJ8KCl2hYQulA(uKCI4&>Kw2#D0bN zl|lgu?7k!wG}-hMg+F#xFP-HEGgAU5gncTvoOv%+;mw}2oLsPRttmg414ddp;x(p# zYXFSwig^gxJR$z$$c(o5j<p!}8*Q6D9P%TeKc2H|x_1%NueY}90LfW1E2J4zC#7s) z`nM^MkFyt@xp3FG1*Ws-uW~w1t|o}0))1ZIud~B_&nuc_AVW+ESi7u(D<D?p5p4B_ zSo{+VF}D8_Wi15OR;PdC(SU}Jft{hyQ*ZCJ7p3a76rW7`QuI=~zZsVbC*cQ!S|PRw zK{KV*FDqoMDJuj>*o-;XUtk5#{vi}LNDO1C{ESWJ72D1(aZV3?UEqI^o*ycIX*etr z%bdAy&z=1$_5zO!EEvi*LU>5KR}VaQSK$}K_lF55ABlddxO+EgwsB<(Q<Y-#d9Vlh zVi_1|U#h9Zq9P(CL=xfGo3AcsxaA5xhPL&#m})QsL#Tn9t>(<m9DQ7XCLm=`pqYiq zDU5F6P*yA@hO*31PYW^AJzK)I(_G{mI{Yr4hTUo=f6P)GGL~>~a%zFOWAi{e)<cgb z==t5_a+7gKsX7(n{?6xOeLuCS&&%C<Bl-v=wV6R>_nJcII(xrj+uL7}H@u<%#ET-A zXPZrp{&pyYe<BvhUYvsswUn-8pD6w%?%BDKnv&Ev0734n{vRPdtFI%t{T2TwhtFxX zW4`?kHS>3FUg;n!%<Tido!Ss4!ILd|e{Qr<uJ|cJDqcaH_xb$Mj;N?H2O9SexPu{* zX#}u~XdqK{E&tnejU>sg)oECeRIXz1TZwAGgvc%1J<dq|uHnqI7Ved`I)ohWU<0<U z;Lp%z;Jz1X^8Hj<uvu?igNih2VgKv96wpYna9%RcT!yM97oHzt1oGO8YK_>MZOc8& zu>(W8N;s4$&A%?OYr)nf`_491D9<;8!$`X&I1iqd#*5Nx(;&U)?MfvMAFJH!%H}s% zJj7wSTWH(HY1VTsA@9w4V3hg1%I?{R8}pU#H2AePi3^8ms|ny|t1k2&&p&apJ2nsA zy~Qit?sLF>Ww5|W{e$_)0_mRPlZh*3Y8w4g-=(tj;H>(xWs($JTzahqtM*PA#O?dt z&5kObpt<?2QY%BAnav(XDBWO?pV7OXg<}ljcTZ#3NLEtVKurOjhM@XrzIR?7?`R#L z$&KEv2^+3ZbHebN!?3AJ?GS3j@+{589N>NT8f5x@jk*vm3`G-A@A2p1KDsQpr!a?E zbbmN#;BtK*;FFfAX!BqyrBR;GPP~PBf9M!BtAR=iz^+<_i6M%yzeSQ5GhQX<{)o@i zuo18@q-JB=KB=<jp7lBkNQ;#VLS%JDLA^`s3Bh?wAy@4e!V+$Zl*3aY4{Bh+B#U|8 zUQ+$Kydlr@V4v2K(GDPn)Q=E2D56jLetmJq+htF!<}mN$D&Mvb6qx`?;+Z35%#l@n z?~dDq$DlWUJ!1K<eCd+e3i_)8D^<wir7Mh(w*^TDy0FaIN2xDzRIXgTO|}Zv5Ya)Z zXXa>^lV;1F?(P+RzDA<1uBZC%c1yzw+uZv+gmWZ1^<f4ATKH{0I*=X+Wqo{(YEs)d z5`xo)u*Wskb86|9F!c(1@cgWkB#MG!KsL6xMg5a57qbbwVu{Z-LMu%~eW)<-eeTys zB#w5W=%eQ&m3_VlZ<8Hk(i8|@`XNqygZ{KwmpVWFYj~}65IkKC3>pECncb|?p$x4@ zO1dUKPb2S5hG7&KlF2$$(sY;83ZRE0Jt;Ws9o^?J??NX>7Z_Iee21nu#u^X+Z(sUY zol}45LBEfi7~QtUIZ}O+JS2p5V$NdLABI}B+OpWn8n{PDG;qCRsonh+X6aCsu}Fc? z-(Jw<m}6XQd@#{0n?=Z*%{sB0a!>jl*|*sF<F9d|TN=9dT<qJi;+S<}7Cd+J)qJ6m z<B^ibaUc$pfP0cwxpxr@lP+2DaizB@6|+bs&CMDHc>C`pnd{<3E{7H~yq_Xqy3W@m zfutAgD$Kj6S4bDeeDJlGCSkb^8IYX22G6WZ?PyrV-~Wa*|MrUxiSwsQQw3p7y9@u( zP(4Q%{Y|J<RR&Doh!&CvUtrmMwX2+WR4HOm@}z#JoO*^eP+n(Y8;y^A3?f5362FhO znn~8pgq%Vev+Y)saDhIA*{q*#&~<n~tS_XU#6=KA-Ia@*Wp#8h2%A&yLHbix87Li* zVjqG|6b(cG2P|RS8$0St`@sXr0&y<Nfu(yd6w#Po_h9NpyCvN<hK{n7?pRzX+dGp7 zW!(7YZOg=?`4J@+M1L|wZqt+EQ^U$q4jJNujpGQhoZ1hlNh-eXSgRoCxiG`U!cuL4 zEu7*Om;>Z0B((BdG3$@AdQVg(7X`pH3eif-!hyAK9z^gIdF`xhmvtPGf)WnR-~mT` z3MKL6zaZ_rgW2H=m{)ECoO$u^XHv?#fs{Gy%qwWCL!s}@Jkb`ZM3w|~znS{DGs2au zBq-#qUVqr57^zmgCWou#SDe|1y}14eB;aygVNh`tqv2sH|3wmYinOA~q9}x-0C2Tr z+ht$5{sCaD{?)SHk#`3}Fvj3T_|#v+gl`E%WhVe{3=&5<Ff>n8_FTaj1AyS|(r#5% z$P>swN)pztq<Ek*k#SUjc49^bLt+?0@;zE#6CoDEds@raq_UBAMuZ3dgL)knsAbph z3Z7a5Jta#^cRJMCMz5!aoKxPfP^Ed!xf+9=$g2vig6*bXrek!yHJ@Yv&PMMgABcSR zKB5k`As<Cy6o?y~G#nl$+dIB8R5ei02-x9-<2<$D&G;um)L5&xikZ^3>@o|$XYi14 z{?wqZ3@~zU<~~|UeLWaywo(9AVuP%Rvftrw=4Z07ATX7LjMD8v)Rk8^+ERr_(=bTF zK)y+|K?V(G4Jmd#XoIc$ykU)WyRi?>lT>E%A@O{jYWq^M^^(cWoQe*Q*{4PFUBKv; zUY`^Sk33Q^qnSqnRp?;RiSEnD$Lwp-(VgVy1W@5pGhXoV`Stxsq)f6q30Xw~b9Q|G zieWkSGe%0GcJSYp1Au3C*<HouD9=ac6FTX?#XXq1{mG|l5y)2lbdcm){`Ts{gB7H% z;KntwP3xTm8{D0VOfPqNNg0VhN@@89-?41}5s1z@SW}WWYV>ou?3unQQPB>Q&mK?J z@~8JOrtDlQc>1UHBM{}Q$GLWV`ULyW;}ZN}pGVd_ktQzvLvZt_>tI7Gtldbxq2dE$ z$~_i@+H)68Ye{e1F+Gj+EmWr!I4@LWsE)P*T2v+^d&OEc>DK;_G}XU<Vlj!-&|`_% z%Z2x?g~_*Rq*gs>D*O)cEpqF;P_;T6-{=&w2h`gfT=IN^udC6IxcrhgKG5q<yJ2<Q zk3=a3B6Wf1nit5KCgg7vTwz<htpBO(_t;ER4Bg10x^y>MSTI_At+!l4G3PQ5X}$Gn z<^3tn@;p>bZjV&>7s~&*cNU=~97`UqtIRNk<%`SPLsH|s|7st*MIvUow#?xeWPtM* zFO3Z)y!D*}(L|{nDWdNB&ub<m5L6S9v8?SDCbLL6aVjq5FHj*afpq9&kSFr|i&x6- zi@|W3v&~Kqjw^0kAUy%HA;ET8*!j;%zWZuTQ?=n5dC;hR(_Gm5;9l%`oUA1mePkrk zFAN4<&4m}1+8KDQlgfGZz0RmkBC!iqmz&$@+PdsOR7X~<yek;kS%@&9hAP{Mo-tm3 zu|>l%l`MIFXR6KXo^{j#8?wW9Zv#SoUjZ;QyBsZLbt!n)h;y>v;#EC!04p7`j^5fM zA(ZVW1RioLz_SU;QQ{C&%OhmDF86P7KcZ7~L^fX<48eJO%D|3A$3ub>kEs9VjPt+R zWME!bun5LMn4U)6e4L-a<toRN;#Lmr{BTZF5R(K%_Lc2=|B7QvyL=xwGhL~_2q>(4 z=4si?2BJs>zyo2xmpH!TCRY^=a0_v?Dfs*&CdjF?T|zfaNi}e0?>z3#_eBde&V@{l z;kOoT|Mi9b$32V-CzAFBld3rX7GeGWtIpZPpbL5T@FbagA0^n;Q7hqvY>|L=Uk5k; z)pTDqH2uqt^~D+7o<jV7ng?Y84;9>PE2L21cx0)RPt`9==tJ9eh;AwZwUe3q1;>){ zGg+`S=I#U}`mJ9Swca}=xEEYb%PMxq6Mm5(S!f@U(B(%BLWd^fw-(Yzn!FG(GfO>f za6xY90Tu5rMgq$r=b(QIr+~Lz!}Ue$7#6wL&wXkL*ybjH!?scS-&W#kjhEI9vg6rq z8I?LD3??gPl@{p9j|VoN5~aqKIJ(Zp$6{mJn}+}{)zwnAyi*iDGL&V0lQqa707Rq? z8){wpI1i4|OqMj_Qu36Laz%na&*GKpo=&}&m9}U4!5N_y<p7UD=Q{uQp@9X}ftH@u zV@(|-cwP5kZEIKkQu$=^a@(20t#MIYIucG7;bjY9She&8;;lCitIAN4j*0iN?*aY5 zbTbrZZ*<^lr$*1;%32s^H+%&VDjusxIC<ry$~7fPTAKERK%K4NRMthtwdbDohPGUB z@a_5>^of`yrS6Kk`oPZsm#`Q>`80#YPK+rLI?auld}~!o^$8$sO)LPh1l=DZ%E_Eq zen>)k3wR@UC`n`i#{(ggD9ZHaiPkd!AZ@F=FVf^@P*{=eCY?GDfv$W=a7b`!3V89# zg*sHbA!oi`mmR%e$DF3`9;fr4>P!#t_VX5fUVsA_#FVGn2&>Skc--?}(?Nosi@Xi- zQl-_4tI81~%6nD#Mr!xpxlo&!Z=m`lB#VOz%UbqUcsB{U5>B|V2&^oA#4`xvUzu#> z(yn<V=7e3}!9pE8St6w$^ZF+;yJ9uH1Zk}h^8>Y-csp##Pf8E!Ux)XR04=%-a*lW7 zi^Is*!(s(BuU#8K8>de;HWNnUHh$)M$8T{t2n#bTnc{|Z7FsMLYt>6s_|942Kl@Xu zKWX$}EB6mmo~v@lIPQF9*x#k9-Ouaek+)JVVQKco(-hE%79O{aZgo)00-08@^ox3T zy}3RpnF5OZ<bF~dmmwXb4xjj@_zI>z+t(WOA$|meb_q`awO9&$8d=U7Y$u*2**Mci zLOR4b*bB$h;H~s?!li7j3D~b7Pf7+HX#=iE5MUB%GM?UDW)*+^qb_EBC(?CyruB*7 zvN_q#Pan#yJQeZMMm$!U@03jUxMs!LUF2vENa@ni8b;)9i?-9hN>rJGczZbE1m5Qr zc>;UDkByubTxE6yn7bao02hpVGbOz7q<7E!rnA~OH!-HpKB%`g&&{&9LCGj2DAd+_ zXfFzc1fyuxUoHJ}NDnA5J(@(r!|WJtp~<xqh()}*bs)J5a}-I^h0LIg@y^215s3%_ z=?ucWkC1w*@(&(-g$X4l);3{9vKcQ5Ne|s_&9Xde1y$Ol-BN|f3(MMAG4CKEtaX%^ zr{N?c`k-S?2jenPF};9FFj}FSz3E$hr>fPEl@CLJpWVRxy;m~9a>c8?IgjBKZIW`y zl4A#x@AGb=@;HS3Xeq07H*j|DWs<3)?_cArAvoi&2k*aLa<tDm`;zKr2$M_(p^IUt z=0Rn8f5ESh|74my30_Inc{lLu<GQs`={dhf!^SOyo9qo9SEvioBrC*(d0!<DK^Wr* z)7xnYXr}6<xsj%@uxthONW|Gc@oKLhMOv6e+Cc4`RP<P0(ywc49w+(*yAsX3u94x1 zyErIw9t;GQ`88m@9Q^G|CezsVt5wd7zl<Nmxw=Qn2$>An;m*u1OynY)E)&rdgSE#d zrCj~_s60*}^;qxD2;0t*OIOl<xJ7DO*1=YRwQYaj(1j2>5X$dv1cY?L+g5PPGLuq3 z%2)&boW``Sr1o=WXmj^2J1}n3gtN)O*eLhY6*B9Y$=gNsGk!cHat)zB7^H?kx-8U+ zi5pdR@`X!^^aXK-Bg59IY!9L!sNOgAl7PI%2#1)p9?AbJ!hjE_#mY&4<)poDU=cu^ zfQVHD&Bte_0dM0X6l#UZGGac6r_9)Cb<M*6#pQI)NZPm<tDXS~F6ZS}@2qH-wGY<X zbamayb-KV=V4H!_wgg)~aZwmu&r+y6pImw4B;sscaq0EVOmv{sV<?T#a%oh#^N*0} zU5gbnp;-f?S0vn}q~`57Xx#n6X}2M^taO}br(G>wV*^XAcaL7H;W0t&h!fDNJ%(xg z@}(icz}n?i2`1a@kKwtjLbV3A<wM=2o-oLljI#vEmMeiS+?e^$sxeTr8HT|_=6%QP zP`OEHROyF%OdwtEwSJ(Q@#lt<9$DK6x@CekH1^G`y`K{%Z1!W|S&R(S&(*gfn+GI~ zVeWB?UTH_fLH50TiCuF#M`~$p(;u*WIGf-1UJX7i49wy+7kA+Q=mKzn-)Q5-J<ySD z8x0i3R}dQs?)0b(7j4tc)GII$-ce0|0p5UHgaeHb#O~&u>N6RTgus`!0^>K0k$F{| zsa!O!*0eS?fNQ;%`USjpnDEYu0qas-n*Z>TC&n7``1I>0?yY|vXWhUH(<v*x-<Mwm znw&G6j&^a*JJhoydY>oU5nsG^0PDsbGJN*J?VtW`_;FZ8oL8tS)iWKLZ8x@EJ#|Lx zQbJtxr+w}c()=yFvKyPLd_!MITADs3nb$D6zFiJ|hXuTX^}MyHrdA}uvIS*^9LZOV zYkkJ%J&VNPppo&22XvOUihBX)K}=L?q11^Ai=NsvK3pjcP@93Ep`^nFbR$tY2{#c* zn|c)ckN~3Sa9<_XpmT;diL6aFHyGUn?8^f@FcMn1SdRGb2}EXg-egk-U5-%DOFKs$ z5I#Sj^bR0t%9nSpNLw+b%CVe%qHLr0gQP~I^JIM!&r1Q@D2J#;?j#!nc4y5q#v4!# z%2&N7hv-^7*^FYuZoP}y_Et#)wDpYvPI?ug-YZukM)kR&_@m@{o{KR|NJf55c|2G6 z)oS4Z#@@UpyAr=dcE<aW;cgu^j8X?cvmOx7OdLX)E}v||n7a2Tow>G1q+0EWnj=th zL>Oi>!~i1!_F9bIqPyG*PuwN$=*I#}GyA6oF4{r78*Eq{b%oPZ&KJ%OdUUXO=aN+J zb3O#iI|Qca#W}p9y1O=$VKoi>9AiS=7I0VtS#$tjddEViriP|iG^pF4ERVb~T&u^$ zO7t)LRbF$zoaDD5F!rOJ!RQC!hVV`Zl&8KA>zLz1r`n?F!0%3?H<iU4p=DkNG@$62 z&$UF#Jzx7vgw+<ML~T>KGTlN9;$d~Yn&_XnUP%#UboK+rH9-imNs4??8~r886cCA7 z--?`U6m6>H+0LFK`!>vzhZ{^^fzJhz-7QsZZe$_R!+I>09?>`?)%5U6t}?Y+l=2oR zy+1N9PxCn<Ihnm`>*C$EF7~K3$uu*W6}2sX3#L%W?QFqacZdp{8n!2oZKUm0A?X-X z<))L3FLuPjQR=>LeId$wrmB0jxYzTt5G?g@p0OVmSQ^x4gIhhj?en+2f0~M|<tWf? z(8-`ql*y{dAY+&HPtvuo0rXtldAS!*@jDuWzm<QT4x=LE8b6KHlZFI^-*tz`AG)|> zpOYXYQ|@hN4PnG%pc~+T$3THBV1=OwvAc7U4W<MA>6$D0RhlC)7xY*WFul^S>`Wq( zxt1W4j$9GV1B3_}l~_dGzG$VOF1$Y(zTR9`qTTa1gsK>F3wNVc00r2|fiy;@mr@~5 zGA91dyv&xRVNGa1+`?<vZXX06z<Z<0$6&~bsve?BM@m*$I~L;ztABQa$RsmkcY8Jk z%ck1UADUUGHSdo0Xrt;|qx6j1?M2K?S~D=<CScyj`xb(I-b!!Lj=)UvBwKw@qGrjI zG}%pqqC5=BU?P59p`L(5WPlF6b4Wf@)PdX4)<8R3f{gbEiMNKCH;@+p3<tfFd8L~- z3F*QNgq?-0ejzu%Z-6pmNpN`B)PBTSDW?gNNHtv8?2lt6LnIGeDe&`_RdhX$>S_R; zs-zYvWi68ntG;1}eH<;uOs9p^NTF&wymMZ+(oJl@Hf9`YSW7uX#r$o@BDfytxzxFM zWAzaFvjfx+CO(Z868m-d&yWk{G7YSRDIU`h&vbHhVRv>NM3{7e+UY!!9e?|Rmb6r5 zRENuz1am4~(BcW!n(uZoY{%S8>&>Lx|I0rA&IBGL&?%J%MVu48V>g=Zyyr5UzSL4= zGcemt4_Dir#nO9FzFn`_2TAdaTz5$B@AnRZd;*fgfqNMY)1%<lW;inziLJ-$=Nec* zTC0z-^lBf_kbdfJMU8}vmqU0yS2Y7jRXs=doGz96Ei3)v_J5&8v}!BX2No#eI4v%{ z>{4dvV;)edELD>Ei(xsEVP9!%LBF=0npr!u!B999<gP}0)&9`D=QDGjc`G;`Ht^7~ z-{;BJa8tX>Q!zrGJvLva{-Z84sB6Jbqs0Cu&ae3yAuT^gD+mMy6c6Q*GMOD?mfAwV z&;9JJH#8N{mAqL7!YtxW{vpw_^eofV;tA5u%Z?`l*Ky*gF9hdkknLKMja16h=P+tu zubCUQ>Cu8K3ZHrl-$lVR<xZ-a!FaopDWbJ$S-M&x{mpIj7WmT}GX)yEQi@Y(Ks>Eq zb*-gAZH+E44-uzGn_S>n9#P4)%J)xe&8-LQVOE?5R@T;sIZ5ukZ%H&ATP+Xfz(>9H zTV_~L!W@(+NVBn78lYOjhDt%r2e=#HyCr9XObY^u{%;i$qsLX#zW~6_=#umq{_IES zb(DddvNb$o&&9gKaIVQTys`>2G`a3Z@4TE<i_ocv<+#ag?s&4h<;HUrrc%Wy=s!Nb z*xePgo~86~yggwj?f`Tq<jNQT(&Rw|T;YaPR#4WDMn77AN^v`ZnvkEm4kl`h%*s-X zUP3{)j;bubWDH9uTPI&0D*#fMGsheVnHh0?foWG`311<kUNc_{(hqleWNT6e8Mp*u zTmN(cCF!5JG8*8-L-m7~nut!%WsPXxk*@8niBx4=<ehHr%9$Nvi8pYlBKi!K754lt ze?9K0cINDjV$WJ@8d*?l%m=mqdpA4F9-OuD*Xl7@%V$$Cp#srXno1VN05cbCh0bzR zne8fI+Fb$!4(+?wuz=pO8QnT@+)a%4R?i*oW2wJ4tPi2ZwB`&9j@03s>UUayw6(_? z8BigGVxG6ji)A;~N{ys*K)0*x%8P_R-dN-jdcI3i0#KY=e>={qKp=!^ZRgG!6>^-j zj1D%ZJpvYx(~;XWnNaiJ%Qbc}4fuHX+=NA*Y^P2aXy8=A^ThM&x~7F5ZGJ6L2wT4& zJmC6;w{D~6c%1n;*x*gu_GY4T%Zx*vKmp2PeJhd|jiu`|l+}Jq-+LX)&^7yhCr!47 z##4e;t3w4eNvKCN<YeTxM%SZX2TU_dPfb{3<mdGNOy<&yq;GBe2uPaiAF)2(u-0h^ zY{NtWteUhl6RI45Tg}hOiPXx^azAv>hvB-^!q5hNrpyk8vbG2#7OKEAWseINsc2WI z&pDkp4tyh%XgqJIY|oJylA7@)SWBl<Mhtoxt20%`ki=<D$tNCRf1W+uT6X*!1lNKT zR=1wo+1~d?Nq6U@*rqy=QppzXkD;fQ{UP{Vl_8p+g6Lbi`Bf1`v94*NxFMx|Kh*@* z@O%aXOaVT{gf?~Lt9Kt*H9<YO<YBJIAiLiE<7?5jZs_hFKJt5sT-iO_rJ6Pqq?{_a zZ?U_*L%)?rd8x3BD*p$XpG5V)?N)l)T=3tbrDo*T-`?9NEKI1lAF~t>ytDO<5pX)8 zAugMqi9HRTJWq`!J<Idj@u_wEmRba$J`)1n{xy#@AJ=9p-{$-!#%{1i5hSo6MP{y0 z0$r%1$>(*EH;l)nn@4|&eg+j};0d&BdxPD}5&`$X(2&}l`>J^hswS(H{%AJ`&>n%@ zo4<Baai=Vq8r8zYUmv3r7%O^K7MNE_jLjFGch&#gwNB$%m1<dxBN)(&!r09;E&+7# z-^?9N`5mV#Hi|?5P^}3HqhzLYjiBdi0qUJ#=IQSq<bP0cTZk?m;6hyifIl0O0LSD| zgtGt)GLzR+`z1p|3Hfx4+2u@P#~ieT?p&luu(W}mcuw}Eq^K;;V6ulaC#glS7a#AI zcbq@oZ(n)bAiXISOJIDtYQr$;+APe-Nfl=)z|*5?8ZSVUU4wUOQ^I;5eyQo)M~%2T zyrBYn(&X62Hd$-(Z7a|<>n%pkr8QoCYW|3l1n9vyZ%I;Mhy>h-Bc84<u_VP`0LKj3 z-zRiMa}h8Jhb3_>vAOip>lidkPwsC|n^ULxe|{PvA_=+<W5@PcQJT0PRS{N)nis$; zZsXqP<leNuLfvUO5c5Bo`g9And)9MhzxAA{Z0qdqaa+zzK?!%qL#6OmD_)l({#$N~ z0&8OMhFnV;eG|=q-V<pdq=wX!(hQ&vN+G|pqPr>txV27jtKbIG4rK*(9&?e_icL*e zyN?%ARG9#MsUU^r$dE#%!dxLc2|cR%XEQUHcDBZlIYZ_V&x(bht@6nO=5*ptd0nxM zkmd7sz(h@zGja7+*3fsw-=Ct+LeT<}8}oW&ByNl}W$mDQ%rOrx&wdt<wV<v=r_<$x zv__t-l!ja&m703}Nlmm|UpE1z)2^BghHgNW{{B>~E^*}V3Ua{_+N4KHa(~GxVU!6^ zLIK!=q=YoW6kweMyuM0h9ZUAV27n8vhG7)#rw`z`@lhV-`WV!B6^D&7+5o!TQ;<35 zo0~N-u|4-qlVrO+P;+f*irjf&ujUN+Vj!k+j7CA4d^xCvNTfv12B2H{Bp^Ix^J2bi zYZTe5^-H|iXc>QbIC4GM4-J9{#(MUfbhVx1Ve73~bLoXABHVY-g29=1HA#%p<t(oq z1$$obgY?A{+o71Rg1l&6!-ul4+?nG&ftrj=lK&{n&K?N4eeNETFZgbMQ>cHHfZRsn z;IgN!!WF1~VO?zcih$m%!5x@#igwtAus^$n$vyL%=D#QS)>ly(H2%EMnOe0y(jB4L z4NJ6i{xz+3`CPi|yxZDOq;=`uoWA`<<q<RUAIg>;Vhw;gt7j4_|41P>dz4XONQk!E z&$4sWsc8upFjj=w;T5&DU{)LeFxLJaFqEb~YEw57mI=wU+z5%JVi2{Nwf}-obM5-` z1$Tf;Vb16B5_Vs37vkY!&~EJMT+)Vda2gFL^`U_GS%YsGen31N4X9N{NZ_=TZB!YL zkT7*>>61d3@riL68O2TSK3DA#vJ;n`ebv+3Dg+E>uH%XEH&Wf|ZJ>|ff-kswbTSH? zQv`DT9%1mgCFx(BZM4SXrWDK-(CRVF)JIN-?lL6xrha_qI263G^z3xhYCQBX1}w&S z4BJ@oW($p@dnZq;UZ?57j{T8tNPFeE`Jjxy%ZJiOa)1-(WK4ByJr?JUZ4LQY+-eU1 zzEnrLA&Fpp*iB-JkVao;H#stSadSXf@+nI-b=XHOI?M+~q~Z+N%&uNytD2k&2S9vh zPMNMwwLd?$6BlfdPvk6Cj`HAAH@aF)H$s@N2Ce+0+}LQsM%~$6349CkUOPQnw8D4a z>-^xzy*^tj(Vy>3_vzCL#71SAaC-#<4k9jBR)7_0E79H3Nb;S~`&18Qn=zj7Ym^;) z7(o`iv{*8qtilIIf8POy0Vd&R?XVGnc0>ezmEA@uV<xeyrvZ<J&G>>*D$^ne%FMU3 zl*mnW%T(U>N<UdkfGAT(fl2RLRX0%wJB+kjR1!b0OQ*p^4|#4cnm@{4kwPp(k`rB7 zNtv*{S)|kO7eL6%QYH~d@UwZLZ>y!2L_6x8a;EqD(QpQr;*d;TY>%VpL?}8d>>(YL z<J}T^B;s4?yRN6KUOfA~TBQE<u`3)L{6^6Jc_%i%VRze%sn)h%Pl;;&LAT2mqend6 zuwMVu0;fIGzZTKP5FI+D0bR7}uA$hu87oSUXmWt#h=_8{1Jt<fXnsUusDGVG1~?EI zH_vgg%r9I9#&R+=!bvMZj)QBt>Y|REB_#cs2ra!R@85U%oY5pSxJV0cG4L~3^ZPxg zyRj<p13YFAKfxifl7%MT!uUvG*+Ie%7zt+<SiDcuNI6(0bCcE?Y0E&HFn6I+%XT(Q zphNXhBbXITTbJq9R}O75H-)XCi@$Uq&oiQq$KFUx=vx2!+bl{Gk{`7>D$#%2vem%r z>a1Z5e8!f{7+l`;!(?Jx2^xL<;5XjGF_i|(78f;h-mQhDWq@S8GGwMLJG??zWo3YJ zJyy8C*R(k1U1bsWv!fu4R9q$u?rao-X_xfwPhNYAkJ<>FkZ65F_z>(N#wlQ4M9+R8 zGlNQni?LT75^=tb-$S5e#?^&*UCz*tj*LsH=cOnUA_YeBU&(J^eHV4~7CPY4ePuL4 zbaSCbVXhS9pINDt;gDQ<zoVnYr72<?8Xd08HhyRy4p#0@?S5!hn0-&g33M~S>*D?K zz>Ff#t=#Ph?LcQtf)`2984#nEBY}2|SR4WuU2)_2U{E@og1w^O)ZSeo7T7cJTUz>i zJ&dKO4EJ5mVV2t1+?Iml_fv?Tp9SI>fAB9G*9ixc_eI1d<91@UB}Y$turb2pI~(6Z z+ZX+H%1=$@VX}4mqvaih7m0i<Q<+ixE~b5}$6bZ6^Z!7vqy}Bx_TzV&*R8hKO8rmZ zof}H7%zkPJL;L1^^Dtedzafxg?%v;xG&;j;kiak4*15AAN#1UZCidZa3)*gA(WIm^ zC=x8Mzv$rD7Y)DGXtvsQVPHp_Vd!zpw>v_=pIz@{8kb$-aWALJiO1iQx}Rp0#?sIT zbg1TOG_M$iV+&wu)l@pp(67o>m3h@tc<kv=6Z_Jpd^V%LM-H$2AJDCLz)vz{qUqxE zfv`LW?nx)g#sVq;t)a_1##Yvv^#!>vQr*31&;wo6`ql1Y%rljb^%VT2UnS$|(+Y2N zDpN3g&_$}(vtUl7ojz+pUpavClzB{Hw+GeiLEW0?JNEg=geHP3$tmT{G-cAbdvsFG z`bJ((Sx<PFdeK0{=k<E3>;L3#bR+gUr|M5JQHH2Y&J|^t#mG*hk8CA*v0HNzgNKg3 zVD-{}BC0&!;kTSdC)wy`X)cpcU1Fyld{STNr|2k!nGV23TE^QS9*{j+&$7OjJ-yA4 zg;!Yper=P+XtVrzhLcI#5mT#%OE`%oW*<deD6Sloq;Ev_?7}Erw(9JI*)3Yf=1+B* z;GMY5*=Bb%eN4L8*$pVJIM!y`0&PG$dprM>qLQ^UM!79AMaE<(3G4_Hpx1vZe9$At z(e7f`i*m#_6Bq9HTHuH*0Wp9L#)LJsNzGaKE(;(+=Fg?}Sn2@n67TS2t^NWAdy;$I z>cxV^+HcKXE~emsL}2I}Nv#Ah$o<et62#X}@TYN&kkiuN3_Hvqvm7t%XCO@stW&K7 zN}g9E9ag;vDvBBXC5#;bLtqTO9kz<fdn53643t20ZP_tL*yiYc3f*+6{kpo)b=To# zTV@Ajf}CIX9J|!RL`Z)v252aQDe#Ip4ea@gFJD(B-4Vg9Z+2xiSPLwnTer0AVgp~) zn7QyP$(rrYg8Y&;d~a`m2(&o}bd3NTKA7yU%V|AhlZ?};Lean@Xs^7(S4qtRC3Kj# z2E<?78%%&6wU{%BXZnwK>K7wljSc7HTqGLl;quIIKY#fp;v4Q+Db@Ul;{LLG9aa3^ zDMI_$LWcS>*G?PR*SQS6V9K_98JQZ(qfrd&F*+hxZe0EG?!)bj1w2?>vlDcW&JOaJ zIl)?F{ZZh1!Rl2UIh&NS;wjZg;9F1*dQ+6DL9^1?Ua9wH&iq@0lZ~yrK0Q`|{3hiI ziWonh%NBejirh-Tt^%pq8Pi7XNDLOLa9T5`9w>}4STv!H<)GT1{{pQLtIGFb97S;* zHL1Q>92R{_vqeE#U?2qZ7kHkdv^~_6>6i+N>S|jvQVw^BD5aw6YwE}ZmZ*&eMm~nj zxqNe6bItP=iC>91!Li(>JQWy<+1G_bsvv0gi&s|tISsiZJn9Z)L>5$3Fq%$MQ&k#` zbECu`c|N0;Tl$c6K@PPVci_jjU@hD<O{DScji)|4|6N$<B9sLMl!5luTs=cgb+!}u zWKGa6nuWJTEdTG8PtS2R3|Srt2x)vXkt7$(CbE|Jj*JdvJ?U8Fr6)j5J197g&O{Sf zg8{IVyrar9c~m>;^Mr!D0D2};h-#+|AMwl(Q&j-p3S`N^5jI(V>7=xQ8(G$~^+PjV z7F^Llqsic>igDd2&_>9maEvlw1mgYm`znG4iR=|J)I1k@vMyI(HBYc{x<f!KB^KyY z#pSZCTQ<d2Cz&eMhNhU8)ijtb4Hg0wqgfX0!0)$eihff`Sn<D)ize!m*<VnQovu@E z@U$n(>8J=}b-+M(?&$A_wQxPzCGlRaq=4Q?yxD)>#`3T92}=++);;q{eCBe!$+9VS zSG+a}hi3*2DIOUpYv%PVeVy|p#$Q=*7@~VaP47Rh6`owhiu>)J_p)@HGG@7>kZY^| zH}T$zVpQ%rCD8+{v1I)m+Bd`du9plar5=+ORk{G>pdXld^EY%ZGD-pY4{a<$;ZM{E z$36&5@UW3)k3{w<#CVW`|4`MQ14D6RRp_bO$dl$&q)38?q_bmFVKYSFD&1u#+4jhL zSYAN>{n=BGl*#T&*mF7V$f`G+mZFo$%9U7&bHHI*I$j`CJMip9gHbl~bLO!~n2vDO zGvf1*9mY!&_>ZapkLzc)I2JWs?G&V5F#2~Q;x2ki_S{4RmAX^Fs!^_dd4lrXKWDRn zELC`mem^79fj1mz;5sol_m>LAyvo7bppM|sI&@Ovq04(EuSB8NBz0Yk_Zf$mq-R}- z&w|UBsNC&k4kbRK%NYIq>}5#~i6Gm#tJdp3LP1t(0{(q8VKESK<NiHey)HuE;|h&5 zD=X!7yLTO=L+Cw(yrrJRzV@ReJhz3z*2BraCE8Z*IjC#Q^P5D-#0-}q=OpOh+RXhm zE;g(mtg!AfOYFBD4bmFwJx?X|38prsQ)r!kAer+kZB00u+Sh;jN_DNbM^uR*S7gwo zd|c0a7tZlF_XRDp0wmq7)CK)60z+(X8<D)$r*WYWd(e(Y0ID92ctR&>=BJ@B5c(*X zGxhtWH8rF!rsup!y(dD&vrRv{Axe20_4~ePWf*qVH$<mGz&o}P?vaNKfcm+pqum&N z<cdh7JJ3pj3rELXecW>DO$(_)Qx4*|p}Wl|YPyVNoMcQEOge3RJK9Qe1(xW$5j}og zT23QmVu|E<rz&!H*6k-0wS16pF+r48`NEd-7ad9SScF;k*VXt8TEo`j{a<)owX4OI z+6)EM9N9>eU)pcV4Qz)&S{rZ{muvL(X9fT?EihhAf+-m@<w23HS)wNZVFH5I<_O@5 zH&0ftUnDdIPp88|psWIN5k~<NN)l#KH_U=LgK-nc7g%@8JYiaUbif3ARe`=O>MYE_ zobEl+r6n}Eo)1k_(Bc0U=<PRLv-1vapU{EY6}HZK@1Dn1;M;+{`5<>QJy{<-mHmQ$ zs<IDz^&+rqZ-n*%fTERL8ie|{gJER-1)EUo?_%6UzL}%Yc(Xz2hcKgw1UJO)W0>lZ zG~i_^s^5#!59Dn14QUf@sDD%<WhNJc)Mtw;mXgthfjhqNIY2%a^3I0Gr`0d%K{Z$d z5lCjP0pO-?!0Ky^^bv#3QaTLw`(c<Tc98+K@mwWWku&k)0<PfiHbN;j5s0cPSIEP; zr^x;DJv%UuV0Y-!ucIQ1-~7Rkju6My1fEFG_q^(5ZsY}82u*WyKC@w2=rP#$RRQfy zaa+}Xua!c}_}&2I!XH256FZx12^pgH#jki%0QAX0LmIzz*IAwz%Y#g}&6c@(VvN{( zc=I?P&3!OIM`{e7ae^Hb+7QbIPudy?Jn`CY#2tH^XCExN4%)|sxR>Vg22RIoUaOiM zcc^1N5j3=4kXJ*73=KniTL26Z2FG~28T04W!a^sgSF=?oPN5{Fr|4Y5J)oZRYMTN` z3rnF^JszC8YXi`Z)>t~#rqHoHDnOZP;C^q^Dy)$k`c#8fr9p`e{6ndJg5eNBQE$91 zpzakI7R(Wfb_S0g$$}pn68PZGHP)uClmke^#jJXHl*WwXDbL>(sUv6%g8reg6Y<<e z1!sS$p?BPY29Z7_SK23W-psq!rcWxzxE*x1S&Z9EuCNvSr!Il*U305Ud7FW&!pD{F zFgC$u<VF!2R$~)&1R?ahH`eXI66K4YLCTOgh&+F;w$sVs<YC??xlNmb-Tre{J@DDg zgN^WpzCOk+uwqLxhPN0IbJgpF7%#Hts+uFqfqGCo8`jzAuPZ1-SUjKbfIrJXVodJ| z_7{YjxMT4Grb`Hn<Gl#ewpN~Cmp8JG)(<0HUh<t~GV|>NHYh;N=B<yLrNNBDvtj6- z&757FvTWbFpD0?Z_om273x*+Px8^a4tMZNzLplKAR$4sn*jq6=&%rxa9qDVWEe2P3 zq?U4&9rrL69rKiHn{Qu$meP68QI&f9NVxaV<=~wP5R@y4fXM7q4WkxJklc9dpG|rF z@PDLDJ0LVHMo&d`z>tCt#KKx4pW@W;D(%v=@O!j9Y7=$g7YwKsoDqM<Ga#>V9JL7) z1>oy6B4hL#{Y!73GlU`VHUWYD^yX@MO)Q5HuC0z*x;V<C%nG)FQ2UZWnq;b&SI~s+ z<QlrypJ&naPhj3C=en?*Tt6=ie>WA6-b>jreNtRV{(|ADG<0NzIK4&Hj{on-D~WzL zh#F%Fd_;UWWjIfru8?|?)lUTf5l}&_o=OOBTD<$3uCSBVff$gGFE*kApKgSKHQ9y3 ztGTP9gu+%v$o_MdNMJ`*3G<YK-{lp&*6P%gntL&}5)LY=koOUV--Pqt1Y3iuhNUh~ z^ACBV?x(fRbwL=9u8fel-lV#RRdl~P>ATO_c~u}tr$sTsi(nKA`>#~{yDk*{Y_lTP zAGi*qni`Zsei;~20|sq%CR*41WxrLPu-239F1`s(_~JR43b66Du_~4|inf+ut{(bj zXJjW1VO1CCtn9pu1}uHlScU=xaC;gxJjON`51%3I${jKrfDWP|Z#_7_*<1f8M#TeE z{f<ycYLSc%Kncx~FB|JlOO&pHLV*b>@BN{khwPsiP#r4baC>oh2!1JVl?cOQw^uU= zY&HDm8(cXp)<w$YzvOF!av|$V#QNhD*5cL8XL52R`oTzm0trA*S_1^f_>d~r97&|c zaAOVXGCyG7o#^gxjEmBr(ZJ979*c68m)={xb=>4=_<kcZ))@I8;!5k=z|FEIS4Wyq zG)hNcwSzyLl3EK;;le>!8tRYsz>v=QIq<Qun(eOh_7ox<%eE}~NN)lWWv%kJ)u1&B zW1Y{J0%up|&xaTIJqg7IO*$%ehF|^ev`jEnSu(TR?Wz4w+Ep_@EuXr&eT|)h##lqb z$t{koZ~aK5)A7E5L><(W<df`W44kU86FkONECF$8)UV)+8>=F7L%yYC<$(M8XfPSV zpw<xW!%LqQ>xO|#VC8NDZ2jv(>LL?6bor-GPoX<Mhb`l8I21ZUGEvOAjXslF5OjK- zPW-E%&yjQg=DaRfE+rfedAiC74Ecb|UuI)2S5YuC4rVUS>3!wFY9a)q)|gI>go<ZV z#7OYjXDLL-uSNMj*Fpz8WCSmFvcqO*S>;v-pqGA*y``pzw_|kdT;eZ+vIYW-)&JF# znJ^$2KSi$NxeCJSXpzk>rdPO)<1YZ=5<;;}LB?gupxxb`Ut#oCN(t@9>ZZzwdxN6l zw%_=R<Uf32zoYPHSCyAD8L;&~v$-ej(ku)&FvR8~hdUZ~cJDm&0hULB@q}N%I=ARi ziNPnl(1x*FYgDQ<8lCN}_RJ}(_uqvPp&cyD--OWOA9zCtE<ETQV;-Fh!{cnq5b5BI zOZccMdW@{(8ovU<zaqOUKAV2u*d$$FhCv;qzp^ttLqda%RF7LDH5b}Bj#W~EZrn^+ zUrjnajr-xiqOoBc8V4>*#zMgQNE@z}0}~W$enkU6H0!Bv#i^O10QUOm5^h(5K^1vp z!IG~zm%EEA#G7`)?8M;}*g81J_+i6H)~!iogCfMF(j2vGWZ{zM#DO<lC?0UMS14bK zBQ=S1j&SJ|3%1A3Wa{@qw0;4K%h8U3<wet`*TgQ>$UfCwzMB@g7kH#Tblr?fF%%W$ z!U9GL1O&ne(6G&N0?lquarFBfW_GNH+bbqBO%t~G!a%HV^jU)l!>XLaA3Sn%ApzB2 z?=s*f0H_$glh$<URt{uKvJ*XS%o-Tkq;sL5_~pXY=N7me)r}ErFpK5~s?h|+bz~3b zLO7AWU|rFlc(;#r-7QQ6_8Q5C^%cP|Bsh}hJ}BOH;3RF~RtHrYarx^j1UWK6_;e&L zv8=r|PsY`GTC+4Dx+(CB((M^L>M5R|?Ue_q?<oDU^<lVJmf=B#-k{h_pPx)A?Jp$A zB%$!#cX|Lb#Vl+lMxv<gbUBoN;lsJFfOW;p%z?7u;aP>`vt~t@7y%LO^l=!j9y*i^ z%c~Dh9JW3n<3G?96qg=cH2W$T@&`HV^t6cd1rjS?F8er`c=xVQ^;oBlld~RFxot2O zCsvcmD*4&mN&wQXh7J>)8@Sft0^M7iS7FxebX)2mY*=68x;JP<1gR(%Ahv2mnMn94 z*G0HLbf*{5+^3yBDX=8Ol#?(G9FtWmMAOk~y{=p`_x2KnfGW7e;BlylQapaIwB1px zP+7o>9RSVT<L7Ry@`p%u0-OWo+yQoY^HFwxK!^n<=8O_`V@)y0ov!RiYy1~PmL(VW zJ3>ffp&Us`u}nCiPT+b~ZV(Na(&XRsbw%9oWWBP~wjBYaf~webF8aS(M)Q0Rx#wro zObLBAM~i%Cr^GDL<(CFpKW4^_81lc<RR;-{{(*fJn4g+{JDa@t=TO-C>TnapmM(ke zOKy6S$!_GgMrcDLFS*e6x2^I!C6jm!@KITX@VA2@7n)p5f{Zgfmf5a^CM)38BZ8{F z<z-OA!^;Y>0C8b6=x*BIHpaxixoD|aW>$r_S-@*&`YL?u$@WTlgDAMvJ=`8Rq37sV zJf0DvY2BJc^9hcn0mSq_$v3c^X*)$ZC1*h;@C6-LzxD9FW2hWsJ1dNZ*D&Wj_jPCi z#~hG}tReprq{ux3ym!GxBL|%0yQn#52%}8=aF$6OH8Ngh2~Vul!9G((J8Q${OH4|O zJKmlW;m?C9jW+X#&}XU`f|}(Jj#;!?XCd=V=zc(jR^!m6SVSMEt)5E-`3uJ1Oq-hs zD7ogb9cJjg>cIjtE+h`M1)kjZ2(7e^u6xfNxt9C4F%3)|D~0r&5o(=+;z7^W$x7yo zV7_RK2vtmf$*$Dz@o?E1W;ZdUv3NFc5k#}Jg{qS3t=%KbXi*sK9s$fNXa)lZ4R9`& zdq4X%nnXae+;75wE4p2HO%)*sC#aVoY#XW`Yw+<I7c!lR8}H}LsC}{BZCc<yN(d6{ zl+1M-rL|5|xS1(qh&<kr@4Eev7B?)N>hu$dc-jK5gFo|UZJqEJasx&Z6OPo?H#R&M zj`?24$MyRf?J$N#8-dbio!zlL*g00fESpSLa~xQ0V`PydY=8ypU`LPiou-6xLIivR z?&B$8h9B4f&#)&%CX93y4CrZ9p*VEWd_Yk8adhM3M(ck=eo5d3Wx7KefxlP#z^-3r z;yB^jZFcv4ofZCTgnU4tYYv&UA%V!2T%(mJLZaCC!@jz<By*@(f-2G$aeUH?6z{7H z=1o62P3b@X_**~O|FTc?K<KP$B_-O$buASu{BNlJ)XEAo7KcU@H5UBLEYFWyF|irE zKK6}eGBH56g=*!*Htxj>B%NCW<Pp!H*ZB+A=%NwpK&S@-X0eROjE2m*r~3r8NJgxX z^jT)()uTWEEhv?^3QE7*;hxR@6wIS@@t6-Ve`ykMmjj}r&7^y%<A6NEt<&Imt8kH4 z0COoiQU+<n##a-=$xd|SxuwuN@c<)P4cb+An3@(K@jE>6n@@1^iE+*T-LlC|B=gb% zq=N2SF}bCrwY|2s9u_)dgEC`VYqANSpTb&{eJU$0TN=iv>V!+|-;y(^2p8!ZW@pp# z#Sf&#(mJ#(9YEDp5y;33*B@ViA=Wo-`O7+w9q}&t9Sh2$E82NwqB*}-U=Lz$47!J{ zE0ezaRL9Qp{?81zvIfSve3ohDvcfSd{e0thM3-!Ux!Y2&giRjkQTCS3(;&<d3}nu% zB-#ujy&2IE4zD4oR!Wn{EN)5kyHZvfpgKpcgeuLozP}`;X*fAYO@2^tk4VpXiH>Uk zUMUMGCR>d|%nA_zPYO~eXY=}XmVlj_4~JQCus;`+JmW`Nz2<f@rh0>vR4ol!0&?F1 zefEnr0yowF!Rq06Bx?MS_d<qLW3{eJwqfKEl*kS(UTO4~MwZp)KO(9+0qLk7wSj-^ zeTHfARbY^|iN8x?HfkRim?z!?--4`+98p5ObaPDB#NqJqLSv#6Wwt58mFM3{jL*5Z zO`x+dAlNSa&|k-x%yZPeqg_<_Pif?slmhi)*{ZXTlhqyO@=X|2grP#m%l8yYbi;1r z6R{62kYU_MS8=y5%iYKyXQ_7+Q)a~38J>5A4N%R}*?f1<J*HRyML@d04_ij~pM<>n zi=4B^D`~5aQ<!6DWpQ-BFzKLawlT>{mK|1JMo&j(&e8P_)isM+=-2Z{b?_N{sETdY zwCV)Z*6aS=hW#tllz>yoILev2j~lEf-dgD2-~3+3@H+_Rd}Say6}#&&#NQoLKAKGT z^ZS72&gaz4(hG#@&xV%b7pv73H~!%cN~hbtkxI(aZ}pl|MQPN88a=H&qhUr6n`YTm z7PMRj85dol8zyl6aTH!0dfz2|F^+bT*7K{B!sMk#gOi=5>#8%e+ARm$zLz!9mJ#)s zQnpx}(aGkFo?b7_tzyozuYr>9C)=(w*p@@H=)+M}h8rQR5iL!jtkz6?DiPzb4ULk{ zkxF^}WrBj(vYOs$s9>>>49h1;Kf?MX7UV~}!RyKM1!Mq=csdW;6|ulw)D4jJC6f|5 zdSj$hgI*@twZ^KpNdx!Y*aEj(S+k-_qOJC>+UygRM>jyLqVZIgQ&3^aOND4@^|Ml` z^Ua<iZ?WA$1--g#^v_HvDsmU9Xw`e@F*r6WFeu5o4A<c7!w$hrs*wq0^&4F*pLj_0 zuDlrs7NL~}kFq#SI;$Hg`zojk!o&hsJsfe}?u&XI+1ljoDsCqX;&mNuD3U>>kn}fe zpI4#{{G2Jv$wO;)^VsV4A=*VI&be}6AZrqR7!F&Z+gXcdbC6#E!4!?I+(&}=O;n)O zP0}YZ4g4mgHDq{e^c+(*Idndraym1JzE52xdU}Ruu0I-o90+=3J7U@t&7q!(!&C$~ zF2R>1&bpME;mn0W8d~rVE%?rylNquOEN(A+&H?3*B;$6<C6+f~;j1TKV<ZEB{Fk*4 zaSKUY6YBsfbLSO+ZG<-bQBZE;@m_gwk(?P9YRwK47QkKb><?BGsq4~^C4WkB*v*8u zt<}^41iHR!bs6#pjGk7P{lV==#Dib;t+|hnlgX1?q$s3wQ=d$BY;mcv&nl#-K55~d zenA^A{e`dlWR9^nfTb}+3Ps48=uXVxqYJ91y~nkCy2p(jFYD_RRJ8b?lR6kpQc3HB zZa4y>2Kh)wzGLf}oh&{^1<kHaP08R;^Z(V}GS-1M40=-!JqnU8b<j4OnPnym0Nv7A z4@87iKD{oG;k!%4;pMievkOQX%9H>fm)<fLY}S)YgCo?QINC|gIP(sz7pIHmo}0wt z?~_fX(lKES7;>C)3V${3R8~(DLnCthl-BTdQl%7XN=_!y@-AiP$EC2dkKy=CCBYZ$ zK%0*_JbstwQ&{`I<p5j5)kCxwGg_#GY)dW)eL*m3;HC;KDBiZvMcPfZn}IOjc>`+| zWi?O9ZSin&%Dm;U*AJ11o&Yi2RHQ(2Ac{H4zWN*`&28J3YI|OhxguU-Dbj9Ovii>( zEnxpN0V~B=99UjEygU6Y>K!9C8~mIYG-%Ukb)^Dmw6vG%2U^<aRI&!yi9r2wQr^gR z9ZLf4%!>8)CH*lXgYtT+rdZ=z&0d)W>)Q`)5pm~h%I{{Hm4G8B-<Ut^umZpNu^hPf zE|7kQT_ESkiA%mu-Bdn`DRLj%Zsj3Gp|t7x<)(J{4v;^mv3Tq3M;D4rjr?IIIZIDz z_V-_~wTk(um7v3Oh&gEi?Xo1=V=~jw;f_<*|5y`(;?a=Kkr$`9P%jr!4Yy*?!QMwB z9Y+i|Rb2P&;Ti<k8}ovGqh8~`S~-)b>nLU9B<~J*l{tqZU$xsXoPA>0%&I;jM3DiT z(5w^pWbh05M|EV}FYi55gHk7M>}=BcrEe}`|MV2KMy!}V1ZRu+mGi;=i#YlgC7FGu z`XWOWom6t@)}ghlg?lVs7Q~a-iYxcFZTQzr99%_*eVBK@RT8ul>oqPjvu48y5@R_G z!xaX1`@$X)y#z@H@`5CA(7moo1=sB|%U!Dt5|(H*)4SS~_ag6NHcrfq!p!p-oLHoL z$krWyTwm~Lp4NL`gS^%?B4O{gyR<$=3(Qi$-7e+X&h6Sz8RlS!Pti=*lLUFI>x;jb zf25?g%WW12xHn?L4&?oZ;8CY=5{BV$If<d{AZs_SJ|}hizx(*rhMC@BlG2hl=#c0z zSr>+Uo>^F#CsMy4)Q&==iX|DQSG603=;eHQZ)W3EHpj+Wi3nR$<t}n3sUFk}rAIsb zFZtE&+!5fNV!k3SJ#0H_zNTi7i;h`(i`f(vYT=F1z#0aWCuq5Ta|-cD8jw%oIih3K z0Fy!Fvmvc?lbUx4*!BBf_;OS35M;+=6?6PMySuPO=vhsg#xtpB??roz5I~Q3e?o<V zjoiZ_;?%_$!7{#{#HfHeJJEEsI;dw3&7c~ti+2CAna)Qzwi<qz#ltGs4%WG72>u-) zOUmRDqCK{*jSY8(!n{50<T&=G7b-Y$3t)qjcV38CQA75r7@vH+UHQ*sfTy+N1_(GX ztGV_%Hxa(vmDs#N{rkPe2^T))Y-js19_&J>S<1~G^AO%}zBv9+?BS2(bK}K0Z5=Zk z|2sJG-V=xrj=5XacRXPRE7bq|6~#VVTewS43RY+y<<X7*8B$^bo-by7y6D~lnjVCV z#ROC>7C8i`C;QE;sIE6Gi2~~_BxyK5%m2dG8A1p568KgTosLMqKJ=|7-{G)tk|M5x zLvm%FVDD=l_LPeKzjd^sqBW<ztiT7@3*g$?m8*I*zPZECs%#Q7iWe_q>!XuZwn9K^ zxVE)9cN_Qo3Rm`?sMc-XFX002z>sicsnNFKZOVGNiI)6vxHN)TPSoHyZK~#WezG-2 zSF0<j3*>%Ejw;o+Fq$2%1>6P!*YwRXnC}WaJl&s&he31gstoEFTzM0h{(`3BwMGQb z5QA0XaAQs!ST(gm3gXf!5E$$vTF>DN0Ox9d1{Hes`Gni4iL%c|*Jp*6Sk(N@gj}g; zpB%pr#O*JpQ6<KoVUxx|w-eI)cKooTd-F2hhn1(eMBEMCTdz7ceh-PYjoUi=FZF~O z|Llx4V4<$BJk1itp^`b#&ylzy@zfzDbnM;R@Gq3n&ao$aguDr!osP%IUTQFr(0#Ea zZz;EYc-d?HD`JAcbry&<%SI1UKL0AS!C&^b{D}v6(29_qFoYNQrCKINLnfTo5PYJC zM7R&l7iV_teyh*%lsdgs_K#dbPD1(<lrzBpXfm`3lh}?7M(yLD9dOlY1r6LuAX_ZX z0K)Ot#6A|J-5;a@9Dq}1VE=P08j_xJ+`li2ZfP)~j6QK4ikwAJaK(!{uwl*h0ODTd z{J62Zb5(BvnA4lMlh~<yG^;56XKX~B`lexOR+0M3!(aY17SQT)ze3&L6ld6lT)9Yy zSI43QDelpvGU(Y7#nc>?xs+X!YM;T2Y3CYL^$e<qBxb1Z(OtTq?@4qcyMavMZ;Q(R z7SzF>@_Y8dDad_#NV`h(0f)m-vPiL?2h~yc`7)g(lG<N6=IealI8`bRku7XXqAC=u z_x9<e9UZOZmedL92wDYK8C9)lJn<WCA$Ckcs%EJQCXJFmB!v&M7UkQ<z$GYNxZawi zC-5HvyHQN+^Zy}CiW1Qr?*4&9e8%-0l?NoAwlI&cH9?(42nbk@TmYBY1_4^<B&T0? zIx^w`o#C<$G23%5KkLJ-*4sAi3PLS9NV&{Qb7nHQA8b)cM6LCzI35zk?xUTGZtpk@ zzTLGNO#MldGoe6*n5LyUvgz;O)33kRJAU;S`@`mI<sa8nxdjkvFRV#H?Uz#=;i&+) zt7egW5KP1l;4{-7IqiVQ*VlSYtQ`kw$Z5&if{a`g*M)-iEo(C^t9L+;Z)3mmB8C|@ zg2z8@IjdE{ajNnH{42QM<H5L#egdP^W}7=jj&Bt<v6w4O(b}eL2z={RxSXyOo|YcR z+R79jShz<=OoBu!7{<bS+=(+D?5SelbP1Q#pM89!I|u5~Ty|j<WJ4QPtXO}ADblSw z(CRZrO<|}eV^z%;H819~St&-%OMaK%yfw7P#1s>IiZ7Sb&Bqu8dSZra#twuQNl*w9 z_-M?HQJq-_WRXJPaOcl;hV+hZXeXtHQnD6iU30h36kd(_)6E>iWd7V|(VY{-{`4dS zkjIm0<XaumyCInP6<}3j{h|8muY-Mz5v5L1W@e~(jpzz~j;NYG1*KzBN3Hc6aSA8y zAYQl6vt^jqY6&J^fKrc(aEfyLva}-P<zo!I>bakz7B1id!(*Ywl9N2B1g_x_NS~VG zJj+6TIpUcIYIsIZjEpm1xU7yXV%V_xki?hgxKtexCiw1_sWNM(-#HeVylVCKWjQ00 zhGz0L0_5;o93HNcDE<GYE+Ppq20*JUx01pWqpM165nQL}(76B?G{XGNOYcMvt-pI> zpAPgR6YpYA5M~rcc9-<VF6NPdI2{*Xy@Qrdg?+2ucuBnc(j62o`13Kfy6fg9T@=K_ zVU?HsKdu3bdyT@^hUuJ4$#ecN|8<oY&vf2-`eY28(|EO(qulkre%<(8Ao%FqsEC(P zKHn5kg9p0q#P?tMbn1B7paN*kdK1D#eMo25Sggj0d%&{_QBHja2sA@kw4wXKpy&*h z^ol_YkFGH*)pOOK)>^Y6UK}fd*zcXujnoh$!gq5yN_sYt{jfs;qUwqz_YAx;1NazW z7Nhz+E=|wxaaUm4nT5w4khUgD`xlG4d>(%20&WNk2tx~-<8|x^b2Y%ok=_BaBgc8` zkbgUw7All&q2&PaD)4(;MOC1}RF;NjjfSrbMGBd$i|Wrhaay$UfF&@qPLd_J4re+N zLjNJX62HLc1;e||&OQV(cRe<HQ3$9!{a}lDZ2=ie$6Qs+<_NQ1<bX46{Rm3T6_!8j zpZg{R;WbgEV)K$xT?X{axN(`3RmsOa>rTnFJ&FOlzU^U(JS4T30>>%q24VYi6{nI+ zyMFoLduq`bj>wR5p~Ucm^Kbd16w7aGI(m?lBh9hI_jG2&xhI{;fqpJ2K)>Er6sZpo zhs?EDdx6kIYU@3UvL?d`hteNAMNK#%YonMK5w99sUKehRbf9KoG59tpSN&?Xhd<OT z%6J-qSP?r03WPUo4(+i`C2cGIIMhU$T4#DlEQnJ`7~l-I=G4Y*zmMPbMGl(Z`T8|I zXqi#psU3RIDyhgOwy_8C%OR6FVrb0`SOB7D)ND@ILKtM^2gG!xIwr*&1Sz!n*dT&Q z1ohEMsl6NJR4>3YY3urjHsR1jQ!4UKxEf%Kq_6&EDbplvZ*D-e!}ogiSphukWG!IM zUQYbnL=j1p`f6YxE!-V@hU~_d{qiDX<;wzE=<D+3mupbq1pP&)QnVt&xQ88s2?1&Q z2O;1H3ydz3?&iY=pqdqG&#w7ZX}L`){dq!4LsT8!YnLXRi(Q27XkDDWyQC)70x__K zti>%}Z8E?mJRmUF6k$A+$iE!zPqfd)NJ<1P!D5b<CO+#sk588zdm2Q!nGMybGyqST zQsi}}U?@z{QZUR-7BrMS`1!biBTFSx60tYf`-3sVh@hC!)A)|{bxza+iAaG-9CK|S zi74Ld%-3dIWtf)->S@SaYC4vY7=A0dZ55qdo);vcDJB0N?hju*zD8}+jGYwEDYdL4 zo9>G654<QP{HUtyB?6Ym#gsx*+XZ*7Oeyt;A~Tag=c9z+F}qw(W?g%_Abk$^donhy zymC&n_W3uf8(NGc>r#?X8u@vQgMBFT^f3Bb%!@_UL6!#cbq%|zNjDdU9qFO|W(EuL z4i_Qs+Ft~Pj^`fC{}8r55}Y^=7i%eKZ;q9O4dM^Ym4dJu_q2IdB$HeqfhfJ*z^B3{ zGxHL~q^J!^o4auC8l><}S#&xdZ&r0GqKH;rLWZXE!NMOj@$C&#x`>si%d=+T*@HzM z!`G{bT3`dLmfGdxs2&Npl?wV97RO==qm$JaT2nY2tUPa;s3L8A$=9)YCoXnusKv-W z`BGwOQN#uP?1@l)V>ES#4<J{Cdee!Q%cjx9fJBe-1MQ9X&)p@C){VEE`H%T69GTS{ zcF+LI!M}ge%xt{3c(f<lzQfB>8sZ^Fc{Nsq4>Gp^V4CWMp@eLy-=b0-Y69@9Kxx@e zfDZ1Ovv^Km36dIgbWl<p_Kk%b>|f>zf`W)upWlGr8cQfrzC+SDKDKzo`&1QhaL97R z{%jr=!PIMBU{zt{%1y<YHoqs*Cs5S}$4<rKjB(tu%X7|H`%98__dAn?JAGw>4Fxx` zgFj=Z26Nzg9oRx#>L?Yb0*B&L;n&SjY1#L8Mp=nx>hY$+cZ9fawjze`ey3V@^`?i$ zai@D3q`|X%cLn>FlT-A~xL<`q79oZ9i<j|V1e7{K28+ftugisLvXoXjFVj`;Jw)^g zN^a5(zGn>>heC-?Om?Om#+yfj<7Ma}5FF2?fqx!(M2v=rp2Sv3x{LcJR&13v$g;kj z<S?#@gXO-mZW^@qchlJRyHM<4ZNY8<)0{ijw7Cw4m?sIc!_O#`a5w}eza<`_>0t64 z;!;9|wA(i&BZt`6od9F}_yZLOs+j$CUKu`*&a6={p!}m)n~Nf`x|WhYuqXGzR4pSw z(T?^aW!I#Nc7N0)w8za(Vg+WfnNIcQ9TK9=tbk>~HyP4VRIMIlgSTrL<fbrLcP^Fe zb{L4UF&}?Y5KAc0oYy;T<NN%lz$XxOuo+Gw47J(bC!zyPE82$2UT!Rq<Uy89F6{g= zcARy?SQv{jyybO)yYM^U)Izw@JU8kaOMe)gWc1G@-Pr;el7$i29V(Mr$Ap#hJoH-v z*_U7r&YkNFcbt40M?}B(>If=u7;OpQBk^HCH=u@n@6?P{HwD~Jw`cL2`dP;91zKC0 zfDZOk8)w2}H3vBb1G>hV12K`T`iUeaQ8IgmrbMfF5PrE1QN5LUF809RVkC;U?R^Kd z4_{S9<0m$PLjhq<4wkWw?)8MP5l@(+jCEb+g5^U(^cx^K&I))8Z<~BwadA0Ev8B^+ zZ_k!a<(nbl=Yh=w_sa#=qgRS@XBKJZ?yJo_t;0EWM+J`qCF$cNVdq7oz#{?Dm@gGC z7b@yL-699AHc{C$ZAPo!{OItlK_xj0oQny+ud!=D)*w`Y2qdet1KctKFQ7(UlTh6^ z6r=!}X>yKbSs_x+F5GHMi3FQx*g`izu9<p*Dh7)7zmQu35rAO6=sxG*thklqbNp!4 zx_cy|?*C2tfo_^(h*{fK7R?sRLb|fn6+!=)w}UFozIyF{-!ZHe-di4{PynW4E4MW8 zahr;vUF?GxlD@5~L2b$Zv*C6oiufAmdfxe^@i%yj`{~LSKgjR2M=wGlb2#5Uv6H@- z&Ykm_P+!S)7J1XxGwM?BG^t+FQNIvl45v+~U#7|i{32((fd^^T&J9et0(YQ8;qQ(m zDMY~cXu8Z=ZD+bRQG3YQ;<g!7^eP0Iv?pII{}hue8~#<h^6_lJ34<~>Dy&taxEBI^ zffV*;jm8j-Zwlx#F9piSvH?vso0A35Ck@;os49XGc<F=+L{GGO)?FvU{a|KYC97&a zSTY%+jRI{&k{ogBBdg8Lkr)$YToUI^v8Q)WH_~*YaBGl6eGEDqlUHQI$XP#aEjcZD ze?I>7Qp~Wex*+S^jYq82@V{izbYSS|F*?d;Qh4-{`8iX44f>tr;K}||{tD9v>im$n zr=O#Gwew~tsJ?2IE@6`oF3e0}4JxrHD^0n1X{%%U><N^`iP{3QA4$b2YkYYky(O~; zGZS2Vp%s!pd~q}XcS^Fu;1$5-($g2Hnundu4>Q_Tv^Nh*_Y=cCdG}{rE8*B~REoyz zR&AgLTO~1j=Gs-#wg=Tu{UWXV<*#^+>fHG5sC_?xKl60RkuJgcd3g3rN-@<W;UVbo zVrQLj@-`Gg7R|gMd!c;*+RrUS+QYN;7?0pJ0L~#%e!tgHmZ?+bt$hvougJ{mWoO!I z-6}O;v-#a8s8lj>v#Mh0sCMu}3*0#3Y{{Delff-qEq|T34i<ULE7U^kc13{1FHP#Y zI;j5~9vTo}^Vt5`?N(<3Qav)4dMyjj9dBg|{Xr(<swZ>*--tnjg<I4tyYHt;83-LS zUTGZ5iFlO3J0h*5W^t*8Bne1q0!TVZN_$mqbb>=-#<)vZP5d00FD@)DoW={C=5tON zNbT-vfcy}`RF79&5GR6|Ly&WaeS@whP?l&{(1ivW#bktvk{q@@aa!y`!6dau_MV#3 zOla-%h{v6&U;!Y7bnqY}5b|<O0BL%s*}+3iX$fhn$2HyK59U>3d5ITjvB0@Ij-XCd z$$BkDr>$yn`DOfB3p=;z{j}@+vn)%u56b(;b;bX;pCl{BP?elE!BW!p(=B?ufDu5l z=DMjfp7-<v-|Z7Ex4a_C4wrhkmujsIfPC`2PP+$Wn26<_Y@T>Wc)Q1#Bq7TxJzQ1G zefREq>i5-XVQRHvo1qGAY7~+h{6r$`q+<x{pi~{1UF)(NbM=Afc#=5TTtaOJ0VULV z5+&M8Gr=Dm0vsPoV7#7Pb~LrT>UAjhOlu0ZY66=uaAQ5TY#9AhN%0e>R%)~3n-Nou z^vH^OM*}OwutoKZYi-~$cX)iZZ3I_byVuJ-9@-NPma#~N$eu8+R6^1jYEvga+R)-| zL?kXVl_0_sML&(%h4HU+FJbA;OTsiz!7~1xQZCS#D3cMcBbjpVHGg-Q0|iu#H+$FJ zg$~>@l3>Vup>uY5S=<O4$Pr0r10X1s*7bj-7xadv<Z-r=Wt|*v3b$GnBDKqu!3BcY z{Is(Z@RP>@<oiP(oV6mmAL)P$+C-dM?W%=(f8`+N<!IHC8MOLCSnA6$XPH|Q{YAm^ zt2vG$6xI?I(?M`vT|qC;@J`Wr3g_2S-`3D9-Xr!osGaJmWX0U0me&Y$_&rvF4ntun zGP`m?&i4P&O$4UXQS(-**m=WSvqQ))$ge9F*x-#)g3#J?I*2l*tR<l<Le#)y$?I&| zf|nkS6aCYulKebJofc%N*ga{Jza^y>9QUm4*yvb(*JEJ)je7@V_JRGy!iR-Y=uz@8 zB)J^T>N1K)GFYG}a(n`!rKpKp3I)r=1KaqFSUS9_y#P1zvl#gHY)CB~LNXy&7s{Uw z=;|1G*l60q@}iTTy8;MhGM-{~bAIlXjG2b5+y#O$c9>u;{6LSP*fq${k=WQE0_pta zd^YbcUFPU>9^#TXkB7p70T3$%Ye(mr+~k<sZc5^5BN|J8PniwDva>JR9^PE3<LA4J z)|TWYf}NTkU$V=jLBXh<mDla>K1nybaB0TkbK>B0F)r$8&(#mz-eXn@6vKxz70-}b z_4zmR%u?80pbx7p%nVl+DkQb^NtDDPWGAN(lmX;LC69nJUV*UgWC%G<x0OA0@?B1W zd`l(AfQhK9NzJOMh8rY(wL~yIsH^D$SC&)CGzTp!IM5YG&>3Fe5;N(OU&1dKdb916 zYYnZKCO@Fg0Uvsm6MZ+C`0W7>Zz$@@8mgF6Z)X7qw&XlgxJtN`mV?1ny59Y^3(uoa zzgj^~;NmVpMt67wlAKnmXIX|3<{CZpjpc$Fk%$AlIaSA^+uZL$+e(hE0b)u*7eg^| z1;6PyJ`_d;)-$Iy(A{x-m`_}o)iaKc-FL}fvDM%A{v}FDv)hv8VpCbx9M)Fl`{jh- z?0fncGw=y&O_*2J0(O}Wf{%Gtw=!#LGHgzyl%WOPEdm{zJIhvlPSsI13J)qx2!S{J z;WS?{<D&LpM}T#Jd`bfoBZ(NUjnBXN^z^StTla9^iY_X6t5;%a(Z7q|1hok(pK=$r z9L7(x*(z0IhX0p3^*K4#|3iY?6^mo=8M(1|eA5ta9pnG*<ka9Us)cHGHlT~8zWdP< zzK~N=gH-gU#%hJwIg>&*`Hkl3H4Ls#lv;lx>u?MTs)OARztiZ>S>x@1+-J>bf}b>H zB?#Uq!2kB`Y9w8Rd53-)C~m8xyU-IcMv_Ch=U0MMqy+|<-1*1X|5Lx5=-S3l2faU$ z(Ng~|?DU9x*?FepW~@3&r=c_9RoSyJCn}84ttdWk5S~MUy;ReT1{mqb2ug|q!3uB; zY`sqTufe@v%&#hmz1y;86`igo$sAb_`U~O?I0s<EHgEK;IN{`>T(n87FWwck02_}B zV7Tg`6OJ0fH)KDW)Lw2;`xu7#yNleuE+$*wmquA*{oSq=U=kYzZ0!e+HJrMn9S696 zy6~)HE;Z&=X7i8>E~ig1mea4(X%gs-jVbu)k+!DAs7XPB;kiMjG<vNIFMxu$b4{nI z_=$Uqv<<NPJUEPI=|NAOLQ#NdT};I$zs(Nk?!@s$l5k1-8|mM83!~!cnTu?EoT*KR zRL`vzB%cWWEko^-DOET7DRxUre4Mf)1;_~l`Y6>LIi6p!O?yJKNXdW}xvPnn4zgEX zaInPfix8pRrMmG84nK}ZS#DC};^Y<&BAnQQN^(b~fTsyGF~5aUg%SmWu{SEkLB<fx z31k2$orL$p(Nq1s@Rc30?$i;#bXx`C)^8IyM%Op$EyxwB;cV5zyn&%O7Sp2l(y-DY z{5_r)>?zpAwOXD-5#HzbTICB_&c=F?BAvo?c}Mt_mP=>ucV<6C+2EH(HKhU<<|K#) zWq3zkp2j-W4!<-I83bmIgAwW!=^Q^BU~88rvFR123UQP%hT!tybP;hqBW3_g<r+gU zUZjxEMUjWMdk}nJxZM%WsASPD|D+-=5FBgu)l0rI=4M1X_|7_ajuDtl%DI}g94hD@ z_CCmndBs)y)mb2H+;BC_XE`Gq+U*vpeZ5a*FHs7WhaUdiF^l+iXy-Bq#7%%X!-+t( zoYBQwPf>bW#IlO(p|K|MEIUT1hD<pSir-%GPmBb~SYvT>Bn!j>K%6kX?o~{RP8bu; z#HPzSj5<<MzYqY?g&@sO7tiGWRHh%1nu8$G#1%k`05e9mIqewL?(|iUF9w?JpNVOi zmlz)8);8KPJ?}Kz2fQSXB749e7(D|)m5YuIF^iT^`+=<vX1yJC3JA@($W}**HwH1q zo|X#C-$(SrRs5Ei{~heGvE)@)#R1c#<n<q4JBY0#4NWcVT7I0#U}Q?kWV8s)os-?9 z`~<!J?b5M9E@pZGFq(3jRa;jN2Anf~%_gLQC}<0r0D0@`{G*JPUxX+pSplB5=t{rI zXH3h98tZbFJE4}?`#3kT{UY2FeAXJ4e6x9~rixCuAUn+W{8aXhFH^bHV9X4iIyBI! zEMR3&q+DE<nMrLqB8E_E+{&<*4|x#)=gbW<U|KOe<jOQ$hRjD^q=H8;Q10W$rFdUQ zsiHv<IUF=OKe(3GyuG%EW4l3OM7uV|hU@1NL^DD1e?*0;CX}$h`LG{WVpd_ARy;Oa zarrVA2|}HLvRWI*sy?<z1^e0H>@v*=YML4<e**%gKNh>q`C!vj*n5NDZS(+BGV<LF zsmuG_!!r(7n#QP3%PVn9wk<k1;9BPD(ZWe@yPhNp;=97gPvGwgQn>?XYw4a>>=-Fy zBp)8LOdETHk@5(qyrQAeFX(G|HeU?wJf&K3!#q{{VP07WewjpR8wp~2L0jWzuI%ii z!U;3B3Gzx=O*W0$S9%q_O?3>;5n-Pi$9mg}$l2#8X?@4YgMn!c@%^k$f<{8yzYC;` z<F<rn27fO~KE3ZV7hqki^o&gob9T=V(66goWoF%fT8lQ)VB27inpufRu|*g2ukJ7T zBB9i`m`q$_i~BX%{K4nH*YI+&3eDPlN4O~Mz%X6dCZJA@?Cr$YjFe1)2KoazlDtgM zxxb!ks53n1P<l7c`kd05Ms>ad>;SDZwUh?rGBH(H47FZ_(#t&nw-}>2Hzc|dM0(N+ zzZ)2r@s4NEzaJoc%qF1iyCYN<V^%(_;!#}yPuI|+_=vcDKxMDv5mo9E%`x%Py--Te zMoku#Q*sh<t9EdmF=4&P^*4a^EZO$I2!O<s9sF-=Gu5+kAk*>K(QhmVP}Ac8Sv*m= z_iVDCF@!-fdMiI^*>zX7{*O5>L_TwW-yo;{96Norq9Edqg00&f=`}C=aXQ!?w5K;r zyd=^p<#c_7qre%L9@6jzpc_Uy2C~wL16U_grVmqgX($Qg*l#agbd|zu?~<RAZD{C- zM>KvOnbt}=xr1|2D*r-a$rf-rnrYM|ZHUNm0c>=m(FLzkaWOD94Yd?v3qR5gOtGyZ zNx>Y(^KtbrY0Af!I}cVKi+b>FFSqJvI#`Y#3x>5@(Iz<H>MEP`7vW=Id?S)S%yIA! z2jr+{t4P_k7{CB|#0xMY5gr-c;-Ik8Q3`_J!XRHbLQ7SC3VF!(8XiE?za~&XJ##5V zI#)9&NA&zXXq9Vrb3|4Ge=f9!+@W#hNGzAb1$=RQvx2`PB0R4$itlG0V;{e!(*wx$ z{G@H_E50J@K?rk?sF=9_j2YTu>l}8?joF}dIuSaOhK*!AZ$%cW#3B2f?$$tTI)NAv z7KqB;0TtElsn$)1EF#9w=a$d=x!(@XY$SL2X4pZXKj*XUHMAK*{B|sqAuWAgsn0}t z>(8@;W?=}Z^nYY;CqohQ)AxFQi`Mp}N=#;5%Eg%{K{|9e^!XopP91x4OwKq<cv0im zo=4^ANtyowKyl#4Yyj^X!>}|(r9d=gNRQJe8C?Q(SPH1X&I5bQ1cnd;SSZI$6o*gt zOzTd&3ZcMcE@`mXVnUMs%q`z(e>EI=-WDhk#y1SuVCLR>@GR$;B$CsjEav1K2LKsU zjNY4=j~oznHJB20UhvWnFG0v0BeZ&My{Q8{Rh>>zcqrhhLDCPp{MtHd0z?8hyQ7~A z!hm*w2!5yKUw+(&jWNYYaevj$i3EcZuSBSNd2Bp`r2|TsA{+a>8}~v~7%T+dDsGWw z9W4vNo2$RG8F7J31MgAgoFGwgo7y*kUc=m3?pC&*+%n`gKEvsR@~%8chkla!F8Q8* zlb3>SQ_U3>J2r!am@Wm%vIYqhF|6I=NTxc7Regs&?l-(f+Eqod_q#tqy+@`JLI+(Q z+d`z+dALF!X{c6M2>lY$8NH6FSxd3-Ixx!`l<bv{!w~JWapID6U_}mv0ciplmUlRp z#tsPJ<hIeZBEyiueO?jBv}%{nZ-|>K#pvo%{GLF|ygaTIR35Xxi5?a(%0r>YB;2uI zP4qzWxaSJ)xg!yiAtab6&&%5;Q4J1GDSywg^iTdQ9jnPc?p3;4(8hmdDvCbaRatdu z`9ONwdl<pqwK0wu)kgRfW6dlv&b@XmRS|`u@w20cyQt1ZTH^{E|4_M)*83p_|1PWw zjTVjYWi)yZ1KSaTh~zO6;dfs$12!>7Tu0N<Qp{a|t!>)p-3$z?-5!SM;4fHWQ3KvB zx{(&bLY2mAD0Oxaw?#YLh}Zw4^>l8Uo{ANhO=oZ`tK1<sa8XB}JhD&9t#eTMCf_6g zE0N(sA|4g=2yl$6hy2dUNMx2v+3_q-;{THYLYb2;^dH33uYD#)y1(wjzIf&F879kd zNz8Yh(>aNu;uxcrA2m${McI_mj3Ga`XR9XSsk0Yd)gAVuKd9OVuJ}tG$yTJ{&$Xvy z$t}g>3_jS5^GQYkO)VvUBlBuC!8N;f<G|dUi?czutp4fe3!%t!wikTh%pjg<R0XrW ze7wy0A}YOO{;2Tw*3WW9$fP4RmL$5q{-h+7lQU{G!iOz<sK(3QIb5@jB$VCBd<gL@ z3$}`oAnZdIg$;ays6#^Ds1V>U4m8qSI43ZM6ZZ_@uHRiJg=9?DoPX1xW4r3OV7TkD zfA`O_V&CNr8E#LbqKkpD72}@!7F*pIsNORf73zPi_=__Yc<Egqc6r)a<8n9uY51m@ z(Hd)1+p7v}ZcD8?j_NRq3#QE+)XdNn*tpI%Q}MEGjla?q=8O1N5);4HZrIe#c3iH1 zkXLx!>bfitJRc%4o5yrbtX}9016c8dj)C0NlekiuC&<dKm|!#Lgf*!qif(JtBSKNV z6V0Y;i>2Tm@v;osAqpy@%AKuN#RNoeIA)M9q?a0F)B-y9KA}Z7{`IFsWobIRDkM() z<uIHg;uCxaH5$JyBBJkv0WrjxVL4<h1GM*u5Mp9duAm4Ez~9g<!zLC@Iq8~OW|D?$ zlHlp{<VTkP^I$YBGnKct>96eRO&Ch;zgaKe_4Up@Kis5@!P-`dk||t$LoR`N9!>NG zCvJSRlO=J1!csMgx8nxv0ZpmNQp1#q_nTesYk;e?gAk;L^mg3l$9q20OoyuzR)~t_ znItKy=-TZtQu@klJ+JVo*Rsm)L2gZWv<&4<X(;PL{(_E@erD(DnHl7Z5)S!V>&<b` z*o#g*Hg}eu%c87$4rPC6dL9QoP3G|==egS6b}(2Y^IH}uT~6xk^Q0KZOtRz?p{^RH zAY66J=yLwHdCLb*1Ceqv$fgZ23iD1oZ-1d7(kia=!H#6mjNGB)%s(I0;zb<;p2iU* zG@0uG?3>;nCv``eT(9Sv<u-@$IkB~qin_o3<7@2@L!1SpFI)$+5bXuj!!SWD+v4DP z@eP;(;S8Q@kS3IU<e9OC-W;HwUEHzXXH1mTlj1-T$4Zr1!4SQmyDLKe#=SP1mr)#- zH%04DJg+{XBQFi5>dp3Ct_f%>CZ==wQq+!5`YOd$6!y_?_9*5~%c^!8>%GC$hL)l{ zb$78{b(tX|OuYROlr&VA<m<5xK3QynR@#d)liq}DI8ecR>-{rJaxz1LmwhVn#3P4C zJPk&@xY?rc>IChjY9)^$(Po%fHLvjr9>gqLPc4Xki!1M)(_Cxa!B)}pf#0f8UdJz` z$i*~CeSrhqRArA7AMlDthQ|;b$W>t^1J}oxX&}qrTbFGmP3O!=0;lLrJxL_t-Hx-w z+BhQtIB`^d6n=J5qpp;Zg_W~4GAM5}=Zr%4Jkb`ux`mFZn3Rc_GJ{GKMWUp_5k-TZ z9Z4@~)*mVI+#8)^#2$CgIht022%W!OKe_nOQNjdLS<E`(whAYmF3K(j+y;e%Y0OEB z*(S*jf3hQ9?CDzrXHgWreBMxCjp5;U7H%OT3<}7vO~z1k37fMjXYalv_0ASHQ|k&` zL+5IiXkvD5_Gh*ES%}7D0EY-jH43*CyjsopEfYe~$Z6Pb>JaY@UUQ!CO97+lJT$a0 z```ucPxPos>3r1eUQ%+rT`r;kTJNa|mRGQu;j}lOxwnuV&}2|Cgj&N<^x^VN48u+C z0pTM8+jorD$zvw@${2bi>3v!`7Lp~9pmO|7y}dRJm7QaX6@SgHHm&j2H2Mu6@om8S zutfo7nX-))8yk1LU+926w{I{X>>>;hoEDY{Nh^v-d1D}>10xiTe#WO?vD@&N!2cq& z9;e|GS|dvEw$}TXvb4+?BsKW8nJEB(<UnvopU#2)V#;f*(sO)dfDi9CCRzIyhI}aw zl2<)guWFAQHSm_uF7t<xqYHRRLR2c{vFL$Vm@P5Gt!wM{f+;w&wuBU<Y<zwJ*Z1?Q zEC;gOR-pN}>ESejew7z%E)BfmY$SvG6P}LyC>>cX3${q6VGVyBNrhkHUU$3AdT38D zN)RWS4L(gWTf)W-)XZ4#&DFP|=_o+n=?l2c1-;JMn%kTnRTd&tBX?d3N$p#)8t$SA zZ-oP`NwmP)Cy7H0rk^~*<5K|1b)`JO6loMS3G^nWKll)UiK3zA3G7_|zUQnkD%j;A zvk)&%qb8j+I4xQzhatLhhB0Gz$h<^iB}8bo{la2qefC~BLnSJZv|>JELJZ<%#*BvV zRmJlCLs(;EY4PN4R&pYjbORqg=XL7F|NM;g_F>H%;3kecE`NT4T*cXQcnK#`^u4PG zZ`JeqpL#+d${mBk-aww3p2l1<=-AydV2RmHJ!BI_4NuUm&)mkOhC)Pk>?-lR%pd%B z-qwo&2h<ZuLX2B+W5xhBPE}+$7NsBj8?t`+xtaK=1-8iXdU1H@NAz*DzGKBUrRjpr zim*=oG^o{3U9Qa3HGm?2wxfF#`Z65#J5yaAX|(qH;er(tNT`~2!yg{Bp;~r$I=a5$ z?2M+M<8Zs}Zx^*@6FTnd0D!UUvak1I;pk#z=-*q{N5I(h9zQ(xXO_pIUmu|JB>+n5 z@6m;N%I!=3f=!ZBeDV(nl0->#)0uNH&FeY^?+e&S(8cbH>F&ItIE^fws%B^T@Xs`n z@dNoS`3AUtN<vgR6P#p8>kz+^S|SdFIJGp7qcQ3pQHN{kKVNI$k9lIITa4HPmWiq# zwOXArIG518TIH?G4Nrq_^ImG1GU7j#IHqDHZxDN6$=miTQ^PY?1FmW#lY%$6rDh}7 zgxC!RkzYDoUL-tU(oq#-mG9$PH6lQkn(_eojntggYu;9GTsI7a=zSoh3FnemlZN?< zT(a@y;DH_nSy3RTyG}9Y)@d&#Z{@5{Fksp_$dEs7H8!cyy*kD#8eXd%IY#h%t)Pz4 zmS7fe-_#$dh@a-IZca1UDi4W(Po&dGuo_d?uhx$4tYAj6B<~xJ;G!8!70kLWIw1D< zf3&tLZ+S)P?~RYQvK+q{ovx~jSz^h<e{pwBSuP+Iw$-;4i=t7hio`8Yi?-Hf;Ls^y z_iUNDZa%wsF{Q$V_y44OQ_q|*O1ksC>3A{&kSbGzLiv^IT0z$e_?4~_VYrB8y>5>F zuVd!E6(H6z-+I`K46?t${V+caC4`T`Z!!?w@Sj#Iu#+gS%9oCdLcq~26ubZdV4r}{ zzA>m(x<3H^I{6y#kbJBQRUpqlq)A=5vLqknOBvOOxN2P$@4nl%f^Zmyn<@2ErBehU z*^VO|_;Wml<s*MZYgpDgm4i|*$X0jL-iQJpz)e-jUv-IbE4mXFNsLAmMId!?c6!&x z_h}Ei8?xC!FrdH>DUoE3&Src;WBPIrf$gi{>3o9fhm8bDcy>t}3EIf&Da^QSxy0X> zqJ5crK{TM~*eViwLIL4)*{dSoE3fId<J6d?s%}6b7V)eUp{h=JF$Mb?GDD_M(<`yl zgre490OJQjWwFO~^sUe>h<_y=RC|#54*#4^pxTF#MX9W`fE~4pq~Cgw$U_G&K4^7~ zU#wXe7bCQ@@0dm?7f1tw-hTC}#MEphh$VcA$ti`iJZ|^llqW#^TaL94N|}IgDxT1y ze+B6%73*h9&g(AU?*eKrDbfo(OcGhxMJwsI+4rl!3r;@A@h`;=v_tg<mD5`Gh>(~u zyZXp2j=ykm)Whl`#|NG4l>7vIH4O`CanzGu*jV(`&nz@%J-Zu}G47${w<OLLV5yTQ zCb4}r2%T%+>Zd9GuU7~XpNB8yx9a#N*o*%Z6zr)RADM^r;UUdkaX4gggC#nEqB!Z= zOBVd}uliN+hZIcS8-4wl*#mMc*jHZK!&2=ZCj!B306I#GKSLdA(b%_Toveb(O)<K> zRg$2xOT@0u5#%y-P<r5N6eA*If>Um!13B37au3qiOjeno&dXfDc8T!sub9^W+5Brf z{ne|Jb5`pF%<MUh^1}F9<tYhfLOun=Cca+73}IR=W~p5+=D>sgz~&68D1AaL#t%ip zFud4v)P!Y8DTACmvEP&-lLK5e2@T`4U)>LHmY#!L&O|8N!$u}PEUpo_dFT(GYkwzJ zOvHpXGEq@t1Bo8QGoa)Ww&YNhkCYMAWD9?~PcI43=6Ff4IUfC3ZAGKt6`jl4io3+K zXeH){tEQoX00!<RSoOo_Q5oQm$?*K)o(jJW;-nD3>*|yqIRB1A&K11p9JLy2z4S&o zjlD~bSPOJ^m$Neh)gL9=7R6#VH&GLJopn0=di<e{1TOc8!v*$-w=o2`Br6i#TUa<@ z81zo{4zbpPo%*#-p?BrKF>CdgTMmy0i&7<!eAsNP*WMU89PlO44^Q_Rw7R`eSzJfl z;8kz&7(aa<m7drJau1uYIpYHX`cMzlA3E3&oi~<*>nbno!mEl?FAC-?>%vR`?;y*! zfA`G>$Qkpjq8M~FhIf9HwvH@b)UHoB%Br8?fl+}(e}o->aN4$DHyk?|2A&5&ULS$9 z6IpqK^_kvXD=$+`w9U@ozI6BFEIZpq+}`>!i=mhJV16z}ECuxQ8m-kAOEHg2qUgg2 zMcgbBP7EiJK)ZKj#)iV;CxD*-m5V~nFNc`#J|bgIw>+EGE^?Q5**%vAcHQ+NenoK+ zpH3%XpIdUnBcp-XvEwj$pPRbnp7X=QU<15gju*L4EJ5tL#W-Z|omKQ63xhuvi`h<n zxDT#$znJrRqAOdwCCBjOv`Z!YN=OE+hgWPvMV*%^7ID`Y3rT0@*@e#8Iis=qS0sU7 zsv8-)G!D`Q<~!`J1M9Pt;%o3PBX}8DH0DInf4s6UQ3`}SLdZ$7)RrP;{#diND*lk1 z*q8rme=w>kI|H4hQiIcYY11PdU#KE+T~SRL%4?x9a*{t=8`2AHHL`N$P8eQB<Njv( z0s@`dDLU4UC|ALS!myhfkf*GML;Lv26NKtfQs_%$A&abNK1!dPsgkH$2=bD}Tq-_V zN(?~}gH^P~e2>ne>L#gYHXS~&-YON%iPBp!oaEg;<V$Nk2r((NBk$K`fowpjFHC1S z)uOovdo!d$aFw7hmGVKYbvi4I={7>q_`{7grWunDY8TxADq%GEF^P*>{r4*>EqO9; zGMa(({hAL%;%Jc6H;U+q=t@O`QYqT*UwvYL&R`*sKo&w9aAbfa7j)?lM;FAWRU$G~ z@TCjZi?W<~4WPkB6W#XLd{njtJ>pg{!^f7;QjoV}@c25pvr{n=V6H@4POqeZaKRH+ z*)yzx@R=A2xGo~cUZKk`M`3(mhx@0086ka<fj_36$jhI=hxsCZjT;oUG+Y@MZ~JFp zk(T}O7OYv4i>qAd4?lk?cSdlBoo+-gL9r<4_ULe5qsqLm2KI5?b3@Ooqx<G`5qcxb z&+fXcReZHm{Nh$wdYV!$@r8bK6RWLGhN@r@d*@$vo1ONZG|n2Qzq6tM*>Mq4#HZ?0 z96Go$>|^qpk*V8gdKD$yw*758q^Q6558s>ty<)%o;veWezdBr-RVDNR0mB-5wN?T1 zvn<Mw2{-6zC~YCpcchy3+6C()1Nj+JB<R*mm(;K{gUFX?r({B%B@6J%HEQxG>#vir z1JxX73!<oI;XOOUOdam-UBRHDMw{O1OkhrL&1v8dDS*x{H6_f_cd6U8KS}SkK@i>& z%4nm!*SR+3^&$0|D$N>u?m(@Kb#Ln~Y)ajk>RUdD;V4NnD^n#PB-N2ttK=`hOYoMZ zL;Bh9$>`itS!1~g8jotELs<u=CT)BtXq09)0Y=Ta!fUP6wZ<hn?efF>3Aw1~N+#+p z2bEaEJ|{+u5}H89^ZWD=)*lI679)m_wgL;N8fT2?5ttOcv7+%z6;r2hOaE|YAcJ>I zSmu@{stHBjK$vNPdPh`}jHv<(?k&CsWM?3FwiMnLgWa57r#e5KKoTT}2w~MqdZoe( z=v3GS&b0C7dTQxy`z6hG`nN{265!y=%zgWv#|Nkk@c94)IbGRaTNkommFt_<xC|>^ zs;EQ&eJS5JOwMR+XlEFzn@;N&Jzn!cFs+(Go%hDO{(lV7ee}MWL38<674n~^YAEd| zagkDM=OHhl64rM+(b1D<%1}@H_%hoZH034^Lb^<hL>nMjmIj;~-g12lKmhc{<ThZV z%h2^J(MJXf?}WsFD-zpbhM_QUXw+V+AOj;q^igW8Nu;2;@+uvQ?@;n;ol${sVy;{J zKF1XW-0sSN{@iC?m-Raz9nEaLDr!|`_C-JAH+E*ULn+qh(D{|W&p1}WF<_bPkS#xB zcP{iSd<OYwx0U>JCFpZ1;Oe3I`-BYZxC6F%Fo4oaTcQyUMx!ZaQ8mLO<Cy%@RB1xl zj1bvQA=}CuXuv-!U*e)xy4EKop_Sq_1N=A4hUsVydrKS}`bZoqjKICVlz}~9pNSlu zNXp?I#DCy&@nki7y;cPpPnU)&9`?m+HB)At(JTjO4b<9!P?Ex(w{5G5=fn&imk(K! z;t57CMw;39;x4}<fr6;}&S}OkJMFg}mDN90cIMi>W~Tz5`+xw)8#R~lf_kDozbZT~ znUglzxo`N7Rx5)WCH1%L4xaj%v@2fKQpJs~pB~0xHy}9F9Av$4kpAb>`$QF;G-(5+ z=DxQ^g(~!sY^TF3Dz)=1BGlaQE0Z&zDm3SY-qTh;BZ9A$qFHhg@4Aiyy%xaj=DTT5 z-H$IgW_kRaWe$WN6jd7TFg-F7^WjxilVnr|>AVU_pI7$_`$C5RIaS1XXT4;wVXkop zkmNLCg;iA_%4nWMuzFlf;~R;-U_U+ME-QVqsdWwrLDjN+r5G_1|JAhlo97Hpu9mK) ze{y{RMyAohlzijKTfC(2fkr{z954CvTlGnqPZ&m&>tk<Y6gxKe*y+y1Z!=g1sl+ul zsZ61ne4_=zA-d_6SxUo(IWy&d&l-*}kVXCa@8UnsUtwgoTkb@TY+z&Se@CK%ty`0Y zW>&-TU4hE`M#PsogpM3diE2x>#y?O>G6k87(%x@n`?-7QO`GHS_j+CbL{({JO$iS0 zyMwdxrzjc=N(Vi0Y;kHfWYyb0V`)>*WncFsjM0|*H~zv|->@9-^<itlLabJb{nOse z%*l;n5A^$OaDwaS5UnRLVMP%C&558OlY><$7GEyQA?i)c8K=$H{BLBxdNXU+{9<{w zWsjIS!uO%>Z9fA?7=@+m6~t86*loK#?NeY0t?cD*;T)(Q5=g$=v_g&C^Tm$QH;D$6 zZ4i%>FEz0Ec0M(B9Vr(AY_h6`D7nd36`|bFuR=b?&^zv#R?j+kQPFdAUe8hMBZz$U z3c~jwvpVF@!W<_JC2Dr0bD;SYFq=*7|A4pJ$D=;q34Tl<2UC|TD0e;J2M+ul!cte8 z54q?YoT%00Y(gi=YHyO$gJM-4%KttmG*GfMC|w^S7pOQDph80fcfi@1?Nm&Lq!cpI zYx&@<T`{h_zXgI`Yi5{2TPm*cmW=im&(Cx1q07Cm5S8N!R=q=`Uv)x06Nm}^J%2{K z<D0bIT=?1EnD{rn7`>v0q56vbtd7T5Q;OfGtb{b;kI0cVMU2zJ=;!K$I*POaWB?y< z?)onVvtQq)VbS@^naASvEs6GzJ&nJZR@l}Nd*7sa2%lgGbrKXbY`K5_;gzUVUls`9 zET$>ey2Eb@{9q7G5XZIRCj=<=xCm5x3oCtgF$m+effM6Q1)Of%l6NrZXjJMSPPMth zptI3DZDwcrZsE3OAT(fQ48ymZuB1q~v%{|;TTi8X4;3X4tN#tIq3h-nJLvgU?|!Mv zmodMJcOjxzQ5nVBLw;F~=SylG0y2BDj0A!qPGDe|P{0!Y;#?p#_YAiMWRkE~Ph;4M z(Zcj2LlY_@{qgXH+Rr38nnuqLD{<}&KR!_7N<hOKRrvuAtjj0FpaB*tI@!3LPN0}( z{zPE&tJ0|Jq?(Xi<9Ja>zUP>Z!y0R$cee+RdG5<i+$?1U;c8DRtt6EXDE}6dY7_X= zkd*ezOh;O@;;3}g(+9UU#=|4&I@tFouMH$b@D+oL0ht}{{Ex=53_YeX3&f$EMfzMG zh9Of6J2iAL!X6r7c(HwkPN-tjZgLvJl%tQP6gwU6b&#Hv{5;8jQ*|O9pbpb=l)5uj zEV@h$v?kZt1rzM^x{Pv~?^?^Ia>u7t^FT#SMW=eWKC6u?^ZTcp>BgTHq_1le`~j(e zq>h;umGGExqyEv)p#V)lvcJtx+SS^(K6?y-pus@d!*GU^(c~b9=<}q(|7A8BXcV)V zCgmbR4ET{~4H|;d<_E&eI)7?Vbp{z%XR>ZVpBm&uy;#JnGlCjEXqp+y<Ar!Tlj=kN zxz$(9I&OPesuyL)7nKs~r`QYFQcFJc!*4hg#F9C4gaf)T`)ZeG3_<j#3gu!*KAoYk z7F4OSUChnyMWmm31e7K`dDRtUDgX59r`-Ag!ZcTgDf!bXCQvz6>WZO-l4Mq6ipNh5 zQ`R&Xv9ge?*7U|kna%e^AAX0^XT)S$m++ya^Vk{XI(%y73bo6SHnkXp=;b$)k(>8E zyKVSjtKmMfI;MH&$lwv^XdDvaY^h72^_Y2GE*>h5pXa*!BFv3Rv15$u5$YWviA(;x z8e@T1Z;$nq@0FBU*>6wVu_2E%akd*#^^pV2;(Uv|fO}xWJd_j6BSGk#ZK!6;9IY<U z>Q#f%g_lidQXJ{fs9mLu(bPE)8l|XF$HxIpY(c0H9)_$!?AQ~rvynBIX(+-QmGy5< z-4YRY<p#ZOltz-4n=y@mn#MnhYW7vC`>6`L>VDCkI$EAyu)c92S*H|(N|S^ddwf`Y zoN1!vI1h5=KZ8R@>V$mle~c~na6!@cpZ*5?1c#4~ujhRc#4Xn;3}jd~YK0BIbj*HG zPunW4az|t0GXKs61_g=;hL^bH$J2iLrQ1lew3C6HGwd6erR1)epp#Zz_r8Xx!>^P| zgH2=o!jv4$51`5Hdcbl!;BKmw)J`Yt5LLh#6l~V$Ia@3Pe;9aGF&zkBxX8n6MJ3Ej z{bhU|3yHPpiOjHW>Sn-d$0yICp5C#|1B{5x(r+lbId57>=Y>5cN`LuVq{?03mOWKJ z-Cm2$JLitBe}DLt`WmjeKN?E7gQ)dQ-QPiZvWVpSf;Fgw)ZqwM9SD*D>}oBR$kEua zVb5E@*OyYOC*=LW_w>!vC}<as3_?+xcIjdI@1^1laRUUYm-0(lio(`3(N^=vpBHeG zF)Q!b8k$xF<fYc}sC4&;O1Wak+O(x2ps?~GNe?JX1D%s~osjDO;HCg##i*8nO_}a% zZOfLlTwNA>@|?8mI`mbuJ;laYoY?#G`Q(REukkUyHF}?*@P?HAWfKf5$58-ItGJw4 z-84m76OQAQCCyL9`RyFS!6n@D5DDjn$VbfOrGeH3-Lz5-q76XHD{&tb4%C4wLI0Q~ z;%YdtaJBPEhh<+<DzK^S_Bsy|WiRLpk`&66NE^+PBh}O|xMd=wHjY>g)s5>9!jDTZ zM$5ASmZXHu#O*0mZhIVdr0V5YM{3$(wUB)?zEV8GK3>4QefX3AJDtdRe^PBATV+c= zJWsnwEi`Eap%w2xjABO${V9nnt6fr(R&u4>FFILCQ^P=iIB*SR091_c>iI-?)#XEQ zo_^i(52+*GLN0LwKMQ5gmB#BcQJ8GU(>{)1?lbp+%J8>^PH1A1=BM`DoM@ws$^9xe znz5;o3>>%gFD}h#Gl2y8u6ngb^y`^|S5j}M@<j~tx&+y%tvh1InRekP9@>R)RD?Fg zLRsC`<fj?=cqn4~23gHErQqIDXG~eKMy+j#`RM-C0I#EAVw-)l!-Kmt9>;B_=LGt6 zn=U&!1qr5$nIQL;+idtS&Bmw-9M7e1rwn5K&&v*g?(mU?H{E0x#q`x7=M)D-DP04` zLFPrUl;zub^(KFdB~!>6tP-x2sc(A7hHPNLIG10(tPOV34ta|-w}$9L*N0dwI@f=& zL|1yA`;q<|&&a{t!97xg9Ixg)7Ob!Nx4}8)^-^f0;Lq<U1!r^Z5}YzC3FjE|;Y|BR zA_e8Tl(;2DL4dSZ;hOsaxB18vGIzA~Xz`fcL_DmRJvYG6B~f%UCze`prO0c{5p{03 zraz#WD={)c#V%4=W3!x^yh#@AO0R{n)dK)}&%9eW@)BE`Jf?feJ%qp?74EX{NQulJ zBhTFHf{Ju?RMKbDJY^D+Mk=aV%NwEC9tB76@%1><e_%OL6FWB@)XwW^FNWmeZSP~r zpObF``=%qyk&kG-p<6gPhy58BNiI7l<kj0b+Dxo!o|aP523MkX{`SmY5oZi;zxm<9 ziwpyz4gNghk<2otG%JCeLF!&5k=Sp{sL;ioL21p^i^wBRE74J=B;O^4_3}9ewAYL7 zG&#g)&@msjSjsPCyGe)=%vB-@5Vs?nCrb)cL<Q;C>wNrq$!#z+I&DC`rrrAWH0Fx= z{*^#Nd`=HfCbV~?_4Pc3LoVr0*}xjgKiiJlS~hKHsnh`8mziKVC#XuM-Gt6nxQtyW zeC|;Bzpe6q6xC1IC8ei`fTkm}jHdgQw$<0g1R4v+-O&naVn}VR-Sx}sg~%)t3$uyD zrGU<w^f8DEiIm{6sA<6Ueer;*_~4pz6hiN%WMd;5;`v>cHvzds#1`jyF#E(_KLL>d z8qClN{n^oN9<EeV4rij>COW2_o~PkrM8lIWeX3LeCyJ>y;yU4aCMU_d=>>sSPCEYe z<xOp#4yYPUk%*2v^S2+ZJE2@^4*c946x&J5gnD$1nvVnlR;5WLKlbl+^}xk$&YDz7 zTqR8(3c5&sFW1}r*4r}#urv`_s#9(S*R>!rP!N1Nsj)C?Qb+w{{?LYdxBMDlmr}pi zDf<-9<yV5NZfcz?fNdJMdO*TKZF~g&4(wq4dq!xlc?6&=#JA<!@rU?38n*r!GEfqs z_S`7ky%ih+Mgyp%lSzjFkDYTC=oWAVxw-P&bjp2?rX(QKNvLV!SagJ64FT-6FR3>m zD%GAUjH@^BH|wO`IU*S{GoR(No3G57^N|FdNqp3Ap#c;Sd-ZZMkcOmf3bgRcs|fv@ zY}iul*ROAc$~QmBz#q@A?V{xshVL-ChN@)DS_w{p&JMzX5>4&bihnxfT}rAcA`N4d zmDx2)z>3;Sn|jpNSH}i$BuFe=nwgXJMpk2sv3o_i#6f(vekabEk(2RNE)Db}8tHHk z6ZkHO>~H%9f8=8^1*JLy1SKVXqoRjkjzGRW`c5Z~b(oqdDE!I9P)_@<-YfcJT&h_@ z0_4PdE*aCLE`SpmEggnTZyb=mCf?2p@sO&M7m>CRWaJ}&u?PG_u(E7RR?~KDtIUV~ zxo9Ox+Kf~-TNDl>*wtQbN1o|)vGY!$fC%WXWk+RAiE3#_X}F%MBsG*O<_Q;-7*NEs zG0ul%qiSg?o@)Ws(#;GJ{?m1Dir7OIi1yTPJu`5!3Y!^)5?NfDu0!b5PZ-<O&ru4| zEssEk?)nk&8s#QY(|XQoYE=nSSd%oY*-KZ+s$RvJO)@<R;Pocj^d}jrXZPL6t54Rc z>V^P)t1W)yaf25Uc+ushuJbh4FQetd!JZx2PgS~0Pr_rVlQqf<478OL(M`8l1WFnZ z3NTmBvW{i(XUqR6%C^HYJem!}<WoFJe)*W)VQXL_it>|((8-MrxoR+cUR{rSI5Dh7 z{Y;-*QgJE2WgZS41fK>V(GmEhxM;5G@@RpQl;iOLvczl2){jO!z*5dK67H^X3lUN$ z&fVIX6Jmos(ToJWLTePcfBs<6AT)S6MQg4E&giLr{upotRdrx+M(M}F0Ey<;CzmP^ zhogq@@z@iS3euEH(DDtz9y>_B>KN*ACYO+|;Pa+{_)pL|?%nKVJ|a0Y1)D8xu`;8A zhxx?<{tPIv%a@v)R9R*CnA~%5$(r75a=x*M!d)2AEfo%8>FX6oQ#&*++=O;{E@`mu zolwp%L%CLFGsP;mk!R9J6)*j~n<W>0TzJ|>%eREhCWE7ctP*hoCY(wT6#4lj^qpuV z(X473^vwusOqCo17f>@X$~jzbDv}wy28MXVCI&4PtDHw{{<+YY0#O9~_%GVp_SZ2Y zruZ8MJkRYRRq_)D=$+V<I^MopjKF#SYD%|@qP{(64=mX143V;c{=K%{+b2~sWM#`9 zCqiNF((jCe7s!;WXA2`p`cfo{DB4Jks&dSfhC77SLwlrD1Ffz#vGFui)|8%GS>Yu! z3o(o0fWZfor3<_U{_gjd;}Pe`YIsoVCWzgoxq$CL?8BFe<ulT+WJb;_{H=U;#}G4F zQ=d&D$>d`}je$~}+4R>9+#8Ykcp!wZXvO%hKuQpin*wj%RM&Ycv`72gCRFn9sNaL% z=xTD%=FFp^Ago~4nD`f#CCTSGs?1xdr(rUMfSrv?&A?~3_QIZ5=*{2^(aLnM#}Bzh zygM?3Wjs=4_)lBe^s@Iu=($Khy_%BrKuvcUIY$xFc3W13W~XR=^xc44sIojS`-;uK z7TvQH=4PgVEVdiVBF}I_93_VV*lEJ<-5W~jtWMlK4}@gdkTFW*^=n>qdw45WhcR&@ z&ZCd)d(M!&`{qxE9!czCQ`PF>*7`)lL0Py+1()--Sr|#l1$eH{u6Z%2Nn3LVTxju| zE?wP%-#ZD(al;?|qo#S?#(<%)nLfVmTuR;)YP#rk#anYINxJR>>kyABT;+r}UNJzQ zRDba9zd6yF3Fsh*yV2}9?yp3f@!A`ZRZswh2$XCWQkP!{r9C^@D_Rm`YMD94kN^Mi z;fJi-IcZ*?-YF4$UBl><+xz|JiJAwKuB_fZD~xck>H6%;QM0mpeF-(F=;aV1K)3;C zQxLgps0za7pCXs}elzx+%vUs*DjmZ*2#}t#gXdhnyIMUxMJ05Ej3PL*EuhL<60wQ< zz#i9R)i61FqQ?bRl2lqPqJOljf>t%3^?l4w^j(wPheg|EhBX$W-{PCaRUDNa;$~Wd zgQb~@Hw&MfHqfskPu8X;o;KR<+)JLgRCyHEyx=7C)m8BMeZwDxfaLw9S4Vf(4fb1B zJUa;BtQ!B_WaBsCYZ^M0<_8*KYWmazc12m6dG-R&2{MdZ)`$mQ_gN<3so(d)nHWyj zXCMD*HORc&Fje*{r7ttaqhy~qvSM~@95lo!e&HLAcbb$oM((u0T;0)VDQaqIs8qPY zF!eb{xumJ~c|`5B_rF>ffEKbHSR$UCD-x6DLCegzQ6$V8p0muFUiXd*vns?dMVPgJ z#q5F6R5d2CnD*Lwygur07@81z0w~l>sdZ-o0rX^zr5%}hl)(olbwDphSakORZ;M)% zn52P64y2o+**72l;zV1GsK}la(iFj#HI|YJcPWoIhUNmR9jfnSpwANIV;dv&ziVV^ z8?pAy(zY$C+gQ>~jZNvZPgv{r|7y(>?C&R;B1kLnTYmkKg7yusZo+Hs|L&99cx+#i z)LrN&AL1T0)}@scU(aF+;$-UA9xSoq`$pfbuP*FmO8w=f@Dnv77NBhc8_UwnZXEs# zySZ<#UFRI7fv^-c#yZ30fsV&DQxlxNxFqU{WVf4nBcgPxJLU(6&QI1jv>*e8T{Bha z_B)!T!oCuJG}#hSfsjSsn*BjCO+29ggXRkk#H`toX{z=GDb*sR5DlP|@g~%IR|GU` zH`daI;rnU%L>%`HpW_$Ynh>3?W>h^uqy65u_St*r2g>$JV7Wq>D_S|Qbha5xjP+M1 zrTjiRwctw@aP}g$u~QDFT<We0tG&xl8x?K6eQd5MQA)s7!o<^<nnE`1d=8pi!Y5|H zSnr^2vKc{B02;GW#zhV;-7nTKXTMu&H?=+~Xro)DDZF))6=6$7%v{qMES<E%6XqGW zy9TMfpm`@iK>O~Rtfv@~(D}bJ;*0x3uUM=rWwh}PEm!j<c%pB>l%JgynbFN?#^ekx zhCh*-h&%N{H)p9MG-}n4a)e~G@`VX{S-!hU{q6{QIDi6)>+@$dqGTK=`(6q;T0CMy z#nBI-6%BbEz&$p@b5(x-a5dJ<N4__u6x*M~ST)1*FowPTA$qHT*-x@8hT;nOSyT%z z-DiwW-G)r`3LtsM&#ZF9mA_pjbV8g3v7Wg&s9-B&j18Gm)+OUzLFCb;8k!E!ur|YJ z&E{mYrV!tt&&pL~B`tA@(h_WQ=RW72hyKtS#h$m%b_-Oe@;ReFP27%Jb3}xqM0LCA z`Yv?TT9EX28Mjrn`@V>zfnY8Exo*HFohyYa^XW{{3`>EIn)v>H^ZWY`(v0_!?c<2+ z*tpfLj=)f7WG~0tjsv{WPSyGl!`JqI@o$i@vHOcCdD!G!ES+7zK?q)~YHN=GrMiJk zhuMJX_4wz#4o*VcL5?X5^Ekl#dBW&F$e}fshix)3@9`)*WNjTMAA7Ce;s$Dm)OS#! zM2I`h)jcpIzim4P88Ujbbe=yZYtV2rJ{O;|9$Qj<>m)f*%R)lMaGZg`bNkR9Y1aw7 z?u7!2c)0}eZ`AdBCP13$XY16iv%!BjZIz%QJdc6Gzp)0RO<RA=KK|IPQkqv{>^(Zh zg{zNOeplEMNF_f{kY4iut8;Yy%pEjXZdljr+TK1gR!n9dKtD>)Kf2Nz<Cl<@gGq>l z5)*vXT7@1V-I=}W(k?=Z>7qu9Z9*#2_zzSZa;N)quSOw=rE(vNvx#_XQDh%;lg|Kj z$^x#qtk*0}@Wudu8Nrl9j2Qsz+zAR4cygp=v93Vjs?%%rp?K$7oMQLub^{C`yeWf1 z#trCrBIkB*1XIZ4FE8MGS#jh1e1D_bJ9uMH-Ln@TKIgNs(lfU1CDrxVI^w3F0M^WN zQ$8(syW~9WFcB+tag$7vC8u<Bu-(3(=U<g}5AUl9eg|Lf3zj9yekkY^vN?ZL3|1Ge zru6Hm9s;W%lG^;uvaRUbblr91RcVsWnm?jnGUjg6ly*`6>&bt96a4Vq8?h9YqvmI_ zM@|jM<nqW?H~4&CVwlOINpPwcYCk*zcR6%n%A0Y~=tWp0)r5lyrN9|v6>3%C4QCb8 zCDn!qB)?#X>i<&X<DcUn4`KsLl~p5am!+=YpnaCNduv>vkjaR5hotPc>d+hJThU;P z>EC?PqPyyN6DWCWx=7Z_BQnAuzZ<9pP+BJ-bV0dLBQEN2l}tnE9<0eVxU)TVGHWXo z!*BtXj5|(Y%KM6iM~FqNm1c;oVC)(LurCG7v%w4<{}b<z{3+Z-_bS4${tC0Q@UZ}^ zyFxndG^Zv01{VdwyDJ<*YuLRX;Xqj<$YK*=DtD!AJ3_K<luSj+=HGoY_L~{p1#Qxc zq10dvk-5R&jO3I#mSoVy)w9~!;_=R){GA67FFI(7R>A(Llf_!kb^Alp@O_okl2-mX z@&AG`nnwjI8)8$jl=UC1TTZRN06h{@0xUm5GlzchZu()qeb2IdZ1IJ1#8GPu*Tih5 z?;Uo>u|LglQP1x@*Z&jBni0uX0zGfcZD}%}r__0*;4xB7o2158tL9q%?HoBYTa7#q zu2{XcVC&dYHd>#5aOqm?L(>yfN=D2Pg=sy=sR&2suD803w|fa6SlGWc<JLON	eE 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 z%0D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	QZiorw&PpQM)~y_2dHJ4qa8sb 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�(EG#S!)Co9H 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 literal 0 HcmV?d00001 diff --git a/test/cpp/interop/server.cc b/test/cpp/interop/server.cc index 55df82b567..32c60aff44 100644 --- a/test/cpp/interop/server.cc +++ b/test/cpp/interop/server.cc @@ -31,6 +31,7 @@ * */ +#include <fstream> #include <memory> #include <sstream> #include <thread> @@ -48,6 +49,7 @@ #include <grpc++/server_credentials.h> #include <grpc++/status.h> #include <grpc++/stream.h> + #include "test/proto/test.grpc.pb.h" #include "test/proto/empty.grpc.pb.h" #include "test/proto/messages.grpc.pb.h" @@ -77,31 +79,32 @@ using grpc::testing::TestService; using grpc::Status; static bool got_sigint = false; +static const char* kRandomFile = "test/cpp/interop/rnd.dat"; bool SetPayload(PayloadType type, int size, Payload* payload) { - PayloadType response_type = type; + PayloadType response_type; + if (type == PayloadType::RANDOM) { + response_type = + rand() & 0x1 ? PayloadType::COMPRESSABLE : PayloadType::UNCOMPRESSABLE; + } else { + response_type = type; + } payload->set_type(response_type); - switch (type) { - case PayloadType::COMPRESSABLE: - { - std::unique_ptr<char[]> body(new char[size]()); - payload->set_body(body.get(), size); - } - break; - case PayloadType::UNCOMPRESSABLE: - { - // XXX - std::unique_ptr<char[]> body(new char[size]()); - payload->set_body(body.get(), size); - } - break; - case PayloadType::RANDOM: - { - // XXX - std::unique_ptr<char[]> body(new char[size]()); - payload->set_body(body.get(), size); - } - break; + switch (response_type) { + case PayloadType::COMPRESSABLE: { + std::unique_ptr<char[]> body(new char[size]()); + payload->set_body(body.get(), size); + } break; + case PayloadType::UNCOMPRESSABLE: { + std::unique_ptr<char[]> body(new char[size]()); + std::ifstream rnd_file(kRandomFile); + GPR_ASSERT(rnd_file.good()); + rnd_file.read(body.get(), size); + GPR_ASSERT(!rnd_file.eof()); // Requested more rnd bytes than available + payload->set_body(body.get(), size); + } break; + default: + GPR_ASSERT(false); } return true; } diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index abddaab699..b112f0ee1e 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -10975,7 +10975,9 @@ "grpc_test_util" ], "headers": [ - "test/cpp/interop/client_helper.h" + "test/cpp/interop/client_helper.h", + "test/proto/messages.grpc.pb.h", + "test/proto/messages.pb.h" ], "language": "c++", "name": "interop_client_helper", -- GitLab From 1d8e3dfa52d08cefe581f62f2ae7452f5bfab31b Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Wed, 22 Jul 2015 15:02:51 -0700 Subject: [PATCH 019/178] Add compression disabling without breaking anything else --- src/node/ext/call.cc | 7 +++++++ src/node/src/client.js | 22 ++++++++++++++++------ src/node/src/server.js | 22 ++++++++++++++-------- 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/node/ext/call.cc b/src/node/ext/call.cc index 15c9b2d97d..7d21b8b4a5 100644 --- a/src/node/ext/call.cc +++ b/src/node/ext/call.cc @@ -207,6 +207,13 @@ class SendMessageOp : public Op { if (!::node::Buffer::HasInstance(value)) { return false; } + Handle<Object> object_value = value->ToObject(); + if (object_value->HasOwnProperty(NanNew("grpcWriteFlags"))) { + Handle<Value> flag_value = object_value->Get(NanNew("grpcWriteFlags")); + if (flag_value->IsUint32()) { + out->flags = flag_value->Uint32Value() & GRPC_WRITE_USED_MASK; + } + } out->data.send_message = BufferToByteBuffer(value); Persistent<Value> *handle = new Persistent<Value>(); NanAssignPersistent(*handle, value); diff --git a/src/node/src/client.js b/src/node/src/client.js index b7bad949d4..de9efd7e4a 100644 --- a/src/node/src/client.js +++ b/src/node/src/client.js @@ -72,13 +72,15 @@ function ClientWritableStream(call, serialize) { * Attempt to write the given chunk. Calls the callback when done. This is an * implementation of a method needed for implementing stream.Writable. * @param {Buffer} chunk The chunk to write - * @param {string} encoding Ignored + * @param {string} encoding Used to pass write flags * @param {function(Error=)} callback Called when the write is complete */ function _write(chunk, encoding, callback) { /* jshint validthis: true */ var batch = {}; - batch[grpc.opType.SEND_MESSAGE] = this.serialize(chunk); + var message = this.serialize(chunk); + message.grpcWriteFlags = encoding; + batch[grpc.opType.SEND_MESSAGE] = message; this.call.startBatch(batch, function(err, event) { if (err) { // Something has gone wrong. Stop writing by failing to call callback @@ -207,9 +209,11 @@ function makeUnaryRequestFunction(method, serialize, deserialize) { * call * @param {(number|Date)=} deadline The deadline for processing this request. * Defaults to infinite future + * @param {number=} flags Flags for modifying how the message is sent. + * Defaults to 0. * @return {EventEmitter} An event emitter for stream related events */ - function makeUnaryRequest(argument, callback, metadata, deadline) { + function makeUnaryRequest(argument, callback, metadata, deadline, flags) { /* jshint validthis: true */ if (deadline === undefined) { deadline = Infinity; @@ -229,8 +233,10 @@ function makeUnaryRequestFunction(method, serialize, deserialize) { return; } var client_batch = {}; + var message = serialize(argument); + message.grpcWriteFlags = flags; client_batch[grpc.opType.SEND_INITIAL_METADATA] = metadata; - client_batch[grpc.opType.SEND_MESSAGE] = serialize(argument); + client_batch[grpc.opType.SEND_MESSAGE] = message; client_batch[grpc.opType.SEND_CLOSE_FROM_CLIENT] = true; client_batch[grpc.opType.RECV_INITIAL_METADATA] = true; client_batch[grpc.opType.RECV_MESSAGE] = true; @@ -352,9 +358,11 @@ function makeServerStreamRequestFunction(method, serialize, deserialize) { * call * @param {(number|Date)=} deadline The deadline for processing this request. * Defaults to infinite future + * @param {number=} flags Flags for modifying how the message is sent. + * Defaults to 0. * @return {EventEmitter} An event emitter for stream related events */ - function makeServerStreamRequest(argument, metadata, deadline) { + function makeServerStreamRequest(argument, metadata, deadline, flags) { /* jshint validthis: true */ if (deadline === undefined) { deadline = Infinity; @@ -371,9 +379,11 @@ function makeServerStreamRequestFunction(method, serialize, deserialize) { return; } var start_batch = {}; + var message = serialize(argument); + message.grpcWriteFlags = flags; start_batch[grpc.opType.SEND_INITIAL_METADATA] = metadata; start_batch[grpc.opType.RECV_INITIAL_METADATA] = true; - start_batch[grpc.opType.SEND_MESSAGE] = serialize(argument); + start_batch[grpc.opType.SEND_MESSAGE] = message; start_batch[grpc.opType.SEND_CLOSE_FROM_CLIENT] = true; call.startBatch(start_batch, function(err, response) { if (err) { diff --git a/src/node/src/server.js b/src/node/src/server.js index 0a3a0031bd..776fafb96a 100644 --- a/src/node/src/server.js +++ b/src/node/src/server.js @@ -107,8 +107,10 @@ function waitForCancel(call, emitter) { * @param {function(*):Buffer=} serialize Serialization function for the * response * @param {Object=} metadata Optional trailing metadata to send with status + * @param {number=} flags Flags for modifying how the message is sent. + * Defaults to 0. */ -function sendUnaryResponse(call, value, serialize, metadata) { +function sendUnaryResponse(call, value, serialize, metadata, flags) { var end_batch = {}; var status = { code: grpc.status.OK, @@ -122,7 +124,9 @@ function sendUnaryResponse(call, value, serialize, metadata) { end_batch[grpc.opType.SEND_INITIAL_METADATA] = {}; call.metadataSent = true; } - end_batch[grpc.opType.SEND_MESSAGE] = serialize(value); + var message = serialize(value); + message.grpcWriteFlags = flags; + end_batch[grpc.opType.SEND_MESSAGE] = message; end_batch[grpc.opType.SEND_STATUS_FROM_SERVER] = status; call.startBatch(end_batch, function (){}); } @@ -243,7 +247,7 @@ function ServerWritableStream(call, serialize) { * Start writing a chunk of data. This is an implementation of a method required * for implementing stream.Writable. * @param {Buffer} chunk The chunk of data to write - * @param {string} encoding Ignored + * @param {string} encoding Used to pass write flags * @param {function(Error=)} callback Callback to indicate that the write is * complete */ @@ -254,7 +258,9 @@ function _write(chunk, encoding, callback) { batch[grpc.opType.SEND_INITIAL_METADATA] = {}; this.call.metadataSent = true; } - batch[grpc.opType.SEND_MESSAGE] = this.serialize(chunk); + var message = this.serialize(chunk); + message.grpcWriteFlags = encoding; + batch[grpc.opType.SEND_MESSAGE] = message; this.call.startBatch(batch, function(err, value) { if (err) { this.emit('error', err); @@ -411,14 +417,14 @@ function handleUnary(call, handler, metadata) { if (emitter.cancelled) { return; } - handler.func(emitter, function sendUnaryData(err, value, trailer) { + handler.func(emitter, function sendUnaryData(err, value, trailer, flags) { if (err) { if (trailer) { err.metadata = trailer; } handleError(call, err); } else { - sendUnaryResponse(call, value, handler.serialize, trailer); + sendUnaryResponse(call, value, handler.serialize, trailer, flags); } }); }); @@ -473,7 +479,7 @@ function handleClientStreaming(call, handler, metadata) { }); waitForCancel(call, stream); stream.metadata = metadata; - handler.func(stream, function(err, value, trailer) { + handler.func(stream, function(err, value, trailer, flags) { stream.terminate(); if (err) { if (trailer) { @@ -481,7 +487,7 @@ function handleClientStreaming(call, handler, metadata) { } handleError(call, err); } else { - sendUnaryResponse(call, value, handler.serialize, trailer); + sendUnaryResponse(call, value, handler.serialize, trailer, flags); } }); } -- GitLab From 7c0d914cce379f14a1adfae9374641967c45d7b2 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Thu, 23 Jul 2015 04:58:20 -0700 Subject: [PATCH 020/178] wip for accept-encoding into tests --- src/core/surface/call.c | 8 +++++++- test/cpp/interop/server.cc | 6 ++++++ test/cpp/interop/server_helper.cc | 8 ++++++-- test/cpp/interop/server_helper.h | 1 + 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 9d02d365b5..0e97110e5e 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -479,6 +479,12 @@ static void set_compression_algorithm(grpc_call *call, call->compression_algorithm = algo; } +grpc_compression_algorithm grpc_call_get_compression_algorithm( + const grpc_call *call) { + return call->compression_algorithm; +} + + static void set_encodings_accepted_by_peer(grpc_call *call, const gpr_slice accept_encoding_slice) { size_t i; @@ -1350,7 +1356,7 @@ static gpr_uint32 decode_compression(grpc_mdelem *md) { void *user_data = grpc_mdelem_get_user_data(md, destroy_compression); if (user_data) { algorithm = - ((grpc_compression_level)(gpr_intptr)user_data) - COMPRESS_OFFSET; + ((grpc_compression_algorithm)(gpr_intptr)user_data) - COMPRESS_OFFSET; } else { const char *md_c_str = grpc_mdstr_as_c_string(md->value); if (!grpc_compression_algorithm_parse(md_c_str, strlen(md_c_str), diff --git a/test/cpp/interop/server.cc b/test/cpp/interop/server.cc index 32c60aff44..6c429b3393 100644 --- a/test/cpp/interop/server.cc +++ b/test/cpp/interop/server.cc @@ -42,6 +42,7 @@ #include <gflags/gflags.h> #include <grpc/grpc.h> #include <grpc/support/log.h> +#include <grpc/support/useful.h> #include <grpc++/config.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> @@ -67,6 +68,7 @@ using grpc::ServerReader; using grpc::ServerReaderWriter; using grpc::ServerWriter; using grpc::SslServerCredentialsOptions; +using grpc::testing::InteropServerContextInspector; using grpc::testing::Payload; using grpc::testing::PayloadType; using grpc::testing::SimpleRequest; @@ -138,6 +140,7 @@ class TestServiceImpl : public TestService::Service { Status UnaryCall(ServerContext* context, const SimpleRequest* request, SimpleResponse* response) { + InteropServerContextInspector inspector(*context); SetResponseCompression(context, *request); if (request->has_response_size() && request->response_size() > 0) { if (!SetPayload(request->response_type(), request->response_size(), @@ -145,6 +148,9 @@ class TestServiceImpl : public TestService::Service { return Status(grpc::StatusCode::INTERNAL, "Error creating payload."); } } + const gpr_uint32 client_accept_encodings_bitset = + inspector.GetEncodingsAcceptedByClient(); + gpr_log(GPR_INFO, "%d", GPR_BITCOUNT(client_accept_encodings_bitset)); return Status::OK; } diff --git a/test/cpp/interop/server_helper.cc b/test/cpp/interop/server_helper.cc index 8cfed2acb5..3721d79635 100644 --- a/test/cpp/interop/server_helper.cc +++ b/test/cpp/interop/server_helper.cc @@ -69,8 +69,12 @@ InteropServerContextInspector::GetCallCompressionAlgorithm() const { return grpc_call_get_compression_algorithm(context_.call_); } -std::shared_ptr<const AuthContext> InteropServerContextInspector::GetAuthContext() - const { +gpr_uint32 InteropServerContextInspector::GetEncodingsAcceptedByClient() const { + return grpc_call_get_encodings_accepted_by_peer(context_.call_); +} + +std::shared_ptr<const AuthContext> +InteropServerContextInspector::GetAuthContext() const { return context_.auth_context(); } diff --git a/test/cpp/interop/server_helper.h b/test/cpp/interop/server_helper.h index a57ef0b3c5..7b6b12cd4d 100644 --- a/test/cpp/interop/server_helper.h +++ b/test/cpp/interop/server_helper.h @@ -53,6 +53,7 @@ class InteropServerContextInspector { std::shared_ptr<const AuthContext> GetAuthContext() const; bool IsCancelled() const; grpc_compression_algorithm GetCallCompressionAlgorithm() const; + gpr_uint32 GetEncodingsAcceptedByClient() const; private: const ::grpc::ServerContext& context_; -- GitLab From 69f90e6382b64ee96b5b1a223bf834194698632d Mon Sep 17 00:00:00 2001 From: Craig Tiller <craig.tiller@gmail.com> Date: Thu, 6 Aug 2015 08:32:35 -0700 Subject: [PATCH 021/178] Working towards a non-blocking API test --- src/core/iomgr/pollset.h | 4 +- .../iomgr/pollset_multipoller_with_epoll.c | 2 +- .../pollset_multipoller_with_poll_posix.c | 2 +- src/core/iomgr/pollset_posix.c | 13 +- src/core/iomgr/pollset_posix.h | 6 + src/core/surface/completion_queue.c | 14 +- test/cpp/end2end/async_end2end_test.cc | 221 ++++++++++++------ 7 files changed, 172 insertions(+), 90 deletions(-) diff --git a/src/core/iomgr/pollset.h b/src/core/iomgr/pollset.h index c474e4dbf1..3de0ca7ebd 100644 --- a/src/core/iomgr/pollset.h +++ b/src/core/iomgr/pollset.h @@ -76,8 +76,8 @@ void grpc_pollset_destroy(grpc_pollset *pollset); Returns true if some work has been done, and false if the deadline expired. */ -int grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker *worker, - gpr_timespec deadline); +void grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker *worker, + gpr_timespec now, gpr_timespec deadline); /* Break one polling thread out of polling work for this pollset. If specific_worker is GRPC_POLLSET_KICK_BROADCAST, kick ALL the workers. diff --git a/src/core/iomgr/pollset_multipoller_with_epoll.c b/src/core/iomgr/pollset_multipoller_with_epoll.c index 1320c64579..4d41db074d 100644 --- a/src/core/iomgr/pollset_multipoller_with_epoll.c +++ b/src/core/iomgr/pollset_multipoller_with_epoll.c @@ -181,7 +181,7 @@ static void multipoll_with_epoll_pollset_maybe_work( pfds[1].events = POLLIN; pfds[1].revents = 0; - poll_rv = poll(pfds, 2, timeout_ms); + poll_rv = grpc_poll_function(pfds, 2, timeout_ms); if (poll_rv < 0) { if (errno != EINTR) { diff --git a/src/core/iomgr/pollset_multipoller_with_poll_posix.c b/src/core/iomgr/pollset_multipoller_with_poll_posix.c index b5b2d7534d..388b2d2a8a 100644 --- a/src/core/iomgr/pollset_multipoller_with_poll_posix.c +++ b/src/core/iomgr/pollset_multipoller_with_poll_posix.c @@ -144,7 +144,7 @@ static void multipoll_with_poll_pollset_maybe_work( POLLOUT, &watchers[i]); } - r = poll(pfds, pfd_count, timeout); + r = grpc_poll_function(pfds, pfd_count, timeout); for (i = 1; i < pfd_count; i++) { grpc_fd_end_poll(&watchers[i], pfds[i].revents & POLLIN, diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index d3a9193af1..1ba433cb61 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -38,7 +38,6 @@ #include "src/core/iomgr/pollset_posix.h" #include <errno.h> -#include <poll.h> #include <stdlib.h> #include <string.h> #include <unistd.h> @@ -57,6 +56,8 @@ GPR_TLS_DECL(g_current_thread_poller); GPR_TLS_DECL(g_current_thread_worker); +grpc_poll_function_type grpc_poll_function = poll; + static void remove_worker(grpc_pollset *p, grpc_pollset_worker *worker) { worker->prev->next = worker->next; worker->next->prev = worker->prev; @@ -168,14 +169,11 @@ static void finish_shutdown(grpc_pollset *pollset) { pollset->shutdown_done_cb(pollset->shutdown_done_arg); } -int grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker *worker, - gpr_timespec deadline) { +void grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker *worker, + gpr_timespec deadline) { /* pollset->mu already held */ gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC); int added_worker = 0; - if (gpr_time_cmp(now, deadline) > 0) { - return 0; - } /* this must happen before we (potentially) drop pollset->mu */ worker->next = worker->prev = NULL; /* TODO(ctiller): pool these */ @@ -217,7 +215,6 @@ done: gpr_mu_lock(&pollset->mu); } } - return 1; } void grpc_pollset_shutdown(grpc_pollset *pollset, @@ -456,7 +453,7 @@ static void basic_pollset_maybe_work(grpc_pollset *pollset, /* poll fd count (argument 2) is shortened by one if we have no events to poll on - such that it only includes the kicker */ - r = poll(pfd, nfds, timeout); + r = grpc_poll_function(pfd, nfds, timeout); GRPC_TIMER_MARK(GRPC_PTAG_POLL_FINISHED, r); if (fd) { diff --git a/src/core/iomgr/pollset_posix.h b/src/core/iomgr/pollset_posix.h index 1c1b736193..ab38be7fef 100644 --- a/src/core/iomgr/pollset_posix.h +++ b/src/core/iomgr/pollset_posix.h @@ -34,6 +34,8 @@ #ifndef GRPC_INTERNAL_CORE_IOMGR_POLLSET_POSIX_H #define GRPC_INTERNAL_CORE_IOMGR_POLLSET_POSIX_H +#include <poll.h> + #include <grpc/support/sync.h> #include "src/core/iomgr/wakeup_fd_posix.h" @@ -117,4 +119,8 @@ void grpc_poll_become_multipoller(grpc_pollset *pollset, struct grpc_fd **fds, * be locked) */ int grpc_pollset_has_workers(grpc_pollset *pollset); +/* override to allow tests to hook poll() usage */ +typedef int (*grpc_poll_function_type)(struct pollfd *, nfds_t, int); +extern grpc_poll_function_type grpc_poll_function; + #endif /* GRPC_INTERNAL_CORE_IOMGR_POLLSET_POSIX_H */ diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c index 00429fac19..644b072cbb 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -164,6 +164,8 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, gpr_timespec deadline) { grpc_event ret; grpc_pollset_worker worker; + int first_loop = 1; + gpr_timespec now; deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC); @@ -189,12 +191,15 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, ret.type = GRPC_QUEUE_SHUTDOWN; break; } - if (!grpc_pollset_work(&cc->pollset, &worker, deadline)) { + now = gpr_now(GPR_CLOCK_MONOTONIC); + if (!first_loop && gpr_time_cmp(now, deadline) >= 0) { gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset)); memset(&ret, 0, sizeof(ret)); ret.type = GRPC_QUEUE_TIMEOUT; break; } + first_loop = 0; + grpc_pollset_work(&cc->pollset, &worker, now, deadline); } GRPC_SURFACE_TRACE_RETURNED_EVENT(cc, &ret); GRPC_CQ_INTERNAL_UNREF(cc, "next"); @@ -232,6 +237,7 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag, grpc_cq_completion *c; grpc_cq_completion *prev; grpc_pollset_worker worker; + int first_loop = 1; deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC); @@ -272,14 +278,16 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag, ret.type = GRPC_QUEUE_TIMEOUT; break; } - if (!grpc_pollset_work(&cc->pollset, &worker, deadline)) { + now = gpr_now(GPR_CLOCK_MONOTONIC); + if (!first_loop && gpr_time_cmp(now, deadline) >= 0) { del_plucker(cc, tag, &worker); gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset)); memset(&ret, 0, sizeof(ret)); ret.type = GRPC_QUEUE_TIMEOUT; break; } - del_plucker(cc, tag, &worker); + first_loop = 0; + grpc_pollset_work(&cc->pollset, &worker, now, deadline); } done: GRPC_SURFACE_TRACE_RETURNED_EVENT(cc, &ret); diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc index 9b53bdc999..266c3622ea 100644 --- a/test/cpp/end2end/async_end2end_test.cc +++ b/test/cpp/end2end/async_end2end_test.cc @@ -56,6 +56,10 @@ #include <grpc/support/thd.h> #include <grpc/support/time.h> +#ifdef GPR_POSIX_SOCKET +#include "src/core/iomgr/pollset_posix.h" +#endif + using grpc::cpp::test::util::EchoRequest; using grpc::cpp::test::util::EchoResponse; using std::chrono::system_clock; @@ -67,18 +71,64 @@ namespace { void* tag(int i) { return (void*)(gpr_intptr) i; } -class Verifier { +#ifdef GPR_POSIX_SOCKET +static int assert_non_blocking_poll( + struct pollfd *pfds, nfds_t nfds, int timeout) { + GPR_ASSERT(timeout == 0); + return poll(pfds, nfds, timeout); +} + +class PollOverride { public: + PollOverride(grpc_poll_function_type f) { + prev_ = grpc_poll_function; + grpc_poll_function = f; + } + + ~PollOverride() { + grpc_poll_function = prev_; + } + + private: + grpc_poll_function_type prev_; +}; + +class PollingCheckRegion : public PollOverride { + public: + explicit PollingCheckRegion(bool allow_blocking) + : PollOverride(allow_blocking ? poll : assert_non_blocking_poll) {} +}; +#else +class PollingCheckRegion { + public: + explicit PollingCheckRegion(bool allow_blocking) {} +}; +#endif + +class Verifier : public PollingCheckRegion { + public: + explicit Verifier(bool spin) : PollingCheckRegion(!spin), spin_(spin) {} Verifier& Expect(int i, bool expect_ok) { expectations_[tag(i)] = expect_ok; return *this; } void Verify(CompletionQueue *cq) { + if (spin_) gpr_log(GPR_DEBUG, "spin"); GPR_ASSERT(!expectations_.empty()); while (!expectations_.empty()) { bool ok; void* got_tag; - EXPECT_TRUE(cq->Next(&got_tag, &ok)); + if (spin_) { + for (;;) { + auto r = cq->AsyncNext(&got_tag, &ok, gpr_time_0(GPR_CLOCK_REALTIME)); + if (r == CompletionQueue::TIMEOUT) continue; + if (r == CompletionQueue::GOT_EVENT) break; + gpr_log(GPR_ERROR, "unexpected result from AsyncNext"); + abort(); + } + } else { + EXPECT_TRUE(cq->Next(&got_tag, &ok)); + } auto it = expectations_.find(got_tag); EXPECT_TRUE(it != expectations_.end()); EXPECT_EQ(it->second, ok); @@ -86,15 +136,33 @@ class Verifier { } } void Verify(CompletionQueue *cq, std::chrono::system_clock::time_point deadline) { + if (spin_) gpr_log(GPR_DEBUG, "spin"); if (expectations_.empty()) { bool ok; void *got_tag; - EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), CompletionQueue::TIMEOUT); + if (spin_) { + while (std::chrono::system_clock::now() < deadline) { + EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, gpr_time_0(GPR_CLOCK_REALTIME)), CompletionQueue::TIMEOUT); + } + } else { + EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), CompletionQueue::TIMEOUT); + } } else { while (!expectations_.empty()) { bool ok; void *got_tag; - EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), CompletionQueue::GOT_EVENT); + if (spin_) { + for (;;) { + GPR_ASSERT(std::chrono::system_clock::now() < deadline); + auto r = cq->AsyncNext(&got_tag, &ok, gpr_time_0(GPR_CLOCK_REALTIME)); + if (r == CompletionQueue::TIMEOUT) continue; + if (r == CompletionQueue::GOT_EVENT) break; + gpr_log(GPR_ERROR, "unexpected result from AsyncNext"); + abort(); + } + } else { + EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), CompletionQueue::GOT_EVENT); + } auto it = expectations_.find(got_tag); EXPECT_TRUE(it != expectations_.end()); EXPECT_EQ(it->second, ok); @@ -105,9 +173,10 @@ class Verifier { private: std::map<void*, bool> expectations_; + bool spin_; }; -class AsyncEnd2endTest : public ::testing::Test { +class AsyncEnd2endTest : public ::testing::TestWithParam<bool> { protected: AsyncEnd2endTest() {} @@ -156,15 +225,15 @@ class AsyncEnd2endTest : public ::testing::Test { service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(), cq_.get(), tag(2)); - Verifier().Expect(2, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(2, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); send_response.set_message(recv_request.message()); response_writer.Finish(send_response, Status::OK, tag(3)); - Verifier().Expect(3, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(3, true).Verify(cq_.get()); response_reader->Finish(&recv_response, &recv_status, tag(4)); - Verifier().Expect(4, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(4, true).Verify(cq_.get()); EXPECT_EQ(send_response.message(), recv_response.message()); EXPECT_TRUE(recv_status.ok()); @@ -178,18 +247,18 @@ class AsyncEnd2endTest : public ::testing::Test { std::ostringstream server_address_; }; -TEST_F(AsyncEnd2endTest, SimpleRpc) { +TEST_P(AsyncEnd2endTest, SimpleRpc) { ResetStub(); SendRpc(1); } -TEST_F(AsyncEnd2endTest, SequentialRpcs) { +TEST_P(AsyncEnd2endTest, SequentialRpcs) { ResetStub(); SendRpc(10); } // Test a simple RPC using the async version of Next -TEST_F(AsyncEnd2endTest, AsyncNextRpc) { +TEST_P(AsyncEnd2endTest, AsyncNextRpc) { ResetStub(); EchoRequest send_request; @@ -210,28 +279,28 @@ TEST_F(AsyncEnd2endTest, AsyncNextRpc) { std::chrono::system_clock::now()); std::chrono::system_clock::time_point time_limit( std::chrono::system_clock::now() + std::chrono::seconds(10)); - Verifier().Verify(cq_.get(), time_now); - Verifier().Verify(cq_.get(), time_now); + Verifier(GetParam()).Verify(cq_.get(), time_now); + Verifier(GetParam()).Verify(cq_.get(), time_now); service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(), cq_.get(), tag(2)); - Verifier().Expect(2, true).Verify(cq_.get(), time_limit); + Verifier(GetParam()).Expect(2, true).Verify(cq_.get(), time_limit); EXPECT_EQ(send_request.message(), recv_request.message()); send_response.set_message(recv_request.message()); response_writer.Finish(send_response, Status::OK, tag(3)); - Verifier().Expect(3, true).Verify(cq_.get(), std::chrono::system_clock::time_point::max()); + Verifier(GetParam()).Expect(3, true).Verify(cq_.get(), std::chrono::system_clock::time_point::max()); response_reader->Finish(&recv_response, &recv_status, tag(4)); - Verifier().Expect(4, true).Verify(cq_.get(), std::chrono::system_clock::time_point::max()); + Verifier(GetParam()).Expect(4, true).Verify(cq_.get(), std::chrono::system_clock::time_point::max()); EXPECT_EQ(send_response.message(), recv_response.message()); EXPECT_TRUE(recv_status.ok()); } // Two pings and a final pong. -TEST_F(AsyncEnd2endTest, SimpleClientStreaming) { +TEST_P(AsyncEnd2endTest, SimpleClientStreaming) { ResetStub(); EchoRequest send_request; @@ -250,41 +319,41 @@ TEST_F(AsyncEnd2endTest, SimpleClientStreaming) { service_.RequestRequestStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(), tag(2)); - Verifier().Expect(2, true).Expect(1, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(2, true).Expect(1, true).Verify(cq_.get()); cli_stream->Write(send_request, tag(3)); - Verifier().Expect(3, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(3, true).Verify(cq_.get()); srv_stream.Read(&recv_request, tag(4)); - Verifier().Expect(4, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(4, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); cli_stream->Write(send_request, tag(5)); - Verifier().Expect(5, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(5, true).Verify(cq_.get()); srv_stream.Read(&recv_request, tag(6)); - Verifier().Expect(6, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(6, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); cli_stream->WritesDone(tag(7)); - Verifier().Expect(7, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(7, true).Verify(cq_.get()); srv_stream.Read(&recv_request, tag(8)); - Verifier().Expect(8, false).Verify(cq_.get()); + Verifier(GetParam()).Expect(8, false).Verify(cq_.get()); send_response.set_message(recv_request.message()); srv_stream.Finish(send_response, Status::OK, tag(9)); - Verifier().Expect(9, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(9, true).Verify(cq_.get()); cli_stream->Finish(&recv_status, tag(10)); - Verifier().Expect(10, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(10, true).Verify(cq_.get()); EXPECT_EQ(send_response.message(), recv_response.message()); EXPECT_TRUE(recv_status.ok()); } // One ping, two pongs. -TEST_F(AsyncEnd2endTest, SimpleServerStreaming) { +TEST_P(AsyncEnd2endTest, SimpleServerStreaming) { ResetStub(); EchoRequest send_request; @@ -303,38 +372,38 @@ TEST_F(AsyncEnd2endTest, SimpleServerStreaming) { service_.RequestResponseStream(&srv_ctx, &recv_request, &srv_stream, cq_.get(), cq_.get(), tag(2)); - Verifier().Expect(1, true).Expect(2, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(1, true).Expect(2, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); send_response.set_message(recv_request.message()); srv_stream.Write(send_response, tag(3)); - Verifier().Expect(3, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(3, true).Verify(cq_.get()); cli_stream->Read(&recv_response, tag(4)); - Verifier().Expect(4, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(4, true).Verify(cq_.get()); EXPECT_EQ(send_response.message(), recv_response.message()); srv_stream.Write(send_response, tag(5)); - Verifier().Expect(5, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(5, true).Verify(cq_.get()); cli_stream->Read(&recv_response, tag(6)); - Verifier().Expect(6, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(6, true).Verify(cq_.get()); EXPECT_EQ(send_response.message(), recv_response.message()); srv_stream.Finish(Status::OK, tag(7)); - Verifier().Expect(7, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(7, true).Verify(cq_.get()); cli_stream->Read(&recv_response, tag(8)); - Verifier().Expect(8, false).Verify(cq_.get()); + Verifier(GetParam()).Expect(8, false).Verify(cq_.get()); cli_stream->Finish(&recv_status, tag(9)); - Verifier().Expect(9, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(9, true).Verify(cq_.get()); EXPECT_TRUE(recv_status.ok()); } // One ping, one pong. -TEST_F(AsyncEnd2endTest, SimpleBidiStreaming) { +TEST_P(AsyncEnd2endTest, SimpleBidiStreaming) { ResetStub(); EchoRequest send_request; @@ -353,40 +422,40 @@ TEST_F(AsyncEnd2endTest, SimpleBidiStreaming) { service_.RequestBidiStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(), tag(2)); - Verifier().Expect(1, true).Expect(2, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(1, true).Expect(2, true).Verify(cq_.get()); cli_stream->Write(send_request, tag(3)); - Verifier().Expect(3, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(3, true).Verify(cq_.get()); srv_stream.Read(&recv_request, tag(4)); - Verifier().Expect(4, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(4, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); send_response.set_message(recv_request.message()); srv_stream.Write(send_response, tag(5)); - Verifier().Expect(5, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(5, true).Verify(cq_.get()); cli_stream->Read(&recv_response, tag(6)); - Verifier().Expect(6, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(6, true).Verify(cq_.get()); EXPECT_EQ(send_response.message(), recv_response.message()); cli_stream->WritesDone(tag(7)); - Verifier().Expect(7, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(7, true).Verify(cq_.get()); srv_stream.Read(&recv_request, tag(8)); - Verifier().Expect(8, false).Verify(cq_.get()); + Verifier(GetParam()).Expect(8, false).Verify(cq_.get()); srv_stream.Finish(Status::OK, tag(9)); - Verifier().Expect(9, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(9, true).Verify(cq_.get()); cli_stream->Finish(&recv_status, tag(10)); - Verifier().Expect(10, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(10, true).Verify(cq_.get()); EXPECT_TRUE(recv_status.ok()); } // Metadata tests -TEST_F(AsyncEnd2endTest, ClientInitialMetadataRpc) { +TEST_P(AsyncEnd2endTest, ClientInitialMetadataRpc) { ResetStub(); EchoRequest send_request; @@ -410,7 +479,7 @@ TEST_F(AsyncEnd2endTest, ClientInitialMetadataRpc) { service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(), cq_.get(), tag(2)); - Verifier().Expect(2, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(2, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); auto client_initial_metadata = srv_ctx.client_metadata(); EXPECT_EQ(meta1.second, client_initial_metadata.find(meta1.first)->second); @@ -420,16 +489,16 @@ TEST_F(AsyncEnd2endTest, ClientInitialMetadataRpc) { send_response.set_message(recv_request.message()); response_writer.Finish(send_response, Status::OK, tag(3)); - Verifier().Expect(3, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(3, true).Verify(cq_.get()); response_reader->Finish(&recv_response, &recv_status, tag(4)); - Verifier().Expect(4, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(4, true).Verify(cq_.get()); EXPECT_EQ(send_response.message(), recv_response.message()); EXPECT_TRUE(recv_status.ok()); } -TEST_F(AsyncEnd2endTest, ServerInitialMetadataRpc) { +TEST_P(AsyncEnd2endTest, ServerInitialMetadataRpc) { ResetStub(); EchoRequest send_request; @@ -451,15 +520,15 @@ TEST_F(AsyncEnd2endTest, ServerInitialMetadataRpc) { service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(), cq_.get(), tag(2)); - Verifier().Expect(2, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(2, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); srv_ctx.AddInitialMetadata(meta1.first, meta1.second); srv_ctx.AddInitialMetadata(meta2.first, meta2.second); response_writer.SendInitialMetadata(tag(3)); - Verifier().Expect(3, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(3, true).Verify(cq_.get()); response_reader->ReadInitialMetadata(tag(4)); - Verifier().Expect(4, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(4, true).Verify(cq_.get()); auto server_initial_metadata = cli_ctx.GetServerInitialMetadata(); EXPECT_EQ(meta1.second, server_initial_metadata.find(meta1.first)->second); EXPECT_EQ(meta2.second, server_initial_metadata.find(meta2.first)->second); @@ -467,16 +536,16 @@ TEST_F(AsyncEnd2endTest, ServerInitialMetadataRpc) { send_response.set_message(recv_request.message()); response_writer.Finish(send_response, Status::OK, tag(5)); - Verifier().Expect(5, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(5, true).Verify(cq_.get()); response_reader->Finish(&recv_response, &recv_status, tag(6)); - Verifier().Expect(6, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(6, true).Verify(cq_.get()); EXPECT_EQ(send_response.message(), recv_response.message()); EXPECT_TRUE(recv_status.ok()); } -TEST_F(AsyncEnd2endTest, ServerTrailingMetadataRpc) { +TEST_P(AsyncEnd2endTest, ServerTrailingMetadataRpc) { ResetStub(); EchoRequest send_request; @@ -498,20 +567,20 @@ TEST_F(AsyncEnd2endTest, ServerTrailingMetadataRpc) { service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(), cq_.get(), tag(2)); - Verifier().Expect(2, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(2, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); response_writer.SendInitialMetadata(tag(3)); - Verifier().Expect(3, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(3, true).Verify(cq_.get()); send_response.set_message(recv_request.message()); srv_ctx.AddTrailingMetadata(meta1.first, meta1.second); srv_ctx.AddTrailingMetadata(meta2.first, meta2.second); response_writer.Finish(send_response, Status::OK, tag(4)); - Verifier().Expect(4, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(4, true).Verify(cq_.get()); response_reader->Finish(&recv_response, &recv_status, tag(5)); - Verifier().Expect(5, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(5, true).Verify(cq_.get()); EXPECT_EQ(send_response.message(), recv_response.message()); EXPECT_TRUE(recv_status.ok()); auto server_trailing_metadata = cli_ctx.GetServerTrailingMetadata(); @@ -520,7 +589,7 @@ TEST_F(AsyncEnd2endTest, ServerTrailingMetadataRpc) { EXPECT_EQ(static_cast<size_t>(2), server_trailing_metadata.size()); } -TEST_F(AsyncEnd2endTest, MetadataRpc) { +TEST_P(AsyncEnd2endTest, MetadataRpc) { ResetStub(); EchoRequest send_request; @@ -558,7 +627,7 @@ TEST_F(AsyncEnd2endTest, MetadataRpc) { service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(), cq_.get(), tag(2)); - Verifier().Expect(2, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(2, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); auto client_initial_metadata = srv_ctx.client_metadata(); EXPECT_EQ(meta1.second, client_initial_metadata.find(meta1.first)->second); @@ -568,9 +637,9 @@ TEST_F(AsyncEnd2endTest, MetadataRpc) { srv_ctx.AddInitialMetadata(meta3.first, meta3.second); srv_ctx.AddInitialMetadata(meta4.first, meta4.second); response_writer.SendInitialMetadata(tag(3)); - Verifier().Expect(3, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(3, true).Verify(cq_.get()); response_reader->ReadInitialMetadata(tag(4)); - Verifier().Expect(4, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(4, true).Verify(cq_.get()); auto server_initial_metadata = cli_ctx.GetServerInitialMetadata(); EXPECT_EQ(meta3.second, server_initial_metadata.find(meta3.first)->second); EXPECT_EQ(meta4.second, server_initial_metadata.find(meta4.first)->second); @@ -581,10 +650,10 @@ TEST_F(AsyncEnd2endTest, MetadataRpc) { srv_ctx.AddTrailingMetadata(meta6.first, meta6.second); response_writer.Finish(send_response, Status::OK, tag(5)); - Verifier().Expect(5, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(5, true).Verify(cq_.get()); response_reader->Finish(&recv_response, &recv_status, tag(6)); - Verifier().Expect(6, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(6, true).Verify(cq_.get()); EXPECT_EQ(send_response.message(), recv_response.message()); EXPECT_TRUE(recv_status.ok()); auto server_trailing_metadata = cli_ctx.GetServerTrailingMetadata(); @@ -594,7 +663,7 @@ TEST_F(AsyncEnd2endTest, MetadataRpc) { } // Server uses AsyncNotifyWhenDone API to check for cancellation -TEST_F(AsyncEnd2endTest, ServerCheckCancellation) { +TEST_P(AsyncEnd2endTest, ServerCheckCancellation) { ResetStub(); EchoRequest send_request; @@ -615,21 +684,21 @@ TEST_F(AsyncEnd2endTest, ServerCheckCancellation) { service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(), cq_.get(), tag(2)); - Verifier().Expect(2, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(2, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); cli_ctx.TryCancel(); - Verifier().Expect(5, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(5, true).Verify(cq_.get()); EXPECT_TRUE(srv_ctx.IsCancelled()); response_reader->Finish(&recv_response, &recv_status, tag(4)); - Verifier().Expect(4, false).Verify(cq_.get()); + Verifier(GetParam()).Expect(4, false).Verify(cq_.get()); EXPECT_EQ(StatusCode::CANCELLED, recv_status.error_code()); } // Server uses AsyncNotifyWhenDone API to check for normal finish -TEST_F(AsyncEnd2endTest, ServerCheckDone) { +TEST_P(AsyncEnd2endTest, ServerCheckDone) { ResetStub(); EchoRequest send_request; @@ -650,22 +719,24 @@ TEST_F(AsyncEnd2endTest, ServerCheckDone) { service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(), cq_.get(), tag(2)); - Verifier().Expect(2, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(2, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); send_response.set_message(recv_request.message()); response_writer.Finish(send_response, Status::OK, tag(3)); - Verifier().Expect(3, true).Verify(cq_.get()); - Verifier().Expect(5, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(3, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(5, true).Verify(cq_.get()); EXPECT_FALSE(srv_ctx.IsCancelled()); response_reader->Finish(&recv_response, &recv_status, tag(4)); - Verifier().Expect(4, true).Verify(cq_.get()); + Verifier(GetParam()).Expect(4, true).Verify(cq_.get()); EXPECT_EQ(send_response.message(), recv_response.message()); EXPECT_TRUE(recv_status.ok()); } +INSTANTIATE_TEST_CASE_P(AsyncEnd2end, AsyncEnd2endTest, ::testing::Values(false, true)); + } // namespace } // namespace testing } // namespace grpc -- GitLab From 4c06b820e0a6d402002970cb04458d3ec593a683 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Thu, 6 Aug 2015 08:41:31 -0700 Subject: [PATCH 022/178] Add a test of non-blocking API behavior ... also fix things that were broken :) --- src/core/iomgr/pollset_posix.c | 20 ++--- src/core/iomgr/pollset_posix.h | 5 +- .../security/google_default_credentials.c | 2 +- src/core/surface/completion_queue.c | 1 + test/core/httpcli/httpcli_test.c | 6 +- test/core/iomgr/endpoint_tests.c | 9 ++- test/core/iomgr/fd_posix_test.c | 12 ++- test/core/iomgr/tcp_client_posix_test.c | 9 ++- test/core/iomgr/tcp_posix_test.c | 15 ++-- test/core/iomgr/tcp_server_posix_test.c | 3 +- test/core/security/oauth2_utils.c | 2 +- test/core/util/reconnect_server.c | 3 +- test/cpp/end2end/async_end2end_test.cc | 73 ++++++++++--------- 13 files changed, 94 insertions(+), 66 deletions(-) diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index 1ba433cb61..6bd1b61f24 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -90,6 +90,7 @@ static void push_front_worker(grpc_pollset *p, grpc_pollset_worker *worker) { } void grpc_pollset_kick(grpc_pollset *p, grpc_pollset_worker *specific_worker) { + /* pollset->mu already held */ if (specific_worker != NULL) { if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) { for (specific_worker = p->root_worker.next; @@ -141,10 +142,10 @@ void grpc_pollset_init(grpc_pollset *pollset) { void grpc_pollset_add_fd(grpc_pollset *pollset, grpc_fd *fd) { gpr_mu_lock(&pollset->mu); pollset->vtable->add_fd(pollset, fd, 1); - /* the following (enabled only in debug) will reacquire and then release - our lock - meaning that if the unlocking flag passed to del_fd above is - not respected, the code will deadlock (in a way that we have a chance of - debugging) */ +/* the following (enabled only in debug) will reacquire and then release + our lock - meaning that if the unlocking flag passed to del_fd above is + not respected, the code will deadlock (in a way that we have a chance of + debugging) */ #ifndef NDEBUG gpr_mu_lock(&pollset->mu); gpr_mu_unlock(&pollset->mu); @@ -154,10 +155,10 @@ void grpc_pollset_add_fd(grpc_pollset *pollset, grpc_fd *fd) { void grpc_pollset_del_fd(grpc_pollset *pollset, grpc_fd *fd) { gpr_mu_lock(&pollset->mu); pollset->vtable->del_fd(pollset, fd, 1); - /* the following (enabled only in debug) will reacquire and then release - our lock - meaning that if the unlocking flag passed to del_fd above is - not respected, the code will deadlock (in a way that we have a chance of - debugging) */ +/* the following (enabled only in debug) will reacquire and then release + our lock - meaning that if the unlocking flag passed to del_fd above is + not respected, the code will deadlock (in a way that we have a chance of + debugging) */ #ifndef NDEBUG gpr_mu_lock(&pollset->mu); gpr_mu_unlock(&pollset->mu); @@ -170,9 +171,8 @@ static void finish_shutdown(grpc_pollset *pollset) { } void grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker *worker, - gpr_timespec deadline) { + gpr_timespec now, gpr_timespec deadline) { /* pollset->mu already held */ - gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC); int added_worker = 0; /* this must happen before we (potentially) drop pollset->mu */ worker->next = worker->prev = NULL; diff --git a/src/core/iomgr/pollset_posix.h b/src/core/iomgr/pollset_posix.h index ab38be7fef..69bd9cca8c 100644 --- a/src/core/iomgr/pollset_posix.h +++ b/src/core/iomgr/pollset_posix.h @@ -104,7 +104,8 @@ void grpc_kick_drain(grpc_pollset *p); - longer than a millisecond polls are rounded up to the next nearest millisecond to avoid spinning - infinite timeouts are converted to -1 */ -int grpc_poll_deadline_to_millis_timeout(gpr_timespec deadline, gpr_timespec now); +int grpc_poll_deadline_to_millis_timeout(gpr_timespec deadline, + gpr_timespec now); /* turn a pollset into a multipoller: platform specific */ typedef void (*grpc_platform_become_multipoller_type)(grpc_pollset *pollset, @@ -120,7 +121,7 @@ void grpc_poll_become_multipoller(grpc_pollset *pollset, struct grpc_fd **fds, int grpc_pollset_has_workers(grpc_pollset *pollset); /* override to allow tests to hook poll() usage */ -typedef int (*grpc_poll_function_type)(struct pollfd *, nfds_t, int); +typedef int (*grpc_poll_function_type)(struct pollfd *, nfds_t, int); extern grpc_poll_function_type grpc_poll_function; #endif /* GRPC_INTERNAL_CORE_IOMGR_POLLSET_POSIX_H */ diff --git a/src/core/security/google_default_credentials.c b/src/core/security/google_default_credentials.c index f368819597..cf12a8e0fa 100644 --- a/src/core/security/google_default_credentials.c +++ b/src/core/security/google_default_credentials.c @@ -113,7 +113,7 @@ static int is_stack_running_on_compute_engine(void) { gpr_mu_lock(GRPC_POLLSET_MU(&detector.pollset)); while (!detector.is_done) { grpc_pollset_worker worker; - grpc_pollset_work(&detector.pollset, &worker, + grpc_pollset_work(&detector.pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), gpr_inf_future(GPR_CLOCK_REALTIME)); } gpr_mu_unlock(GRPC_POLLSET_MU(&detector.pollset)); diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c index 644b072cbb..e6ff04ec0e 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -237,6 +237,7 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag, grpc_cq_completion *c; grpc_cq_completion *prev; grpc_pollset_worker worker; + gpr_timespec now; int first_loop = 1; deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC); diff --git a/test/core/httpcli/httpcli_test.c b/test/core/httpcli/httpcli_test.c index 390afcdf63..2793feb1a7 100644 --- a/test/core/httpcli/httpcli_test.c +++ b/test/core/httpcli/httpcli_test.c @@ -88,7 +88,8 @@ static void test_get(int use_ssl, int port) { gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); while (!g_done) { grpc_pollset_worker worker; - grpc_pollset_work(&g_pollset, &worker, n_seconds_time(20)); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + n_seconds_time(20)); } gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); gpr_free(host); @@ -114,7 +115,8 @@ static void test_post(int use_ssl, int port) { gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); while (!g_done) { grpc_pollset_worker worker; - grpc_pollset_work(&g_pollset, &worker, n_seconds_time(20)); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + n_seconds_time(20)); } gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); gpr_free(host); diff --git a/test/core/iomgr/endpoint_tests.c b/test/core/iomgr/endpoint_tests.c index 8186c96da1..6ef8e9ca3b 100644 --- a/test/core/iomgr/endpoint_tests.c +++ b/test/core/iomgr/endpoint_tests.c @@ -256,7 +256,8 @@ static void read_and_write_test(grpc_endpoint_test_config config, while (!state.read_done || !state.write_done) { grpc_pollset_worker worker; GPR_ASSERT(gpr_time_cmp(gpr_now(GPR_CLOCK_MONOTONIC), deadline) < 0); - grpc_pollset_work(g_pollset, &worker, deadline); + grpc_pollset_work(g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + deadline); } gpr_mu_unlock(GRPC_POLLSET_MU(g_pollset)); @@ -353,7 +354,8 @@ static void shutdown_during_write_test(grpc_endpoint_test_config config, while (!write_st.done) { grpc_pollset_worker worker; GPR_ASSERT(gpr_time_cmp(gpr_now(deadline.clock_type), deadline) < 0); - grpc_pollset_work(g_pollset, &worker, deadline); + grpc_pollset_work(g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + deadline); } gpr_mu_unlock(GRPC_POLLSET_MU(g_pollset)); grpc_endpoint_destroy(write_st.ep); @@ -361,7 +363,8 @@ static void shutdown_during_write_test(grpc_endpoint_test_config config, while (!read_st.done) { grpc_pollset_worker worker; GPR_ASSERT(gpr_time_cmp(gpr_now(deadline.clock_type), deadline) < 0); - grpc_pollset_work(g_pollset, &worker, deadline); + grpc_pollset_work(g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + deadline); } gpr_mu_unlock(GRPC_POLLSET_MU(g_pollset)); gpr_free(slices); diff --git a/test/core/iomgr/fd_posix_test.c b/test/core/iomgr/fd_posix_test.c index adcbcafdbb..8bba87d61f 100644 --- a/test/core/iomgr/fd_posix_test.c +++ b/test/core/iomgr/fd_posix_test.c @@ -250,7 +250,8 @@ static void server_wait_and_shutdown(server *sv) { gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); while (!sv->done) { grpc_pollset_worker worker; - grpc_pollset_work(&g_pollset, &worker, gpr_inf_future(GPR_CLOCK_MONOTONIC)); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + gpr_inf_future(GPR_CLOCK_MONOTONIC)); } gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); } @@ -358,7 +359,8 @@ static void client_wait_and_shutdown(client *cl) { gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); while (!cl->done) { grpc_pollset_worker worker; - grpc_pollset_work(&g_pollset, &worker, gpr_inf_future(GPR_CLOCK_MONOTONIC)); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + gpr_inf_future(GPR_CLOCK_MONOTONIC)); } gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); } @@ -448,7 +450,8 @@ static void test_grpc_fd_change(void) { gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); while (a.cb_that_ran == NULL) { grpc_pollset_worker worker; - grpc_pollset_work(&g_pollset, &worker, gpr_inf_future(GPR_CLOCK_MONOTONIC)); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + gpr_inf_future(GPR_CLOCK_MONOTONIC)); } GPR_ASSERT(a.cb_that_ran == first_read_callback); gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); @@ -467,7 +470,8 @@ static void test_grpc_fd_change(void) { gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); while (b.cb_that_ran == NULL) { grpc_pollset_worker worker; - grpc_pollset_work(&g_pollset, &worker, gpr_inf_future(GPR_CLOCK_MONOTONIC)); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + gpr_inf_future(GPR_CLOCK_MONOTONIC)); } /* Except now we verify that second_read_callback ran instead */ GPR_ASSERT(b.cb_that_ran == second_read_callback); diff --git a/test/core/iomgr/tcp_client_posix_test.c b/test/core/iomgr/tcp_client_posix_test.c index 07bbe1f402..dea0b33b8e 100644 --- a/test/core/iomgr/tcp_client_posix_test.c +++ b/test/core/iomgr/tcp_client_posix_test.c @@ -112,7 +112,8 @@ void test_succeeds(void) { while (g_connections_complete == connections_complete_before) { grpc_pollset_worker worker; - grpc_pollset_work(&g_pollset, &worker, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5)); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5)); } gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); @@ -142,7 +143,8 @@ void test_fails(void) { /* wait for the connection callback to finish */ while (g_connections_complete == connections_complete_before) { grpc_pollset_worker worker; - grpc_pollset_work(&g_pollset, &worker, test_deadline()); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + test_deadline()); } gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); @@ -211,7 +213,8 @@ void test_times_out(void) { GPR_ASSERT(g_connections_complete == connections_complete_before + is_after_deadline); } - grpc_pollset_work(&g_pollset, &worker, GRPC_TIMEOUT_MILLIS_TO_DEADLINE(10)); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + GRPC_TIMEOUT_MILLIS_TO_DEADLINE(10)); } gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); diff --git a/test/core/iomgr/tcp_posix_test.c b/test/core/iomgr/tcp_posix_test.c index 17a85ceaec..6ad832231f 100644 --- a/test/core/iomgr/tcp_posix_test.c +++ b/test/core/iomgr/tcp_posix_test.c @@ -187,7 +187,8 @@ static void read_test(ssize_t num_bytes, ssize_t slice_size) { gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); while (state.read_bytes < state.target_read_bytes) { grpc_pollset_worker worker; - grpc_pollset_work(&g_pollset, &worker, deadline); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + deadline); } GPR_ASSERT(state.read_bytes == state.target_read_bytes); gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); @@ -224,7 +225,8 @@ static void large_read_test(ssize_t slice_size) { gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); while (state.read_bytes < state.target_read_bytes) { grpc_pollset_worker worker; - grpc_pollset_work(&g_pollset, &worker, deadline); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + deadline); } GPR_ASSERT(state.read_bytes == state.target_read_bytes); gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); @@ -285,7 +287,8 @@ void drain_socket_blocking(int fd, size_t num_bytes, size_t read_size) { for (;;) { grpc_pollset_worker worker; gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); - grpc_pollset_work(&g_pollset, &worker, GRPC_TIMEOUT_MILLIS_TO_DEADLINE(10)); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + GRPC_TIMEOUT_MILLIS_TO_DEADLINE(10)); gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); do { bytes_read = @@ -365,7 +368,8 @@ static void write_test(ssize_t num_bytes, ssize_t slice_size) { if (state.write_done) { break; } - grpc_pollset_work(&g_pollset, &worker, deadline); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + deadline); } gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); } @@ -422,7 +426,8 @@ static void write_error_test(ssize_t num_bytes, ssize_t slice_size) { if (state.write_done) { break; } - grpc_pollset_work(&g_pollset, &worker, deadline); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + deadline); } gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); break; diff --git a/test/core/iomgr/tcp_server_posix_test.c b/test/core/iomgr/tcp_server_posix_test.c index b82d7c08b1..29a20cba8e 100644 --- a/test/core/iomgr/tcp_server_posix_test.c +++ b/test/core/iomgr/tcp_server_posix_test.c @@ -137,7 +137,8 @@ static void test_connect(int n) { while (g_nconnects == nconnects_before && gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) > 0) { grpc_pollset_worker worker; - grpc_pollset_work(&g_pollset, &worker, deadline); + grpc_pollset_work(&g_pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + deadline); } gpr_log(GPR_DEBUG, "wait done"); diff --git a/test/core/security/oauth2_utils.c b/test/core/security/oauth2_utils.c index 990855ac6a..7df6fade6b 100644 --- a/test/core/security/oauth2_utils.c +++ b/test/core/security/oauth2_utils.c @@ -85,7 +85,7 @@ char *grpc_test_fetch_oauth2_token_with_credentials(grpc_credentials *creds) { gpr_mu_lock(GRPC_POLLSET_MU(&request.pollset)); while (!request.is_done) { grpc_pollset_worker worker; - grpc_pollset_work(&request.pollset, &worker, + grpc_pollset_work(&request.pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), gpr_inf_future(GPR_CLOCK_MONOTONIC)); } gpr_mu_unlock(GRPC_POLLSET_MU(&request.pollset)); diff --git a/test/core/util/reconnect_server.c b/test/core/util/reconnect_server.c index 2a2113338b..a06cb50b3a 100644 --- a/test/core/util/reconnect_server.c +++ b/test/core/util/reconnect_server.c @@ -134,7 +134,8 @@ void reconnect_server_poll(reconnect_server *server, int seconds) { gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC), gpr_time_from_seconds(seconds, GPR_TIMESPAN)); gpr_mu_lock(GRPC_POLLSET_MU(&server->pollset)); - grpc_pollset_work(&server->pollset, &worker, deadline); + grpc_pollset_work(&server->pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + deadline); gpr_mu_unlock(GRPC_POLLSET_MU(&server->pollset)); } diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc index 266c3622ea..ab26208070 100644 --- a/test/cpp/end2end/async_end2end_test.cc +++ b/test/cpp/end2end/async_end2end_test.cc @@ -69,11 +69,11 @@ namespace testing { namespace { -void* tag(int i) { return (void*)(gpr_intptr) i; } +void* tag(int i) { return (void*)(gpr_intptr)i; } #ifdef GPR_POSIX_SOCKET -static int assert_non_blocking_poll( - struct pollfd *pfds, nfds_t nfds, int timeout) { +static int assert_non_blocking_poll(struct pollfd* pfds, nfds_t nfds, + int timeout) { GPR_ASSERT(timeout == 0); return poll(pfds, nfds, timeout); } @@ -85,9 +85,7 @@ class PollOverride { grpc_poll_function = f; } - ~PollOverride() { - grpc_poll_function = prev_; - } + ~PollOverride() { grpc_poll_function = prev_; } private: grpc_poll_function_type prev_; @@ -95,7 +93,7 @@ class PollOverride { class PollingCheckRegion : public PollOverride { public: - explicit PollingCheckRegion(bool allow_blocking) + explicit PollingCheckRegion(bool allow_blocking) : PollOverride(allow_blocking ? poll : assert_non_blocking_poll) {} }; #else @@ -112,8 +110,7 @@ class Verifier : public PollingCheckRegion { expectations_[tag(i)] = expect_ok; return *this; } - void Verify(CompletionQueue *cq) { - if (spin_) gpr_log(GPR_DEBUG, "spin"); + void Verify(CompletionQueue* cq) { GPR_ASSERT(!expectations_.empty()); while (!expectations_.empty()) { bool ok; @@ -135,33 +132,38 @@ class Verifier : public PollingCheckRegion { expectations_.erase(it); } } - void Verify(CompletionQueue *cq, std::chrono::system_clock::time_point deadline) { - if (spin_) gpr_log(GPR_DEBUG, "spin"); + void Verify(CompletionQueue* cq, + std::chrono::system_clock::time_point deadline) { if (expectations_.empty()) { bool ok; - void *got_tag; + void* got_tag; if (spin_) { while (std::chrono::system_clock::now() < deadline) { - EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, gpr_time_0(GPR_CLOCK_REALTIME)), CompletionQueue::TIMEOUT); + EXPECT_EQ( + cq->AsyncNext(&got_tag, &ok, gpr_time_0(GPR_CLOCK_REALTIME)), + CompletionQueue::TIMEOUT); } } else { - EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), CompletionQueue::TIMEOUT); + EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), + CompletionQueue::TIMEOUT); } } else { while (!expectations_.empty()) { bool ok; - void *got_tag; + void* got_tag; if (spin_) { for (;;) { GPR_ASSERT(std::chrono::system_clock::now() < deadline); - auto r = cq->AsyncNext(&got_tag, &ok, gpr_time_0(GPR_CLOCK_REALTIME)); + auto r = + cq->AsyncNext(&got_tag, &ok, gpr_time_0(GPR_CLOCK_REALTIME)); if (r == CompletionQueue::TIMEOUT) continue; if (r == CompletionQueue::GOT_EVENT) break; gpr_log(GPR_ERROR, "unexpected result from AsyncNext"); abort(); - } + } } else { - EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), CompletionQueue::GOT_EVENT); + EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), + CompletionQueue::GOT_EVENT); } auto it = expectations_.find(got_tag); EXPECT_TRUE(it != expectations_.end()); @@ -185,7 +187,8 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<bool> { server_address_ << "localhost:" << port; // Setup server ServerBuilder builder; - builder.AddListeningPort(server_address_.str(), grpc::InsecureServerCredentials()); + builder.AddListeningPort(server_address_.str(), + grpc::InsecureServerCredentials()); builder.RegisterAsyncService(&service_); cq_ = builder.AddCompletionQueue(); server_ = builder.BuildAndStart(); @@ -222,8 +225,8 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<bool> { std::unique_ptr<ClientAsyncResponseReader<EchoResponse> > response_reader( stub_->AsyncEcho(&cli_ctx, send_request, cq_.get())); - service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, - cq_.get(), cq_.get(), tag(2)); + service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(), + cq_.get(), tag(2)); Verifier(GetParam()).Expect(2, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); @@ -290,10 +293,14 @@ TEST_P(AsyncEnd2endTest, AsyncNextRpc) { send_response.set_message(recv_request.message()); response_writer.Finish(send_response, Status::OK, tag(3)); - Verifier(GetParam()).Expect(3, true).Verify(cq_.get(), std::chrono::system_clock::time_point::max()); + Verifier(GetParam()) + .Expect(3, true) + .Verify(cq_.get(), std::chrono::system_clock::time_point::max()); response_reader->Finish(&recv_response, &recv_status, tag(4)); - Verifier(GetParam()).Expect(4, true).Verify(cq_.get(), std::chrono::system_clock::time_point::max()); + Verifier(GetParam()) + .Expect(4, true) + .Verify(cq_.get(), std::chrono::system_clock::time_point::max()); EXPECT_EQ(send_response.message(), recv_response.message()); EXPECT_TRUE(recv_status.ok()); @@ -316,8 +323,8 @@ TEST_P(AsyncEnd2endTest, SimpleClientStreaming) { std::unique_ptr<ClientAsyncWriter<EchoRequest> > cli_stream( stub_->AsyncRequestStream(&cli_ctx, &recv_response, cq_.get(), tag(1))); - service_.RequestRequestStream(&srv_ctx, &srv_stream, cq_.get(), - cq_.get(), tag(2)); + service_.RequestRequestStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(), + tag(2)); Verifier(GetParam()).Expect(2, true).Expect(1, true).Verify(cq_.get()); @@ -419,8 +426,8 @@ TEST_P(AsyncEnd2endTest, SimpleBidiStreaming) { std::unique_ptr<ClientAsyncReaderWriter<EchoRequest, EchoResponse> > cli_stream(stub_->AsyncBidiStream(&cli_ctx, cq_.get(), tag(1))); - service_.RequestBidiStream(&srv_ctx, &srv_stream, cq_.get(), - cq_.get(), tag(2)); + service_.RequestBidiStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(), + tag(2)); Verifier(GetParam()).Expect(1, true).Expect(2, true).Verify(cq_.get()); @@ -606,18 +613,17 @@ TEST_P(AsyncEnd2endTest, MetadataRpc) { std::pair<grpc::string, grpc::string> meta1("key1", "val1"); std::pair<grpc::string, grpc::string> meta2( "key2-bin", - grpc::string("\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc", - 13)); + grpc::string("\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc", 13)); std::pair<grpc::string, grpc::string> meta3("key3", "val3"); std::pair<grpc::string, grpc::string> meta6( "key4-bin", grpc::string("\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d", - 14)); + 14)); std::pair<grpc::string, grpc::string> meta5("key5", "val5"); std::pair<grpc::string, grpc::string> meta4( "key6-bin", - grpc::string("\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee", - 15)); + grpc::string( + "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee", 15)); cli_ctx.AddMetadata(meta1.first, meta1.second); cli_ctx.AddMetadata(meta2.first, meta2.second); @@ -735,7 +741,8 @@ TEST_P(AsyncEnd2endTest, ServerCheckDone) { EXPECT_TRUE(recv_status.ok()); } -INSTANTIATE_TEST_CASE_P(AsyncEnd2end, AsyncEnd2endTest, ::testing::Values(false, true)); +INSTANTIATE_TEST_CASE_P(AsyncEnd2end, AsyncEnd2endTest, + ::testing::Values(false, true)); } // namespace } // namespace testing -- GitLab From 57e9189fe91da3a359115d1bfa9be192e9e30a84 Mon Sep 17 00:00:00 2001 From: Craig Tiller <craig.tiller@gmail.com> Date: Thu, 6 Aug 2015 08:47:48 -0700 Subject: [PATCH 023/178] Windows implementation of new pollset semantics --- src/core/iomgr/pollset.h | 3 +-- src/core/iomgr/pollset_windows.c | 9 ++------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/core/iomgr/pollset.h b/src/core/iomgr/pollset.h index 3de0ca7ebd..337596cb74 100644 --- a/src/core/iomgr/pollset.h +++ b/src/core/iomgr/pollset.h @@ -74,8 +74,7 @@ void grpc_pollset_destroy(grpc_pollset *pollset); grpc_pollset_work, and it is guaranteed that GRPC_POLLSET_MU(pollset) will not be released by grpc_pollset_work AFTER worker has been destroyed. - Returns true if some work has been done, and false if the deadline - expired. */ + Tries not to block past deadline. */ void grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker *worker, gpr_timespec now, gpr_timespec deadline); diff --git a/src/core/iomgr/pollset_windows.c b/src/core/iomgr/pollset_windows.c index 22dc5891c3..1078fa5384 100644 --- a/src/core/iomgr/pollset_windows.c +++ b/src/core/iomgr/pollset_windows.c @@ -100,13 +100,9 @@ void grpc_pollset_destroy(grpc_pollset *pollset) { gpr_mu_destroy(&pollset->mu); } -int grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker *worker, gpr_timespec deadline) { - gpr_timespec now; +void grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker *worker, + gpr_timespec now, gpr_timespec deadline) { int added_worker = 0; - now = gpr_now(GPR_CLOCK_MONOTONIC); - if (gpr_time_cmp(now, deadline) > 0) { - return 0 /* GPR_FALSE */; - } worker->next = worker->prev = NULL; gpr_cv_init(&worker->cv); if (grpc_maybe_call_delayed_callbacks(&pollset->mu, 1 /* GPR_TRUE */)) { @@ -127,7 +123,6 @@ done: if (added_worker) { remove_worker(pollset, worker); } - return 1 /* GPR_TRUE */; } void grpc_pollset_kick(grpc_pollset *p, grpc_pollset_worker *specific_worker) { -- GitLab From 038d26acd80878366c9df40a36d91db7c684aa7f Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Thu, 6 Aug 2015 08:57:54 -0700 Subject: [PATCH 024/178] Update tools --- test/core/security/print_google_default_creds_token.c | 4 ++-- test/core/security/verify_jwt.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/core/security/print_google_default_creds_token.c b/test/core/security/print_google_default_creds_token.c index 7238efbbfd..129b19bbe1 100644 --- a/test/core/security/print_google_default_creds_token.c +++ b/test/core/security/print_google_default_creds_token.c @@ -97,8 +97,8 @@ int main(int argc, char **argv) { gpr_mu_lock(GRPC_POLLSET_MU(&sync.pollset)); while (!sync.is_done) { grpc_pollset_worker worker; - grpc_pollset_work(&sync.pollset, &worker, - gpr_inf_future(GPR_CLOCK_REALTIME)); + grpc_pollset_work(&sync.pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + gpr_inf_future(GPR_CLOCK_MONOTONIC)); } gpr_mu_unlock(GRPC_POLLSET_MU(&sync.pollset)); diff --git a/test/core/security/verify_jwt.c b/test/core/security/verify_jwt.c index 9b334b3c3e..8c401e4f1b 100644 --- a/test/core/security/verify_jwt.c +++ b/test/core/security/verify_jwt.c @@ -111,8 +111,8 @@ int main(int argc, char **argv) { gpr_mu_lock(GRPC_POLLSET_MU(&sync.pollset)); while (!sync.is_done) { grpc_pollset_worker worker; - grpc_pollset_work(&sync.pollset, &worker, - gpr_inf_future(GPR_CLOCK_REALTIME)); + grpc_pollset_work(&sync.pollset, &worker, gpr_now(GPR_CLOCK_MONOTONIC), + gpr_inf_future(GPR_CLOCK_MONOTONIC)); } gpr_mu_unlock(GRPC_POLLSET_MU(&sync.pollset)); -- GitLab From d5689305612f5597716a4337ce934883a472a266 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Thu, 6 Aug 2015 13:27:22 -0700 Subject: [PATCH 025/178] Fix the plucking problem --- src/core/surface/completion_queue.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c index cb862ce94b..4e9de16c5e 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -294,6 +294,7 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag, } first_loop = 0; grpc_pollset_work(&cc->pollset, &worker, now, deadline); + del_plucker(cc, tag, &worker); } done: GRPC_SURFACE_TRACE_RETURNED_EVENT(cc, &ret); -- GitLab From f68e472f5c8c5e4e4b8e815550f85192c00f1f8e Mon Sep 17 00:00:00 2001 From: Hongyu Chen <hongyu@google.com> Date: Fri, 7 Aug 2015 18:06:42 -0700 Subject: [PATCH 026/178] Re-install census filters. --- src/core/surface/channel_create.c | 4 ++-- src/core/surface/secure_channel_create.c | 4 ++-- src/core/surface/server.c | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/core/surface/channel_create.c b/src/core/surface/channel_create.c index 707d615688..4379b3d016 100644 --- a/src/core/surface/channel_create.c +++ b/src/core/surface/channel_create.c @@ -38,6 +38,7 @@ #include <grpc/support/alloc.h> +#include "src/core/channel/census_filter.h" #include "src/core/channel/channel_args.h" #include "src/core/channel/client_channel.h" #include "src/core/channel/compress_filter.h" @@ -163,10 +164,9 @@ grpc_channel *grpc_insecure_channel_create(const char *target, subchannel_factory *f; grpc_mdctx *mdctx = grpc_mdctx_create(); int n = 0; - /* TODO(census) if (grpc_channel_args_is_census_enabled(args)) { filters[n++] = &grpc_client_census_filter; - } */ + } filters[n++] = &grpc_compress_filter; filters[n++] = &grpc_client_channel_filter; GPR_ASSERT(n <= MAX_FILTERS); diff --git a/src/core/surface/secure_channel_create.c b/src/core/surface/secure_channel_create.c index 1f89353025..11c2bc8287 100644 --- a/src/core/surface/secure_channel_create.c +++ b/src/core/surface/secure_channel_create.c @@ -38,6 +38,7 @@ #include <grpc/support/alloc.h> +#include "src/core/channel/census_filter.h" #include "src/core/channel/channel_args.h" #include "src/core/channel/client_channel.h" #include "src/core/channel/compress_filter.h" @@ -213,10 +214,9 @@ grpc_channel *grpc_secure_channel_create(grpc_credentials *creds, args_copy = grpc_channel_args_copy_and_add( new_args_from_connector != NULL ? new_args_from_connector : args, &connector_arg, 1); - /* TODO(census) if (grpc_channel_args_is_census_enabled(args)) { filters[n++] = &grpc_client_census_filter; - } */ + } filters[n++] = &grpc_compress_filter; filters[n++] = &grpc_client_channel_filter; GPR_ASSERT(n <= MAX_FILTERS); diff --git a/src/core/surface/server.c b/src/core/surface/server.c index cd1dc589e1..27070836f3 100644 --- a/src/core/surface/server.c +++ b/src/core/surface/server.c @@ -818,10 +818,9 @@ grpc_server *grpc_server_create_from_filters( server->channel_filters = gpr_malloc(server->channel_filter_count * sizeof(grpc_channel_filter *)); server->channel_filters[0] = &server_surface_filter; - /* TODO(census): restore this once we rework census filter if (census_enabled) { server->channel_filters[1] = &grpc_server_census_filter; - } */ + } for (i = 0; i < filter_count; i++) { server->channel_filters[i + 1 + census_enabled] = filters[i]; } -- GitLab From cd37d5852ba156528997dde1c3757752da857d25 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Sun, 9 Aug 2015 15:50:21 -0700 Subject: [PATCH 027/178] Added new tests for compression --- test/cpp/interop/client.cc | 18 ++++++++--- test/cpp/interop/interop_client.cc | 52 +++++++++++++++++++++++++++++- test/cpp/interop/interop_client.h | 4 +++ test/cpp/interop/server.cc | 18 ++++++++--- test/proto/test.proto | 3 ++ 5 files changed, 86 insertions(+), 9 deletions(-) diff --git a/test/cpp/interop/client.cc b/test/cpp/interop/client.cc index ebc5cfc85a..ed410c9ef0 100644 --- a/test/cpp/interop/client.cc +++ b/test/cpp/interop/client.cc @@ -56,8 +56,12 @@ DEFINE_string(test_case, "large_unary", "Configure different test cases. Valid options are: " "empty_unary : empty (zero bytes) request and response; " "large_unary : single request and (large) response; " + "large_compressed_unary : single request and compressed (large) " + "response; " "client_streaming : request streaming with single response; " "server_streaming : single request with response streaming; " + "server_compressed_streaming : single request with compressed " + "response streaming; " "slow_consumer : single request with response; " " streaming with slow client consumer; " "half_duplex : half-duplex streaming; " @@ -91,10 +95,14 @@ int main(int argc, char** argv) { client.DoEmpty(); } else if (FLAGS_test_case == "large_unary") { client.DoLargeUnary(); + } else if (FLAGS_test_case == "large_compressed_unary") { + client.DoLargeCompressedUnary(); } else if (FLAGS_test_case == "client_streaming") { client.DoRequestStreaming(); } else if (FLAGS_test_case == "server_streaming") { client.DoResponseStreaming(); + } else if (FLAGS_test_case == "server_compressed_streaming") { + client.DoResponseCompressedStreaming(); } else if (FLAGS_test_case == "slow_consumer") { client.DoResponseStreamingWithSlowConsumer(); } else if (FLAGS_test_case == "half_duplex") { @@ -129,6 +137,7 @@ int main(int argc, char** argv) { client.DoLargeUnary(); client.DoRequestStreaming(); client.DoResponseStreaming(); + client.DoResponseCompressedStreaming(); client.DoHalfDuplex(); client.DoPingPong(); client.DoCancelAfterBegin(); @@ -148,10 +157,11 @@ int main(int argc, char** argv) { gpr_log( GPR_ERROR, "Unsupported test case %s. Valid options are all|empty_unary|" - "large_unary|client_streaming|server_streaming|half_duplex|ping_pong|" - "cancel_after_begin|cancel_after_first_response|" - "timeout_on_sleeping_server|service_account_creds|compute_engine_creds|" - "jwt_token_creds|oauth2_auth_token|per_rpc_creds", + "large_unary|large_compressed_unary|client_streaming|server_streaming|" + "server_compressed_streaming|half_duplex|ping_pong|cancel_after_begin|" + "cancel_after_first_response|timeout_on_sleeping_server|" + "service_account_creds|compute_engine_creds|jwt_token_creds|" + "oauth2_auth_token|per_rpc_creds", FLAGS_test_case.c_str()); ret = 1; } diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index 8e2d778cff..7ad0f31575 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -101,13 +101,29 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, std::unique_ptr<TestService::Stub> stub(TestService::NewStub(channel_)); ClientContext context; - InteropClientContextInspector inspector(context); + request->set_response_type(PayloadType::COMPRESSABLE); request->set_response_size(kLargeResponseSize); grpc::string payload(kLargeRequestSize, '\0'); request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize); Status s = stub->UnaryCall(&context, *request, response); + AssertOkOrPrintErrorStatus(s); +} + +// Shared code to set large payload, make rpc and check response payload. +void InteropClient::PerformLargeCompressedUnary(SimpleRequest* request, + SimpleResponse* response) { + std::unique_ptr<TestService::Stub> stub(TestService::NewStub(channel_)); + + ClientContext context; + InteropClientContextInspector inspector(context); + request->set_response_size(kLargeResponseSize); + grpc::string payload(kLargeRequestSize, '\0'); + request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize); + + Status s = stub->CompressedUnaryCall(&context, *request, response); + // Compression related checks. GPR_ASSERT(request->response_compression() == GetInteropCompressionTypeFromCompressionAlgorithm( @@ -245,6 +261,14 @@ void InteropClient::DoJwtTokenCreds(const grpc::string& username) { } void InteropClient::DoLargeUnary() { + gpr_log(GPR_INFO, "Sending a large unary rpc..."); + SimpleRequest request; + SimpleResponse response; + PerformLargeUnary(&request, &response); + gpr_log(GPR_INFO, "Large unary done."); +} + +void InteropClient::DoLargeCompressedUnary() { const CompressionType compression_types[] = {NONE, GZIP, DEFLATE}; const PayloadType payload_types[] = {COMPRESSABLE, UNCOMPRESSABLE, RANDOM}; for (const auto payload_type : payload_types) { @@ -293,6 +317,32 @@ void InteropClient::DoRequestStreaming() { } void InteropClient::DoResponseStreaming() { + gpr_log(GPR_INFO, "Receiving response steaming rpc ..."); + std::unique_ptr<TestService::Stub> stub(TestService::NewStub(channel_)); + + ClientContext context; + StreamingOutputCallRequest request; + for (unsigned int i = 0; i < response_stream_sizes.size(); ++i) { + ResponseParameters* response_parameter = request.add_response_parameters(); + response_parameter->set_size(response_stream_sizes[i]); + } + StreamingOutputCallResponse response; + std::unique_ptr<ClientReader<StreamingOutputCallResponse>> stream( + stub->StreamingOutputCall(&context, request)); + + unsigned int i = 0; + while (stream->Read(&response)) { + GPR_ASSERT(response.payload().body() == + grpc::string(response_stream_sizes[i], '\0')); + ++i; + } + GPR_ASSERT(response_stream_sizes.size() == i); + Status s = stream->Finish(); + AssertOkOrPrintErrorStatus(s); + gpr_log(GPR_INFO, "Response streaming done."); +} + +void InteropClient::DoResponseCompressedStreaming() { std::unique_ptr<TestService::Stub> stub(TestService::NewStub(channel_)); const CompressionType compression_types[] = {NONE, GZIP, DEFLATE}; diff --git a/test/cpp/interop/interop_client.h b/test/cpp/interop/interop_client.h index 6e26c49e5d..995b13036a 100644 --- a/test/cpp/interop/interop_client.h +++ b/test/cpp/interop/interop_client.h @@ -52,10 +52,12 @@ class InteropClient { void DoEmpty(); void DoLargeUnary(); + void DoLargeCompressedUnary(); void DoPingPong(); void DoHalfDuplex(); void DoRequestStreaming(); void DoResponseStreaming(); + void DoResponseCompressedStreaming(); void DoResponseStreamingWithSlowConsumer(); void DoCancelAfterBegin(); void DoCancelAfterFirstResponse(); @@ -78,6 +80,8 @@ class InteropClient { private: void PerformLargeUnary(SimpleRequest* request, SimpleResponse* response); + void PerformLargeCompressedUnary(SimpleRequest* request, + SimpleResponse* response); void AssertOkOrPrintErrorStatus(const Status& s); std::shared_ptr<ChannelInterface> channel_; diff --git a/test/cpp/interop/server.cc b/test/cpp/interop/server.cc index 0097d1678c..ac0a2e512b 100644 --- a/test/cpp/interop/server.cc +++ b/test/cpp/interop/server.cc @@ -140,16 +140,12 @@ class TestServiceImpl : public TestService::Service { Status UnaryCall(ServerContext* context, const SimpleRequest* request, SimpleResponse* response) { - InteropServerContextInspector inspector(*context); - SetResponseCompression(context, *request); if (request->has_response_size() && request->response_size() > 0) { if (!SetPayload(request->response_type(), request->response_size(), response->mutable_payload())) { return Status(grpc::StatusCode::INTERNAL, "Error creating payload."); } } - const gpr_uint32 client_accept_encodings_bitset = - inspector.GetEncodingsAcceptedByClient(); if (request->has_response_status()) { return Status(static_cast<grpc::StatusCode> @@ -160,6 +156,13 @@ class TestServiceImpl : public TestService::Service { return Status::OK; } + Status CompressedUnaryCall(ServerContext* context, + const SimpleRequest* request, + SimpleResponse* response) { + SetResponseCompression(context, *request); + return UnaryCall(context, request, response); + } + Status StreamingOutputCall( ServerContext* context, const StreamingOutputCallRequest* request, ServerWriter<StreamingOutputCallResponse>* writer) { @@ -180,6 +183,13 @@ class TestServiceImpl : public TestService::Service { } } + Status CompressedStreamingOutputCall( + ServerContext* context, const StreamingOutputCallRequest* request, + ServerWriter<StreamingOutputCallResponse>* writer) { + SetResponseCompression(context, *request); + return StreamingOutputCall(context, request, writer); + } + Status StreamingInputCall(ServerContext* context, ServerReader<StreamingInputCallRequest>* reader, StreamingInputCallResponse* response) { diff --git a/test/proto/test.proto b/test/proto/test.proto index 368522dc4c..574c6a5b50 100644 --- a/test/proto/test.proto +++ b/test/proto/test.proto @@ -48,6 +48,9 @@ service TestService { // TODO(Issue 527): Describe required server behavior. rpc UnaryCall(SimpleRequest) returns (SimpleResponse); + // One request followed by one compressed response. + rpc CompressedUnaryCall(SimpleRequest) returns (SimpleResponse); + // One request followed by a sequence of responses (streamed download). // The server returns the payload with client desired type and sizes. rpc StreamingOutputCall(StreamingOutputCallRequest) -- GitLab From 2e1bb1bf4da91d7f9c8d3b2be864ed15574d5670 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Mon, 10 Aug 2015 14:05:57 -0700 Subject: [PATCH 028/178] Reverted unnecessary changes to server --- test/cpp/interop/client.cc | 2 +- test/cpp/interop/interop_client.cc | 2 +- test/cpp/interop/server.cc | 22 +++++----------------- test/proto/test.proto | 3 --- 4 files changed, 7 insertions(+), 22 deletions(-) diff --git a/test/cpp/interop/client.cc b/test/cpp/interop/client.cc index ed410c9ef0..48143b2e53 100644 --- a/test/cpp/interop/client.cc +++ b/test/cpp/interop/client.cc @@ -74,7 +74,7 @@ DEFINE_string(test_case, "large_unary", "jwt_token_creds: large_unary with JWT token auth; " "oauth2_auth_token: raw oauth2 access token auth; " "per_rpc_creds: raw oauth2 access token on a single rpc; " - "status_code_and_message: verify status code & message; " + "status_code_and_message: verify status code & message; " "all : all of above."); DEFINE_string(default_service_account, "", "Email of GCE default service account"); diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index 7ad0f31575..a43225011e 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -122,7 +122,7 @@ void InteropClient::PerformLargeCompressedUnary(SimpleRequest* request, grpc::string payload(kLargeRequestSize, '\0'); request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize); - Status s = stub->CompressedUnaryCall(&context, *request, response); + Status s = stub->UnaryCall(&context, *request, response); // Compression related checks. GPR_ASSERT(request->response_compression() == diff --git a/test/cpp/interop/server.cc b/test/cpp/interop/server.cc index ac0a2e512b..2ea8794e5a 100644 --- a/test/cpp/interop/server.cc +++ b/test/cpp/interop/server.cc @@ -43,6 +43,7 @@ #include <grpc/grpc.h> #include <grpc/support/log.h> #include <grpc/support/useful.h> + #include <grpc++/config.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> @@ -140,6 +141,7 @@ class TestServiceImpl : public TestService::Service { Status UnaryCall(ServerContext* context, const SimpleRequest* request, SimpleResponse* response) { + SetResponseCompression(context, *request); if (request->has_response_size() && request->response_size() > 0) { if (!SetPayload(request->response_type(), request->response_size(), response->mutable_payload())) { @@ -148,21 +150,14 @@ class TestServiceImpl : public TestService::Service { } if (request->has_response_status()) { - return Status(static_cast<grpc::StatusCode> - (request->response_status().code()), - request->response_status().message()); + return Status( + static_cast<grpc::StatusCode>(request->response_status().code()), + request->response_status().message()); } return Status::OK; } - Status CompressedUnaryCall(ServerContext* context, - const SimpleRequest* request, - SimpleResponse* response) { - SetResponseCompression(context, *request); - return UnaryCall(context, request, response); - } - Status StreamingOutputCall( ServerContext* context, const StreamingOutputCallRequest* request, ServerWriter<StreamingOutputCallResponse>* writer) { @@ -183,13 +178,6 @@ class TestServiceImpl : public TestService::Service { } } - Status CompressedStreamingOutputCall( - ServerContext* context, const StreamingOutputCallRequest* request, - ServerWriter<StreamingOutputCallResponse>* writer) { - SetResponseCompression(context, *request); - return StreamingOutputCall(context, request, writer); - } - Status StreamingInputCall(ServerContext* context, ServerReader<StreamingInputCallRequest>* reader, StreamingInputCallResponse* response) { diff --git a/test/proto/test.proto b/test/proto/test.proto index 574c6a5b50..368522dc4c 100644 --- a/test/proto/test.proto +++ b/test/proto/test.proto @@ -48,9 +48,6 @@ service TestService { // TODO(Issue 527): Describe required server behavior. rpc UnaryCall(SimpleRequest) returns (SimpleResponse); - // One request followed by one compressed response. - rpc CompressedUnaryCall(SimpleRequest) returns (SimpleResponse); - // One request followed by a sequence of responses (streamed download). // The server returns the payload with client desired type and sizes. rpc StreamingOutputCall(StreamingOutputCallRequest) -- GitLab From 616b375e3510a8572f6dbd22d4602bf3ca8c6245 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Tue, 11 Aug 2015 15:21:02 -0700 Subject: [PATCH 029/178] Merged PerformLargeCompressedUnary into PerformLargeUnary --- src/core/surface/call.c | 3 ++- test/cpp/interop/interop_client.cc | 21 +++------------------ test/cpp/interop/interop_client.h | 2 -- 3 files changed, 5 insertions(+), 21 deletions(-) diff --git a/src/core/surface/call.c b/src/core/surface/call.c index a7624fd96f..d825f2af69 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -560,7 +560,8 @@ static void set_encodings_accepted_by_peer(grpc_call *call, /* TODO(dgq): it'd be nice to have a slice-to-cstr function to easily * print the offending entry */ gpr_log(GPR_ERROR, - "Invalid entry in accept encoding metadata. Ignoring."); + "Invalid entry in accept encoding metadata: '%s'. Ignoring.", + gpr_dump_slice(*slice, GPR_DUMP_ASCII)); } } } diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index a43225011e..fc0e325e41 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -100,24 +100,9 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, SimpleResponse* response) { std::unique_ptr<TestService::Stub> stub(TestService::NewStub(channel_)); - ClientContext context; - request->set_response_type(PayloadType::COMPRESSABLE); - request->set_response_size(kLargeResponseSize); - grpc::string payload(kLargeRequestSize, '\0'); - request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize); - - Status s = stub->UnaryCall(&context, *request, response); - - AssertOkOrPrintErrorStatus(s); -} - -// Shared code to set large payload, make rpc and check response payload. -void InteropClient::PerformLargeCompressedUnary(SimpleRequest* request, - SimpleResponse* response) { - std::unique_ptr<TestService::Stub> stub(TestService::NewStub(channel_)); - ClientContext context; InteropClientContextInspector inspector(context); + request->set_response_type(PayloadType::COMPRESSABLE); request->set_response_size(kLargeResponseSize); grpc::string payload(kLargeRequestSize, '\0'); request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize); @@ -278,13 +263,13 @@ void InteropClient::DoLargeCompressedUnary() { CompressionType_Name(compression_type).c_str(), PayloadType_Name(payload_type).c_str()); - gpr_log(GPR_INFO, "Sending a large unary rpc %s.", log_suffix); + gpr_log(GPR_INFO, "Sending a large compressed unary rpc %s.", log_suffix); SimpleRequest request; SimpleResponse response; request.set_response_type(payload_type); request.set_response_compression(compression_type); PerformLargeUnary(&request, &response); - gpr_log(GPR_INFO, "Large unary done %s.", log_suffix); + gpr_log(GPR_INFO, "Large compressed unary done %s.", log_suffix); gpr_free(log_suffix); } } diff --git a/test/cpp/interop/interop_client.h b/test/cpp/interop/interop_client.h index 995b13036a..d6fb9bff39 100644 --- a/test/cpp/interop/interop_client.h +++ b/test/cpp/interop/interop_client.h @@ -80,8 +80,6 @@ class InteropClient { private: void PerformLargeUnary(SimpleRequest* request, SimpleResponse* response); - void PerformLargeCompressedUnary(SimpleRequest* request, - SimpleResponse* response); void AssertOkOrPrintErrorStatus(const Status& s); std::shared_ptr<ChannelInterface> channel_; -- GitLab From 7adbb643072af7b6dc0f09298fa44b988118df01 Mon Sep 17 00:00:00 2001 From: Hongyu Chen <hongyu@google.com> Date: Tue, 11 Aug 2015 16:00:32 -0700 Subject: [PATCH 030/178] Build file changes --- BUILD | 3 ++ Makefile | 2 + build.json | 1 + gRPC.podspec | 1 + src/core/channel/census_filter.c | 38 +++++++------------ tools/doxygen/Doxyfile.core.internal | 1 + tools/run_tests/sources_and_headers.json | 2 + vsprojects/grpc/grpc.vcxproj | 2 + vsprojects/grpc/grpc.vcxproj.filters | 3 ++ .../grpc_unsecure/grpc_unsecure.vcxproj | 2 + .../grpc_unsecure.vcxproj.filters | 3 ++ 11 files changed, 33 insertions(+), 25 deletions(-) diff --git a/BUILD b/BUILD index dcabd648e4..2cf64dc9cf 100644 --- a/BUILD +++ b/BUILD @@ -268,6 +268,7 @@ cc_library( "src/core/tsi/ssl_transport_security.c", "src/core/tsi/transport_security.c", "src/core/census/grpc_context.c", + "src/core/channel/census_filter.c", "src/core/channel/channel_args.c", "src/core/channel/channel_stack.c", "src/core/channel/client_channel.c", @@ -511,6 +512,7 @@ cc_library( "src/core/census/rpc_stat_id.h", "src/core/surface/init_unsecure.c", "src/core/census/grpc_context.c", + "src/core/channel/census_filter.c", "src/core/channel/channel_args.c", "src/core/channel/channel_stack.c", "src/core/channel/client_channel.c", @@ -998,6 +1000,7 @@ objc_library( "src/core/tsi/ssl_transport_security.c", "src/core/tsi/transport_security.c", "src/core/census/grpc_context.c", + "src/core/channel/census_filter.c", "src/core/channel/channel_args.c", "src/core/channel/channel_stack.c", "src/core/channel/client_channel.c", diff --git a/Makefile b/Makefile index 181194f78f..06c16478a9 100644 --- a/Makefile +++ b/Makefile @@ -3977,6 +3977,7 @@ LIBGRPC_SRC = \ src/core/tsi/ssl_transport_security.c \ src/core/tsi/transport_security.c \ src/core/census/grpc_context.c \ + src/core/channel/census_filter.c \ src/core/channel/channel_args.c \ src/core/channel/channel_stack.c \ src/core/channel/client_channel.c \ @@ -4249,6 +4250,7 @@ endif LIBGRPC_UNSECURE_SRC = \ src/core/surface/init_unsecure.c \ src/core/census/grpc_context.c \ + src/core/channel/census_filter.c \ src/core/channel/channel_args.c \ src/core/channel/channel_stack.c \ src/core/channel/client_channel.c \ diff --git a/build.json b/build.json index 515cecdc5a..8636c84db3 100644 --- a/build.json +++ b/build.json @@ -217,6 +217,7 @@ ], "src": [ "src/core/census/grpc_context.c", + "src/core/channel/census_filter.c", "src/core/channel/channel_args.c", "src/core/channel/channel_stack.c", "src/core/channel/client_channel.c", diff --git a/gRPC.podspec b/gRPC.podspec index 12ce7c1e7b..d1e95a1652 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -277,6 +277,7 @@ Pod::Spec.new do |s| 'src/core/tsi/ssl_transport_security.c', 'src/core/tsi/transport_security.c', 'src/core/census/grpc_context.c', + 'src/core/channel/census_filter.c', 'src/core/channel/channel_args.c', 'src/core/channel/channel_stack.c', 'src/core/channel/client_channel.c', diff --git a/src/core/channel/census_filter.c b/src/core/channel/census_filter.c index d996c3475e..86bde85d12 100644 --- a/src/core/channel/census_filter.c +++ b/src/core/channel/census_filter.c @@ -47,13 +47,12 @@ typedef struct call_data { census_op_id op_id; - census_rpc_stats stats; + /*census_rpc_stats stats;*/ gpr_timespec start_ts; /* recv callback */ grpc_stream_op_buffer* recv_ops; - void (*on_done_recv)(void* user_data, int success); - void* recv_user_data; + grpc_iomgr_closure* on_done_recv; } call_data; typedef struct channel_data { @@ -108,7 +107,7 @@ static void server_on_done_recv(void* ptr, int success) { if (success) { extract_and_annotate_method_tag(calld->recv_ops, calld, chand); } - calld->on_done_recv(calld->recv_user_data, success); + calld->on_done_recv->cb(calld->on_done_recv->cb_arg, success); } static void server_mutate_op(grpc_call_element* elem, @@ -118,9 +117,7 @@ static void server_mutate_op(grpc_call_element* elem, /* substitute our callback for the op callback */ calld->recv_ops = op->recv_ops; calld->on_done_recv = op->on_done_recv; - calld->recv_user_data = op->recv_user_data; - op->on_done_recv = server_on_done_recv; - op->recv_user_data = elem; + op->on_done_recv = calld->on_done_recv; } } @@ -132,19 +129,6 @@ static void server_start_transport_op(grpc_call_element* elem, grpc_call_next_op(elem, op); } -static void channel_op(grpc_channel_element* elem, - grpc_channel_element* from_elem, grpc_channel_op* op) { - switch (op->type) { - case GRPC_TRANSPORT_CLOSED: - /* TODO(hongyu): Annotate trace information for all calls of the channel - */ - break; - default: - break; - } - grpc_channel_next_op(elem, op); -} - static void client_init_call_elem(grpc_call_element* elem, const void* server_transport_data, grpc_transport_stream_op* initial_op) { @@ -171,6 +155,7 @@ static void server_init_call_elem(grpc_call_element* elem, init_rpc_stats(&d->stats); d->start_ts = gpr_now(GPR_CLOCK_REALTIME); d->op_id = census_tracing_start_op(); + grpc_iomgr_closure_init(d->on_done_recv, server_on_done_recv, elem); if (initial_op) server_mutate_op(elem, initial_op); } @@ -179,18 +164,19 @@ static void server_destroy_call_elem(grpc_call_element* elem) { GPR_ASSERT(d != NULL); d->stats.elapsed_time_ms = gpr_timespec_to_micros( gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), d->start_ts)); - census_record_rpc_server_stats(d->op_id, &d->stats); + census_record_stats(d->ctxt, stats, nstats); + /*census_record_rpc_server_stats(d->op_id, &d->stats);*/ census_tracing_end_op(d->op_id); } -static void init_channel_elem(grpc_channel_element* elem, +static void init_channel_elem(grpc_channel_element* elem, grpc_channel* master, const grpc_channel_args* args, grpc_mdctx* mdctx, int is_first, int is_last) { channel_data* chand = elem->channel_data; GPR_ASSERT(chand != NULL); GPR_ASSERT(!is_first); GPR_ASSERT(!is_last); - chand->path_str = grpc_mdstr_from_string(mdctx, ":path"); + chand->path_str = grpc_mdstr_from_string(mdctx, ":path", 0); } static void destroy_channel_elem(grpc_channel_element* elem) { @@ -203,22 +189,24 @@ static void destroy_channel_elem(grpc_channel_element* elem) { const grpc_channel_filter grpc_client_census_filter = { client_start_transport_op, - channel_op, + grpc_channel_next_op, sizeof(call_data), client_init_call_elem, client_destroy_call_elem, sizeof(channel_data), init_channel_elem, destroy_channel_elem, + grpc_call_next_get_peer, "census-client"}; const grpc_channel_filter grpc_server_census_filter = { server_start_transport_op, - channel_op, + grpc_channel_next_op, sizeof(call_data), server_init_call_elem, server_destroy_call_elem, sizeof(channel_data), init_channel_elem, destroy_channel_elem, + grpc_call_next_get_peer, "census-server"}; diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index cbf5c50a65..46c01e5e33 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -903,6 +903,7 @@ 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/channel/census_filter.c \ src/core/channel/channel_args.c \ src/core/channel/channel_stack.c \ src/core/channel/client_channel.c \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 5d23bf9e88..4a71ef90c9 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -12353,6 +12353,7 @@ "src/core/census/initialize.c", "src/core/census/record_stat.c", "src/core/census/rpc_stat_id.h", + "src/core/channel/census_filter.c", "src/core/channel/census_filter.h", "src/core/channel/channel_args.c", "src/core/channel/channel_args.h", @@ -12810,6 +12811,7 @@ "src/core/census/initialize.c", "src/core/census/record_stat.c", "src/core/census/rpc_stat_id.h", + "src/core/channel/census_filter.c", "src/core/channel/census_filter.h", "src/core/channel/channel_args.c", "src/core/channel/channel_args.h", diff --git a/vsprojects/grpc/grpc.vcxproj b/vsprojects/grpc/grpc.vcxproj index 067f341b95..a87ad29d49 100644 --- a/vsprojects/grpc/grpc.vcxproj +++ b/vsprojects/grpc/grpc.vcxproj @@ -389,6 +389,8 @@ </ClCompile> <ClCompile Include="..\..\src\core\census\grpc_context.c"> </ClCompile> + <ClCompile Include="..\..\src\core\channel\census_filter.c"> + </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_stack.c"> diff --git a/vsprojects/grpc/grpc.vcxproj.filters b/vsprojects/grpc/grpc.vcxproj.filters index fcc40c3a4b..c8812faa85 100644 --- a/vsprojects/grpc/grpc.vcxproj.filters +++ b/vsprojects/grpc/grpc.vcxproj.filters @@ -67,6 +67,9 @@ <ClCompile Include="..\..\src\core\census\grpc_context.c"> <Filter>src\core\census</Filter> </ClCompile> + <ClCompile Include="..\..\src\core\channel\census_filter.c"> + <Filter>src\core\channel</Filter> + </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> <Filter>src\core\channel</Filter> </ClCompile> diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj index b95658b70c..06da784323 100644 --- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj +++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj @@ -332,6 +332,8 @@ </ClCompile> <ClCompile Include="..\..\src\core\census\grpc_context.c"> </ClCompile> + <ClCompile Include="..\..\src\core\channel\census_filter.c"> + </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_stack.c"> diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters index 05e9d139e0..2d10960a79 100644 --- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters +++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters @@ -7,6 +7,9 @@ <ClCompile Include="..\..\src\core\census\grpc_context.c"> <Filter>src\core\census</Filter> </ClCompile> + <ClCompile Include="..\..\src\core\channel\census_filter.c"> + <Filter>src\core\channel</Filter> + </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> <Filter>src\core\channel</Filter> </ClCompile> -- GitLab From 34396b595820cbbbbdbf338c9c8e5f0bc6001637 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 12 Aug 2015 11:24:24 -0700 Subject: [PATCH 031/178] Added missing gpr_free for gpr_dump_slice char* --- src/core/surface/call.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/core/surface/call.c b/src/core/surface/call.c index d825f2af69..fdd2286da0 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -551,17 +551,19 @@ static void set_encodings_accepted_by_peer(grpc_call *call, /* Always support no compression */ GPR_BITSET(&call->encodings_accepted_by_peer, GRPC_COMPRESS_NONE); for (i = 0; i < accept_encoding_parts.count; i++) { - const gpr_slice* slice = &accept_encoding_parts.slices[i]; + const gpr_slice *accept_encoding_entry_slice = + &accept_encoding_parts.slices[i]; if (grpc_compression_algorithm_parse( - (const char *)GPR_SLICE_START_PTR(*slice), GPR_SLICE_LENGTH(*slice), - &algorithm)) { + (const char *)GPR_SLICE_START_PTR(*accept_encoding_entry_slice), + GPR_SLICE_LENGTH(*accept_encoding_entry_slice), &algorithm)) { GPR_BITSET(&call->encodings_accepted_by_peer, algorithm); } else { - /* TODO(dgq): it'd be nice to have a slice-to-cstr function to easily - * print the offending entry */ + char *accept_encoding_entry_str = + gpr_dump_slice(*accept_encoding_entry_slice, GPR_DUMP_ASCII); gpr_log(GPR_ERROR, "Invalid entry in accept encoding metadata: '%s'. Ignoring.", - gpr_dump_slice(*slice, GPR_DUMP_ASCII)); + accept_encoding_entry_str); + gpr_free(accept_encoding_entry_str); } } } -- GitLab From f99c090625bc1963468d2df24a7503298cfd53b2 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Wed, 12 Aug 2015 13:20:15 -0700 Subject: [PATCH 032/178] return StatusCode::INTERNAL for proto parsing error --- src/cpp/proto/proto_utils.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/cpp/proto/proto_utils.cc b/src/cpp/proto/proto_utils.cc index 63f4a3a0bc..94ae5ba636 100644 --- a/src/cpp/proto/proto_utils.cc +++ b/src/cpp/proto/proto_utils.cc @@ -158,14 +158,13 @@ Status SerializeProto(const grpc::protobuf::Message& msg, grpc_byte_buffer** bp) GrpcBufferWriter writer(bp); return msg.SerializeToZeroCopyStream(&writer) ? Status::OK - : Status(StatusCode::INVALID_ARGUMENT, - "Failed to serialize message"); + : Status(StatusCode::INTERNAL, "Failed to serialize message"); } Status DeserializeProto(grpc_byte_buffer* buffer, grpc::protobuf::Message* msg, int max_message_size) { if (!buffer) { - return Status(StatusCode::INVALID_ARGUMENT, "No payload"); + return Status(StatusCode::INTERNAL, "No payload"); } GrpcBufferReader reader(buffer); ::grpc::protobuf::io::CodedInputStream decoder(&reader); @@ -173,11 +172,11 @@ Status DeserializeProto(grpc_byte_buffer* buffer, grpc::protobuf::Message* msg, decoder.SetTotalBytesLimit(max_message_size, max_message_size); } if (!msg->ParseFromCodedStream(&decoder)) { - return Status(StatusCode::INVALID_ARGUMENT, + return Status(StatusCode::INTERNAL, msg->InitializationErrorString()); } if (!decoder.ConsumedEntireMessage()) { - return Status(StatusCode::INVALID_ARGUMENT, "Did not read entire message"); + return Status(StatusCode::INTERNAL, "Did not read entire message"); } return Status::OK; } -- GitLab From ba86dc0cbe8688a72ce3b50c03cf6934b2d17d64 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Thu, 13 Aug 2015 10:01:12 -0700 Subject: [PATCH 033/178] Removed spurious line that forced COMPRESSABLE for large unaries --- test/cpp/interop/interop_client.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index fc0e325e41..1f30260f0e 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -102,7 +102,6 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, ClientContext context; InteropClientContextInspector inspector(context); - request->set_response_type(PayloadType::COMPRESSABLE); request->set_response_size(kLargeResponseSize); grpc::string payload(kLargeRequestSize, '\0'); request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize); -- GitLab From 93dfab9c6ecfaa31a890c3b4657dfe5a515dacbf Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Thu, 13 Aug 2015 11:29:50 -0700 Subject: [PATCH 034/178] Make sure COMPRESSABLE is the default for LargeUnary --- test/cpp/interop/interop_client.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index 1f30260f0e..bc5b7adb1c 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -102,6 +102,11 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, ClientContext context; InteropClientContextInspector inspector(context); + // If the request doesn't already specify the response type, default to + // COMPRESSABLE. + if (!request->has_response_type()) { + request->set_response_type(PayloadType::COMPRESSABLE); + } request->set_response_size(kLargeResponseSize); grpc::string payload(kLargeRequestSize, '\0'); request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize); @@ -248,6 +253,7 @@ void InteropClient::DoLargeUnary() { gpr_log(GPR_INFO, "Sending a large unary rpc..."); SimpleRequest request; SimpleResponse response; + request.set_response_type(PayloadType::COMPRESSABLE); PerformLargeUnary(&request, &response); gpr_log(GPR_INFO, "Large unary done."); } -- GitLab From b802fc7732996719c85f8196d5fa6702cc4fcb77 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Thu, 13 Aug 2015 13:21:01 -0700 Subject: [PATCH 035/178] Updated outdated Grpc.mak --- vsprojects/Grpc.mak | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vsprojects/Grpc.mak b/vsprojects/Grpc.mak index 2b23777f32..2cc39686bb 100644 --- a/vsprojects/Grpc.mak +++ b/vsprojects/Grpc.mak @@ -4736,8 +4736,8 @@ build_grpc++_unsecure: Debug\interop_client_helper.lib: $(OUT_DIR) echo Building interop_client_helper - $(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\cpp\interop\client_helper.cc - $(LIBTOOL) /OUT:"Debug\interop_client_helper.lib" $(OUT_DIR)\client_helper.obj + $(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\cpp\interop\client_helper.cc $(REPO_ROOT)\test\proto\messages.pb.cc $(REPO_ROOT)\test\proto\messages.grpc.pb.cc + $(LIBTOOL) /OUT:"Debug\interop_client_helper.lib" $(OUT_DIR)\client_helper.obj $(OUT_DIR)\messages.pb.obj $(OUT_DIR)\messages.grpc.pb.obj Debug\interop_client_main.lib: $(OUT_DIR) echo Building interop_client_main -- GitLab From 864d18650e007d9080257d685fc09bfbbf3a306e Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Thu, 13 Aug 2015 15:26:00 -0700 Subject: [PATCH 036/178] proto3 required changes --- test/cpp/interop/interop_client.cc | 3 --- test/cpp/interop/server.cc | 28 +++++++++++++--------------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index cb6a607167..27bb1d4725 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -104,9 +104,6 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, InteropClientContextInspector inspector(context); // If the request doesn't already specify the response type, default to // COMPRESSABLE. - if (!request->has_response_type()) { - request->set_response_type(PayloadType::COMPRESSABLE); - } request->set_response_size(kLargeResponseSize); grpc::string payload(kLargeRequestSize, '\0'); request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize); diff --git a/test/cpp/interop/server.cc b/test/cpp/interop/server.cc index 319e394399..760bb18f73 100644 --- a/test/cpp/interop/server.cc +++ b/test/cpp/interop/server.cc @@ -115,20 +115,18 @@ bool SetPayload(PayloadType type, int size, Payload* payload) { template <typename RequestType> void SetResponseCompression(ServerContext* context, const RequestType& request) { - if (request.has_response_compression()) { - switch (request.response_compression()) { - case grpc::testing::NONE: - context->set_compression_algorithm(GRPC_COMPRESS_NONE); - break; - case grpc::testing::GZIP: - context->set_compression_algorithm(GRPC_COMPRESS_GZIP); - break; - case grpc::testing::DEFLATE: - context->set_compression_algorithm(GRPC_COMPRESS_DEFLATE); - break; - } - } else { - context->set_compression_algorithm(GRPC_COMPRESS_NONE); + switch (request.response_compression()) { + case grpc::testing::NONE: + context->set_compression_algorithm(GRPC_COMPRESS_NONE); + break; + case grpc::testing::GZIP: + context->set_compression_algorithm(GRPC_COMPRESS_GZIP); + break; + case grpc::testing::DEFLATE: + context->set_compression_algorithm(GRPC_COMPRESS_DEFLATE); + break; + default: + abort(); } } @@ -142,7 +140,7 @@ class TestServiceImpl : public TestService::Service { Status UnaryCall(ServerContext* context, const SimpleRequest* request, SimpleResponse* response) { SetResponseCompression(context, *request); - if (request->has_response_size() && request->response_size() > 0) { + if (request->response_size() > 0) { if (!SetPayload(request->response_type(), request->response_size(), response->mutable_payload())) { return Status(grpc::StatusCode::INTERNAL, "Error creating payload."); -- GitLab From 3c9b87396f17b48e714f07432b733b45ee612812 Mon Sep 17 00:00:00 2001 From: Hongyu Chen <hongyu@google.com> Date: Thu, 13 Aug 2015 17:01:02 -0700 Subject: [PATCH 037/178] Make census filter mostly no-op --- src/core/channel/census_filter.c | 48 +++++++++++++++++--------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/src/core/channel/census_filter.c b/src/core/channel/census_filter.c index 86bde85d12..8713d606b4 100644 --- a/src/core/channel/census_filter.c +++ b/src/core/channel/census_filter.c @@ -36,6 +36,8 @@ #include <stdio.h> #include <string.h> +#include "include/grpc/census.h" +#include "src/core/census/rpc_stat_id.h" #include "src/core/channel/channel_stack.h" #include "src/core/channel/noop_filter.h" #include "src/core/statistics/census_interface.h" @@ -47,8 +49,9 @@ typedef struct call_data { census_op_id op_id; - /*census_rpc_stats stats;*/ + census_context* ctxt; gpr_timespec start_ts; + int error; /* recv callback */ grpc_stream_op_buffer* recv_ops; @@ -59,11 +62,6 @@ typedef struct channel_data { grpc_mdstr* path_str; /* pointer to meta data str with key == ":path" */ } channel_data; -static void init_rpc_stats(census_rpc_stats* stats) { - memset(stats, 0, sizeof(census_rpc_stats)); - stats->cnt = 1; -} - static void extract_and_annotate_method_tag(grpc_stream_op_buffer* sopb, call_data* calld, channel_data* chand) { @@ -76,8 +74,7 @@ static void extract_and_annotate_method_tag(grpc_stream_op_buffer* sopb, if (m->md->key == chand->path_str) { gpr_log(GPR_DEBUG, "%s", (const char*)GPR_SLICE_START_PTR(m->md->value->slice)); - census_add_method_tag(calld->op_id, (const char*)GPR_SLICE_START_PTR( - m->md->value->slice)); + /* Add method tag here */ } } } @@ -94,8 +91,6 @@ static void client_mutate_op(grpc_call_element* elem, static void client_start_transport_op(grpc_call_element* elem, grpc_transport_stream_op* op) { - call_data* calld = elem->call_data; - GPR_ASSERT((calld->op_id.upper != 0) || (calld->op_id.lower != 0)); client_mutate_op(elem, op); grpc_call_next_op(elem, op); } @@ -134,17 +129,24 @@ static void client_init_call_elem(grpc_call_element* elem, grpc_transport_stream_op* initial_op) { call_data* d = elem->call_data; GPR_ASSERT(d != NULL); - init_rpc_stats(&d->stats); d->start_ts = gpr_now(GPR_CLOCK_REALTIME); - d->op_id = census_tracing_start_op(); if (initial_op) client_mutate_op(elem, initial_op); } static void client_destroy_call_elem(grpc_call_element* elem) { call_data* d = elem->call_data; + census_stat stats[3]; GPR_ASSERT(d != NULL); - census_record_rpc_client_stats(d->op_id, &d->stats); - census_tracing_end_op(d->op_id); + stats[0].id = CENSUS_RPC_CLIENT_REQUESTS; + stats[0].value = 1.0; + stats[1].id = CENSUS_RPC_CLIENT_ERRORS; + stats[1].value = 0.0; /* TODO(hongyu): add rpc error recording */ + stats[2].id = CENSUS_RPC_CLIENT_LATENCY; + /* Temporarily using census_filter invoke time as the start time of rpc. */ + stats[2].value = gpr_timespec_to_micros( + gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), d->start_ts)); + census_record_stat(d->ctxt, stats, 3); + /* TODO(hongyu): call census_rpc_end_op here */ } static void server_init_call_elem(grpc_call_element* elem, @@ -152,21 +154,25 @@ static void server_init_call_elem(grpc_call_element* elem, grpc_transport_stream_op* initial_op) { call_data* d = elem->call_data; GPR_ASSERT(d != NULL); - init_rpc_stats(&d->stats); d->start_ts = gpr_now(GPR_CLOCK_REALTIME); - d->op_id = census_tracing_start_op(); + /* TODO(hongyu): call census_tracing_start_op here. */ grpc_iomgr_closure_init(d->on_done_recv, server_on_done_recv, elem); if (initial_op) server_mutate_op(elem, initial_op); } static void server_destroy_call_elem(grpc_call_element* elem) { call_data* d = elem->call_data; + census_stat stats[3]; GPR_ASSERT(d != NULL); - d->stats.elapsed_time_ms = gpr_timespec_to_micros( + stats[0].id = CENSUS_RPC_SERVER_REQUESTS; + stats[0].value = 1.0; + stats[1].id = CENSUS_RPC_SERVER_ERRORS; + stats[1].value = 0.0; + stats[2].id = CENSUS_RPC_SERVER_LATENCY; + stats[2].value = gpr_timespec_to_micros( gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), d->start_ts)); - census_record_stats(d->ctxt, stats, nstats); - /*census_record_rpc_server_stats(d->op_id, &d->stats);*/ - census_tracing_end_op(d->op_id); + census_record_stat(d->ctxt, stats, 3); + /* TODO(hongyu): call census_tracing_end_op here */ } static void init_channel_elem(grpc_channel_element* elem, grpc_channel* master, @@ -174,8 +180,6 @@ static void init_channel_elem(grpc_channel_element* elem, grpc_channel* master, int is_first, int is_last) { channel_data* chand = elem->channel_data; GPR_ASSERT(chand != NULL); - GPR_ASSERT(!is_first); - GPR_ASSERT(!is_last); chand->path_str = grpc_mdstr_from_string(mdctx, ":path", 0); } -- GitLab From 8fe60a87ea3bc4c2779c15f25278291c0b672f66 Mon Sep 17 00:00:00 2001 From: Vijay Pai <vpai@google.com> Date: Fri, 14 Aug 2015 17:02:31 +0000 Subject: [PATCH 038/178] Use emplace_back properly and when appropriate, considering limitations of gcc4.4 --- src/cpp/server/server.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index 90f3854a72..ade0a3270f 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -240,8 +240,7 @@ bool Server::RegisterService(const grpc::string *host, RpcService* service) { method->name()); return false; } - SyncRequest request(method, tag); - sync_methods_->emplace_back(request); + sync_methods_->emplace_back(method, tag); } return true; } @@ -286,7 +285,9 @@ bool Server::Start() { if (!has_generic_service_) { unknown_method_.reset(new RpcServiceMethod( "unknown", RpcMethod::BIDI_STREAMING, new UnknownMethodHandler)); - sync_methods_->emplace_back(unknown_method_.get(), nullptr); + // Use of emplace_back with just constructor arguments is not accepted + // by gcc-4.4 because nullptr is an anonymous class, so we're constructing + sync_methods_->push_back(SyncRequest(unknown_method_.get(), nullptr)); } // Start processing rpcs. if (!sync_methods_->empty()) { -- GitLab From 99e21047587ac543e7885f07934e0cd2547ff2b1 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Fri, 14 Aug 2015 10:35:43 -0700 Subject: [PATCH 039/178] Add parent call propagation API to Node library --- src/node/ext/call.cc | 20 +++- src/node/ext/node_grpc.cc | 20 ++++ src/node/src/client.js | 7 +- src/node/src/server.js | 1 + src/node/test/constant_test.js | 18 ++++ src/node/test/surface_test.js | 183 ++++++++++++++++++++++++++++++++- 6 files changed, 244 insertions(+), 5 deletions(-) diff --git a/src/node/ext/call.cc b/src/node/ext/call.cc index c5c8313385..5e187607cc 100644 --- a/src/node/ext/call.cc +++ b/src/node/ext/call.cc @@ -502,6 +502,22 @@ NAN_METHOD(Call::New) { return NanThrowTypeError( "Call's third argument must be a date or a number"); } + // These arguments are at the end because they are optional + grpc_call *parent_call = NULL; + if (Call::HasInstance(args[4])) { + Call *parent_obj = ObjectWrap::Unwrap<Call>(args[4]->ToObject()); + parent_call = parent_obj->wrapped_call; + } else if (!(args[4]->IsUndefined() || args[4]->IsNull())) { + return NanThrowTypeError( + "Call's fifth argument must be another call, if provided"); + } + gpr_uint32 propagate_flags = GRPC_PROPAGATE_DEFAULTS; + if (args[5]->IsUint32()) { + propagate_flags = args[5]->Uint32Value(); + } else if (!(args[5]->IsUndefined() || args[5]->IsNull())) { + return NanThrowTypeError( + "Call's fifth argument must be propagate flags, if provided"); + } Handle<Object> channel_object = args[0]->ToObject(); Channel *channel = ObjectWrap::Unwrap<Channel>(channel_object); if (channel->GetWrappedChannel() == NULL) { @@ -514,12 +530,12 @@ NAN_METHOD(Call::New) { if (args[3]->IsString()) { NanUtf8String host_override(args[3]); wrapped_call = grpc_channel_create_call( - wrapped_channel, NULL, GRPC_PROPAGATE_DEFAULTS, + wrapped_channel, parent_call, propagate_flags, CompletionQueueAsyncWorker::GetQueue(), *method, *host_override, MillisecondsToTimespec(deadline)); } else if (args[3]->IsUndefined() || args[3]->IsNull()) { wrapped_call = grpc_channel_create_call( - wrapped_channel, NULL, GRPC_PROPAGATE_DEFAULTS, + wrapped_channel, parent_call, propagate_flags, CompletionQueueAsyncWorker::GetQueue(), *method, NULL, MillisecondsToTimespec(deadline)); } else { diff --git a/src/node/ext/node_grpc.cc b/src/node/ext/node_grpc.cc index 4e31cbaa27..6c9bc8735d 100644 --- a/src/node/ext/node_grpc.cc +++ b/src/node/ext/node_grpc.cc @@ -159,12 +159,32 @@ void InitOpTypeConstants(Handle<Object> exports) { op_type->Set(NanNew("RECV_CLOSE_ON_SERVER"), RECV_CLOSE_ON_SERVER); } +void InitPropagateConstants(Handle<Object> exports) { + NanScope(); + Handle<Object> propagate = NanNew<Object>(); + exports->Set(NanNew("propagate"), propagate); + Handle<Value> DEADLINE(NanNew<Uint32, uint32_t>(GRPC_PROPAGATE_DEADLINE)); + propagate->Set(NanNew("DEADLINE"), DEADLINE); + Handle<Value> CENSUS_STATS_CONTEXT( + NanNew<Uint32, uint32_t>(GRPC_PROPAGATE_CENSUS_STATS_CONTEXT)); + propagate->Set(NanNew("CENSUS_STATS_CONTEXT"), CENSUS_STATS_CONTEXT); + Handle<Value> CENSUS_TRACING_CONTEXT( + NanNew<Uint32, uint32_t>(GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT)); + propagate->Set(NanNew("CENSUS_TRACING_CONTEXT"), CENSUS_TRACING_CONTEXT); + Handle<Value> CANCELLATION( + NanNew<Uint32, uint32_t>(GRPC_PROPAGATE_CANCELLATION)); + propagate->Set(NanNew("CANCELLATION"), CANCELLATION); + Handle<Value> DEFAULTS(NanNew<Uint32, uint32_t>(GRPC_PROPAGATE_DEFAULTS)); + propagate->Set(NanNew("DEFAULTS"), DEFAULTS); +} + void init(Handle<Object> exports) { NanScope(); grpc_init(); InitStatusConstants(exports); InitCallErrorConstants(exports); InitOpTypeConstants(exports); + InitPropagateConstants(exports); grpc::node::Call::Init(exports); grpc::node::Channel::Init(exports); diff --git a/src/node/src/client.js b/src/node/src/client.js index 5cde438572..616b3969c0 100644 --- a/src/node/src/client.js +++ b/src/node/src/client.js @@ -216,14 +216,19 @@ ClientDuplexStream.prototype.getPeer = getPeer; function getCall(channel, method, options) { var deadline; var host; + var parent; + var propagate_flags; if (options) { deadline = options.deadline; host = options.host; + parent = _.get(options, 'parent.call'); + propagate_flags = options.propagate_flags; } if (deadline === undefined) { deadline = Infinity; } - return new grpc.Call(channel, method, deadline, host); + return new grpc.Call(channel, method, deadline, host, + parent, propagate_flags); } /** diff --git a/src/node/src/server.js b/src/node/src/server.js index 5c62f5990c..8b86173f08 100644 --- a/src/node/src/server.js +++ b/src/node/src/server.js @@ -432,6 +432,7 @@ function handleUnary(call, handler, metadata) { }); emitter.metadata = metadata; waitForCancel(call, emitter); + emitter.call = call; var batch = {}; batch[grpc.opType.RECV_MESSAGE] = true; call.startBatch(batch, function(err, result) { diff --git a/src/node/test/constant_test.js b/src/node/test/constant_test.js index ecc98ec443..964fc60da0 100644 --- a/src/node/test/constant_test.js +++ b/src/node/test/constant_test.js @@ -78,6 +78,18 @@ var callErrorNames = [ 'INVALID_FLAGS' ]; +/** + * List of all propagate flag names + * @const + * @type {Array.<string>} + */ +var propagateFlagNames = [ + 'DEADLINE', + 'CENSUS_STATS_CONTEXT', + 'CENSUS_TRACING_CONTEXT', + 'CANCELLATION' +]; + describe('constants', function() { it('should have all of the status constants', function() { for (var i = 0; i < statusNames.length; i++) { @@ -91,4 +103,10 @@ describe('constants', function() { 'call error missing: ' + callErrorNames[i]); } }); + it('should have all of the propagate flags', function() { + for (var i = 0; i < propagateFlagNames.length; i++) { + assert(grpc.propagate.hasOwnProperty(propagateFlagNames[i]), + 'call error missing: ' + propagateFlagNames[i]); + } + }); }); diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js index dda2f8d127..b8740af74a 100644 --- a/src/node/test/surface_test.js +++ b/src/node/test/surface_test.js @@ -47,6 +47,27 @@ var mathService = math_proto.lookup('math.Math'); var _ = require('lodash'); +/** + * This is used for testing functions with multiple asynchronous calls that + * can happen in different orders. This should be passed the number of async + * function invocations that can occur last, and each of those should call this + * function's return value + * @param {function()} done The function that should be called when a test is + * complete. + * @param {number} count The number of calls to the resulting function if the + * test passes. + * @return {function()} The function that should be called at the end of each + * sequence of asynchronous functions. + */ +function multiDone(done, count) { + return function() { + count -= 1; + if (count <= 0) { + done(); + } + }; +} + var server_insecure_creds = grpc.ServerCredentials.createInsecure(); describe('File loader', function() { @@ -272,12 +293,14 @@ describe('Echo metadata', function() { }); }); describe('Other conditions', function() { + var test_service; + var Client; var client; var server; var port; before(function() { var test_proto = ProtoBuf.loadProtoFile(__dirname + '/test_service.proto'); - var test_service = test_proto.lookup('TestService'); + test_service = test_proto.lookup('TestService'); server = new grpc.Server(); server.addProtoService(test_service, { unary: function(call, cb) { @@ -339,7 +362,7 @@ describe('Other conditions', function() { } }); port = server.bind('localhost:0', server_insecure_creds); - var Client = surface_client.makeProtobufClientConstructor(test_service); + Client = surface_client.makeProtobufClientConstructor(test_service); client = new Client('localhost:' + port, grpc.Credentials.createInsecure()); server.start(); }); @@ -592,6 +615,162 @@ describe('Other conditions', function() { }); }); }); + describe('Call propagation', function() { + var proxy; + var proxy_impl; + beforeEach(function() { + proxy = new grpc.Server(); + proxy_impl = { + unary: function(call) {}, + clientStream: function(stream) {}, + serverStream: function(stream) {}, + bidiStream: function(stream) {} + }; + }); + afterEach(function() { + console.log('Shutting down server'); + proxy.shutdown(); + }); + describe('Cancellation', function() { + it('With a unary call', function(done) { + done = multiDone(done, 2); + proxy_impl.unary = function(parent, callback) { + client.unary(parent.request, function(err, value) { + try { + assert(err); + assert.strictEqual(err.code, grpc.status.CANCELLED); + } finally { + callback(err, value); + done(); + } + }, null, {parent: parent}); + call.cancel(); + }; + proxy.addProtoService(test_service, proxy_impl); + var proxy_port = proxy.bind('localhost:0', server_insecure_creds); + proxy.start(); + var proxy_client = new Client('localhost:' + proxy_port, + grpc.Credentials.createInsecure()); + var call = proxy_client.unary({}, function(err, value) { + done(); + }); + }); + it('With a client stream call', function(done) { + done = multiDone(done, 2); + proxy_impl.clientStream = function(parent, callback) { + client.clientStream(function(err, value) { + try { + assert(err); + assert.strictEqual(err.code, grpc.status.CANCELLED); + } finally { + callback(err, value); + done(); + } + }, null, {parent: parent}); + call.cancel(); + }; + proxy.addProtoService(test_service, proxy_impl); + var proxy_port = proxy.bind('localhost:0', server_insecure_creds); + proxy.start(); + var proxy_client = new Client('localhost:' + proxy_port, + grpc.Credentials.createInsecure()); + var call = proxy_client.clientStream(function(err, value) { + done(); + }); + }); + it('With a server stream call', function(done) { + done = multiDone(done, 2); + proxy_impl.serverStream = function(parent) { + var child = client.serverStream(parent.request, null, + {parent: parent}); + child.on('error', function(err) { + assert(err); + assert.strictEqual(err.code, grpc.status.CANCELLED); + done(); + }); + call.cancel(); + }; + proxy.addProtoService(test_service, proxy_impl); + var proxy_port = proxy.bind('localhost:0', server_insecure_creds); + proxy.start(); + var proxy_client = new Client('localhost:' + proxy_port, + grpc.Credentials.createInsecure()); + var call = proxy_client.serverStream({}); + call.on('error', function(err) { + done(); + }); + }); + it('With a bidi stream call', function(done) { + done = multiDone(done, 2); + proxy_impl.bidiStream = function(parent) { + var child = client.bidiStream(null, {parent: parent}); + child.on('error', function(err) { + assert(err); + assert.strictEqual(err.code, grpc.status.CANCELLED); + done(); + }); + call.cancel(); + }; + proxy.addProtoService(test_service, proxy_impl); + var proxy_port = proxy.bind('localhost:0', server_insecure_creds); + proxy.start(); + var proxy_client = new Client('localhost:' + proxy_port, + grpc.Credentials.createInsecure()); + var call = proxy_client.bidiStream(); + call.on('error', function(err) { + done(); + }); + }); + }); + describe('Deadline', function() { + it.skip('With a client stream call', function(done) { + done = multiDone(done, 2); + proxy_impl.clientStream = function(parent, callback) { + client.clientStream(function(err, value) { + try { + assert(err); + assert.strictEqual(err.code, grpc.status.DEADLINE_EXCEEDED); + } finally { + callback(err, value); + done(); + } + }, null, {parent: parent}); + }; + proxy.addProtoService(test_service, proxy_impl); + var proxy_port = proxy.bind('localhost:0', server_insecure_creds); + proxy.start(); + var proxy_client = new Client('localhost:' + proxy_port, + grpc.Credentials.createInsecure()); + var deadline = new Date(); + deadline.setSeconds(deadline.getSeconds() + 1); + var call = proxy_client.clientStream(function(err, value) { + done(); + }, null, {deadline: deadline}); + }); + it.skip('With a bidi stream call', function(done) { + done = multiDone(done, 2); + proxy_impl.bidiStream = function(parent) { + var child = client.bidiStream(null, {parent: parent}); + child.on('error', function(err) { + assert(err); + assert.strictEqual(err.code, grpc.status.DEADLINE_EXCEEDED); + done(); + }); + }; + proxy.addProtoService(test_service, proxy_impl); + var proxy_port = proxy.bind('localhost:0', server_insecure_creds); + proxy.start(); + var proxy_client = new Client('localhost:' + proxy_port, + grpc.Credentials.createInsecure()); + var deadline = new Date(); + deadline.setSeconds(deadline.getSeconds() + 1); + var call = proxy_client.bidiStream(null, {deadline: deadline}); + call.on('error', function(err) { + done(); + }); + }); + }); + }); }); describe('Cancelling surface client', function() { var client; -- GitLab From 975d0cb02e3c1fb830e4b7a4d6cde8fa1955944b Mon Sep 17 00:00:00 2001 From: Tim Emiola <temiola@google.com> Date: Fri, 14 Aug 2015 10:44:17 -0700 Subject: [PATCH 040/178] Add a health checker service implementation. - adds the code-generated health service classes to the pb along with a README explaining how to regenerate the generated code - adds an implementation of the Health Checker Service along with unit tests and an integration test Also: - adds a pb folder : in a follow-up PR, all ruby pbs + generated code will be moved to it --- src/ruby/.rspec | 1 + src/ruby/.rubocop.yml | 1 + src/ruby/Rakefile | 6 +- src/ruby/grpc.gemspec | 2 +- src/ruby/pb/README.md | 27 +++ src/ruby/pb/grpc/health/checker.rb | 75 +++++++ src/ruby/pb/grpc/health/v1alpha/health.proto | 50 +++++ src/ruby/pb/grpc/health/v1alpha/health.rb | 29 +++ .../pb/grpc/health/v1alpha/health_checker.rb | 39 ++++ .../pb/grpc/health/v1alpha/health_services.rb | 28 +++ src/ruby/spec/pb/health/checker_spec.rb | 185 ++++++++++++++++++ 11 files changed, 440 insertions(+), 3 deletions(-) create mode 100644 src/ruby/pb/README.md create mode 100644 src/ruby/pb/grpc/health/checker.rb create mode 100644 src/ruby/pb/grpc/health/v1alpha/health.proto create mode 100644 src/ruby/pb/grpc/health/v1alpha/health.rb create mode 100644 src/ruby/pb/grpc/health/v1alpha/health_checker.rb create mode 100644 src/ruby/pb/grpc/health/v1alpha/health_services.rb create mode 100644 src/ruby/spec/pb/health/checker_spec.rb diff --git a/src/ruby/.rspec b/src/ruby/.rspec index cd7c5fb5b2..2320752db4 100755 --- a/src/ruby/.rspec +++ b/src/ruby/.rspec @@ -1,4 +1,5 @@ -I. +-Ipb --require spec_helper --format documentation --color diff --git a/src/ruby/.rubocop.yml b/src/ruby/.rubocop.yml index 47e382afa7..1b255f3963 100644 --- a/src/ruby/.rubocop.yml +++ b/src/ruby/.rubocop.yml @@ -8,3 +8,4 @@ AllCops: - 'bin/interop/test/**/*' - 'bin/math.rb' - 'bin/math_services.rb' + - 'pb/grpc/health/v1alpha/*' diff --git a/src/ruby/Rakefile b/src/ruby/Rakefile index 02af9a84b8..cc7832b12d 100755 --- a/src/ruby/Rakefile +++ b/src/ruby/Rakefile @@ -20,7 +20,8 @@ SPEC_SUITES = [ { id: :bidi, title: 'bidi tests', dir: %w(spec/generic), tag: 'bidi' }, { id: :server, title: 'rpc server thread tests', dir: %w(spec/generic), - tag: 'server' } + tag: 'server' }, + { id: :pb, title: 'protobuf service tests', dir: %w(spec/pb) } ] namespace :suite do SPEC_SUITES.each do |suite| @@ -50,7 +51,8 @@ task 'suite:wrapper' => [:compile, :rubocop] task 'suite:idiomatic' => 'suite:wrapper' task 'suite:bidi' => 'suite:wrapper' task 'suite:server' => 'suite:wrapper' +task 'suite:pb' => 'suite:server' desc 'Compiles the gRPC extension then runs all the tests' -task all: ['suite:idiomatic', 'suite:bidi', 'suite:server'] +task all: ['suite:idiomatic', 'suite:bidi', 'suite:pb', 'suite:server'] task default: :all diff --git a/src/ruby/grpc.gemspec b/src/ruby/grpc.gemspec index eb748458b9..22fafe1b50 100755 --- a/src/ruby/grpc.gemspec +++ b/src/ruby/grpc.gemspec @@ -24,7 +24,7 @@ Gem::Specification.new do |s| %w(math noproto).each do |b| s.executables += ["#{b}_client.rb", "#{b}_server.rb"] end - s.require_paths = %w( bin lib ) + s.require_paths = %w( bin lib pb ) s.platform = Gem::Platform::RUBY s.add_dependency 'google-protobuf', '~> 3.0.0alpha.1.1' diff --git a/src/ruby/pb/README.md b/src/ruby/pb/README.md new file mode 100644 index 0000000000..0b067edd0e --- /dev/null +++ b/src/ruby/pb/README.md @@ -0,0 +1,27 @@ +Protocol Buffers +================ + +This folder contains protocol buffers provided with gRPC ruby, and the generated +code to them. + +PREREQUISITES +------------- + +The code is is generated using the protoc (> 3.0.0.alpha.1) and the +grpc_ruby_plugin. These must be installed to regenerate the IDL defined +classes, but that's not necessary just to use them. + +health_check/v1alpha +-------------------- + +This package defines the surface of a simple health check service that gRPC +servers may choose to implement, and provides an implementation for it. To +re-generate the surface. + +```bash +$ # (from this directory) +$ protoc -I . grpc/health/v1alpha/health.proto \ + --grpc_out=. \ + --ruby_out=. \ + --plugin=protoc-gen-grpc=`which grpc_ruby_plugin` +``` diff --git a/src/ruby/pb/grpc/health/checker.rb b/src/ruby/pb/grpc/health/checker.rb new file mode 100644 index 0000000000..8c692e74f9 --- /dev/null +++ b/src/ruby/pb/grpc/health/checker.rb @@ -0,0 +1,75 @@ +# 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. + +require 'grpc' +require 'grpc/health/v1alpha/health_services' +require 'thread' + +module Grpc + # Health contains classes and modules that support providing a health check + # service. + module Health + # Checker is implementation of the schema-specified health checking service. + class Checker < V1alpha::Health::Service + StatusCodes = GRPC::Core::StatusCodes + HealthCheckResponse = V1alpha::HealthCheckResponse + + # Initializes the statuses of participating services + def initialize + @statuses = {} + @status_mutex = Mutex.new # guards access to @statuses + end + + # Implements the rpc IDL API method + def check(req, _call) + status = nil + @status_mutex.synchronize do + status = @statuses["#{req.host}/#{req.service}"] + end + fail GRPC::BadStatus, StatusCodes::NOT_FOUND if status.nil? + HealthCheckResponse.new(status: status) + end + + # Adds the health status for a given host and service. + def add_status(host, service, status) + @status_mutex.synchronize { @statuses["#{host}/#{service}"] = status } + end + + # Clears the status for the given host or service. + def clear_status(host, service) + @status_mutex.synchronize { @statuses.delete("#{host}/#{service}") } + end + + # Clears alls the statuses. + def clear_all + @status_mutex.synchronize { @statuses = {} } + end + end + end +end diff --git a/src/ruby/pb/grpc/health/v1alpha/health.proto b/src/ruby/pb/grpc/health/v1alpha/health.proto new file mode 100644 index 0000000000..d31df1e0a7 --- /dev/null +++ b/src/ruby/pb/grpc/health/v1alpha/health.proto @@ -0,0 +1,50 @@ +// 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. + +syntax = "proto3"; + +package grpc.health.v1alpha; + +message HealthCheckRequest { + string host = 1; + string service = 2; +} + +message HealthCheckResponse { + enum ServingStatus { + UNKNOWN = 0; + SERVING = 1; + NOT_SERVING = 2; + } + ServingStatus status = 1; +} + +service Health { + rpc Check(HealthCheckRequest) returns (HealthCheckResponse); +} \ No newline at end of file diff --git a/src/ruby/pb/grpc/health/v1alpha/health.rb b/src/ruby/pb/grpc/health/v1alpha/health.rb new file mode 100644 index 0000000000..9c04298ea5 --- /dev/null +++ b/src/ruby/pb/grpc/health/v1alpha/health.rb @@ -0,0 +1,29 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: grpc/health/v1alpha/health.proto + +require 'google/protobuf' + +Google::Protobuf::DescriptorPool.generated_pool.build do + add_message "grpc.health.v1alpha.HealthCheckRequest" do + optional :host, :string, 1 + optional :service, :string, 2 + end + add_message "grpc.health.v1alpha.HealthCheckResponse" do + optional :status, :enum, 1, "grpc.health.v1alpha.HealthCheckResponse.ServingStatus" + end + add_enum "grpc.health.v1alpha.HealthCheckResponse.ServingStatus" do + value :UNKNOWN, 0 + value :SERVING, 1 + value :NOT_SERVING, 2 + end +end + +module Grpc + module Health + module V1alpha + HealthCheckRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.health.v1alpha.HealthCheckRequest").msgclass + HealthCheckResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.health.v1alpha.HealthCheckResponse").msgclass + HealthCheckResponse::ServingStatus = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.health.v1alpha.HealthCheckResponse.ServingStatus").enummodule + end + end +end diff --git a/src/ruby/pb/grpc/health/v1alpha/health_checker.rb b/src/ruby/pb/grpc/health/v1alpha/health_checker.rb new file mode 100644 index 0000000000..f04bf5ecca --- /dev/null +++ b/src/ruby/pb/grpc/health/v1alpha/health_checker.rb @@ -0,0 +1,39 @@ +# 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. + +require 'grpc/health/v1alpha/health_services' + +module Grpc + # Health contains classes and modules that support providing a health check + # service. + module Health + class Checker + end + end +end diff --git a/src/ruby/pb/grpc/health/v1alpha/health_services.rb b/src/ruby/pb/grpc/health/v1alpha/health_services.rb new file mode 100644 index 0000000000..d5cba2e9ec --- /dev/null +++ b/src/ruby/pb/grpc/health/v1alpha/health_services.rb @@ -0,0 +1,28 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# Source: grpc/health/v1alpha/health.proto for package 'grpc.health.v1alpha' + +require 'grpc' +require 'grpc/health/v1alpha/health' + +module Grpc + module Health + module V1alpha + module Health + + # TODO: add proto service documentation here + class Service + + include GRPC::GenericService + + self.marshal_class_method = :encode + self.unmarshal_class_method = :decode + self.service_name = 'grpc.health.v1alpha.Health' + + rpc :Check, HealthCheckRequest, HealthCheckResponse + end + + Stub = Service.rpc_stub_class + end + end + end +end diff --git a/src/ruby/spec/pb/health/checker_spec.rb b/src/ruby/spec/pb/health/checker_spec.rb new file mode 100644 index 0000000000..0aeae444fc --- /dev/null +++ b/src/ruby/spec/pb/health/checker_spec.rb @@ -0,0 +1,185 @@ +# 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. + +require 'grpc' +require 'grpc/health/v1alpha/health' +require 'grpc/health/checker' + +describe Grpc::Health::Checker do + StatusCodes = GRPC::Core::StatusCodes + ServingStatus = Grpc::Health::V1alpha::HealthCheckResponse::ServingStatus + HCResp = Grpc::Health::V1alpha::HealthCheckResponse + HCReq = Grpc::Health::V1alpha::HealthCheckRequest + success_tests = + [ + { + desc: 'neither host or service are specified', + host: '', + service: '' + }, { + desc: 'only the host is specified', + host: 'test-fake-host', + service: '' + }, { + desc: 'the host and service are specified', + host: 'test-fake-host', + service: 'fake-service-1' + }, { + desc: 'only the service is specified', + host: '', + service: 'fake-service-2' + } + ] + + context 'initialization' do + it 'can be constructed with no args' do + expect(subject).to_not be(nil) + end + end + + context 'method `add_status` and `check`' do + success_tests.each do |t| + it "should succeed when #{t[:desc]}" do + subject.add_status(t[:host], t[:service], ServingStatus::NOT_SERVING) + got = subject.check(HCReq.new(host: t[:host], service: t[:service]), + nil) + want = HCResp.new(status: ServingStatus::NOT_SERVING) + expect(got).to eq(want) + end + end + end + + context 'method `check`' do + success_tests.each do |t| + it "should fail with NOT_FOUND when #{t[:desc]}" do + blk = proc do + subject.check(HCReq.new(host: t[:host], service: t[:service]), nil) + end + expected_msg = /#{StatusCodes::NOT_FOUND}/ + expect(&blk).to raise_error GRPC::BadStatus, expected_msg + end + end + end + + context 'method `clear_status`' do + success_tests.each do |t| + it "should fail after clearing status when #{t[:desc]}" do + subject.add_status(t[:host], t[:service], ServingStatus::NOT_SERVING) + got = subject.check(HCReq.new(host: t[:host], service: t[:service]), + nil) + want = HCResp.new(status: ServingStatus::NOT_SERVING) + expect(got).to eq(want) + + subject.clear_status(t[:host], t[:service]) + blk = proc do + subject.check(HCReq.new(host: t[:host], service: t[:service]), + nil) + end + expected_msg = /#{StatusCodes::NOT_FOUND}/ + expect(&blk).to raise_error GRPC::BadStatus, expected_msg + end + end + end + + context 'method `clear_all`' do + it 'should return NOT_FOUND after being invoked' do + success_tests.each do |t| + subject.add_status(t[:host], t[:service], ServingStatus::NOT_SERVING) + got = subject.check(HCReq.new(host: t[:host], service: t[:service]), + nil) + want = HCResp.new(status: ServingStatus::NOT_SERVING) + expect(got).to eq(want) + end + + subject.clear_all + + success_tests.each do |t| + blk = proc do + subject.check(HCReq.new(host: t[:host], service: t[:service]), nil) + end + expected_msg = /#{StatusCodes::NOT_FOUND}/ + expect(&blk).to raise_error GRPC::BadStatus, expected_msg + end + end + end + + describe 'running on RpcServer' do + RpcServer = GRPC::RpcServer + StatusCodes = GRPC::Core::StatusCodes + CheckerStub = Grpc::Health::Checker.rpc_stub_class + + before(:each) do + @server_queue = GRPC::Core::CompletionQueue.new + server_host = '0.0.0.0:0' + @server = GRPC::Core::Server.new(@server_queue, nil) + server_port = @server.add_http2_port(server_host) + @host = "localhost:#{server_port}" + @ch = GRPC::Core::Channel.new(@host, nil) + @client_opts = { channel_override: @ch } + server_opts = { + server_override: @server, + completion_queue_override: @server_queue, + poll_period: 1 + } + @srv = RpcServer.new(**server_opts) + end + + after(:each) do + @srv.stop + end + + it 'should receive the correct status', server: true do + @srv.handle(subject) + subject.add_status('', '', ServingStatus::NOT_SERVING) + t = Thread.new { @srv.run } + @srv.wait_till_running + + stub = CheckerStub.new(@host, **@client_opts) + got = stub.check(HCReq.new) + want = HCResp.new(status: ServingStatus::NOT_SERVING) + expect(got).to eq(want) + @srv.stop + t.join + end + + it 'should fail on unknown services', server: true do + @srv.handle(subject) + t = Thread.new { @srv.run } + @srv.wait_till_running + blk = proc do + stub = CheckerStub.new(@host, **@client_opts) + stub.check(HCReq.new(host: 'unknown', service: 'unknown')) + end + expected_msg = /#{StatusCodes::NOT_FOUND}/ + expect(&blk).to raise_error GRPC::BadStatus, expected_msg + @srv.stop + t.join + end + end +end -- GitLab From 0b094573506dbef8b01ca31aaab07bb79cb559b4 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Fri, 14 Aug 2015 10:48:45 -0700 Subject: [PATCH 041/178] Made deadline tests work --- src/node/index.js | 5 +++++ src/node/test/constant_test.js | 3 ++- src/node/test/surface_test.js | 14 +++++++++----- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/node/index.js b/src/node/index.js index b26ab35f2c..93c65ac5c4 100644 --- a/src/node/index.js +++ b/src/node/index.js @@ -134,6 +134,11 @@ exports.Server = server.Server; */ exports.status = grpc.status; +/** + * Propagate flag name to number mapping + */ +exports.propagate = grpc.propagate; + /** * Call error name to code number mapping */ diff --git a/src/node/test/constant_test.js b/src/node/test/constant_test.js index 964fc60da0..e251dd3428 100644 --- a/src/node/test/constant_test.js +++ b/src/node/test/constant_test.js @@ -87,7 +87,8 @@ var propagateFlagNames = [ 'DEADLINE', 'CENSUS_STATS_CONTEXT', 'CENSUS_TRACING_CONTEXT', - 'CANCELLATION' + 'CANCELLATION', + 'DEFAULTS' ]; describe('constants', function() { diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js index b8740af74a..5e731ea42b 100644 --- a/src/node/test/surface_test.js +++ b/src/node/test/surface_test.js @@ -723,7 +723,10 @@ describe('Other conditions', function() { }); }); describe('Deadline', function() { - it.skip('With a client stream call', function(done) { + /* jshint bitwise:false */ + var deadline_flags = (grpc.propagate.DEFAULTS & + ~grpc.propagate.CANCELLATION); + it('With a client stream call', function(done) { done = multiDone(done, 2); proxy_impl.clientStream = function(parent, callback) { client.clientStream(function(err, value) { @@ -734,7 +737,7 @@ describe('Other conditions', function() { callback(err, value); done(); } - }, null, {parent: parent}); + }, null, {parent: parent, propagate_flags: deadline_flags}); }; proxy.addProtoService(test_service, proxy_impl); var proxy_port = proxy.bind('localhost:0', server_insecure_creds); @@ -743,14 +746,15 @@ describe('Other conditions', function() { grpc.Credentials.createInsecure()); var deadline = new Date(); deadline.setSeconds(deadline.getSeconds() + 1); - var call = proxy_client.clientStream(function(err, value) { + proxy_client.clientStream(function(err, value) { done(); }, null, {deadline: deadline}); }); - it.skip('With a bidi stream call', function(done) { + it('With a bidi stream call', function(done) { done = multiDone(done, 2); proxy_impl.bidiStream = function(parent) { - var child = client.bidiStream(null, {parent: parent}); + var child = client.bidiStream( + null, {parent: parent, propagate_flags: deadline_flags}); child.on('error', function(err) { assert(err); assert.strictEqual(err.code, grpc.status.DEADLINE_EXCEEDED); -- GitLab From 1c9ba198c3a2282e371f12b530ad492ec40f8d76 Mon Sep 17 00:00:00 2001 From: vjpai <vpai@google.com> Date: Fri, 14 Aug 2015 10:54:10 -0700 Subject: [PATCH 042/178] Make comment look finished --- src/cpp/server/server.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index ade0a3270f..a70b555855 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -285,8 +285,9 @@ bool Server::Start() { if (!has_generic_service_) { unknown_method_.reset(new RpcServiceMethod( "unknown", RpcMethod::BIDI_STREAMING, new UnknownMethodHandler)); - // Use of emplace_back with just constructor arguments is not accepted - // by gcc-4.4 because nullptr is an anonymous class, so we're constructing + // Use of emplace_back with just constructor arguments is not accepted here + // by gcc-4.4 because it can't match the anonymous nullptr with a proper + // constructor implicitly. Construct the object and use push_back. sync_methods_->push_back(SyncRequest(unknown_method_.get(), nullptr)); } // Start processing rpcs. -- GitLab From bc15a78a53ebe76a1fde80037110f764567ad81d Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Fri, 14 Aug 2015 11:09:04 -0700 Subject: [PATCH 043/178] Replaced remaining references to 'listen' with 'start' --- src/node/examples/perf_test.js | 2 +- src/node/examples/qps_test.js | 2 +- src/node/examples/route_guide_server.js | 2 +- src/node/examples/stock_server.js | 2 +- src/node/interop/interop_server.js | 2 +- src/node/test/server_test.js | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/node/examples/perf_test.js b/src/node/examples/perf_test.js index 214b9384d5..ba8fbf88d2 100644 --- a/src/node/examples/perf_test.js +++ b/src/node/examples/perf_test.js @@ -40,7 +40,7 @@ var interop_server = require('../interop/interop_server.js'); function runTest(iterations, callback) { var testServer = interop_server.getServer(0, false); - testServer.server.listen(); + testServer.server.start(); var client = new testProto.TestService('localhost:' + testServer.port, grpc.Credentials.createInsecure()); diff --git a/src/node/examples/qps_test.js b/src/node/examples/qps_test.js index 1ce4dbe070..ec968b8540 100644 --- a/src/node/examples/qps_test.js +++ b/src/node/examples/qps_test.js @@ -60,7 +60,7 @@ var interop_server = require('../interop/interop_server.js'); */ function runTest(concurrent_calls, seconds, callback) { var testServer = interop_server.getServer(0, false); - testServer.server.listen(); + testServer.server.start(); var client = new testProto.TestService('localhost:' + testServer.port, grpc.Credentials.createInsecure()); diff --git a/src/node/examples/route_guide_server.js b/src/node/examples/route_guide_server.js index bb8e79b5bd..465b32f54f 100644 --- a/src/node/examples/route_guide_server.js +++ b/src/node/examples/route_guide_server.js @@ -248,7 +248,7 @@ if (require.main === module) { throw err; } feature_list = JSON.parse(data); - routeServer.listen(); + routeServer.start(); }); } diff --git a/src/node/examples/stock_server.js b/src/node/examples/stock_server.js index dfcfe30eb4..12e5479584 100644 --- a/src/node/examples/stock_server.js +++ b/src/node/examples/stock_server.js @@ -81,7 +81,7 @@ stockServer.addProtoService(examples.Stock.service, { if (require.main === module) { stockServer.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure()); - stockServer.listen(); + stockServer.start(); } module.exports = stockServer; diff --git a/src/node/interop/interop_server.js b/src/node/interop/interop_server.js index ece22cce31..1242a0f939 100644 --- a/src/node/interop/interop_server.js +++ b/src/node/interop/interop_server.js @@ -194,7 +194,7 @@ if (require.main === module) { }); var server_obj = getServer(argv.port, argv.use_tls === 'true'); console.log('Server attaching to port ' + argv.port); - server_obj.server.listen(); + server_obj.server.start(); } /** diff --git a/src/node/test/server_test.js b/src/node/test/server_test.js index a9df43909e..20c9a07ffa 100644 --- a/src/node/test/server_test.js +++ b/src/node/test/server_test.js @@ -83,7 +83,7 @@ describe('server', function() { server = new grpc.Server(); }); }); - describe('listen', function() { + describe('start', function() { var server; before(function() { server = new grpc.Server(); @@ -92,7 +92,7 @@ describe('server', function() { after(function() { server.shutdown(); }); - it('should listen without error', function() { + it('should start without error', function() { assert.doesNotThrow(function() { server.start(); }); -- GitLab From 2cc1ed94ab0e4304882a8c2bf5723f949871bb39 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Fri, 14 Aug 2015 12:57:00 -0700 Subject: [PATCH 044/178] Fixed typo in argument error message --- src/node/ext/call.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/node/ext/call.cc b/src/node/ext/call.cc index d62ce2aa6c..705c80ffc1 100644 --- a/src/node/ext/call.cc +++ b/src/node/ext/call.cc @@ -516,7 +516,7 @@ NAN_METHOD(Call::New) { propagate_flags = args[5]->Uint32Value(); } else if (!(args[5]->IsUndefined() || args[5]->IsNull())) { return NanThrowTypeError( - "Call's fifth argument must be propagate flags, if provided"); + "Call's sixth argument must be propagate flags, if provided"); } Handle<Object> channel_object = args[0]->ToObject(); Channel *channel = ObjectWrap::Unwrap<Channel>(channel_object); -- GitLab From 58c927cede72cfdda7bf4173b09e8313f954412d Mon Sep 17 00:00:00 2001 From: Hongyu Chen <hongyu@google.com> Date: Fri, 14 Aug 2015 15:19:13 -0700 Subject: [PATCH 045/178] Make census_filter more of a noop. --- src/core/channel/census_filter.c | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/src/core/channel/census_filter.c b/src/core/channel/census_filter.c index 8713d606b4..53d70be356 100644 --- a/src/core/channel/census_filter.c +++ b/src/core/channel/census_filter.c @@ -135,18 +135,8 @@ static void client_init_call_elem(grpc_call_element* elem, static void client_destroy_call_elem(grpc_call_element* elem) { call_data* d = elem->call_data; - census_stat stats[3]; GPR_ASSERT(d != NULL); - stats[0].id = CENSUS_RPC_CLIENT_REQUESTS; - stats[0].value = 1.0; - stats[1].id = CENSUS_RPC_CLIENT_ERRORS; - stats[1].value = 0.0; /* TODO(hongyu): add rpc error recording */ - stats[2].id = CENSUS_RPC_CLIENT_LATENCY; - /* Temporarily using census_filter invoke time as the start time of rpc. */ - stats[2].value = gpr_timespec_to_micros( - gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), d->start_ts)); - census_record_stat(d->ctxt, stats, 3); - /* TODO(hongyu): call census_rpc_end_op here */ + /* TODO(hongyu): record rpc client stats and census_rpc_end_op here */ } static void server_init_call_elem(grpc_call_element* elem, @@ -162,17 +152,8 @@ static void server_init_call_elem(grpc_call_element* elem, static void server_destroy_call_elem(grpc_call_element* elem) { call_data* d = elem->call_data; - census_stat stats[3]; GPR_ASSERT(d != NULL); - stats[0].id = CENSUS_RPC_SERVER_REQUESTS; - stats[0].value = 1.0; - stats[1].id = CENSUS_RPC_SERVER_ERRORS; - stats[1].value = 0.0; - stats[2].id = CENSUS_RPC_SERVER_LATENCY; - stats[2].value = gpr_timespec_to_micros( - gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), d->start_ts)); - census_record_stat(d->ctxt, stats, 3); - /* TODO(hongyu): call census_tracing_end_op here */ + /* TODO(hongyu): record rpc server stats and census_tracing_end_op here */ } static void init_channel_elem(grpc_channel_element* elem, grpc_channel* master, -- GitLab From c7cfe9d35b4f5350490d20d0b4665be1669c29fa Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@users.noreply.github.com> Date: Fri, 14 Aug 2015 15:51:14 -0700 Subject: [PATCH 046/178] Fix version of Google.Apis.Auth required by Grpc.Auth nuget. --- src/csharp/Grpc.Auth/Grpc.Auth.nuspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/csharp/Grpc.Auth/Grpc.Auth.nuspec b/src/csharp/Grpc.Auth/Grpc.Auth.nuspec index 2dc10d24c2..f1f8f7c709 100644 --- a/src/csharp/Grpc.Auth/Grpc.Auth.nuspec +++ b/src/csharp/Grpc.Auth/Grpc.Auth.nuspec @@ -15,7 +15,7 @@ <copyright>Copyright 2015, Google Inc.</copyright> <tags>gRPC RPC Protocol HTTP/2 Auth OAuth2</tags> <dependencies> - <dependency id="Google.Apis.Auth" version="1.9.2" /> + <dependency id="Google.Apis.Auth" version="1.9.3" /> <dependency id="Grpc.Core" version="$version$" /> </dependencies> </metadata> -- GitLab From 53c85d68f964ea586c8a84c9d0c411bb4ac15219 Mon Sep 17 00:00:00 2001 From: Tim Emiola <temiola@google.com> Date: Fri, 14 Aug 2015 17:39:43 -0700 Subject: [PATCH 047/178] Update the generated code for the interop service. - Updates the code generated for the interop service - Moves the generated interop service/client from bin to pb Also - removes an empty file from the health pb directories --- src/ruby/bin/interop/README.md | 8 --- src/ruby/bin/interop/interop_client.rb | 8 ++- src/ruby/bin/interop/interop_server.rb | 8 ++- .../bin/interop/test/cpp/interop/empty.rb | 44 ------------- src/ruby/bin/interop/test/cpp/interop/test.rb | 43 ------------- .../interop/test/cpp/interop/test_services.rb | 60 ----------------- src/ruby/pb/README.md | 15 +++++ .../pb/grpc/health/v1alpha/health_checker.rb | 39 ----------- src/ruby/pb/test/proto/empty.rb | 15 +++++ .../cpp/interop => pb/test/proto}/messages.rb | 51 ++++++--------- src/ruby/pb/test/proto/test.rb | 14 ++++ src/ruby/pb/test/proto/test_services.rb | 64 +++++++++++++++++++ 12 files changed, 139 insertions(+), 230 deletions(-) delete mode 100644 src/ruby/bin/interop/README.md delete mode 100644 src/ruby/bin/interop/test/cpp/interop/empty.rb delete mode 100644 src/ruby/bin/interop/test/cpp/interop/test.rb delete mode 100644 src/ruby/bin/interop/test/cpp/interop/test_services.rb delete mode 100644 src/ruby/pb/grpc/health/v1alpha/health_checker.rb create mode 100644 src/ruby/pb/test/proto/empty.rb rename src/ruby/{bin/interop/test/cpp/interop => pb/test/proto}/messages.rb (64%) create mode 100644 src/ruby/pb/test/proto/test.rb create mode 100644 src/ruby/pb/test/proto/test_services.rb diff --git a/src/ruby/bin/interop/README.md b/src/ruby/bin/interop/README.md deleted file mode 100644 index 84fc663620..0000000000 --- a/src/ruby/bin/interop/README.md +++ /dev/null @@ -1,8 +0,0 @@ -Interop test protos -=================== - -These ruby classes were generated with protoc v3, using grpc's ruby compiler -plugin. - -- As of 2015/01 protoc v3 is available in the -[google-protobuf](https://github.com/google/protobuf) repo diff --git a/src/ruby/bin/interop/interop_client.rb b/src/ruby/bin/interop/interop_client.rb index 78ae217fa5..48b0eaa0f8 100755 --- a/src/ruby/bin/interop/interop_client.rb +++ b/src/ruby/bin/interop/interop_client.rb @@ -40,7 +40,9 @@ this_dir = File.expand_path(File.dirname(__FILE__)) lib_dir = File.join(File.dirname(File.dirname(this_dir)), 'lib') +pb_dir = File.join(File.dirname(File.dirname(this_dir)), 'pb') $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir) +$LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir) $LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir) require 'optparse' @@ -51,9 +53,9 @@ require 'grpc' require 'googleauth' require 'google/protobuf' -require 'test/cpp/interop/test_services' -require 'test/cpp/interop/messages' -require 'test/cpp/interop/empty' +require 'test/proto/empty' +require 'test/proto/messages' +require 'test/proto/test_services' require 'signet/ssl_config' diff --git a/src/ruby/bin/interop/interop_server.rb b/src/ruby/bin/interop/interop_server.rb index 2ba8d2c19e..dd9a569141 100755 --- a/src/ruby/bin/interop/interop_server.rb +++ b/src/ruby/bin/interop/interop_server.rb @@ -39,7 +39,9 @@ this_dir = File.expand_path(File.dirname(__FILE__)) lib_dir = File.join(File.dirname(File.dirname(this_dir)), 'lib') +pb_dir = File.join(File.dirname(File.dirname(this_dir)), 'pb') $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir) +$LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir) $LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir) require 'forwardable' @@ -47,9 +49,9 @@ require 'optparse' require 'grpc' -require 'test/cpp/interop/test_services' -require 'test/cpp/interop/messages' -require 'test/cpp/interop/empty' +require 'test/proto/empty' +require 'test/proto/messages' +require 'test/proto/test_services' # loads the certificates by the test server. def load_test_certs diff --git a/src/ruby/bin/interop/test/cpp/interop/empty.rb b/src/ruby/bin/interop/test/cpp/interop/empty.rb deleted file mode 100644 index 3579fa5ded..0000000000 --- a/src/ruby/bin/interop/test/cpp/interop/empty.rb +++ /dev/null @@ -1,44 +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. - -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: test/cpp/interop/empty.proto - -require 'google/protobuf' - -Google::Protobuf::DescriptorPool.generated_pool.build do - add_message "grpc.testing.Empty" do - end -end - -module Grpc - module Testing - Empty = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.Empty").msgclass - end -end diff --git a/src/ruby/bin/interop/test/cpp/interop/test.rb b/src/ruby/bin/interop/test/cpp/interop/test.rb deleted file mode 100644 index 5948b50eaa..0000000000 --- a/src/ruby/bin/interop/test/cpp/interop/test.rb +++ /dev/null @@ -1,43 +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. - -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: test/cpp/interop/test.proto - -require 'google/protobuf' - -require 'test/cpp/interop/empty' -require 'test/cpp/interop/messages' -Google::Protobuf::DescriptorPool.generated_pool.build do -end - -module Grpc - module Testing - end -end diff --git a/src/ruby/bin/interop/test/cpp/interop/test_services.rb b/src/ruby/bin/interop/test/cpp/interop/test_services.rb deleted file mode 100644 index 5a3146c581..0000000000 --- a/src/ruby/bin/interop/test/cpp/interop/test_services.rb +++ /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. - -# Generated by the protocol buffer compiler. DO NOT EDIT! -# Source: test/cpp/interop/test.proto for package 'grpc.testing' - -require 'grpc' -require 'test/cpp/interop/test' - -module Grpc - module Testing - module TestService - - # TODO: add proto service documentation here - class Service - - include GRPC::GenericService - - self.marshal_class_method = :encode - self.unmarshal_class_method = :decode - self.service_name = 'grpc.testing.TestService' - - rpc :EmptyCall, Empty, Empty - rpc :UnaryCall, SimpleRequest, SimpleResponse - rpc :StreamingOutputCall, StreamingOutputCallRequest, stream(StreamingOutputCallResponse) - rpc :StreamingInputCall, stream(StreamingInputCallRequest), StreamingInputCallResponse - rpc :FullDuplexCall, stream(StreamingOutputCallRequest), stream(StreamingOutputCallResponse) - rpc :HalfDuplexCall, stream(StreamingOutputCallRequest), stream(StreamingOutputCallResponse) - end - - Stub = Service.rpc_stub_class - end - end -end diff --git a/src/ruby/pb/README.md b/src/ruby/pb/README.md index 0b067edd0e..84644e1098 100644 --- a/src/ruby/pb/README.md +++ b/src/ruby/pb/README.md @@ -25,3 +25,18 @@ $ protoc -I . grpc/health/v1alpha/health.proto \ --ruby_out=. \ --plugin=protoc-gen-grpc=`which grpc_ruby_plugin` ``` + +test +---- + +This package defines the surface of the gRPC interop test service and client +To re-generate the surface, it's necessary to have checked-out versions of +the grpc interop test proto, e.g, by having the full gRPC repository. E.g, + +```bash +$ # (from this directory within the grpc repo) +$ protoc -I../../.. ../../../test/proto/{messages,test,empty}.proto \ + --grpc_out=. \ + --ruby_out=. \ + --plugin=protoc-gen-grpc=`which grpc_ruby_plugin` +``` diff --git a/src/ruby/pb/grpc/health/v1alpha/health_checker.rb b/src/ruby/pb/grpc/health/v1alpha/health_checker.rb deleted file mode 100644 index f04bf5ecca..0000000000 --- a/src/ruby/pb/grpc/health/v1alpha/health_checker.rb +++ /dev/null @@ -1,39 +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. - -require 'grpc/health/v1alpha/health_services' - -module Grpc - # Health contains classes and modules that support providing a health check - # service. - module Health - class Checker - end - end -end diff --git a/src/ruby/pb/test/proto/empty.rb b/src/ruby/pb/test/proto/empty.rb new file mode 100644 index 0000000000..559adcc85e --- /dev/null +++ b/src/ruby/pb/test/proto/empty.rb @@ -0,0 +1,15 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: test/proto/empty.proto + +require 'google/protobuf' + +Google::Protobuf::DescriptorPool.generated_pool.build do + add_message "grpc.testing.Empty" do + end +end + +module Grpc + module Testing + Empty = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.Empty").msgclass + end +end diff --git a/src/ruby/bin/interop/test/cpp/interop/messages.rb b/src/ruby/pb/test/proto/messages.rb similarity index 64% rename from src/ruby/bin/interop/test/cpp/interop/messages.rb rename to src/ruby/pb/test/proto/messages.rb index 89c349b406..9b7f977285 100644 --- a/src/ruby/bin/interop/test/cpp/interop/messages.rb +++ b/src/ruby/pb/test/proto/messages.rb @@ -1,34 +1,5 @@ -# 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. - # Generated by the protocol buffer compiler. DO NOT EDIT! -# source: test/cpp/interop/messages.proto +# source: test/proto/messages.proto require 'google/protobuf' @@ -37,12 +8,18 @@ Google::Protobuf::DescriptorPool.generated_pool.build do optional :type, :enum, 1, "grpc.testing.PayloadType" optional :body, :string, 2 end + add_message "grpc.testing.EchoStatus" do + optional :code, :int32, 1 + optional :message, :string, 2 + end add_message "grpc.testing.SimpleRequest" do optional :response_type, :enum, 1, "grpc.testing.PayloadType" optional :response_size, :int32, 2 optional :payload, :message, 3, "grpc.testing.Payload" optional :fill_username, :bool, 4 optional :fill_oauth_scope, :bool, 5 + optional :response_compression, :enum, 6, "grpc.testing.CompressionType" + optional :response_status, :message, 7, "grpc.testing.EchoStatus" end add_message "grpc.testing.SimpleResponse" do optional :payload, :message, 1, "grpc.testing.Payload" @@ -63,20 +40,32 @@ Google::Protobuf::DescriptorPool.generated_pool.build do optional :response_type, :enum, 1, "grpc.testing.PayloadType" repeated :response_parameters, :message, 2, "grpc.testing.ResponseParameters" optional :payload, :message, 3, "grpc.testing.Payload" + optional :response_compression, :enum, 6, "grpc.testing.CompressionType" + optional :response_status, :message, 7, "grpc.testing.EchoStatus" end add_message "grpc.testing.StreamingOutputCallResponse" do optional :payload, :message, 1, "grpc.testing.Payload" end + add_message "grpc.testing.ReconnectInfo" do + optional :passed, :bool, 1 + repeated :backoff_ms, :int32, 2 + end add_enum "grpc.testing.PayloadType" do value :COMPRESSABLE, 0 value :UNCOMPRESSABLE, 1 value :RANDOM, 2 end + add_enum "grpc.testing.CompressionType" do + value :NONE, 0 + value :GZIP, 1 + value :DEFLATE, 2 + end end module Grpc module Testing Payload = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.Payload").msgclass + EchoStatus = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.EchoStatus").msgclass SimpleRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.SimpleRequest").msgclass SimpleResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.SimpleResponse").msgclass StreamingInputCallRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.StreamingInputCallRequest").msgclass @@ -84,6 +73,8 @@ module Grpc ResponseParameters = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.ResponseParameters").msgclass StreamingOutputCallRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.StreamingOutputCallRequest").msgclass StreamingOutputCallResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.StreamingOutputCallResponse").msgclass + ReconnectInfo = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.ReconnectInfo").msgclass PayloadType = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.PayloadType").enummodule + CompressionType = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.CompressionType").enummodule end end diff --git a/src/ruby/pb/test/proto/test.rb b/src/ruby/pb/test/proto/test.rb new file mode 100644 index 0000000000..100eb6505c --- /dev/null +++ b/src/ruby/pb/test/proto/test.rb @@ -0,0 +1,14 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: test/proto/test.proto + +require 'google/protobuf' + +require 'test/proto/empty' +require 'test/proto/messages' +Google::Protobuf::DescriptorPool.generated_pool.build do +end + +module Grpc + module Testing + end +end diff --git a/src/ruby/pb/test/proto/test_services.rb b/src/ruby/pb/test/proto/test_services.rb new file mode 100644 index 0000000000..9df9cc5860 --- /dev/null +++ b/src/ruby/pb/test/proto/test_services.rb @@ -0,0 +1,64 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# Source: test/proto/test.proto for package 'grpc.testing' + +require 'grpc' +require 'test/proto/test' + +module Grpc + module Testing + module TestService + + # TODO: add proto service documentation here + class Service + + include GRPC::GenericService + + self.marshal_class_method = :encode + self.unmarshal_class_method = :decode + self.service_name = 'grpc.testing.TestService' + + rpc :EmptyCall, Empty, Empty + rpc :UnaryCall, SimpleRequest, SimpleResponse + rpc :StreamingOutputCall, StreamingOutputCallRequest, stream(StreamingOutputCallResponse) + rpc :StreamingInputCall, stream(StreamingInputCallRequest), StreamingInputCallResponse + rpc :FullDuplexCall, stream(StreamingOutputCallRequest), stream(StreamingOutputCallResponse) + rpc :HalfDuplexCall, stream(StreamingOutputCallRequest), stream(StreamingOutputCallResponse) + end + + Stub = Service.rpc_stub_class + end + module UnimplementedService + + # TODO: add proto service documentation here + class Service + + include GRPC::GenericService + + self.marshal_class_method = :encode + self.unmarshal_class_method = :decode + self.service_name = 'grpc.testing.UnimplementedService' + + rpc :UnimplementedCall, Empty, Empty + end + + Stub = Service.rpc_stub_class + end + module ReconnectService + + # TODO: add proto service documentation here + class Service + + include GRPC::GenericService + + self.marshal_class_method = :encode + self.unmarshal_class_method = :decode + self.service_name = 'grpc.testing.ReconnectService' + + rpc :Start, Empty, Empty + rpc :Stop, Empty, ReconnectInfo + end + + Stub = Service.rpc_stub_class + end + end +end -- GitLab From f4ee961bed89833146d0206ef68f20c4d9b7257a Mon Sep 17 00:00:00 2001 From: Tim Emiola <temiola@google.com> Date: Fri, 14 Aug 2015 18:47:16 -0700 Subject: [PATCH 048/178] Reorganize interop test files. - moves the client/server behaviour to pb/test - deprecate current bin/interop/interop_{client,server}.rb - adds executable endpoints to bin - grpc_ruby_interop_{client, server} - these will be added to the ruby bin path when the grpc gem gem is installed, making them easier to execute --- src/ruby/.rubocop.yml | 2 +- src/ruby/bin/grpc_ruby_interop_client | 33 ++ src/ruby/bin/grpc_ruby_interop_server | 33 ++ src/ruby/bin/interop/interop_client.rb | 400 +--------------------- src/ruby/bin/interop/interop_server.rb | 160 +-------- src/ruby/grpc.gemspec | 1 + src/ruby/pb/test/client.rb | 437 +++++++++++++++++++++++++ src/ruby/pb/test/server.rb | 196 +++++++++++ 8 files changed, 715 insertions(+), 547 deletions(-) create mode 100755 src/ruby/bin/grpc_ruby_interop_client create mode 100755 src/ruby/bin/grpc_ruby_interop_server create mode 100755 src/ruby/pb/test/client.rb create mode 100755 src/ruby/pb/test/server.rb diff --git a/src/ruby/.rubocop.yml b/src/ruby/.rubocop.yml index 1b255f3963..312bdca384 100644 --- a/src/ruby/.rubocop.yml +++ b/src/ruby/.rubocop.yml @@ -5,7 +5,7 @@ inherit_from: .rubocop_todo.yml AllCops: Exclude: - 'bin/apis/**/*' - - 'bin/interop/test/**/*' - 'bin/math.rb' - 'bin/math_services.rb' - 'pb/grpc/health/v1alpha/*' + - 'pb/test/**/*' diff --git a/src/ruby/bin/grpc_ruby_interop_client b/src/ruby/bin/grpc_ruby_interop_client new file mode 100755 index 0000000000..e79fd33aa5 --- /dev/null +++ b/src/ruby/bin/grpc_ruby_interop_client @@ -0,0 +1,33 @@ +#!/usr/bin/env ruby + +# 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. + +# Provides a gem binary entry point for the interop client. +require 'test/client' diff --git a/src/ruby/bin/grpc_ruby_interop_server b/src/ruby/bin/grpc_ruby_interop_server new file mode 100755 index 0000000000..656a5f7c99 --- /dev/null +++ b/src/ruby/bin/grpc_ruby_interop_server @@ -0,0 +1,33 @@ +#!/usr/bin/env ruby + +# 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. + +# Provides a gem binary entry point for the interop server +require 'test/server' diff --git a/src/ruby/bin/interop/interop_client.rb b/src/ruby/bin/interop/interop_client.rb index 48b0eaa0f8..239083f37f 100755 --- a/src/ruby/bin/interop/interop_client.rb +++ b/src/ruby/bin/interop/interop_client.rb @@ -29,6 +29,12 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ####################################################################### +# DEPRECATED: The behaviour in this file has been moved to pb/test/client.rb +# +# This file remains to support existing tools and scripts that use it. +# ###################################################################### +# # interop_client is a testing tool that accesses a gRPC interop testing # server and runs a test on it. # @@ -39,399 +45,7 @@ # --test_case=<testcase_name> this_dir = File.expand_path(File.dirname(__FILE__)) -lib_dir = File.join(File.dirname(File.dirname(this_dir)), 'lib') pb_dir = File.join(File.dirname(File.dirname(this_dir)), 'pb') -$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir) $LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir) -$LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir) - -require 'optparse' -require 'minitest' -require 'minitest/assertions' - -require 'grpc' -require 'googleauth' -require 'google/protobuf' - -require 'test/proto/empty' -require 'test/proto/messages' -require 'test/proto/test_services' - -require 'signet/ssl_config' - -AUTH_ENV = Google::Auth::CredentialsLoader::ENV_VAR - -# loads the certificates used to access the test server securely. -def load_test_certs - this_dir = File.expand_path(File.dirname(__FILE__)) - data_dir = File.join(File.dirname(File.dirname(this_dir)), 'spec/testdata') - files = ['ca.pem', 'server1.key', 'server1.pem'] - files.map { |f| File.open(File.join(data_dir, f)).read } -end - -# loads the certificates used to access the test server securely. -def load_prod_cert - fail 'could not find a production cert' if ENV['SSL_CERT_FILE'].nil? - GRPC.logger.info("loading prod certs from #{ENV['SSL_CERT_FILE']}") - File.open(ENV['SSL_CERT_FILE']).read -end - -# creates SSL Credentials from the test certificates. -def test_creds - certs = load_test_certs - GRPC::Core::Credentials.new(certs[0]) -end - -# creates SSL Credentials from the production certificates. -def prod_creds - cert_text = load_prod_cert - GRPC::Core::Credentials.new(cert_text) -end - -# creates the SSL Credentials. -def ssl_creds(use_test_ca) - return test_creds if use_test_ca - prod_creds -end - -# creates a test stub that accesses host:port securely. -def create_stub(opts) - address = "#{opts.host}:#{opts.port}" - if opts.secure - stub_opts = { - :creds => ssl_creds(opts.use_test_ca), - GRPC::Core::Channel::SSL_TARGET => opts.host_override - } - - # Add service account creds if specified - wants_creds = %w(all compute_engine_creds service_account_creds) - if wants_creds.include?(opts.test_case) - unless opts.oauth_scope.nil? - auth_creds = Google::Auth.get_application_default(opts.oauth_scope) - stub_opts[:update_metadata] = auth_creds.updater_proc - end - end - - if opts.test_case == 'oauth2_auth_token' - auth_creds = Google::Auth.get_application_default(opts.oauth_scope) - kw = auth_creds.updater_proc.call({}) # gives as an auth token - - # use a metadata update proc that just adds the auth token. - stub_opts[:update_metadata] = proc { |md| md.merge(kw) } - end - - if opts.test_case == 'jwt_token_creds' # don't use a scope - auth_creds = Google::Auth.get_application_default - stub_opts[:update_metadata] = auth_creds.updater_proc - end - - GRPC.logger.info("... connecting securely to #{address}") - Grpc::Testing::TestService::Stub.new(address, **stub_opts) - else - GRPC.logger.info("... connecting insecurely to #{address}") - Grpc::Testing::TestService::Stub.new(address) - end -end - -# produces a string of null chars (\0) of length l. -def nulls(l) - fail 'requires #{l} to be +ve' if l < 0 - [].pack('x' * l).force_encoding('utf-8') -end - -# a PingPongPlayer implements the ping pong bidi test. -class PingPongPlayer - include Minitest::Assertions - include Grpc::Testing - include Grpc::Testing::PayloadType - attr_accessor :assertions # required by Minitest::Assertions - attr_accessor :queue - attr_accessor :canceller_op - - # reqs is the enumerator over the requests - def initialize(msg_sizes) - @queue = Queue.new - @msg_sizes = msg_sizes - @assertions = 0 # required by Minitest::Assertions - @canceller_op = nil # used to cancel after the first response - end - - def each_item - return enum_for(:each_item) unless block_given? - req_cls, p_cls = StreamingOutputCallRequest, ResponseParameters # short - count = 0 - @msg_sizes.each do |m| - req_size, resp_size = m - req = req_cls.new(payload: Payload.new(body: nulls(req_size)), - response_type: :COMPRESSABLE, - response_parameters: [p_cls.new(size: resp_size)]) - yield req - resp = @queue.pop - assert_equal(:COMPRESSABLE, resp.payload.type, 'payload type is wrong') - assert_equal(resp_size, resp.payload.body.length, - "payload body #{count} has the wrong length") - p "OK: ping_pong #{count}" - count += 1 - unless @canceller_op.nil? - canceller_op.cancel - break - end - end - end -end - -# defines methods corresponding to each interop test case. -class NamedTests - include Minitest::Assertions - include Grpc::Testing - include Grpc::Testing::PayloadType - attr_accessor :assertions # required by Minitest::Assertions - - def initialize(stub, args) - @assertions = 0 # required by Minitest::Assertions - @stub = stub - @args = args - end - - def empty_unary - resp = @stub.empty_call(Empty.new) - assert resp.is_a?(Empty), 'empty_unary: invalid response' - p 'OK: empty_unary' - end - - def large_unary - perform_large_unary - p 'OK: large_unary' - end - - def service_account_creds - # ignore this test if the oauth options are not set - if @args.oauth_scope.nil? - p 'NOT RUN: service_account_creds; no service_account settings' - return - end - json_key = File.read(ENV[AUTH_ENV]) - wanted_email = MultiJson.load(json_key)['client_email'] - resp = perform_large_unary(fill_username: true, - fill_oauth_scope: true) - assert_equal(wanted_email, resp.username, - 'service_account_creds: incorrect username') - assert(@args.oauth_scope.include?(resp.oauth_scope), - 'service_account_creds: incorrect oauth_scope') - p 'OK: service_account_creds' - end - - def jwt_token_creds - json_key = File.read(ENV[AUTH_ENV]) - wanted_email = MultiJson.load(json_key)['client_email'] - resp = perform_large_unary(fill_username: true) - assert_equal(wanted_email, resp.username, - 'service_account_creds: incorrect username') - p 'OK: jwt_token_creds' - end - - def compute_engine_creds - resp = perform_large_unary(fill_username: true, - fill_oauth_scope: true) - assert_equal(@args.default_service_account, resp.username, - 'compute_engine_creds: incorrect username') - p 'OK: compute_engine_creds' - end - - def oauth2_auth_token - resp = perform_large_unary(fill_username: true, - fill_oauth_scope: true) - json_key = File.read(ENV[AUTH_ENV]) - wanted_email = MultiJson.load(json_key)['client_email'] - assert_equal(wanted_email, resp.username, - "#{__callee__}: incorrect username") - assert(@args.oauth_scope.include?(resp.oauth_scope), - "#{__callee__}: incorrect oauth_scope") - p "OK: #{__callee__}" - end - - def per_rpc_creds - auth_creds = Google::Auth.get_application_default(@args.oauth_scope) - kw = auth_creds.updater_proc.call({}) - resp = perform_large_unary(fill_username: true, - fill_oauth_scope: true, - **kw) - json_key = File.read(ENV[AUTH_ENV]) - wanted_email = MultiJson.load(json_key)['client_email'] - assert_equal(wanted_email, resp.username, - "#{__callee__}: incorrect username") - assert(@args.oauth_scope.include?(resp.oauth_scope), - "#{__callee__}: incorrect oauth_scope") - p "OK: #{__callee__}" - end - - def client_streaming - msg_sizes = [27_182, 8, 1828, 45_904] - wanted_aggregate_size = 74_922 - reqs = msg_sizes.map do |x| - req = Payload.new(body: nulls(x)) - StreamingInputCallRequest.new(payload: req) - end - resp = @stub.streaming_input_call(reqs) - assert_equal(wanted_aggregate_size, resp.aggregated_payload_size, - 'client_streaming: aggregate payload size is incorrect') - p 'OK: client_streaming' - end - - def server_streaming - msg_sizes = [31_415, 9, 2653, 58_979] - response_spec = msg_sizes.map { |s| ResponseParameters.new(size: s) } - req = StreamingOutputCallRequest.new(response_type: :COMPRESSABLE, - response_parameters: response_spec) - resps = @stub.streaming_output_call(req) - resps.each_with_index do |r, i| - assert i < msg_sizes.length, 'too many responses' - assert_equal(:COMPRESSABLE, r.payload.type, - 'payload type is wrong') - assert_equal(msg_sizes[i], r.payload.body.length, - 'payload body #{i} has the wrong length') - end - p 'OK: server_streaming' - end - - def ping_pong - msg_sizes = [[27_182, 31_415], [8, 9], [1828, 2653], [45_904, 58_979]] - ppp = PingPongPlayer.new(msg_sizes) - resps = @stub.full_duplex_call(ppp.each_item) - resps.each { |r| ppp.queue.push(r) } - p 'OK: ping_pong' - end - - def timeout_on_sleeping_server - msg_sizes = [[27_182, 31_415]] - ppp = PingPongPlayer.new(msg_sizes) - resps = @stub.full_duplex_call(ppp.each_item, timeout: 0.001) - resps.each { |r| ppp.queue.push(r) } - fail 'Should have raised GRPC::BadStatus(DEADLINE_EXCEEDED)' - rescue GRPC::BadStatus => e - assert_equal(e.code, GRPC::Core::StatusCodes::DEADLINE_EXCEEDED) - p "OK: #{__callee__}" - end - - def empty_stream - ppp = PingPongPlayer.new([]) - resps = @stub.full_duplex_call(ppp.each_item) - count = 0 - resps.each do - |r| ppp.queue.push(r) - count += 1 - end - assert_equal(0, count, 'too many responses, expect 0') - p 'OK: empty_stream' - end - - def cancel_after_begin - msg_sizes = [27_182, 8, 1828, 45_904] - reqs = msg_sizes.map do |x| - req = Payload.new(body: nulls(x)) - StreamingInputCallRequest.new(payload: req) - end - op = @stub.streaming_input_call(reqs, return_op: true) - op.cancel - assert_raises(GRPC::Cancelled) { op.execute } - assert(op.cancelled, 'call operation should be CANCELLED') - p 'OK: cancel_after_begin' - end - - def cancel_after_first_response - msg_sizes = [[27_182, 31_415], [8, 9], [1828, 2653], [45_904, 58_979]] - ppp = PingPongPlayer.new(msg_sizes) - op = @stub.full_duplex_call(ppp.each_item, return_op: true) - ppp.canceller_op = op # causes ppp to cancel after the 1st message - assert_raises(GRPC::Cancelled) { op.execute.each { |r| ppp.queue.push(r) } } - op.wait - assert(op.cancelled, 'call operation was not CANCELLED') - p 'OK: cancel_after_first_response' - end - - def all - all_methods = NamedTests.instance_methods(false).map(&:to_s) - all_methods.each do |m| - next if m == 'all' || m.start_with?('assert') - p "TESTCASE: #{m}" - method(m).call - end - end - - private - - def perform_large_unary(fill_username: false, fill_oauth_scope: false, **kw) - req_size, wanted_response_size = 271_828, 314_159 - payload = Payload.new(type: :COMPRESSABLE, body: nulls(req_size)) - req = SimpleRequest.new(response_type: :COMPRESSABLE, - response_size: wanted_response_size, - payload: payload) - req.fill_username = fill_username - req.fill_oauth_scope = fill_oauth_scope - resp = @stub.unary_call(req, **kw) - assert_equal(:COMPRESSABLE, resp.payload.type, - 'large_unary: payload had the wrong type') - assert_equal(wanted_response_size, resp.payload.body.length, - 'large_unary: payload had the wrong length') - assert_equal(nulls(wanted_response_size), resp.payload.body, - 'large_unary: payload content is invalid') - resp - end -end - -# Args is used to hold the command line info. -Args = Struct.new(:default_service_account, :host, :host_override, - :oauth_scope, :port, :secure, :test_case, - :use_test_ca) - -# validates the the command line options, returning them as a Hash. -def parse_args - args = Args.new - args.host_override = 'foo.test.google.fr' - OptionParser.new do |opts| - opts.on('--oauth_scope scope', - 'Scope for OAuth tokens') { |v| args['oauth_scope'] = v } - opts.on('--server_host SERVER_HOST', 'server hostname') do |v| - args['host'] = v - end - opts.on('--default_service_account email_address', - 'email address of the default service account') do |v| - args['default_service_account'] = v - end - opts.on('--server_host_override HOST_OVERRIDE', - 'override host via a HTTP header') do |v| - args['host_override'] = v - end - opts.on('--server_port SERVER_PORT', 'server port') { |v| args['port'] = v } - # instance_methods(false) gives only the methods defined in that class - test_cases = NamedTests.instance_methods(false).map(&:to_s) - test_case_list = test_cases.join(',') - opts.on('--test_case CODE', test_cases, {}, 'select a test_case', - " (#{test_case_list})") { |v| args['test_case'] = v } - opts.on('-s', '--use_tls', 'require a secure connection?') do |v| - args['secure'] = v - end - opts.on('-t', '--use_test_ca', - 'if secure, use the test certificate?') do |v| - args['use_test_ca'] = v - end - end.parse! - _check_args(args) -end - -def _check_args(args) - %w(host port test_case).each do |a| - if args[a].nil? - fail(OptionParser::MissingArgument, "please specify --#{arg}") - end - end - args -end - -def main - opts = parse_args - stub = create_stub(opts) - NamedTests.new(stub, opts).method(opts['test_case']).call -end -main +require 'test/client' diff --git a/src/ruby/bin/interop/interop_server.rb b/src/ruby/bin/interop/interop_server.rb index dd9a569141..c6b0d00ec6 100755 --- a/src/ruby/bin/interop/interop_server.rb +++ b/src/ruby/bin/interop/interop_server.rb @@ -29,6 +29,12 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ####################################################################### +# DEPRECATED: The behaviour in this file has been moved to pb/test/server.rb +# +# This file remains to support existing tools and scripts that use it. +# ###################################################################### +# # interop_server is a Testing app that runs a gRPC interop testing server. # # It helps validate interoperation b/w gRPC in different environments @@ -38,159 +44,7 @@ # Usage: $ path/to/interop_server.rb --port this_dir = File.expand_path(File.dirname(__FILE__)) -lib_dir = File.join(File.dirname(File.dirname(this_dir)), 'lib') pb_dir = File.join(File.dirname(File.dirname(this_dir)), 'pb') -$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir) $LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir) -$LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir) - -require 'forwardable' -require 'optparse' - -require 'grpc' - -require 'test/proto/empty' -require 'test/proto/messages' -require 'test/proto/test_services' - -# loads the certificates by the test server. -def load_test_certs - this_dir = File.expand_path(File.dirname(__FILE__)) - data_dir = File.join(File.dirname(File.dirname(this_dir)), 'spec/testdata') - files = ['ca.pem', 'server1.key', 'server1.pem'] - files.map { |f| File.open(File.join(data_dir, f)).read } -end - -# creates a ServerCredentials from the test certificates. -def test_server_creds - certs = load_test_certs - GRPC::Core::ServerCredentials.new(nil, certs[1], certs[2]) -end - -# produces a string of null chars (\0) of length l. -def nulls(l) - fail 'requires #{l} to be +ve' if l < 0 - [].pack('x' * l).force_encoding('utf-8') -end - -# A EnumeratorQueue wraps a Queue yielding the items added to it via each_item. -class EnumeratorQueue - extend Forwardable - def_delegators :@q, :push - - def initialize(sentinel) - @q = Queue.new - @sentinel = sentinel - end - - def each_item - return enum_for(:each_item) unless block_given? - loop do - r = @q.pop - break if r.equal?(@sentinel) - fail r if r.is_a? Exception - yield r - end - end -end - -# A runnable implementation of the schema-specified testing service, with each -# service method implemented as required by the interop testing spec. -class TestTarget < Grpc::Testing::TestService::Service - include Grpc::Testing - include Grpc::Testing::PayloadType - - def empty_call(_empty, _call) - Empty.new - end - - def unary_call(simple_req, _call) - req_size = simple_req.response_size - SimpleResponse.new(payload: Payload.new(type: :COMPRESSABLE, - body: nulls(req_size))) - end - - def streaming_input_call(call) - sizes = call.each_remote_read.map { |x| x.payload.body.length } - sum = sizes.inject { |s, x| s + x } - StreamingInputCallResponse.new(aggregated_payload_size: sum) - end - - def streaming_output_call(req, _call) - cls = StreamingOutputCallResponse - req.response_parameters.map do |p| - cls.new(payload: Payload.new(type: req.response_type, - body: nulls(p.size))) - end - end - - def full_duplex_call(reqs) - # reqs is a lazy Enumerator of the requests sent by the client. - q = EnumeratorQueue.new(self) - cls = StreamingOutputCallResponse - Thread.new do - begin - GRPC.logger.info('interop-server: started receiving') - reqs.each do |req| - resp_size = req.response_parameters[0].size - GRPC.logger.info("read a req, response size is #{resp_size}") - resp = cls.new(payload: Payload.new(type: req.response_type, - body: nulls(resp_size))) - q.push(resp) - end - GRPC.logger.info('interop-server: finished receiving') - q.push(self) - rescue StandardError => e - GRPC.logger.info('interop-server: failed') - GRPC.logger.warn(e) - q.push(e) # share the exception with the enumerator - end - end - q.each_item - end - - def half_duplex_call(reqs) - # TODO: update with unique behaviour of the half_duplex_call if that's - # ever required by any of the tests. - full_duplex_call(reqs) - end -end - -# validates the the command line options, returning them as a Hash. -def parse_options - options = { - 'port' => nil, - 'secure' => false - } - OptionParser.new do |opts| - opts.banner = 'Usage: --port port' - opts.on('--port PORT', 'server port') do |v| - options['port'] = v - end - opts.on('-s', '--use_tls', 'require a secure connection?') do |v| - options['secure'] = v - end - end.parse! - - if options['port'].nil? - fail(OptionParser::MissingArgument, 'please specify --port') - end - options -end - -def main - opts = parse_options - host = "0.0.0.0:#{opts['port']}" - s = GRPC::RpcServer.new - if opts['secure'] - s.add_http2_port(host, test_server_creds) - GRPC.logger.info("... running securely on #{host}") - else - s.add_http2_port(host) - GRPC.logger.info("... running insecurely on #{host}") - end - s.handle(TestTarget) - s.run_till_terminated -end -main +require 'test/server' diff --git a/src/ruby/grpc.gemspec b/src/ruby/grpc.gemspec index 22fafe1b50..bda0352c26 100755 --- a/src/ruby/grpc.gemspec +++ b/src/ruby/grpc.gemspec @@ -24,6 +24,7 @@ Gem::Specification.new do |s| %w(math noproto).each do |b| s.executables += ["#{b}_client.rb", "#{b}_server.rb"] end + s.executables += %w(grpc_ruby_interop_client grpc_ruby_interop_server) s.require_paths = %w( bin lib pb ) s.platform = Gem::Platform::RUBY diff --git a/src/ruby/pb/test/client.rb b/src/ruby/pb/test/client.rb new file mode 100755 index 0000000000..66c78f8bf8 --- /dev/null +++ b/src/ruby/pb/test/client.rb @@ -0,0 +1,437 @@ +#!/usr/bin/env ruby + +# 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. + +# client is a testing tool that accesses a gRPC interop testing server and runs +# a test on it. +# +# Helps validate interoperation b/w different gRPC implementations. +# +# Usage: $ path/to/client.rb --server_host=<hostname> \ +# --server_port=<port> \ +# --test_case=<testcase_name> + +this_dir = File.expand_path(File.dirname(__FILE__)) +lib_dir = File.join(File.dirname(File.dirname(this_dir)), 'lib') +pb_dir = File.dirname(File.dirname(this_dir)) +$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir) +$LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir) +$LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir) + +require 'optparse' +require 'minitest' +require 'minitest/assertions' + +require 'grpc' +require 'googleauth' +require 'google/protobuf' + +require 'test/proto/empty' +require 'test/proto/messages' +require 'test/proto/test_services' + +require 'signet/ssl_config' + +AUTH_ENV = Google::Auth::CredentialsLoader::ENV_VAR + +# loads the certificates used to access the test server securely. +def load_test_certs + this_dir = File.expand_path(File.dirname(__FILE__)) + data_dir = File.join(File.dirname(File.dirname(this_dir)), 'spec/testdata') + files = ['ca.pem', 'server1.key', 'server1.pem'] + files.map { |f| File.open(File.join(data_dir, f)).read } +end + +# loads the certificates used to access the test server securely. +def load_prod_cert + fail 'could not find a production cert' if ENV['SSL_CERT_FILE'].nil? + GRPC.logger.info("loading prod certs from #{ENV['SSL_CERT_FILE']}") + File.open(ENV['SSL_CERT_FILE']).read +end + +# creates SSL Credentials from the test certificates. +def test_creds + certs = load_test_certs + GRPC::Core::Credentials.new(certs[0]) +end + +# creates SSL Credentials from the production certificates. +def prod_creds + cert_text = load_prod_cert + GRPC::Core::Credentials.new(cert_text) +end + +# creates the SSL Credentials. +def ssl_creds(use_test_ca) + return test_creds if use_test_ca + prod_creds +end + +# creates a test stub that accesses host:port securely. +def create_stub(opts) + address = "#{opts.host}:#{opts.port}" + if opts.secure + stub_opts = { + :creds => ssl_creds(opts.use_test_ca), + GRPC::Core::Channel::SSL_TARGET => opts.host_override + } + + # Add service account creds if specified + wants_creds = %w(all compute_engine_creds service_account_creds) + if wants_creds.include?(opts.test_case) + unless opts.oauth_scope.nil? + auth_creds = Google::Auth.get_application_default(opts.oauth_scope) + stub_opts[:update_metadata] = auth_creds.updater_proc + end + end + + if opts.test_case == 'oauth2_auth_token' + auth_creds = Google::Auth.get_application_default(opts.oauth_scope) + kw = auth_creds.updater_proc.call({}) # gives as an auth token + + # use a metadata update proc that just adds the auth token. + stub_opts[:update_metadata] = proc { |md| md.merge(kw) } + end + + if opts.test_case == 'jwt_token_creds' # don't use a scope + auth_creds = Google::Auth.get_application_default + stub_opts[:update_metadata] = auth_creds.updater_proc + end + + GRPC.logger.info("... connecting securely to #{address}") + Grpc::Testing::TestService::Stub.new(address, **stub_opts) + else + GRPC.logger.info("... connecting insecurely to #{address}") + Grpc::Testing::TestService::Stub.new(address) + end +end + +# produces a string of null chars (\0) of length l. +def nulls(l) + fail 'requires #{l} to be +ve' if l < 0 + [].pack('x' * l).force_encoding('utf-8') +end + +# a PingPongPlayer implements the ping pong bidi test. +class PingPongPlayer + include Minitest::Assertions + include Grpc::Testing + include Grpc::Testing::PayloadType + attr_accessor :assertions # required by Minitest::Assertions + attr_accessor :queue + attr_accessor :canceller_op + + # reqs is the enumerator over the requests + def initialize(msg_sizes) + @queue = Queue.new + @msg_sizes = msg_sizes + @assertions = 0 # required by Minitest::Assertions + @canceller_op = nil # used to cancel after the first response + end + + def each_item + return enum_for(:each_item) unless block_given? + req_cls, p_cls = StreamingOutputCallRequest, ResponseParameters # short + count = 0 + @msg_sizes.each do |m| + req_size, resp_size = m + req = req_cls.new(payload: Payload.new(body: nulls(req_size)), + response_type: :COMPRESSABLE, + response_parameters: [p_cls.new(size: resp_size)]) + yield req + resp = @queue.pop + assert_equal(:COMPRESSABLE, resp.payload.type, 'payload type is wrong') + assert_equal(resp_size, resp.payload.body.length, + "payload body #{count} has the wrong length") + p "OK: ping_pong #{count}" + count += 1 + unless @canceller_op.nil? + canceller_op.cancel + break + end + end + end +end + +# defines methods corresponding to each interop test case. +class NamedTests + include Minitest::Assertions + include Grpc::Testing + include Grpc::Testing::PayloadType + attr_accessor :assertions # required by Minitest::Assertions + + def initialize(stub, args) + @assertions = 0 # required by Minitest::Assertions + @stub = stub + @args = args + end + + def empty_unary + resp = @stub.empty_call(Empty.new) + assert resp.is_a?(Empty), 'empty_unary: invalid response' + p 'OK: empty_unary' + end + + def large_unary + perform_large_unary + p 'OK: large_unary' + end + + def service_account_creds + # ignore this test if the oauth options are not set + if @args.oauth_scope.nil? + p 'NOT RUN: service_account_creds; no service_account settings' + return + end + json_key = File.read(ENV[AUTH_ENV]) + wanted_email = MultiJson.load(json_key)['client_email'] + resp = perform_large_unary(fill_username: true, + fill_oauth_scope: true) + assert_equal(wanted_email, resp.username, + 'service_account_creds: incorrect username') + assert(@args.oauth_scope.include?(resp.oauth_scope), + 'service_account_creds: incorrect oauth_scope') + p 'OK: service_account_creds' + end + + def jwt_token_creds + json_key = File.read(ENV[AUTH_ENV]) + wanted_email = MultiJson.load(json_key)['client_email'] + resp = perform_large_unary(fill_username: true) + assert_equal(wanted_email, resp.username, + 'service_account_creds: incorrect username') + p 'OK: jwt_token_creds' + end + + def compute_engine_creds + resp = perform_large_unary(fill_username: true, + fill_oauth_scope: true) + assert_equal(@args.default_service_account, resp.username, + 'compute_engine_creds: incorrect username') + p 'OK: compute_engine_creds' + end + + def oauth2_auth_token + resp = perform_large_unary(fill_username: true, + fill_oauth_scope: true) + json_key = File.read(ENV[AUTH_ENV]) + wanted_email = MultiJson.load(json_key)['client_email'] + assert_equal(wanted_email, resp.username, + "#{__callee__}: incorrect username") + assert(@args.oauth_scope.include?(resp.oauth_scope), + "#{__callee__}: incorrect oauth_scope") + p "OK: #{__callee__}" + end + + def per_rpc_creds + auth_creds = Google::Auth.get_application_default(@args.oauth_scope) + kw = auth_creds.updater_proc.call({}) + resp = perform_large_unary(fill_username: true, + fill_oauth_scope: true, + **kw) + json_key = File.read(ENV[AUTH_ENV]) + wanted_email = MultiJson.load(json_key)['client_email'] + assert_equal(wanted_email, resp.username, + "#{__callee__}: incorrect username") + assert(@args.oauth_scope.include?(resp.oauth_scope), + "#{__callee__}: incorrect oauth_scope") + p "OK: #{__callee__}" + end + + def client_streaming + msg_sizes = [27_182, 8, 1828, 45_904] + wanted_aggregate_size = 74_922 + reqs = msg_sizes.map do |x| + req = Payload.new(body: nulls(x)) + StreamingInputCallRequest.new(payload: req) + end + resp = @stub.streaming_input_call(reqs) + assert_equal(wanted_aggregate_size, resp.aggregated_payload_size, + 'client_streaming: aggregate payload size is incorrect') + p 'OK: client_streaming' + end + + def server_streaming + msg_sizes = [31_415, 9, 2653, 58_979] + response_spec = msg_sizes.map { |s| ResponseParameters.new(size: s) } + req = StreamingOutputCallRequest.new(response_type: :COMPRESSABLE, + response_parameters: response_spec) + resps = @stub.streaming_output_call(req) + resps.each_with_index do |r, i| + assert i < msg_sizes.length, 'too many responses' + assert_equal(:COMPRESSABLE, r.payload.type, + 'payload type is wrong') + assert_equal(msg_sizes[i], r.payload.body.length, + 'payload body #{i} has the wrong length') + end + p 'OK: server_streaming' + end + + def ping_pong + msg_sizes = [[27_182, 31_415], [8, 9], [1828, 2653], [45_904, 58_979]] + ppp = PingPongPlayer.new(msg_sizes) + resps = @stub.full_duplex_call(ppp.each_item) + resps.each { |r| ppp.queue.push(r) } + p 'OK: ping_pong' + end + + def timeout_on_sleeping_server + msg_sizes = [[27_182, 31_415]] + ppp = PingPongPlayer.new(msg_sizes) + resps = @stub.full_duplex_call(ppp.each_item, timeout: 0.001) + resps.each { |r| ppp.queue.push(r) } + fail 'Should have raised GRPC::BadStatus(DEADLINE_EXCEEDED)' + rescue GRPC::BadStatus => e + assert_equal(e.code, GRPC::Core::StatusCodes::DEADLINE_EXCEEDED) + p "OK: #{__callee__}" + end + + def empty_stream + ppp = PingPongPlayer.new([]) + resps = @stub.full_duplex_call(ppp.each_item) + count = 0 + resps.each do |r| + ppp.queue.push(r) + count += 1 + end + assert_equal(0, count, 'too many responses, expect 0') + p 'OK: empty_stream' + end + + def cancel_after_begin + msg_sizes = [27_182, 8, 1828, 45_904] + reqs = msg_sizes.map do |x| + req = Payload.new(body: nulls(x)) + StreamingInputCallRequest.new(payload: req) + end + op = @stub.streaming_input_call(reqs, return_op: true) + op.cancel + assert_raises(GRPC::Cancelled) { op.execute } + assert(op.cancelled, 'call operation should be CANCELLED') + p 'OK: cancel_after_begin' + end + + def cancel_after_first_response + msg_sizes = [[27_182, 31_415], [8, 9], [1828, 2653], [45_904, 58_979]] + ppp = PingPongPlayer.new(msg_sizes) + op = @stub.full_duplex_call(ppp.each_item, return_op: true) + ppp.canceller_op = op # causes ppp to cancel after the 1st message + assert_raises(GRPC::Cancelled) { op.execute.each { |r| ppp.queue.push(r) } } + op.wait + assert(op.cancelled, 'call operation was not CANCELLED') + p 'OK: cancel_after_first_response' + end + + def all + all_methods = NamedTests.instance_methods(false).map(&:to_s) + all_methods.each do |m| + next if m == 'all' || m.start_with?('assert') + p "TESTCASE: #{m}" + method(m).call + end + end + + private + + def perform_large_unary(fill_username: false, fill_oauth_scope: false, **kw) + req_size, wanted_response_size = 271_828, 314_159 + payload = Payload.new(type: :COMPRESSABLE, body: nulls(req_size)) + req = SimpleRequest.new(response_type: :COMPRESSABLE, + response_size: wanted_response_size, + payload: payload) + req.fill_username = fill_username + req.fill_oauth_scope = fill_oauth_scope + resp = @stub.unary_call(req, **kw) + assert_equal(:COMPRESSABLE, resp.payload.type, + 'large_unary: payload had the wrong type') + assert_equal(wanted_response_size, resp.payload.body.length, + 'large_unary: payload had the wrong length') + assert_equal(nulls(wanted_response_size), resp.payload.body, + 'large_unary: payload content is invalid') + resp + end +end + +# Args is used to hold the command line info. +Args = Struct.new(:default_service_account, :host, :host_override, + :oauth_scope, :port, :secure, :test_case, + :use_test_ca) + +# validates the the command line options, returning them as a Hash. +def parse_args + args = Args.new + args.host_override = 'foo.test.google.fr' + OptionParser.new do |opts| + opts.on('--oauth_scope scope', + 'Scope for OAuth tokens') { |v| args['oauth_scope'] = v } + opts.on('--server_host SERVER_HOST', 'server hostname') do |v| + args['host'] = v + end + opts.on('--default_service_account email_address', + 'email address of the default service account') do |v| + args['default_service_account'] = v + end + opts.on('--server_host_override HOST_OVERRIDE', + 'override host via a HTTP header') do |v| + args['host_override'] = v + end + opts.on('--server_port SERVER_PORT', 'server port') { |v| args['port'] = v } + # instance_methods(false) gives only the methods defined in that class + test_cases = NamedTests.instance_methods(false).map(&:to_s) + test_case_list = test_cases.join(',') + opts.on('--test_case CODE', test_cases, {}, 'select a test_case', + " (#{test_case_list})") { |v| args['test_case'] = v } + opts.on('-s', '--use_tls', 'require a secure connection?') do |v| + args['secure'] = v + end + opts.on('-t', '--use_test_ca', + 'if secure, use the test certificate?') do |v| + args['use_test_ca'] = v + end + end.parse! + _check_args(args) +end + +def _check_args(args) + %w(host port test_case).each do |a| + if args[a].nil? + fail(OptionParser::MissingArgument, "please specify --#{a}") + end + end + args +end + +def main + opts = parse_args + stub = create_stub(opts) + NamedTests.new(stub, opts).method(opts['test_case']).call +end + +main diff --git a/src/ruby/pb/test/server.rb b/src/ruby/pb/test/server.rb new file mode 100755 index 0000000000..e2e1ecbd62 --- /dev/null +++ b/src/ruby/pb/test/server.rb @@ -0,0 +1,196 @@ +#!/usr/bin/env ruby + +# 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. + +# interop_server is a Testing app that runs a gRPC interop testing server. +# +# It helps validate interoperation b/w gRPC in different environments +# +# Helps validate interoperation b/w different gRPC implementations. +# +# Usage: $ path/to/interop_server.rb --port + +this_dir = File.expand_path(File.dirname(__FILE__)) +lib_dir = File.join(File.dirname(File.dirname(this_dir)), 'lib') +pb_dir = File.dirname(File.dirname(this_dir)) +$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir) +$LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir) +$LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir) + +require 'forwardable' +require 'optparse' + +require 'grpc' + +require 'test/proto/empty' +require 'test/proto/messages' +require 'test/proto/test_services' + +# loads the certificates by the test server. +def load_test_certs + this_dir = File.expand_path(File.dirname(__FILE__)) + data_dir = File.join(File.dirname(File.dirname(this_dir)), 'spec/testdata') + files = ['ca.pem', 'server1.key', 'server1.pem'] + files.map { |f| File.open(File.join(data_dir, f)).read } +end + +# creates a ServerCredentials from the test certificates. +def test_server_creds + certs = load_test_certs + GRPC::Core::ServerCredentials.new(nil, certs[1], certs[2]) +end + +# produces a string of null chars (\0) of length l. +def nulls(l) + fail 'requires #{l} to be +ve' if l < 0 + [].pack('x' * l).force_encoding('utf-8') +end + +# A EnumeratorQueue wraps a Queue yielding the items added to it via each_item. +class EnumeratorQueue + extend Forwardable + def_delegators :@q, :push + + def initialize(sentinel) + @q = Queue.new + @sentinel = sentinel + end + + def each_item + return enum_for(:each_item) unless block_given? + loop do + r = @q.pop + break if r.equal?(@sentinel) + fail r if r.is_a? Exception + yield r + end + end +end + +# A runnable implementation of the schema-specified testing service, with each +# service method implemented as required by the interop testing spec. +class TestTarget < Grpc::Testing::TestService::Service + include Grpc::Testing + include Grpc::Testing::PayloadType + + def empty_call(_empty, _call) + Empty.new + end + + def unary_call(simple_req, _call) + req_size = simple_req.response_size + SimpleResponse.new(payload: Payload.new(type: :COMPRESSABLE, + body: nulls(req_size))) + end + + def streaming_input_call(call) + sizes = call.each_remote_read.map { |x| x.payload.body.length } + sum = sizes.inject { |s, x| s + x } + StreamingInputCallResponse.new(aggregated_payload_size: sum) + end + + def streaming_output_call(req, _call) + cls = StreamingOutputCallResponse + req.response_parameters.map do |p| + cls.new(payload: Payload.new(type: req.response_type, + body: nulls(p.size))) + end + end + + def full_duplex_call(reqs) + # reqs is a lazy Enumerator of the requests sent by the client. + q = EnumeratorQueue.new(self) + cls = StreamingOutputCallResponse + Thread.new do + begin + GRPC.logger.info('interop-server: started receiving') + reqs.each do |req| + resp_size = req.response_parameters[0].size + GRPC.logger.info("read a req, response size is #{resp_size}") + resp = cls.new(payload: Payload.new(type: req.response_type, + body: nulls(resp_size))) + q.push(resp) + end + GRPC.logger.info('interop-server: finished receiving') + q.push(self) + rescue StandardError => e + GRPC.logger.info('interop-server: failed') + GRPC.logger.warn(e) + q.push(e) # share the exception with the enumerator + end + end + q.each_item + end + + def half_duplex_call(reqs) + # TODO: update with unique behaviour of the half_duplex_call if that's + # ever required by any of the tests. + full_duplex_call(reqs) + end +end + +# validates the the command line options, returning them as a Hash. +def parse_options + options = { + 'port' => nil, + 'secure' => false + } + OptionParser.new do |opts| + opts.banner = 'Usage: --port port' + opts.on('--port PORT', 'server port') do |v| + options['port'] = v + end + opts.on('-s', '--use_tls', 'require a secure connection?') do |v| + options['secure'] = v + end + end.parse! + + if options['port'].nil? + fail(OptionParser::MissingArgument, 'please specify --port') + end + options +end + +def main + opts = parse_options + host = "0.0.0.0:#{opts['port']}" + s = GRPC::RpcServer.new + if opts['secure'] + s.add_http2_port(host, test_server_creds) + GRPC.logger.info("... running securely on #{host}") + else + s.add_http2_port(host) + GRPC.logger.info("... running insecurely on #{host}") + end + s.handle(TestTarget) + s.run_till_terminated +end + +main -- GitLab From 19e436dac4bc588101acad293a6ee3eb8aa663a4 Mon Sep 17 00:00:00 2001 From: Tim Emiola <temiola@google.com> Date: Mon, 17 Aug 2015 09:34:40 -0700 Subject: [PATCH 049/178] Removes the dependency on Minitest - replaces it with a simple assertion function --- src/ruby/grpc.gemspec | 3 +- src/ruby/pb/test/client.rb | 128 +++++++++++++++++++++---------------- 2 files changed, 73 insertions(+), 58 deletions(-) diff --git a/src/ruby/grpc.gemspec b/src/ruby/grpc.gemspec index bda0352c26..18f62adfd5 100755 --- a/src/ruby/grpc.gemspec +++ b/src/ruby/grpc.gemspec @@ -29,9 +29,8 @@ Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.add_dependency 'google-protobuf', '~> 3.0.0alpha.1.1' - s.add_dependency 'googleauth', '~> 0.4' # reqd for interop tests + s.add_dependency 'googleauth', '~> 0.4' s.add_dependency 'logging', '~> 2.0' - s.add_dependency 'minitest', '~> 5.4' # reqd for interop tests s.add_development_dependency 'simplecov', '~> 0.9' s.add_development_dependency 'bundler', '~> 1.9' diff --git a/src/ruby/pb/test/client.rb b/src/ruby/pb/test/client.rb index 66c78f8bf8..164e304b4d 100755 --- a/src/ruby/pb/test/client.rb +++ b/src/ruby/pb/test/client.rb @@ -46,8 +46,6 @@ $LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir) $LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir) require 'optparse' -require 'minitest' -require 'minitest/assertions' require 'grpc' require 'googleauth' @@ -61,6 +59,15 @@ require 'signet/ssl_config' AUTH_ENV = Google::Auth::CredentialsLoader::ENV_VAR +# AssertionError is use to indicate interop test failures. +class AssertionError < RuntimeError; end + +# Fails with AssertionError if the block does evaluate to true +def assert(msg = 'unknown cause') + fail 'No assertion block provided' unless block_given? + fail AssertionError, msg unless yield +end + # loads the certificates used to access the test server securely. def load_test_certs this_dir = File.expand_path(File.dirname(__FILE__)) @@ -141,10 +148,8 @@ end # a PingPongPlayer implements the ping pong bidi test. class PingPongPlayer - include Minitest::Assertions include Grpc::Testing include Grpc::Testing::PayloadType - attr_accessor :assertions # required by Minitest::Assertions attr_accessor :queue attr_accessor :canceller_op @@ -152,7 +157,6 @@ class PingPongPlayer def initialize(msg_sizes) @queue = Queue.new @msg_sizes = msg_sizes - @assertions = 0 # required by Minitest::Assertions @canceller_op = nil # used to cancel after the first response end @@ -167,9 +171,10 @@ class PingPongPlayer response_parameters: [p_cls.new(size: resp_size)]) yield req resp = @queue.pop - assert_equal(:COMPRESSABLE, resp.payload.type, 'payload type is wrong') - assert_equal(resp_size, resp.payload.body.length, - "payload body #{count} has the wrong length") + assert('payload type is wrong') { :COMPRESSABLE == resp.payload.type } + assert("payload body #{count} has the wrong length") do + resp_size == resp.payload.body.length + end p "OK: ping_pong #{count}" count += 1 unless @canceller_op.nil? @@ -182,20 +187,17 @@ end # defines methods corresponding to each interop test case. class NamedTests - include Minitest::Assertions include Grpc::Testing include Grpc::Testing::PayloadType - attr_accessor :assertions # required by Minitest::Assertions def initialize(stub, args) - @assertions = 0 # required by Minitest::Assertions @stub = stub @args = args end def empty_unary resp = @stub.empty_call(Empty.new) - assert resp.is_a?(Empty), 'empty_unary: invalid response' + assert('empty_unary: invalid response') { resp.is_a?(Empty) } p 'OK: empty_unary' end @@ -214,28 +216,28 @@ class NamedTests wanted_email = MultiJson.load(json_key)['client_email'] resp = perform_large_unary(fill_username: true, fill_oauth_scope: true) - assert_equal(wanted_email, resp.username, - 'service_account_creds: incorrect username') - assert(@args.oauth_scope.include?(resp.oauth_scope), - 'service_account_creds: incorrect oauth_scope') - p 'OK: service_account_creds' + assert("#{__callee__}: bad username") { wanted_email == resp.username } + assert("#{__callee__}: bad oauth scope") do + @args.oauth_scope.include?(resp.oauth_scope) + end + p "OK: #{__callee__}" end def jwt_token_creds json_key = File.read(ENV[AUTH_ENV]) wanted_email = MultiJson.load(json_key)['client_email'] resp = perform_large_unary(fill_username: true) - assert_equal(wanted_email, resp.username, - 'service_account_creds: incorrect username') - p 'OK: jwt_token_creds' + assert("#{__callee__}: bad username") { wanted_email == resp.username } + p "OK: #{__callee__}" end def compute_engine_creds resp = perform_large_unary(fill_username: true, fill_oauth_scope: true) - assert_equal(@args.default_service_account, resp.username, - 'compute_engine_creds: incorrect username') - p 'OK: compute_engine_creds' + assert("#{__callee__}: bad username") do + @args.default_service_account == resp.username + end + p "OK: #{__callee__}" end def oauth2_auth_token @@ -243,10 +245,10 @@ class NamedTests fill_oauth_scope: true) json_key = File.read(ENV[AUTH_ENV]) wanted_email = MultiJson.load(json_key)['client_email'] - assert_equal(wanted_email, resp.username, - "#{__callee__}: incorrect username") - assert(@args.oauth_scope.include?(resp.oauth_scope), - "#{__callee__}: incorrect oauth_scope") + assert("#{__callee__}: bad username") { wanted_email == resp.username } + assert("#{__callee__}: bad oauth scope") do + @args.oauth_scope.include?(resp.oauth_scope) + end p "OK: #{__callee__}" end @@ -258,10 +260,10 @@ class NamedTests **kw) json_key = File.read(ENV[AUTH_ENV]) wanted_email = MultiJson.load(json_key)['client_email'] - assert_equal(wanted_email, resp.username, - "#{__callee__}: incorrect username") - assert(@args.oauth_scope.include?(resp.oauth_scope), - "#{__callee__}: incorrect oauth_scope") + assert("#{__callee__}: bad username") { wanted_email == resp.username } + assert("#{__callee__}: bad oauth scope") do + @args.oauth_scope.include?(resp.oauth_scope) + end p "OK: #{__callee__}" end @@ -273,9 +275,10 @@ class NamedTests StreamingInputCallRequest.new(payload: req) end resp = @stub.streaming_input_call(reqs) - assert_equal(wanted_aggregate_size, resp.aggregated_payload_size, - 'client_streaming: aggregate payload size is incorrect') - p 'OK: client_streaming' + assert("#{__callee__}: aggregate payload size is incorrect") do + wanted_aggregate_size == resp.aggregated_payload_size + end + p "OK: #{__callee__}" end def server_streaming @@ -285,13 +288,15 @@ class NamedTests response_parameters: response_spec) resps = @stub.streaming_output_call(req) resps.each_with_index do |r, i| - assert i < msg_sizes.length, 'too many responses' - assert_equal(:COMPRESSABLE, r.payload.type, - 'payload type is wrong') - assert_equal(msg_sizes[i], r.payload.body.length, - 'payload body #{i} has the wrong length') + assert("#{__callee__}: too many responses") { i < msg_sizes.length } + assert("#{__callee__}: payload body #{i} has the wrong length") do + msg_sizes[i] == r.payload.body.length + end + assert("#{__callee__}: payload type is wrong") do + :COMPRESSABLE == r.payload.type + end end - p 'OK: server_streaming' + p "OK: #{__callee__}" end def ping_pong @@ -299,7 +304,7 @@ class NamedTests ppp = PingPongPlayer.new(msg_sizes) resps = @stub.full_duplex_call(ppp.each_item) resps.each { |r| ppp.queue.push(r) } - p 'OK: ping_pong' + p "OK: #{__callee__}" end def timeout_on_sleeping_server @@ -309,7 +314,9 @@ class NamedTests resps.each { |r| ppp.queue.push(r) } fail 'Should have raised GRPC::BadStatus(DEADLINE_EXCEEDED)' rescue GRPC::BadStatus => e - assert_equal(e.code, GRPC::Core::StatusCodes::DEADLINE_EXCEEDED) + assert("#{__callee__}: status was wrong") do + e.code == GRPC::Core::StatusCodes::DEADLINE_EXCEEDED + end p "OK: #{__callee__}" end @@ -321,8 +328,10 @@ class NamedTests ppp.queue.push(r) count += 1 end - assert_equal(0, count, 'too many responses, expect 0') - p 'OK: empty_stream' + assert("#{__callee__}: too many responses expected 0") do + count == 0 + end + p "OK: #{__callee__}" end def cancel_after_begin @@ -333,9 +342,11 @@ class NamedTests end op = @stub.streaming_input_call(reqs, return_op: true) op.cancel - assert_raises(GRPC::Cancelled) { op.execute } - assert(op.cancelled, 'call operation should be CANCELLED') - p 'OK: cancel_after_begin' + op.execute + fail 'Should have raised GRPC:Cancelled' + rescue GRPC::Cancelled + assert("#{__callee__}: call operation should be CANCELLED") { op.cancelled } + p "OK: #{__callee__}" end def cancel_after_first_response @@ -343,10 +354,12 @@ class NamedTests ppp = PingPongPlayer.new(msg_sizes) op = @stub.full_duplex_call(ppp.each_item, return_op: true) ppp.canceller_op = op # causes ppp to cancel after the 1st message - assert_raises(GRPC::Cancelled) { op.execute.each { |r| ppp.queue.push(r) } } + op.execute.each { |r| ppp.queue.push(r) } + fail 'Should have raised GRPC:Cancelled' + rescue GRPC::Cancelled + assert("#{__callee__}: call operation should be CANCELLED") { op.cancelled } op.wait - assert(op.cancelled, 'call operation was not CANCELLED') - p 'OK: cancel_after_first_response' + p "OK: #{__callee__}" end def all @@ -369,12 +382,15 @@ class NamedTests req.fill_username = fill_username req.fill_oauth_scope = fill_oauth_scope resp = @stub.unary_call(req, **kw) - assert_equal(:COMPRESSABLE, resp.payload.type, - 'large_unary: payload had the wrong type') - assert_equal(wanted_response_size, resp.payload.body.length, - 'large_unary: payload had the wrong length') - assert_equal(nulls(wanted_response_size), resp.payload.body, - 'large_unary: payload content is invalid') + assert('payload type is wrong') do + :COMPRESSABLE == resp.payload.type + end + assert('payload body has the wrong length') do + wanted_response_size == resp.payload.body.length + end + assert('payload body is invalid') do + nulls(wanted_response_size) == resp.payload.body + end resp end end -- GitLab From ac1a8d340a56f24a7195bf6b5f9036aea5d8fe85 Mon Sep 17 00:00:00 2001 From: Tim Emiola <temiola@google.com> Date: Mon, 17 Aug 2015 11:10:03 -0700 Subject: [PATCH 050/178] Adds a test for ruby code generation. --- src/ruby/spec/pb/health/checker_spec.rb | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/ruby/spec/pb/health/checker_spec.rb b/src/ruby/spec/pb/health/checker_spec.rb index 0aeae444fc..6999a69105 100644 --- a/src/ruby/spec/pb/health/checker_spec.rb +++ b/src/ruby/spec/pb/health/checker_spec.rb @@ -30,6 +30,54 @@ require 'grpc' require 'grpc/health/v1alpha/health' require 'grpc/health/checker' +require 'open3' + +def can_run_codegen_check + system('which grpc_ruby_plugin') && system('which protoc') +end + +describe 'Health protobuf code generation' do + context 'the health service file used by grpc/health/checker' do + if !can_run_codegen_check + skip 'protoc || grpc_ruby_plugin missing, cannot verify health code-gen' + else + it 'should already be loaded indirectly i.e, used by the other specs' do + expect(require('grpc/health/v1alpha/health_services')).to be(false) + end + + it 'should have the same content as created by code generation' do + root_dir = File.dirname( + File.dirname(File.dirname(File.dirname(__FILE__)))) + pb_dir = File.join(root_dir, 'pb') + + # Get the current content + service_path = File.join(pb_dir, 'grpc', 'health', 'v1alpha', + 'health_services.rb') + want = nil + File.open(service_path) { |f| want = f.read } + + # Regenerate it + plugin, = Open3.capture2('which', 'grpc_ruby_plugin') + plugin = plugin.strip + got = nil + Dir.mktmpdir do |tmp_dir| + gen_out = File.join(tmp_dir, 'grpc', 'health', 'v1alpha', + 'health_services.rb') + pid = spawn( + 'protoc', + '-I.', + 'grpc/health/v1alpha/health.proto', + "--grpc_out=#{tmp_dir}", + "--plugin=protoc-gen-grpc=#{plugin}", + chdir: pb_dir) + Process.wait(pid) + File.open(gen_out) { |f| got = f.read } + end + expect(got).to eq(want) + end + end + end +end describe Grpc::Health::Checker do StatusCodes = GRPC::Core::StatusCodes -- GitLab From 28c37b8856b952892a41e578b3ce1cc759255f08 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Mon, 17 Aug 2015 11:36:03 -0700 Subject: [PATCH 051/178] Added an inline C++ function to replace a deprecated nan function --- src/node/ext/call.cc | 4 ++-- src/node/ext/call.h | 13 +++++++++++++ src/node/ext/server.cc | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/node/ext/call.cc b/src/node/ext/call.cc index 705c80ffc1..1e76ea7194 100644 --- a/src/node/ext/call.cc +++ b/src/node/ext/call.cc @@ -619,7 +619,7 @@ NAN_METHOD(Call::StartBatch) { call->wrapped_call, &ops[0], nops, new struct tag( callback, op_vector.release(), resources), NULL); if (error != GRPC_CALL_OK) { - return NanThrowError("startBatch failed", error); + return NanThrowError(nanErrorWithCode("startBatch failed", error)); } CompletionQueueAsyncWorker::Next(); NanReturnUndefined(); @@ -633,7 +633,7 @@ NAN_METHOD(Call::Cancel) { Call *call = ObjectWrap::Unwrap<Call>(args.This()); grpc_call_error error = grpc_call_cancel(call->wrapped_call, NULL); if (error != GRPC_CALL_OK) { - return NanThrowError("cancel failed", error); + return NanThrowError(nanErrorWithCode("cancel failed", error)); } NanReturnUndefined(); } diff --git a/src/node/ext/call.h b/src/node/ext/call.h index 6acda76197..ef6e5fcd21 100644 --- a/src/node/ext/call.h +++ b/src/node/ext/call.h @@ -51,6 +51,19 @@ namespace node { using std::unique_ptr; using std::shared_ptr; +/** + * 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<v8::Value> nanErrorWithCode(const char *msg, + grpc_call_error code) { + NanEscapableScope(); + v8::Local<v8::Object> err = NanError(msg).As<v8::Object>(); + err->Set(NanNew("code"), NanNew<v8::Uint32>(code)); + return NanEscapeScope(err); +} + v8::Handle<v8::Value> ParseMetadata(const grpc_metadata_array *metadata_array); class PersistentHolder { diff --git a/src/node/ext/server.cc b/src/node/ext/server.cc index 8e39644846..01217bce79 100644 --- a/src/node/ext/server.cc +++ b/src/node/ext/server.cc @@ -235,7 +235,7 @@ NAN_METHOD(Server::RequestCall) { new struct tag(new NanCallback(args[0].As<Function>()), ops.release(), shared_ptr<Resources>(nullptr))); if (error != GRPC_CALL_OK) { - return NanThrowError("requestCall failed", error); + return NanThrowError(nanErrorWithCode("requestCall failed", error)); } CompletionQueueAsyncWorker::Next(); NanReturnUndefined(); -- GitLab From 25f501132b83c91281ffeaa08b49e458ab812952 Mon Sep 17 00:00:00 2001 From: Tim Emiola <temiola@google.com> Date: Mon, 17 Aug 2015 12:22:23 -0700 Subject: [PATCH 052/178] Remove the runtime dependency on the logging gem. - provides a noop logger unless the user explicit adds a logging method to the GRPC namespace --- src/ruby/grpc.gemspec | 4 ++-- src/ruby/lib/grpc/logconfig.rb | 35 ++++++++++++++++++++++++---------- src/ruby/spec/spec_helper.rb | 14 +++++++++++++- 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/src/ruby/grpc.gemspec b/src/ruby/grpc.gemspec index 18f62adfd5..20a6206e7e 100755 --- a/src/ruby/grpc.gemspec +++ b/src/ruby/grpc.gemspec @@ -30,10 +30,10 @@ Gem::Specification.new do |s| s.add_dependency 'google-protobuf', '~> 3.0.0alpha.1.1' s.add_dependency 'googleauth', '~> 0.4' - s.add_dependency 'logging', '~> 2.0' - s.add_development_dependency 'simplecov', '~> 0.9' s.add_development_dependency 'bundler', '~> 1.9' + s.add_development_dependency 'logging', '~> 2.0' + s.add_development_dependency 'simplecov', '~> 0.9' s.add_development_dependency 'rake', '~> 10.4' s.add_development_dependency 'rake-compiler', '~> 0.9' s.add_development_dependency 'rspec', '~> 3.2' diff --git a/src/ruby/lib/grpc/logconfig.rb b/src/ruby/lib/grpc/logconfig.rb index e9b4aa3c95..2bb7c86d5e 100644 --- a/src/ruby/lib/grpc/logconfig.rb +++ b/src/ruby/lib/grpc/logconfig.rb @@ -27,17 +27,32 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -require 'logging' - # GRPC contains the General RPC module. module GRPC - extend Logging.globally -end + # DefaultLogger is a module included in GRPC if no other logging is set up for + # it. See ../spec/spec_helpers an example of where other logging is added. + module DefaultLogger + def logger + LOGGER + end + + private + + # NoopLogger implements the methods of Ruby's conventional logging interface + # that are actually used internally within gRPC with a noop implementation. + class NoopLogger + def info(_ignored) + end -Logging.logger.root.appenders = Logging.appenders.stdout -Logging.logger.root.level = :info + def debug(_ignored) + end -# TODO: provide command-line configuration for logging -Logging.logger['GRPC'].level = :info -Logging.logger['GRPC::ActiveCall'].level = :info -Logging.logger['GRPC::BidiCall'].level = :info + def warn(_ignored) + end + end + + LOGGER = NoopLogger.new + end + + include DefaultLogger unless method_defined?(:logger) +end diff --git a/src/ruby/spec/spec_helper.rb b/src/ruby/spec/spec_helper.rb index 270d2e97d3..c891c1bf5e 100644 --- a/src/ruby/spec/spec_helper.rb +++ b/src/ruby/spec/spec_helper.rb @@ -47,11 +47,23 @@ require 'rspec' require 'logging' require 'rspec/logging_helper' +# GRPC is the general RPC module +# +# Configure its logging for fine-grained log control during test runs +module GRPC + extend Logging.globally +end +Logging.logger.root.appenders = Logging.appenders.stdout +Logging.logger.root.level = :info +Logging.logger['GRPC'].level = :info +Logging.logger['GRPC::ActiveCall'].level = :info +Logging.logger['GRPC::BidiCall'].level = :info + # Configure RSpec to capture log messages for each test. The output from the # logs will be stored in the @log_output variable. It is a StringIO instance. RSpec.configure do |config| include RSpec::LoggingHelper - config.capture_log_messages + config.capture_log_messages # comment this out to see logs during test runs end RSpec::Expectations.configuration.warn_about_potential_false_positives = false -- GitLab From 9df83ab9e2978f38c49f31de33e67a0d6689bd14 Mon Sep 17 00:00:00 2001 From: Nathaniel Manista <nathaniel@google.com> Date: Mon, 17 Aug 2015 16:50:42 +0000 Subject: [PATCH 053/178] The base interface of RPC Framework This is the public API of the old base package of RPC Framework extracted into a first-class interface and adapted to metadata, status, and flow control. --- .../framework/interfaces/base/__init__.py | 30 ++ .../grpc/framework/interfaces/base/base.py | 273 ++++++++++++++++++ .../framework/interfaces/base/utilities.py | 79 +++++ 3 files changed, 382 insertions(+) create mode 100644 src/python/grpcio/grpc/framework/interfaces/base/__init__.py create mode 100644 src/python/grpcio/grpc/framework/interfaces/base/base.py create mode 100644 src/python/grpcio/grpc/framework/interfaces/base/utilities.py diff --git a/src/python/grpcio/grpc/framework/interfaces/base/__init__.py b/src/python/grpcio/grpc/framework/interfaces/base/__init__.py new file mode 100644 index 0000000000..7086519106 --- /dev/null +++ b/src/python/grpcio/grpc/framework/interfaces/base/__init__.py @@ -0,0 +1,30 @@ +# 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. + + diff --git a/src/python/grpcio/grpc/framework/interfaces/base/base.py b/src/python/grpcio/grpc/framework/interfaces/base/base.py new file mode 100644 index 0000000000..9d1651daac --- /dev/null +++ b/src/python/grpcio/grpc/framework/interfaces/base/base.py @@ -0,0 +1,273 @@ +# 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. + +"""The base interface of RPC Framework.""" + +import abc +import enum + +# abandonment is referenced from specification in this module. +from grpc.framework.foundation import abandonment # pylint: disable=unused-import + + +class NoSuchMethodError(Exception): + """Indicates that an unrecognized operation has been called.""" + + +@enum.unique +class Outcome(enum.Enum): + """Operation outcomes.""" + + COMPLETED = 'completed' + CANCELLED = 'cancelled' + EXPIRED = 'expired' + LOCAL_SHUTDOWN = 'local shutdown' + REMOTE_SHUTDOWN = 'remote shutdown' + RECEPTION_FAILURE = 'reception failure' + TRANSMISSION_FAILURE = 'transmission failure' + LOCAL_FAILURE = 'local failure' + REMOTE_FAILURE = 'remote failure' + + +class Completion(object): + """An aggregate of the values exchanged upon operation completion. + + Attributes: + terminal_metadata: A terminal metadata value for the operaton. + code: A code value for the operation. + message: A message value for the operation. + """ + __metaclass__ = abc.ABCMeta + + +class OperationContext(object): + """Provides operation-related information and action.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def outcome(self): + """Indicates the operation's outcome (or that the operation is ongoing). + + Returns: + None if the operation is still active or the Outcome value for the + operation if it has terminated. + """ + raise NotImplementedError() + + @abc.abstractmethod + def add_termination_callback(self, callback): + """Adds a function to be called upon operation termination. + + Args: + callback: A callable to be passed an Outcome value on operation + termination. + + Returns: + None if the operation has not yet terminated and the passed callback will + later be called when it does terminate, or if the operation has already + terminated an Outcome value describing the operation termination and the + passed callback will not be called as a result of this method call. + """ + raise NotImplementedError() + + @abc.abstractmethod + def time_remaining(self): + """Describes the length of allowed time remaining for the operation. + + Returns: + A nonnegative float indicating the length of allowed time in seconds + remaining for the operation to complete before it is considered to have + timed out. Zero is returned if the operation has terminated. + """ + raise NotImplementedError() + + @abc.abstractmethod + def cancel(self): + """Cancels the operation if the operation has not yet terminated.""" + raise NotImplementedError() + + @abc.abstractmethod + def fail(self, exception): + """Indicates that the operation has failed. + + Args: + exception: An exception germane to the operation failure. May be None. + """ + raise NotImplementedError() + + +class Operator(object): + """An interface through which to participate in an operation.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def advance( + self, initial_metadata=None, payload=None, completion=None, + allowance=None): + """Progresses the operation. + + Args: + initial_metadata: An initial metadata value. Only one may ever be + communicated in each direction for an operation, and they must be + communicated no later than either the first payload or the completion. + payload: A payload value. + completion: A Completion value. May only ever be non-None once in either + direction, and no payloads may be passed after it has been communicated. + allowance: A positive integer communicating the number of additional + payloads allowed to be passed by the remote side of the operation. + """ + raise NotImplementedError() + + +class Subscription(object): + """Describes customer code's interest in values from the other side. + + Attributes: + kind: A Kind value describing the overall kind of this value. + termination_callback: A callable to be passed the Outcome associated with + the operation after it has terminated. Must be non-None if kind is + Kind.TERMINATION_ONLY. Must be None otherwise. + allowance: A callable behavior that accepts positive integers representing + the number of additional payloads allowed to be passed to the other side + of the operation. Must be None if kind is Kind.FULL. Must not be None + otherwise. + operator: An Operator to be passed values from the other side of the + operation. Must be non-None if kind is Kind.FULL. Must be None otherwise. + """ + + @enum.unique + class Kind(enum.Enum): + + NONE = 'none' + TERMINATION_ONLY = 'termination only' + FULL = 'full' + + +class Servicer(object): + """Interface for service implementations.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def service(self, group, method, context, output_operator): + """Services an operation. + + Args: + group: The group identifier of the operation to be serviced. + method: The method identifier of the operation to be serviced. + context: An OperationContext object affording contextual information and + actions. + output_operator: An Operator that will accept output values of the + operation. + + Returns: + A Subscription via which this object may or may not accept more values of + the operation. + + Raises: + NoSuchMethodError: If this Servicer does not handle operations with the + given group and method. + abandonment.Abandoned: If the operation has been aborted and there no + longer is any reason to service the operation. + """ + raise NotImplementedError() + + +class End(object): + """Common type for entry-point objects on both sides of an operation.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def start(self): + """Starts this object's service of operations.""" + raise NotImplementedError() + + @abc.abstractmethod + def stop_gracefully(self): + """Gracefully stops this object's service of operations. + + Operations in progress will be allowed to complete, and this method blocks + until all of them have. + """ + raise NotImplementedError() + + @abc.abstractmethod + def stop_immediately(self): + """Immediately stops this object's service of operations. + + Operations in progress will not be allowed to complete. + """ + raise NotImplementedError() + + @abc.abstractmethod + def operate( + self, group, method, subscription, timeout, initial_metadata=None, + payload=None, completion=None): + """Commences an operation. + + Args: + group: The group identifier of the invoked operation. + method: The method identifier of the invoked operation. + subscription: A Subscription to which the results of the operation will be + passed. + timeout: A length of time in seconds to allow for the operation. + initial_metadata: An initial metadata value to be sent to the other side + of the operation. May be None if the initial metadata will be later + passed via the returned operator or if there will be no initial metadata + passed at all. + payload: An initial payload for the operation. + completion: A Completion value indicating the end of transmission to the + other side of the operation. + + Returns: + A pair of objects affording information about the operation and action + continuing the operation. The first element of the returned pair is an + OperationContext for the operation and the second element of the + returned pair is an Operator to which operation values not passed in + this call should later be passed. + """ + raise NotImplementedError() + + @abc.abstractmethod + def operation_stats(self): + """Reports the number of terminated operations broken down by outcome. + + Returns: + A dictionary from Outcome value to an integer identifying the number + of operations that terminated with that outcome. + """ + raise NotImplementedError() + + @abc.abstractmethod + def add_idle_action(self, action): + """Adds an action to be called when this End has no ongoing operations. + + Args: + action: A callable that accepts no arguments. + """ + raise NotImplementedError() diff --git a/src/python/grpcio/grpc/framework/interfaces/base/utilities.py b/src/python/grpcio/grpc/framework/interfaces/base/utilities.py new file mode 100644 index 0000000000..a9ee1a0981 --- /dev/null +++ b/src/python/grpcio/grpc/framework/interfaces/base/utilities.py @@ -0,0 +1,79 @@ +# 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. + +"""Utilities for use with the base interface of RPC Framework.""" + +import collections + +from grpc.framework.interfaces.base import base + + +class _Completion( + base.Completion, + collections.namedtuple( + '_Completion', ('terminal_metadata', 'code', 'message',))): + """A trivial implementation of base.Completion.""" + + +class _Subscription( + base.Subscription, + collections.namedtuple( + '_Subscription', + ('kind', 'termination_callback', 'allowance', 'operator',))): + """A trivial implementation of base.Subscription.""" + +_NONE_SUBSCRIPTION = _Subscription( + base.Subscription.Kind.NONE, None, None, None) + + +def completion(terminal_metadata, code, message): + """Creates a base.Completion aggregating the given operation values. + + Args: + terminal_metadata: A terminal metadata value for an operaton. + code: A code value for an operation. + message: A message value for an operation. + + Returns: + A base.Completion aggregating the given operation values. + """ + return _Completion(terminal_metadata, code, message) + + +def full_subscription(operator): + """Creates a "full" base.Subscription for the given base.Operator. + + Args: + operator: A base.Operator to be used in an operation. + + Returns: + A base.Subscription of kind base.Subscription.Kind.FULL wrapping the given + base.Operator. + """ + return _Subscription(base.Subscription.Kind.FULL, None, None, operator) -- GitLab From aac8f141cba18e9dc3b565085673fcc2dae4fe24 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Mon, 17 Aug 2015 13:35:54 -0700 Subject: [PATCH 054/178] Made deadline tests accept INTERNAL status --- src/node/interop/interop_client.js | 4 +++- src/node/test/surface_test.js | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/node/interop/interop_client.js b/src/node/interop/interop_client.js index 6d6f9a349e..612dcf01f6 100644 --- a/src/node/interop/interop_client.js +++ b/src/node/interop/interop_client.js @@ -264,7 +264,9 @@ function timeoutOnSleepingServer(client, done) { payload: {body: zeroBuffer(27182)} }); call.on('error', function(error) { - assert.strictEqual(error.code, grpc.status.DEADLINE_EXCEEDED); + + assert(error.code === grpc.status.DEADLINE_EXCEEDED || + error.code === grpc.status.INTERNAL); done(); }); } diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js index 52515cc8e7..ec7ed87728 100644 --- a/src/node/test/surface_test.js +++ b/src/node/test/surface_test.js @@ -784,7 +784,8 @@ describe('Other conditions', function() { client.clientStream(function(err, value) { try { assert(err); - assert.strictEqual(err.code, grpc.status.DEADLINE_EXCEEDED); + assert(err.code === grpc.status.DEADLINE_EXCEEDED || + err.code === grpc.status.INTERNAL); } finally { callback(err, value); done(); @@ -809,7 +810,8 @@ describe('Other conditions', function() { null, {parent: parent, propagate_flags: deadline_flags}); child.on('error', function(err) { assert(err); - assert.strictEqual(err.code, grpc.status.DEADLINE_EXCEEDED); + assert(err.code === grpc.status.DEADLINE_EXCEEDED || + err.code === grpc.status.INTERNAL); done(); }); }; -- GitLab From 4a1474f12f106123462cfcaf92c3c2e22a0b1404 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Mon, 17 Aug 2015 14:00:31 -0700 Subject: [PATCH 055/178] Moved write flag constants to base module --- src/node/ext/call.cc | 4 ---- src/node/ext/node_grpc.cc | 11 +++++++++++ src/node/index.js | 5 +++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/node/ext/call.cc b/src/node/ext/call.cc index 3256f41dc7..a720f9eed6 100644 --- a/src/node/ext/call.cc +++ b/src/node/ext/call.cc @@ -464,10 +464,6 @@ void Call::Init(Handle<Object> exports) { NanNew<FunctionTemplate>(GetPeer)->GetFunction()); NanAssignPersistent(fun_tpl, tpl); Handle<Function> ctr = tpl->GetFunction(); - ctr->Set(NanNew("WRITE_BUFFER_HINT"), - NanNew<Uint32, uint32_t>(GRPC_WRITE_BUFFER_HINT)); - ctr->Set(NanNew("WRITE_NO_COMPRESS"), - NanNew<Uint32, uint32_t>(GRPC_WRITE_NO_COMPRESS)); exports->Set(NanNew("Call"), ctr); constructor = new NanCallback(ctr); } diff --git a/src/node/ext/node_grpc.cc b/src/node/ext/node_grpc.cc index d93dafda79..0cf30da922 100644 --- a/src/node/ext/node_grpc.cc +++ b/src/node/ext/node_grpc.cc @@ -196,6 +196,16 @@ void InitConnectivityStateConstants(Handle<Object> exports) { channel_state->Set(NanNew("FATAL_FAILURE"), FATAL_FAILURE); } +void InitWriteFlags(Handle<Object> exports) { + NanScope(); + Handle<Object> write_flags = NanNew<Object>(); + exports->Set(NanNew("writeFlags"), write_flags); + Handle<Value> BUFFER_HINT(NanNew<Uint32, uint32_t>(GRPC_WRITE_BUFFER_HINT)); + write_flags->Set(NanNew("BUFFER_HINT"), BUFFER_HINT); + Handle<Value> NO_COMPRESS(NanNew<Uint32, uint32_t>(GRPC_WRITE_NO_COMPRESS)); + write_flags->Set(NanNew("NO_COMPRESS"), NO_COMPRESS); +} + void init(Handle<Object> exports) { NanScope(); grpc_init(); @@ -204,6 +214,7 @@ void init(Handle<Object> exports) { InitOpTypeConstants(exports); InitPropagateConstants(exports); InitConnectivityStateConstants(exports); + InitWriteFlags(exports); grpc::node::Call::Init(exports); grpc::node::Channel::Init(exports); diff --git a/src/node/index.js b/src/node/index.js index 93c65ac5c4..889b0ac0e9 100644 --- a/src/node/index.js +++ b/src/node/index.js @@ -144,6 +144,11 @@ exports.propagate = grpc.propagate; */ exports.callError = grpc.callError; +/** + * Write flag name to code number mapping + */ +exports.writeFlags = grpc.writeFlags; + /** * Credentials factories */ -- GitLab From 14733bde54e616300cab502f092feba744d1daa9 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Mon, 17 Aug 2015 14:06:32 -0700 Subject: [PATCH 056/178] Only use encoding for write flags if it is numeric --- src/node/src/client.js | 6 +++++- src/node/src/server.js | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/node/src/client.js b/src/node/src/client.js index 3c3642adeb..48fe0dd3b7 100644 --- a/src/node/src/client.js +++ b/src/node/src/client.js @@ -86,7 +86,11 @@ function _write(chunk, encoding, callback) { /* jshint validthis: true */ var batch = {}; var message = this.serialize(chunk); - message.grpcWriteFlags = encoding; + if (_.isFinite(encoding)) { + /* Attach the encoding if it is a finite number. This is the closest we + * can get to checking that it is valid flags */ + message.grpcWriteFlags = encoding; + } batch[grpc.opType.SEND_MESSAGE] = message; this.call.startBatch(batch, function(err, event) { if (err) { diff --git a/src/node/src/server.js b/src/node/src/server.js index 3b3bab8293..5037abae43 100644 --- a/src/node/src/server.js +++ b/src/node/src/server.js @@ -270,7 +270,11 @@ function _write(chunk, encoding, callback) { this.call.metadataSent = true; } var message = this.serialize(chunk); - message.grpcWriteFlags = encoding; + if (_.isFinite(encoding)) { + /* Attach the encoding if it is a finite number. This is the closest we + * can get to checking that it is valid flags */ + message.grpcWriteFlags = encoding; + } batch[grpc.opType.SEND_MESSAGE] = message; this.call.startBatch(batch, function(err, value) { if (err) { -- GitLab From fea1f68f7eb6a0b5954957142e4abd6914c47471 Mon Sep 17 00:00:00 2001 From: Stanley Cheung <stanleycheung@google.com> Date: Mon, 17 Aug 2015 14:20:22 -0700 Subject: [PATCH 057/178] php: fixed constant typo --- src/php/lib/Grpc/BaseStub.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/php/lib/Grpc/BaseStub.php b/src/php/lib/Grpc/BaseStub.php index 9d6a77b855..2e980c5eed 100755 --- a/src/php/lib/Grpc/BaseStub.php +++ b/src/php/lib/Grpc/BaseStub.php @@ -110,10 +110,10 @@ class BaseStub { } private function _checkConnectivityState($new_state) { - if ($new_state == Grpc\CHANNEL_READY) { + if ($new_state == \Grpc\CHANNEL_READY) { return true; } - if ($new_state == Grpc\CHANNEL_FATAL_ERROR) { + if ($new_state == \Grpc\CHANNEL_FATAL_FAILURE) { throw new Exception('Failed to connect to server'); } return false; -- GitLab From eb12fbdaeecace27e5fe0b3ccd16e6ad078b9df6 Mon Sep 17 00:00:00 2001 From: "David G. Quintas" <dgq@google.com> Date: Mon, 17 Aug 2015 14:24:02 -0700 Subject: [PATCH 058/178] docstrings for gprc_subchannel_{add,del}_interested_party --- src/core/client_config/subchannel.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/client_config/subchannel.h b/src/core/client_config/subchannel.h index d1cd33b2af..ac8c1dd85b 100644 --- a/src/core/client_config/subchannel.h +++ b/src/core/client_config/subchannel.h @@ -91,8 +91,10 @@ void grpc_subchannel_notify_on_state_change(grpc_subchannel *channel, grpc_connectivity_state *state, grpc_iomgr_closure *notify); +/** express interest in \a channel's activities by adding it to \a pollset. */ void grpc_subchannel_add_interested_party(grpc_subchannel *channel, grpc_pollset *pollset); +/** stop following \a channel's activity through \a pollset. */ void grpc_subchannel_del_interested_party(grpc_subchannel *channel, grpc_pollset *pollset); -- GitLab From d0efbdbcf70bf6baef75940c9a39df4a1622cc4a Mon Sep 17 00:00:00 2001 From: "David G. Quintas" <dgq@google.com> Date: Mon, 17 Aug 2015 14:26:06 -0700 Subject: [PATCH 059/178] Update subchannel.h --- src/core/client_config/subchannel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/client_config/subchannel.h b/src/core/client_config/subchannel.h index ac8c1dd85b..2e36c69134 100644 --- a/src/core/client_config/subchannel.h +++ b/src/core/client_config/subchannel.h @@ -91,7 +91,7 @@ void grpc_subchannel_notify_on_state_change(grpc_subchannel *channel, grpc_connectivity_state *state, grpc_iomgr_closure *notify); -/** express interest in \a channel's activities by adding it to \a pollset. */ +/** express interest in \a channel's activities through \a pollset. */ void grpc_subchannel_add_interested_party(grpc_subchannel *channel, grpc_pollset *pollset); /** stop following \a channel's activity through \a pollset. */ -- GitLab From 629c6f534f292163986abce5dd3d97e9846171d3 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Mon, 17 Aug 2015 14:59:51 -0700 Subject: [PATCH 060/178] Re-add accidentally deleted code --- src/cpp/server/server.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index dbe60e50de..dfc2b303bc 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -333,6 +333,15 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) { new UnimplementedAsyncRequest(this, cqs[i]); } } + // Start processing rpcs. + if (!sync_methods_->empty()) { + for (auto m = sync_methods_->begin(); m != sync_methods_->end(); m++) { + m->SetupRequest(); + m->Request(server_, cq_.cq()); + } + + ScheduleCallback(); + } return true; } -- GitLab From c31cd86a7448050653e41a861aa331ce5b078a81 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Mon, 17 Aug 2015 15:37:27 -0700 Subject: [PATCH 061/178] Let lame_client accept error status --- include/grpc/grpc.h | 4 +++- src/core/surface/lame_client.c | 25 +++++++++++++++++++----- src/core/surface/secure_channel_create.c | 8 ++++++-- src/cpp/client/create_channel.cc | 4 +++- test/core/surface/lame_client_test.c | 3 ++- test/cpp/end2end/end2end_test.cc | 8 ++++---- 6 files changed, 38 insertions(+), 14 deletions(-) diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h index 2d53325b77..56fd4db16c 100644 --- a/include/grpc/grpc.h +++ b/include/grpc/grpc.h @@ -561,7 +561,9 @@ grpc_channel *grpc_insecure_channel_create(const char *target, void *reserved); /** Create a lame client: this client fails every operation attempted on it. */ -grpc_channel *grpc_lame_client_channel_create(const char *target); +grpc_channel *grpc_lame_client_channel_create(const char *target, + grpc_status_code error_code, + const char *error_message); /** Close and destroy a grpc channel */ void grpc_channel_destroy(grpc_channel *channel); diff --git a/src/core/surface/lame_client.c b/src/core/surface/lame_client.c index c4215a2cfb..80704cbf67 100644 --- a/src/core/surface/lame_client.c +++ b/src/core/surface/lame_client.c @@ -50,6 +50,8 @@ typedef struct { typedef struct { grpc_mdctx *mdctx; grpc_channel *master; + grpc_status_code error_code; + const char *error_message; } channel_data; static void lame_start_transport_stream_op(grpc_call_element *elem, @@ -64,11 +66,11 @@ static void lame_start_transport_stream_op(grpc_call_element *elem, if (op->recv_ops != NULL) { char tmp[GPR_LTOA_MIN_BUFSIZE]; grpc_metadata_batch mdb; - gpr_ltoa(GRPC_STATUS_UNKNOWN, tmp); + gpr_ltoa(chand->error_code, tmp); calld->status.md = grpc_mdelem_from_strings(chand->mdctx, "grpc-status", tmp); calld->details.md = grpc_mdelem_from_strings(chand->mdctx, "grpc-message", - "Rpc sent on a lame channel."); + chand->error_message); calld->status.prev = calld->details.next = NULL; calld->status.next = &calld->details; calld->details.prev = &calld->status; @@ -138,8 +140,21 @@ static const grpc_channel_filter lame_filter = { "lame-client", }; -grpc_channel *grpc_lame_client_channel_create(const char *target) { +#define CHANNEL_STACK_FROM_CHANNEL(c) ((grpc_channel_stack *)((c) + 1)) + +grpc_channel *grpc_lame_client_channel_create(const char *target, + grpc_status_code error_code, + const char *error_message) { + grpc_channel *channel; + grpc_channel_element *elem; + channel_data *chand; static const grpc_channel_filter *filters[] = {&lame_filter}; - return grpc_channel_create_from_filters(target, filters, 1, NULL, - grpc_mdctx_create(), 1); + channel = grpc_channel_create_from_filters(target, filters, 1, NULL, + grpc_mdctx_create(), 1); + elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0); + GPR_ASSERT(elem->filter == &lame_filter); + chand = (channel_data *)elem->channel_data; + chand->error_code = error_code; + chand->error_message = error_message; + return channel; } diff --git a/src/core/surface/secure_channel_create.c b/src/core/surface/secure_channel_create.c index c3150250b8..5b03ba95a7 100644 --- a/src/core/surface/secure_channel_create.c +++ b/src/core/surface/secure_channel_create.c @@ -199,13 +199,17 @@ grpc_channel *grpc_secure_channel_create(grpc_credentials *creds, if (grpc_find_security_connector_in_args(args) != NULL) { gpr_log(GPR_ERROR, "Cannot set security context in channel args."); - return grpc_lame_client_channel_create(target); + return grpc_lame_client_channel_create( + target, GRPC_STATUS_INVALID_ARGUMENT, + "Security connector exists in channel args."); } if (grpc_credentials_create_security_connector( creds, target, args, NULL, &connector, &new_args_from_connector) != GRPC_SECURITY_OK) { - return grpc_lame_client_channel_create(target); + return grpc_lame_client_channel_create( + target, GRPC_STATUS_INVALID_ARGUMENT, + "Failed to create security connector."); } mdctx = grpc_mdctx_create(); diff --git a/src/cpp/client/create_channel.cc b/src/cpp/client/create_channel.cc index 21d01b739d..5ae772f096 100644 --- a/src/cpp/client/create_channel.cc +++ b/src/cpp/client/create_channel.cc @@ -52,6 +52,8 @@ std::shared_ptr<ChannelInterface> CreateChannel( user_agent_prefix.str()); return creds ? creds->CreateChannel(target, cp_args) : std::shared_ptr<ChannelInterface>( - new Channel(grpc_lame_client_channel_create(NULL))); + new Channel(grpc_lame_client_channel_create( + NULL, GRPC_STATUS_INVALID_ARGUMENT, + "Invalid credentials."))); } } // namespace grpc diff --git a/test/core/surface/lame_client_test.c b/test/core/surface/lame_client_test.c index 216eeca8e1..0c53c954c8 100644 --- a/test/core/surface/lame_client_test.c +++ b/test/core/surface/lame_client_test.c @@ -58,7 +58,8 @@ int main(int argc, char **argv) { grpc_metadata_array_init(&trailing_metadata_recv); - chan = grpc_lame_client_channel_create("lampoon:national"); + chan = grpc_lame_client_channel_create( + "lampoon:national", GRPC_STATUS_UNKNOWN, "Rpc sent on a lame channel."); GPR_ASSERT(chan); cq = grpc_completion_queue_create(NULL); call = grpc_channel_create_call(chan, NULL, GRPC_PROPAGATE_DEFAULTS, cq, diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc index 3827cdf730..22af1fde6a 100644 --- a/test/cpp/end2end/end2end_test.cc +++ b/test/cpp/end2end/end2end_test.cc @@ -583,15 +583,15 @@ TEST_F(End2endTest, BadCredentials) { Status s = stub->Echo(&context, request, &response); EXPECT_EQ("", response.message()); EXPECT_FALSE(s.ok()); - EXPECT_EQ(StatusCode::UNKNOWN, s.error_code()); - EXPECT_EQ("Rpc sent on a lame channel.", s.error_message()); + EXPECT_EQ(StatusCode::INVALID_ARGUMENT, s.error_code()); + EXPECT_EQ("Invalid credentials.", s.error_message()); ClientContext context2; auto stream = stub->BidiStream(&context2); s = stream->Finish(); EXPECT_FALSE(s.ok()); - EXPECT_EQ(StatusCode::UNKNOWN, s.error_code()); - EXPECT_EQ("Rpc sent on a lame channel.", s.error_message()); + EXPECT_EQ(StatusCode::INVALID_ARGUMENT, s.error_code()); + EXPECT_EQ("Invalid credentials.", s.error_message()); } void CancelRpc(ClientContext* context, int delay_us, TestServiceImpl* service) { -- GitLab From 04b4ca121fd650199a250420f77eab1e74811226 Mon Sep 17 00:00:00 2001 From: Nathaniel Manista <nathaniel@google.com> Date: Mon, 17 Aug 2015 21:26:52 +0000 Subject: [PATCH 062/178] A test suite for the RPC Framework base interface I wasn't able to flesh this out nearly as much as I had wanted to but I can come back to it after Beta (issue #2959). --- .../framework/common/test_constants.py | 10 + .../framework/interfaces/base/__init__.py | 30 + .../framework/interfaces/base/_control.py | 568 ++++++++++++++++++ .../framework/interfaces/base/_sequence.py | 168 ++++++ .../framework/interfaces/base/_state.py | 55 ++ .../framework/interfaces/base/test_cases.py | 260 ++++++++ .../interfaces/base/test_interfaces.py | 186 ++++++ 7 files changed, 1277 insertions(+) create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/base/__init__.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/base/_control.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/base/_sequence.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/base/_state.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/base/test_cases.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/base/test_interfaces.py diff --git a/src/python/grpcio_test/grpc_test/framework/common/test_constants.py b/src/python/grpcio_test/grpc_test/framework/common/test_constants.py index 3126d0d82c..e1d3c2709d 100644 --- a/src/python/grpcio_test/grpc_test/framework/common/test_constants.py +++ b/src/python/grpcio_test/grpc_test/framework/common/test_constants.py @@ -29,15 +29,25 @@ """Constants shared among tests throughout RPC Framework.""" +# Value for maximum duration in seconds that a test is allowed for its actual +# behavioral logic, excluding all time spent deliberately waiting in the test. +TIME_ALLOWANCE = 10 # Value for maximum duration in seconds of RPCs that may time out as part of a # test. SHORT_TIMEOUT = 4 # Absurdly large value for maximum duration in seconds for should-not-time-out # RPCs made during tests. LONG_TIMEOUT = 3000 +# Values to supply on construction of an object that will service RPCs; these +# should not be used as the actual timeout values of any RPCs made during tests. +DEFAULT_TIMEOUT = 300 +MAXIMUM_TIMEOUT = 3600 # The number of payloads to transmit in streaming tests. STREAM_LENGTH = 200 +# The size of payloads to transmit in tests. +PAYLOAD_SIZE = 256 * 1024 + 17 + # The size of thread pools to use in tests. POOL_SIZE = 10 diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/base/__init__.py b/src/python/grpcio_test/grpc_test/framework/interfaces/base/__init__.py new file mode 100644 index 0000000000..7086519106 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/base/__init__.py @@ -0,0 +1,30 @@ +# 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. + + diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/base/_control.py b/src/python/grpcio_test/grpc_test/framework/interfaces/base/_control.py new file mode 100644 index 0000000000..e4d2a7a0d7 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/base/_control.py @@ -0,0 +1,568 @@ +# 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. + +"""Part of the tests of the base interface of RPC Framework.""" + +import abc +import collections +import enum +import random # pylint: disable=unused-import +import threading +import time + +from grpc.framework.interfaces.base import base +from grpc_test.framework.common import test_constants +from grpc_test.framework.interfaces.base import _sequence +from grpc_test.framework.interfaces.base import _state +from grpc_test.framework.interfaces.base import test_interfaces # pylint: disable=unused-import + +_GROUP = 'base test cases test group' +_METHOD = 'base test cases test method' + +_PAYLOAD_RANDOM_SECTION_MAXIMUM_SIZE = test_constants.PAYLOAD_SIZE / 20 +_MINIMUM_PAYLOAD_SIZE = test_constants.PAYLOAD_SIZE / 600 + + +def _create_payload(randomness): + length = randomness.randint( + _MINIMUM_PAYLOAD_SIZE, test_constants.PAYLOAD_SIZE) + random_section_length = randomness.randint( + 0, min(_PAYLOAD_RANDOM_SECTION_MAXIMUM_SIZE, length)) + random_section = bytes( + bytearray( + randomness.getrandbits(8) for _ in range(random_section_length))) + sevens_section = '\x07' * (length - random_section_length) + return b''.join(randomness.sample((random_section, sevens_section), 2)) + + +def _anything_in_flight(state): + return ( + state.invocation_initial_metadata_in_flight is not None or + state.invocation_payloads_in_flight or + state.invocation_completion_in_flight is not None or + state.service_initial_metadata_in_flight is not None or + state.service_payloads_in_flight or + state.service_completion_in_flight is not None or + 0 < state.invocation_allowance_in_flight or + 0 < state.service_allowance_in_flight + ) + + +def _verify_service_advance_and_update_state( + initial_metadata, payload, completion, allowance, state, implementation): + if initial_metadata is not None: + if state.invocation_initial_metadata_received: + return 'Later invocation initial metadata received: %s' % ( + initial_metadata,) + if state.invocation_payloads_received: + return 'Invocation initial metadata received after payloads: %s' % ( + state.invocation_payloads_received) + if state.invocation_completion_received: + return 'Invocation initial metadata received after invocation completion!' + if not implementation.metadata_transmitted( + state.invocation_initial_metadata_in_flight, initial_metadata): + return 'Invocation initial metadata maltransmitted: %s, %s' % ( + state.invocation_initial_metadata_in_flight, initial_metadata) + else: + state.invocation_initial_metadata_in_flight = None + state.invocation_initial_metadata_received = True + + if payload is not None: + if state.invocation_completion_received: + return 'Invocation payload received after invocation completion!' + elif not state.invocation_payloads_in_flight: + return 'Invocation payload "%s" received but not in flight!' % (payload,) + elif state.invocation_payloads_in_flight[0] != payload: + return 'Invocation payload mismatch: %s, %s' % ( + state.invocation_payloads_in_flight[0], payload) + elif state.service_side_invocation_allowance < 1: + return 'Disallowed invocation payload!' + else: + state.invocation_payloads_in_flight.pop(0) + state.invocation_payloads_received += 1 + state.service_side_invocation_allowance -= 1 + + if completion is not None: + if state.invocation_completion_received: + return 'Later invocation completion received: %s' % (completion,) + elif not implementation.completion_transmitted( + state.invocation_completion_in_flight, completion): + return 'Invocation completion maltransmitted: %s, %s' % ( + state.invocation_completion_in_flight, completion) + else: + state.invocation_completion_in_flight = None + state.invocation_completion_received = True + + if allowance is not None: + if allowance <= 0: + return 'Illegal allowance value: %s' % (allowance,) + else: + state.service_allowance_in_flight -= allowance + state.service_side_service_allowance += allowance + + +def _verify_invocation_advance_and_update_state( + initial_metadata, payload, completion, allowance, state, implementation): + if initial_metadata is not None: + if state.service_initial_metadata_received: + return 'Later service initial metadata received: %s' % (initial_metadata,) + if state.service_payloads_received: + return 'Service initial metadata received after service payloads: %s' % ( + state.service_payloads_received) + if state.service_completion_received: + return 'Service initial metadata received after service completion!' + if not implementation.metadata_transmitted( + state.service_initial_metadata_in_flight, initial_metadata): + return 'Service initial metadata maltransmitted: %s, %s' % ( + state.service_initial_metadata_in_flight, initial_metadata) + else: + state.service_initial_metadata_in_flight = None + state.service_initial_metadata_received = True + + if payload is not None: + if state.service_completion_received: + return 'Service payload received after service completion!' + elif not state.service_payloads_in_flight: + return 'Service payload "%s" received but not in flight!' % (payload,) + elif state.service_payloads_in_flight[0] != payload: + return 'Service payload mismatch: %s, %s' % ( + state.invocation_payloads_in_flight[0], payload) + elif state.invocation_side_service_allowance < 1: + return 'Disallowed service payload!' + else: + state.service_payloads_in_flight.pop(0) + state.service_payloads_received += 1 + state.invocation_side_service_allowance -= 1 + + if completion is not None: + if state.service_completion_received: + return 'Later service completion received: %s' % (completion,) + elif not implementation.completion_transmitted( + state.service_completion_in_flight, completion): + return 'Service completion maltransmitted: %s, %s' % ( + state.service_completion_in_flight, completion) + else: + state.service_completion_in_flight = None + state.service_completion_received = True + + if allowance is not None: + if allowance <= 0: + return 'Illegal allowance value: %s' % (allowance,) + else: + state.invocation_allowance_in_flight -= allowance + state.invocation_side_service_allowance += allowance + + +class Invocation( + collections.namedtuple( + 'Invocation', + ('group', 'method', 'subscription_kind', 'timeout', 'initial_metadata', + 'payload', 'completion',))): + """A description of operation invocation. + + Attributes: + group: The group identifier for the operation. + method: The method identifier for the operation. + subscription_kind: A base.Subscription.Kind value describing the kind of + subscription to use for the operation. + timeout: A duration in seconds to pass as the timeout value for the + operation. + initial_metadata: An object to pass as the initial metadata for the + operation or None. + payload: An object to pass as a payload value for the operation or None. + completion: An object to pass as a completion value for the operation or + None. + """ + + +class OnAdvance( + collections.namedtuple( + 'OnAdvance', + ('kind', 'initial_metadata', 'payload', 'completion', 'allowance'))): + """Describes action to be taken in a test in response to an advance call. + + Attributes: + kind: A Kind value describing the overall kind of response. + initial_metadata: An initial metadata value to pass to a call of the advance + method of the operator under test. Only valid if kind is Kind.ADVANCE and + may be None. + payload: A payload value to pass to a call of the advance method of the + operator under test. Only valid if kind is Kind.ADVANCE and may be None. + completion: A base.Completion value to pass to a call of the advance method + of the operator under test. Only valid if kind is Kind.ADVANCE and may be + None. + allowance: An allowance value to pass to a call of the advance method of the + operator under test. Only valid if kind is Kind.ADVANCE and may be None. + """ + + @enum.unique + class Kind(enum.Enum): + ADVANCE = 'advance' + DEFECT = 'defect' + IDLE = 'idle' + + +_DEFECT_ON_ADVANCE = OnAdvance(OnAdvance.Kind.DEFECT, None, None, None, None) +_IDLE_ON_ADVANCE = OnAdvance(OnAdvance.Kind.IDLE, None, None, None, None) + + +class Instruction( + collections.namedtuple( + 'Instruction', + ('kind', 'advance_args', 'advance_kwargs', 'conclude_success', + 'conclude_message', 'conclude_invocation_outcome', + 'conclude_service_outcome',))): + """""" + + @enum.unique + class Kind(enum.Enum): + ADVANCE = 'ADVANCE' + CANCEL = 'CANCEL' + CONCLUDE = 'CONCLUDE' + + +class Controller(object): + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def failed(self, message): + """""" + raise NotImplementedError() + + @abc.abstractmethod + def serialize_request(self, request): + """""" + raise NotImplementedError() + + @abc.abstractmethod + def deserialize_request(self, serialized_request): + """""" + raise NotImplementedError() + + @abc.abstractmethod + def serialize_response(self, response): + """""" + raise NotImplementedError() + + @abc.abstractmethod + def deserialize_response(self, serialized_response): + """""" + raise NotImplementedError() + + @abc.abstractmethod + def invocation(self): + """""" + raise NotImplementedError() + + @abc.abstractmethod + def poll(self): + """""" + raise NotImplementedError() + + @abc.abstractmethod + def on_service_advance( + self, initial_metadata, payload, completion, allowance): + """""" + raise NotImplementedError() + + @abc.abstractmethod + def on_invocation_advance( + self, initial_metadata, payload, completion, allowance): + """""" + raise NotImplementedError() + + @abc.abstractmethod + def service_on_termination(self, outcome): + """""" + raise NotImplementedError() + + @abc.abstractmethod + def invocation_on_termination(self, outcome): + """""" + raise NotImplementedError() + + +class ControllerCreator(object): + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def name(self): + """""" + raise NotImplementedError() + + @abc.abstractmethod + def controller(self, implementation, randomness): + """""" + raise NotImplementedError() + + +class _Remainder( + collections.namedtuple( + '_Remainder', + ('invocation_payloads', 'service_payloads', 'invocation_completion', + 'service_completion',))): + """Describes work remaining to be done in a portion of a test. + + Attributes: + invocation_payloads: The number of payloads to be sent from the invocation + side of the operation to the service side of the operation. + service_payloads: The number of payloads to be sent from the service side of + the operation to the invocation side of the operation. + invocation_completion: Whether or not completion from the invocation side of + the operation should be indicated and has yet to be indicated. + service_completion: Whether or not completion from the service side of the + operation should be indicated and has yet to be indicated. + """ + + +class _SequenceController(Controller): + + def __init__(self, sequence, implementation, randomness): + """Constructor. + + Args: + sequence: A _sequence.Sequence describing the steps to be taken in the + test at a relatively high level. + implementation: A test_interfaces.Implementation encapsulating the + base interface implementation that is the system under test. + randomness: A random.Random instance for use in the test. + """ + self._condition = threading.Condition() + self._sequence = sequence + self._implementation = implementation + self._randomness = randomness + + self._until = None + self._remaining_elements = None + self._poll_next = None + self._message = None + + self._state = _state.OperationState() + self._todo = None + + # called with self._condition + def _failed(self, message): + self._message = message + self._condition.notify_all() + + def _passed(self, invocation_outcome, service_outcome): + self._poll_next = Instruction( + Instruction.Kind.CONCLUDE, None, None, True, None, invocation_outcome, + service_outcome) + self._condition.notify_all() + + def failed(self, message): + with self._condition: + self._failed(message) + + def serialize_request(self, request): + return request + request + + def deserialize_request(self, serialized_request): + return serialized_request[:len(serialized_request) / 2] + + def serialize_response(self, response): + return response * 3 + + def deserialize_response(self, serialized_response): + return serialized_response[2 * len(serialized_response) / 3:] + + def invocation(self): + with self._condition: + self._until = time.time() + self._sequence.maximum_duration + self._remaining_elements = list(self._sequence.elements) + if self._sequence.invocation.initial_metadata: + initial_metadata = self._implementation.invocation_initial_metadata() + self._state.invocation_initial_metadata_in_flight = initial_metadata + else: + initial_metadata = None + if self._sequence.invocation.payload: + payload = _create_payload(self._randomness) + self._state.invocation_payloads_in_flight.append(payload) + else: + payload = None + if self._sequence.invocation.complete: + completion = self._implementation.invocation_completion() + self._state.invocation_completion_in_flight = completion + else: + completion = None + return Invocation( + _GROUP, _METHOD, base.Subscription.Kind.FULL, + self._sequence.invocation.timeout, initial_metadata, payload, + completion) + + def poll(self): + with self._condition: + while True: + if self._message is not None: + return Instruction( + Instruction.Kind.CONCLUDE, None, None, False, self._message, None, + None) + elif self._poll_next: + poll_next = self._poll_next + self._poll_next = None + return poll_next + elif self._until < time.time(): + return Instruction( + Instruction.Kind.CONCLUDE, None, None, False, + 'overran allotted time!', None, None) + else: + self._condition.wait(timeout=self._until-time.time()) + + def on_service_advance( + self, initial_metadata, payload, completion, allowance): + with self._condition: + message = _verify_service_advance_and_update_state( + initial_metadata, payload, completion, allowance, self._state, + self._implementation) + if message is not None: + self._failed(message) + if self._todo is not None: + raise ValueError('TODO!!!') + elif _anything_in_flight(self._state): + return _IDLE_ON_ADVANCE + elif self._remaining_elements: + element = self._remaining_elements.pop(0) + if element.kind is _sequence.Element.Kind.SERVICE_TRANSMISSION: + if element.transmission.initial_metadata: + initial_metadata = self._implementation.service_initial_metadata() + self._state.service_initial_metadata_in_flight = initial_metadata + else: + initial_metadata = None + if element.transmission.payload: + payload = _create_payload(self._randomness) + self._state.service_payloads_in_flight.append(payload) + self._state.service_side_service_allowance -= 1 + else: + payload = None + if element.transmission.complete: + completion = self._implementation.service_completion() + self._state.service_completion_in_flight = completion + else: + completion = None + if (not self._state.invocation_completion_received and + 0 <= self._state.service_side_invocation_allowance): + allowance = 1 + self._state.service_side_invocation_allowance += 1 + self._state.invocation_allowance_in_flight += 1 + else: + allowance = None + return OnAdvance( + OnAdvance.Kind.ADVANCE, initial_metadata, payload, completion, + allowance) + else: + raise ValueError('TODO!!!') + else: + return _IDLE_ON_ADVANCE + + def on_invocation_advance( + self, initial_metadata, payload, completion, allowance): + with self._condition: + message = _verify_invocation_advance_and_update_state( + initial_metadata, payload, completion, allowance, self._state, + self._implementation) + if message is not None: + self._failed(message) + if self._todo is not None: + raise ValueError('TODO!!!') + elif _anything_in_flight(self._state): + return _IDLE_ON_ADVANCE + elif self._remaining_elements: + element = self._remaining_elements.pop(0) + if element.kind is _sequence.Element.Kind.INVOCATION_TRANSMISSION: + if element.transmission.initial_metadata: + initial_metadata = self._implementation.invocation_initial_metadata() + self._state.invocation_initial_metadata_in_fight = initial_metadata + else: + initial_metadata = None + if element.transmission.payload: + payload = _create_payload(self._randomness) + self._state.invocation_payloads_in_flight.append(payload) + self._state.invocation_side_invocation_allowance -= 1 + else: + payload = None + if element.transmission.complete: + completion = self._implementation.invocation_completion() + self._state.invocation_completion_in_flight = completion + else: + completion = None + if (not self._state.service_completion_received and + 0 <= self._state.invocation_side_service_allowance): + allowance = 1 + self._state.invocation_side_service_allowance += 1 + self._state.service_allowance_in_flight += 1 + else: + allowance = None + return OnAdvance( + OnAdvance.Kind.ADVANCE, initial_metadata, payload, completion, + allowance) + else: + raise ValueError('TODO!!!') + else: + return _IDLE_ON_ADVANCE + + def service_on_termination(self, outcome): + with self._condition: + self._state.service_side_outcome = outcome + if self._todo is not None or self._remaining_elements: + self._failed('Premature service-side outcome %s!' % (outcome,)) + elif outcome is not self._sequence.outcome.service: + self._failed( + 'Incorrect service-side outcome: %s should have been %s' % ( + outcome, self._sequence.outcome.service)) + elif self._state.invocation_side_outcome is not None: + self._passed(self._state.invocation_side_outcome, outcome) + + def invocation_on_termination(self, outcome): + with self._condition: + self._state.invocation_side_outcome = outcome + if self._todo is not None or self._remaining_elements: + self._failed('Premature invocation-side outcome %s!' % (outcome,)) + elif outcome is not self._sequence.outcome.invocation: + self._failed( + 'Incorrect invocation-side outcome: %s should have been %s' % ( + outcome, self._sequence.outcome.invocation)) + elif self._state.service_side_outcome is not None: + self._passed(outcome, self._state.service_side_outcome) + + +class _SequenceControllerCreator(ControllerCreator): + + def __init__(self, sequence): + self._sequence = sequence + + def name(self): + return self._sequence.name + + def controller(self, implementation, randomness): + return _SequenceController(self._sequence, implementation, randomness) + + +CONTROLLER_CREATORS = tuple( + _SequenceControllerCreator(sequence) for sequence in _sequence.SEQUENCES) diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/base/_sequence.py b/src/python/grpcio_test/grpc_test/framework/interfaces/base/_sequence.py new file mode 100644 index 0000000000..1d77aaebe6 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/base/_sequence.py @@ -0,0 +1,168 @@ +# 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. + +"""Part of the tests of the base interface of RPC Framework.""" + +import collections +import enum + +from grpc.framework.interfaces.base import base +from grpc_test.framework.common import test_constants + + +class Invocation( + collections.namedtuple( + 'Invocation', ('timeout', 'initial_metadata', 'payload', 'complete',))): + """A recipe for operation invocation. + + Attributes: + timeout: A duration in seconds to pass to the system under test as the + operation's timeout value. + initial_metadata: A boolean indicating whether or not to pass initial + metadata when invoking the operation. + payload: A boolean indicating whether or not to pass a payload when + invoking the operation. + complete: A boolean indicating whether or not to indicate completion of + transmissions from the invoking side of the operation when invoking the + operation. + """ + + +class Transmission( + collections.namedtuple( + 'Transmission', ('initial_metadata', 'payload', 'complete',))): + """A recipe for a single transmission in an operation. + + Attributes: + initial_metadata: A boolean indicating whether or not to pass initial + metadata as part of the transmission. + payload: A boolean indicating whether or not to pass a payload as part of + the transmission. + complete: A boolean indicating whether or not to indicate completion of + transmission from the transmitting side of the operation as part of the + transmission. + """ + + +class Intertransmission( + collections.namedtuple('Intertransmission', ('invocation', 'service',))): + """A recipe for multiple transmissions in an operation. + + Attributes: + invocation: An integer describing the number of payloads to send from the + invocation side of the operation to the service side. + service: An integer describing the number of payloads to send from the + service side of the operation to the invocation side. + """ + + +class Element(collections.namedtuple('Element', ('kind', 'transmission',))): + """A sum type for steps to perform when testing an operation. + + Attributes: + kind: A Kind value describing the kind of step to perform in the test. + transmission: Only valid for kinds Kind.INVOCATION_TRANSMISSION and + Kind.SERVICE_TRANSMISSION, a Transmission value describing the details of + the transmission to be made. + """ + + @enum.unique + class Kind(enum.Enum): + INVOCATION_TRANSMISSION = 'invocation transmission' + SERVICE_TRANSMISSION = 'service transmission' + INTERTRANSMISSION = 'intertransmission' + INVOCATION_CANCEL = 'invocation cancel' + SERVICE_CANCEL = 'service cancel' + INVOCATION_FAILURE = 'invocation failure' + SERVICE_FAILURE = 'service failure' + + +class Outcome(collections.namedtuple('Outcome', ('invocation', 'service',))): + """A description of the expected outcome of an operation test. + + Attributes: + invocation: The base.Outcome value expected on the invocation side of the + operation. + service: The base.Outcome value expected on the service side of the + operation. + """ + + +class Sequence( + collections.namedtuple( + 'Sequence', + ('name', 'maximum_duration', 'invocation', 'elements', 'outcome',))): + """Describes at a high level steps to perform in a test. + + Attributes: + name: The string name of the sequence. + maximum_duration: A length of time in seconds to allow for the test before + declaring it to have failed. + invocation: An Invocation value describing how to invoke the operation + under test. + elements: A sequence of Element values describing at coarse granularity + actions to take during the operation under test. + outcome: An Outcome value describing the expected outcome of the test. + """ + +_EASY = Sequence( + 'Easy', + test_constants.TIME_ALLOWANCE, + Invocation(test_constants.LONG_TIMEOUT, True, True, True), + ( + Element( + Element.Kind.SERVICE_TRANSMISSION, Transmission(True, True, True)), + ), + Outcome(base.Outcome.COMPLETED, base.Outcome.COMPLETED)) + +_PEASY = Sequence( + 'Peasy', + test_constants.TIME_ALLOWANCE, + Invocation(test_constants.LONG_TIMEOUT, True, True, False), + ( + Element( + Element.Kind.SERVICE_TRANSMISSION, Transmission(True, True, False)), + Element( + Element.Kind.INVOCATION_TRANSMISSION, + Transmission(False, True, True)), + Element( + Element.Kind.SERVICE_TRANSMISSION, Transmission(False, True, True)), + ), + Outcome(base.Outcome.COMPLETED, base.Outcome.COMPLETED)) + + +# TODO(issue 2959): Finish this test suite. This tuple of sequences should +# contain at least the values in the Cartesian product of (half-duplex, +# full-duplex) * (zero payloads, one payload, test_constants.STREAM_LENGTH +# payloads) * (completion, cancellation, expiration, programming defect in +# servicer code). +SEQUENCES = ( + _EASY, + _PEASY, +) diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/base/_state.py b/src/python/grpcio_test/grpc_test/framework/interfaces/base/_state.py new file mode 100644 index 0000000000..21cf33aeb6 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/base/_state.py @@ -0,0 +1,55 @@ +# 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. + +"""Part of the tests of the base interface of RPC Framework.""" + + +class OperationState(object): + + def __init__(self): + self.invocation_initial_metadata_in_flight = None + self.invocation_initial_metadata_received = False + self.invocation_payloads_in_flight = [] + self.invocation_payloads_received = 0 + self.invocation_completion_in_flight = None + self.invocation_completion_received = False + self.service_initial_metadata_in_flight = None + self.service_initial_metadata_received = False + self.service_payloads_in_flight = [] + self.service_payloads_received = 0 + self.service_completion_in_flight = None + self.service_completion_received = False + self.invocation_side_invocation_allowance = 1 + self.invocation_side_service_allowance = 1 + self.service_side_invocation_allowance = 1 + self.service_side_service_allowance = 1 + self.invocation_allowance_in_flight = 0 + self.service_allowance_in_flight = 0 + self.invocation_side_outcome = None + self.service_side_outcome = None diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/base/test_cases.py b/src/python/grpcio_test/grpc_test/framework/interfaces/base/test_cases.py new file mode 100644 index 0000000000..dd332fe5dd --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/base/test_cases.py @@ -0,0 +1,260 @@ +# 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. + +"""Tests of the base interface of RPC Framework.""" + +import logging +import random +import threading +import time +import unittest + +from grpc.framework.foundation import logging_pool +from grpc.framework.interfaces.base import base +from grpc.framework.interfaces.base import utilities +from grpc_test.framework.common import test_constants +from grpc_test.framework.interfaces.base import _control +from grpc_test.framework.interfaces.base import test_interfaces + +_SYNCHRONICITY_VARIATION = (('Sync', False), ('Async', True)) + +_EMPTY_OUTCOME_DICT = {outcome: 0 for outcome in base.Outcome} + + +class _Serialization(test_interfaces.Serialization): + + def serialize_request(self, request): + return request + request + + def deserialize_request(self, serialized_request): + return serialized_request[:len(serialized_request) / 2] + + def serialize_response(self, response): + return response * 3 + + def deserialize_response(self, serialized_response): + return serialized_response[2 * len(serialized_response) / 3:] + + +def _advance(quadruples, operator, controller): + try: + for quadruple in quadruples: + operator.advance( + initial_metadata=quadruple[0], payload=quadruple[1], + completion=quadruple[2], allowance=quadruple[3]) + except Exception as e: # pylint: disable=broad-except + controller.failed('Exception on advance: %e' % e) + + +class _Operator(base.Operator): + + def __init__(self, controller, on_advance, pool, operator_under_test): + self._condition = threading.Condition() + self._controller = controller + self._on_advance = on_advance + self._pool = pool + self._operator_under_test = operator_under_test + self._pending_advances = [] + + def set_operator_under_test(self, operator_under_test): + with self._condition: + self._operator_under_test = operator_under_test + pent_advances = self._pending_advances + self._pending_advances = [] + pool = self._pool + controller = self._controller + + if pool is None: + _advance(pent_advances, operator_under_test, controller) + else: + pool.submit(_advance, pent_advances, operator_under_test, controller) + + def advance( + self, initial_metadata=None, payload=None, completion=None, + allowance=None): + on_advance = self._on_advance( + initial_metadata, payload, completion, allowance) + if on_advance.kind is _control.OnAdvance.Kind.ADVANCE: + with self._condition: + pool = self._pool + operator_under_test = self._operator_under_test + controller = self._controller + + quadruple = ( + on_advance.initial_metadata, on_advance.payload, + on_advance.completion, on_advance.allowance) + if pool is None: + _advance((quadruple,), operator_under_test, controller) + else: + pool.submit(_advance, (quadruple,), operator_under_test, controller) + elif on_advance.kind is _control.OnAdvance.Kind.DEFECT: + raise ValueError( + 'Deliberately raised exception from Operator.advance (in a test)!') + + +class _Servicer(base.Servicer): + """An base.Servicer with instrumented for testing.""" + + def __init__(self, group, method, controllers, pool): + self._condition = threading.Condition() + self._group = group + self._method = method + self._pool = pool + self._controllers = list(controllers) + + def service(self, group, method, context, output_operator): + with self._condition: + controller = self._controllers.pop(0) + if group != self._group or method != self._method: + controller.fail( + '%s != %s or %s != %s' % (group, self._group, method, self._method)) + raise base.NoSuchMethodError() + else: + operator = _Operator( + controller, controller.on_service_advance, self._pool, + output_operator) + outcome = context.add_termination_callback( + controller.service_on_termination) + if outcome is not None: + controller.service_on_termination(outcome) + return utilities.full_subscription(operator) + + +class _OperationTest(unittest.TestCase): + + def setUp(self): + if self._synchronicity_variation: + self._pool = logging_pool.pool(test_constants.POOL_SIZE) + else: + self._pool = None + self._controller = self._controller_creator.controller( + self._implementation, self._randomness) + + def tearDown(self): + if self._synchronicity_variation: + self._pool.shutdown(wait=True) + else: + self._pool = None + + def test_operation(self): + invocation = self._controller.invocation() + if invocation.subscription_kind is base.Subscription.Kind.FULL: + test_operator = _Operator( + self._controller, self._controller.on_invocation_advance, + self._pool, None) + subscription = utilities.full_subscription(test_operator) + else: + # TODO(nathaniel): support and test other subscription kinds. + self.fail('Non-full subscriptions not yet supported!') + + servicer = _Servicer( + invocation.group, invocation.method, (self._controller,), self._pool) + + invocation_end, service_end, memo = self._implementation.instantiate( + {(invocation.group, invocation.method): _Serialization()}, servicer) + + try: + invocation_end.start() + service_end.start() + operation_context, operator_under_test = invocation_end.operate( + invocation.group, invocation.method, subscription, invocation.timeout, + initial_metadata=invocation.initial_metadata, payload=invocation.payload, + completion=invocation.completion) + test_operator.set_operator_under_test(operator_under_test) + outcome = operation_context.add_termination_callback( + self._controller.invocation_on_termination) + if outcome is not None: + self._controller.invocation_on_termination(outcome) + except Exception as e: # pylint: disable=broad-except + self._controller.failed('Exception on invocation: %s' % e) + self.fail(e) + + while True: + instruction = self._controller.poll() + if instruction.kind is _control.Instruction.Kind.ADVANCE: + try: + test_operator.advance( + *instruction.advance_args, **instruction.advance_kwargs) + except Exception as e: # pylint: disable=broad-except + self._controller.failed('Exception on instructed advance: %s' % e) + elif instruction.kind is _control.Instruction.Kind.CANCEL: + try: + operation_context.cancel() + except Exception as e: # pylint: disable=broad-except + self._controller.failed('Exception on cancel: %s' % e) + elif instruction.kind is _control.Instruction.Kind.CONCLUDE: + break + + invocation_end.stop_gracefully() + service_end.stop_gracefully() + invocation_stats = invocation_end.operation_stats() + service_stats = service_end.operation_stats() + + self._implementation.destantiate(memo) + + self.assertTrue( + instruction.conclude_success, msg=instruction.conclude_message) + + expected_invocation_stats = dict(_EMPTY_OUTCOME_DICT) + expected_invocation_stats[instruction.conclude_invocation_outcome] += 1 + self.assertDictEqual(expected_invocation_stats, invocation_stats) + expected_service_stats = dict(_EMPTY_OUTCOME_DICT) + expected_service_stats[instruction.conclude_service_outcome] += 1 + self.assertDictEqual(expected_service_stats, service_stats) + + +def test_cases(implementation): + """Creates unittest.TestCase classes for a given Base implementation. + + Args: + implementation: A test_interfaces.Implementation specifying creation and + destruction of the Base implementation under test. + + Returns: + A sequence of subclasses of unittest.TestCase defining tests of the + specified Base layer implementation. + """ + random_seed = hash(time.time()) + logging.warning('Random seed for this execution: %s', random_seed) + randomness = random.Random(x=random_seed) + + test_case_classes = [] + for synchronicity_variation in _SYNCHRONICITY_VARIATION: + for controller_creator in _control.CONTROLLER_CREATORS: + name = ''.join( + (synchronicity_variation[0], controller_creator.name(), 'Test',)) + test_case_classes.append( + type(name, (_OperationTest,), + {'_implementation': implementation, + '_randomness': randomness, + '_synchronicity_variation': synchronicity_variation[1], + '_controller_creator': controller_creator, + })) + + return test_case_classes diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/base/test_interfaces.py b/src/python/grpcio_test/grpc_test/framework/interfaces/base/test_interfaces.py new file mode 100644 index 0000000000..02426ab846 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/base/test_interfaces.py @@ -0,0 +1,186 @@ +# 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. + +"""Interfaces used in tests of implementations of the Base layer.""" + +import abc + +from grpc.framework.interfaces.base import base # pylint: disable=unused-import + + +class Serialization(object): + """Specifies serialization and deserialization of test payloads.""" + __metaclass__ = abc.ABCMeta + + def serialize_request(self, request): + """Serializes a request value used in a test. + + Args: + request: A request value created by a test. + + Returns: + A bytestring that is the serialization of the given request. + """ + raise NotImplementedError() + + def deserialize_request(self, serialized_request): + """Deserializes a request value used in a test. + + Args: + serialized_request: A bytestring that is the serialization of some request + used in a test. + + Returns: + The request value encoded by the given bytestring. + """ + raise NotImplementedError() + + def serialize_response(self, response): + """Serializes a response value used in a test. + + Args: + response: A response value created by a test. + + Returns: + A bytestring that is the serialization of the given response. + """ + raise NotImplementedError() + + def deserialize_response(self, serialized_response): + """Deserializes a response value used in a test. + + Args: + serialized_response: A bytestring that is the serialization of some + response used in a test. + + Returns: + The response value encoded by the given bytestring. + """ + raise NotImplementedError() + + +class Implementation(object): + """Specifies an implementation of the Base layer.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def instantiate(self, serializations, servicer): + """Instantiates the Base layer implementation to be used in a test. + + Args: + serializations: A dict from group-method pair to Serialization object + specifying how to serialize and deserialize payload values used in the + test. + servicer: A base.Servicer object to be called to service RPCs made during + the test. + + Returns: + A sequence of length three the first element of which is a + base.End to be used to invoke RPCs, the second element of which is a + base.End to be used to service invoked RPCs, and the third element of + which is an arbitrary memo object to be kept and passed to destantiate + at the conclusion of the test. + """ + raise NotImplementedError() + + @abc.abstractmethod + def destantiate(self, memo): + """Destroys the Base layer implementation under test. + + Args: + memo: The object from the third position of the return value of a call to + instantiate. + """ + raise NotImplementedError() + + @abc.abstractmethod + def invocation_initial_metadata(self): + """Provides an operation's invocation-side initial metadata. + + Returns: + A value to use for an operation's invocation-side initial metadata, or + None. + """ + raise NotImplementedError() + + @abc.abstractmethod + def service_initial_metadata(self): + """Provices an operation's service-side initial metadata. + + Returns: + A value to use for an operation's service-side initial metadata, or + None. + """ + raise NotImplementedError() + + @abc.abstractmethod + def invocation_completion(self): + """Provides an operation's invocation-side completion. + + Returns: + A base.Completion to use for an operation's invocation-side completion. + """ + raise NotImplementedError() + + @abc.abstractmethod + def service_completion(self): + """Provides an operation's service-side completion. + + Returns: + A base.Completion to use for an operation's service-side completion. + """ + raise NotImplementedError() + + @abc.abstractmethod + def metadata_transmitted(self, original_metadata, transmitted_metadata): + """Identifies whether or not metadata was properly transmitted. + + Args: + original_metadata: A metadata value passed to the system under test. + transmitted_metadata: The same metadata value after having been + transmitted through the system under test. + + Returns: + Whether or not the metadata was properly transmitted. + """ + raise NotImplementedError() + + @abc.abstractmethod + def completion_transmitted(self, original_completion, transmitted_completion): + """Identifies whether or not a base.Completion was properly transmitted. + + Args: + original_completion: A base.Completion passed to the system under test. + transmitted_completion: The same completion value after having been + transmitted through the system under test. + + Returns: + Whether or not the completion was properly transmitted. + """ + raise NotImplementedError() -- GitLab From d6c98df792198c5c9687ed35a676efbc5e621e0f Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Tue, 18 Aug 2015 09:33:44 -0700 Subject: [PATCH 063/178] clang-format all source --- include/grpc++/async_unary_call.h | 4 +- include/grpc++/auth_context.h | 2 +- include/grpc++/byte_buffer.h | 4 +- include/grpc++/client_context.h | 4 +- include/grpc++/dynamic_thread_pool.h | 9 +-- include/grpc++/generic_stub.h | 4 +- include/grpc++/impl/call.h | 24 ++------ include/grpc++/impl/grpc_library.h | 1 - include/grpc++/impl/serialization_traits.h | 6 +- include/grpc++/impl/sync_no_cxx11.h | 8 ++- include/grpc++/impl/thd_no_cxx11.h | 21 +++---- include/grpc++/server.h | 5 +- include/grpc++/server_builder.h | 13 ++-- include/grpc++/stream.h | 9 +-- include/grpc/grpc.h | 9 ++- include/grpc/status.h | 2 +- include/grpc/support/alloc.h | 2 +- include/grpc/support/atm.h | 2 +- include/grpc/support/atm_gcc_atomic.h | 2 +- include/grpc/support/atm_gcc_sync.h | 2 +- include/grpc/support/atm_win32.h | 37 ++++++------ include/grpc/support/cmdline.h | 2 +- include/grpc/support/cpu.h | 2 +- include/grpc/support/histogram.h | 2 +- include/grpc/support/host_port.h | 2 +- include/grpc/support/log.h | 2 +- include/grpc/support/log_win32.h | 2 +- include/grpc/support/port_platform.h | 3 +- include/grpc/support/slice.h | 2 +- include/grpc/support/string_util.h | 2 +- include/grpc/support/subprocess.h | 2 +- include/grpc/support/sync.h | 2 +- include/grpc/support/sync_generic.h | 14 ++--- include/grpc/support/sync_posix.h | 2 +- include/grpc/support/sync_win32.h | 2 +- include/grpc/support/thd.h | 2 +- include/grpc/support/time.h | 3 +- include/grpc/support/tls.h | 4 +- include/grpc/support/tls_gcc.h | 10 +++- include/grpc/support/tls_msvc.h | 10 +++- include/grpc/support/useful.h | 10 ++-- src/core/channel/census_filter.h | 2 +- src/core/channel/client_channel.c | 34 +++++++---- src/core/channel/client_channel.h | 7 ++- src/core/channel/compress_filter.c | 41 ++++++------- src/core/channel/compress_filter.h | 2 +- src/core/channel/http_client_filter.h | 2 +- src/core/channel/http_server_filter.h | 2 +- src/core/channel/noop_filter.h | 2 +- .../client_config/resolvers/dns_resolver.c | 3 +- .../resolvers/zookeeper_resolver.c | 8 +-- .../add_channel_arg.c | 10 ++-- .../add_channel_arg.h | 5 +- .../merge_channel_args.c | 4 +- .../merge_channel_args.h | 5 +- src/core/compression/algorithm.c | 2 +- src/core/debug/trace.c | 8 +-- src/core/debug/trace.h | 2 +- src/core/httpcli/format_request.c | 6 +- src/core/httpcli/format_request.h | 2 +- src/core/httpcli/parser.h | 2 +- src/core/iomgr/alarm.c | 5 +- src/core/iomgr/alarm.h | 2 +- src/core/iomgr/alarm_heap.c | 10 ++-- src/core/iomgr/alarm_heap.h | 2 +- src/core/iomgr/alarm_internal.h | 2 +- src/core/iomgr/endpoint.c | 3 +- src/core/iomgr/endpoint.h | 5 +- src/core/iomgr/endpoint_pair.h | 2 +- src/core/iomgr/endpoint_pair_windows.c | 20 ++++--- src/core/iomgr/iocp_windows.c | 35 +++++------ src/core/iomgr/iocp_windows.h | 10 ++-- src/core/iomgr/iomgr.h | 2 +- src/core/iomgr/iomgr_internal.h | 2 +- src/core/iomgr/iomgr_posix.c | 2 +- src/core/iomgr/iomgr_posix.h | 2 +- src/core/iomgr/iomgr_windows.c | 2 +- .../iomgr/pollset_multipoller_with_epoll.c | 3 +- .../pollset_multipoller_with_poll_posix.c | 5 +- src/core/iomgr/pollset_posix.c | 16 ++--- src/core/iomgr/pollset_posix.h | 3 +- src/core/iomgr/pollset_windows.c | 10 ++-- src/core/iomgr/resolve_address.h | 2 +- src/core/iomgr/resolve_address_posix.c | 5 +- src/core/iomgr/sockaddr.h | 2 +- src/core/iomgr/sockaddr_posix.h | 2 +- src/core/iomgr/sockaddr_utils.c | 6 +- src/core/iomgr/sockaddr_utils.h | 2 +- src/core/iomgr/sockaddr_win32.h | 2 +- src/core/iomgr/socket_utils_posix.h | 2 +- src/core/iomgr/socket_windows.c | 2 +- src/core/iomgr/socket_windows.h | 4 +- src/core/iomgr/tcp_client.h | 2 +- src/core/iomgr/tcp_client_posix.c | 3 +- src/core/iomgr/tcp_posix.c | 3 +- src/core/iomgr/tcp_posix.h | 2 +- src/core/iomgr/tcp_server_windows.c | 12 ++-- src/core/iomgr/tcp_windows.c | 59 +++++++++---------- src/core/iomgr/tcp_windows.h | 2 +- src/core/iomgr/time_averaged_stats.h | 2 +- src/core/iomgr/udp_server.c | 12 ++-- src/core/iomgr/wakeup_fd_eventfd.c | 5 +- src/core/iomgr/wakeup_fd_nospecial.c | 9 +-- src/core/iomgr/wakeup_fd_pipe.c | 2 +- src/core/iomgr/wakeup_fd_pipe.h | 2 +- src/core/iomgr/wakeup_fd_posix.c | 6 +- src/core/iomgr/wakeup_fd_posix.h | 2 +- src/core/json/json.h | 2 +- src/core/json/json_common.h | 2 +- src/core/json/json_reader.c | 36 ++++++----- src/core/json/json_reader.h | 2 +- src/core/json/json_string.c | 50 ++++++---------- src/core/json/json_writer.c | 33 +++++++---- src/core/json/json_writer.h | 14 +++-- src/core/profiling/timers.h | 2 +- src/core/security/auth_filters.h | 2 +- src/core/security/base64.h | 2 +- src/core/security/client_auth_filter.c | 8 ++- src/core/security/credentials.c | 20 +++---- src/core/security/credentials.h | 5 +- src/core/security/credentials_metadata.c | 4 +- .../security/google_default_credentials.c | 4 +- src/core/security/json_token.h | 2 +- src/core/security/jwt_verifier.h | 1 - src/core/security/secure_endpoint.c | 2 +- src/core/security/secure_endpoint.h | 2 +- src/core/security/secure_transport_setup.h | 2 +- src/core/security/security_context.c | 4 +- src/core/security/security_context.h | 3 +- src/core/security/server_auth_filter.c | 3 +- src/core/statistics/census_interface.h | 2 +- src/core/statistics/census_log.h | 2 +- src/core/statistics/census_rpc_stats.c | 4 +- src/core/statistics/census_rpc_stats.h | 2 +- src/core/statistics/census_tracing.c | 7 ++- src/core/statistics/census_tracing.h | 2 +- src/core/statistics/hash_table.h | 2 +- src/core/support/cpu_iphone.c | 8 +-- src/core/support/cpu_linux.c | 2 +- src/core/support/env.h | 2 +- src/core/support/file.h | 2 +- src/core/support/histogram.c | 11 ++-- src/core/support/log_linux.c | 4 +- src/core/support/murmur_hash.h | 2 +- src/core/support/slice.c | 3 +- src/core/support/slice_buffer.c | 3 +- src/core/support/stack_lockfree.c | 20 +++---- src/core/support/string.c | 19 +++--- src/core/support/string.h | 4 +- src/core/support/string_win32.c | 8 +-- src/core/support/string_win32.h | 4 +- src/core/support/sync_posix.c | 3 +- src/core/support/sync_win32.c | 3 +- src/core/support/thd.c | 4 +- src/core/support/thd_internal.h | 2 +- src/core/support/thd_posix.c | 14 ++--- src/core/support/thd_win32.c | 4 +- src/core/support/time.c | 3 +- src/core/support/tls_pthread.c | 2 +- src/core/surface/byte_buffer_queue.h | 2 +- src/core/surface/call.c | 41 ++++++------- src/core/surface/call_log_batch.c | 15 ++--- src/core/surface/channel.c | 24 ++++---- src/core/surface/channel_connectivity.c | 16 ++--- src/core/surface/completion_queue.c | 8 +-- src/core/surface/event_string.h | 2 +- src/core/surface/init.h | 2 +- src/core/surface/init_unsecure.c | 3 +- src/core/surface/server.c | 3 +- src/core/surface/server_create.c | 2 +- src/core/surface/surface_trace.h | 4 +- src/core/surface/version.c | 4 +- src/core/transport/chttp2/frame_data.c | 4 +- src/core/transport/chttp2/parsing.c | 7 +-- src/core/transport/chttp2/stream_lists.c | 2 +- src/core/transport/chttp2/stream_map.c | 3 +- src/core/transport/chttp2/writing.c | 29 +++++---- src/core/transport/chttp2_transport.c | 22 +++---- src/core/transport/metadata.c | 13 ++-- src/core/transport/metadata.h | 5 +- src/core/transport/stream_op.c | 6 +- src/core/tsi/fake_transport_security.c | 11 ++-- src/core/tsi/fake_transport_security.h | 2 +- src/core/tsi/ssl_transport_security.c | 31 +++++----- src/core/tsi/ssl_transport_security.h | 2 +- src/core/tsi/transport_security.h | 2 +- src/core/tsi/transport_security_interface.h | 2 +- src/cpp/client/channel.cc | 6 +- src/cpp/client/channel.h | 5 +- src/cpp/client/secure_credentials.h | 1 - src/cpp/common/auth_property_iterator.cc | 6 +- src/cpp/proto/proto_utils.cc | 6 +- src/cpp/server/create_default_thread_pool.cc | 6 +- src/cpp/server/dynamic_thread_pool.cc | 24 ++++---- src/cpp/server/secure_server_credentials.cc | 4 +- src/cpp/server/server.cc | 6 +- src/cpp/server/server_builder.cc | 21 ++++--- src/cpp/server/server_context.cc | 7 ++- test/build/protobuf.cc | 4 +- test/core/bad_client/bad_client.c | 5 +- .../core/bad_client/tests/connection_prefix.c | 6 +- .../bad_client/tests/initial_settings_frame.c | 6 +- test/core/client_config/uri_parser_test.c | 3 +- test/core/compression/compression_test.c | 2 +- test/core/compression/message_compress_test.c | 3 +- test/core/end2end/cq_verifier.c | 2 +- test/core/end2end/cq_verifier.h | 5 +- test/core/end2end/data/ssl_test_data.h | 2 +- test/core/end2end/dualstack_socket_test.c | 5 +- .../chttp2_simple_ssl_with_oauth2_fullstack.c | 3 +- test/core/end2end/fixtures/proxy.c | 23 ++++---- .../end2end/multiple_server_queues_test.c | 4 +- test/core/end2end/no_server_test.c | 5 +- test/core/end2end/tests/bad_hostname.c | 5 +- test/core/end2end/tests/cancel_after_accept.c | 5 +- .../cancel_after_accept_and_writes_closed.c | 5 +- test/core/end2end/tests/cancel_after_invoke.c | 5 +- .../core/end2end/tests/cancel_before_invoke.c | 5 +- test/core/end2end/tests/cancel_in_a_vacuum.c | 5 +- test/core/end2end/tests/cancel_test_helpers.h | 2 +- .../end2end/tests/census_simple_request.c | 11 ++-- .../core/end2end/tests/channel_connectivity.c | 40 +++++++------ test/core/end2end/tests/default_host.c | 17 +++--- test/core/end2end/tests/disappearing_server.c | 6 +- ..._server_shutdown_finishes_inflight_calls.c | 6 +- test/core/end2end/tests/empty_batch.c | 5 +- .../end2end/tests/graceful_server_shutdown.c | 6 +- .../core/end2end/tests/invoke_large_request.c | 11 ++-- .../end2end/tests/max_concurrent_streams.c | 11 ++-- test/core/end2end/tests/max_message_length.c | 11 ++-- test/core/end2end/tests/no_op.c | 5 +- test/core/end2end/tests/ping_pong_streaming.c | 11 ++-- test/core/end2end/tests/registered_call.c | 21 +++---- ...esponse_with_binary_metadata_and_payload.c | 11 ++-- ...quest_response_with_metadata_and_payload.c | 21 +++---- .../tests/request_response_with_payload.c | 11 ++-- ...est_response_with_payload_and_call_creds.c | 13 ++-- ...ponse_with_trailing_metadata_and_payload.c | 26 ++++---- .../tests/request_with_compressed_payload.c | 17 +++--- test/core/end2end/tests/request_with_flags.c | 5 +- .../tests/request_with_large_metadata.c | 11 ++-- .../core/end2end/tests/request_with_payload.c | 5 +- .../end2end/tests/server_finishes_request.c | 11 ++-- .../end2end/tests/simple_delayed_request.c | 11 ++-- test/core/end2end/tests/simple_request.c | 11 ++-- ...equest_with_high_initial_sequence_number.c | 11 ++-- test/core/fling/fling_test.c | 10 ++-- test/core/fling/server.c | 3 +- test/core/httpcli/format_request_test.c | 3 +- test/core/iomgr/udp_server_test.c | 6 +- test/core/json/json_test.c | 2 +- test/core/security/auth_context_test.c | 1 - test/core/security/json_token_test.c | 12 ++-- test/core/security/jwt_verifier_test.c | 38 ++++++------ .../print_google_default_creds_token.c | 3 +- test/core/security/security_connector_test.c | 9 +-- test/core/security/verify_jwt.c | 1 - test/core/statistics/census_log_tests.h | 2 +- test/core/statistics/hash_table_test.c | 14 ++--- test/core/support/cmdline_test.c | 5 +- test/core/support/string_test.c | 4 +- test/core/support/thd_test.c | 2 +- test/core/surface/completion_queue_test.c | 8 +-- test/core/surface/lame_client_test.c | 3 +- test/core/transport/chttp2/stream_map_test.c | 6 +- test/core/util/grpc_profiler.h | 2 +- test/core/util/parse_hexstring.h | 2 +- test/core/util/port.h | 2 +- test/core/util/port_posix.c | 10 ++-- test/core/util/port_windows.c | 13 ++-- test/core/util/slice_splitter.h | 2 +- test/core/util/test_config.c | 6 +- .../cpp/common/auth_property_iterator_test.cc | 7 +-- test/cpp/common/secure_auth_context_test.cc | 2 +- test/cpp/end2end/async_end2end_test.cc | 47 ++++++++------- test/cpp/end2end/client_crash_test.cc | 7 +-- test/cpp/end2end/client_crash_test_server.cc | 3 +- test/cpp/end2end/end2end_test.cc | 12 ++-- test/cpp/end2end/generic_end2end_test.cc | 5 +- test/cpp/end2end/server_crash_test_client.cc | 4 +- test/cpp/end2end/zookeeper_test.cc | 5 +- test/cpp/interop/client_helper.h | 1 - test/cpp/interop/interop_client.cc | 21 ++++--- test/cpp/qps/perf_db_client.cc | 13 ++-- test/cpp/qps/perf_db_client.h | 5 +- test/cpp/qps/qps_interarrival_test.cc | 2 +- test/cpp/qps/qps_openloop_test.cc | 4 +- test/cpp/util/benchmark_config.cc | 14 +++-- test/cpp/util/byte_buffer_test.cc | 3 +- test/cpp/util/cli_call.cc | 2 +- 290 files changed, 1080 insertions(+), 1087 deletions(-) diff --git a/include/grpc++/async_unary_call.h b/include/grpc++/async_unary_call.h index d631ccd134..3d22df4b33 100644 --- a/include/grpc++/async_unary_call.h +++ b/include/grpc++/async_unary_call.h @@ -121,8 +121,8 @@ class ServerAsyncResponseWriter GRPC_FINAL } // The response is dropped if the status is not OK. if (status.ok()) { - finish_buf_.ServerSendStatus( - ctx_->trailing_metadata_, finish_buf_.SendMessage(msg)); + finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, + finish_buf_.SendMessage(msg)); } else { finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, status); } diff --git a/include/grpc++/auth_context.h b/include/grpc++/auth_context.h index f8ea8ad6f4..7dced90ce5 100644 --- a/include/grpc++/auth_context.h +++ b/include/grpc++/auth_context.h @@ -62,6 +62,7 @@ class AuthPropertyIterator AuthPropertyIterator(); AuthPropertyIterator(const grpc_auth_property* property, const grpc_auth_property_iterator* iter); + private: friend class SecureAuthContext; const grpc_auth_property* property_; @@ -92,4 +93,3 @@ class AuthContext { } // namespace grpc #endif // GRPCXX_AUTH_CONTEXT_H - diff --git a/include/grpc++/byte_buffer.h b/include/grpc++/byte_buffer.h index cb3c6a1159..6467776398 100644 --- a/include/grpc++/byte_buffer.h +++ b/include/grpc++/byte_buffer.h @@ -91,8 +91,8 @@ class SerializationTraits<ByteBuffer, void> { dest->set_buffer(byte_buffer); return Status::OK; } - static Status Serialize(const ByteBuffer& source, grpc_byte_buffer** buffer, - bool* own_buffer) { + static Status Serialize(const ByteBuffer& source, grpc_byte_buffer** buffer, + bool* own_buffer) { *buffer = source.buffer(); *own_buffer = false; return Status::OK; diff --git a/include/grpc++/client_context.h b/include/grpc++/client_context.h index 915a80ddb0..8de2ba4877 100644 --- a/include/grpc++/client_context.h +++ b/include/grpc++/client_context.h @@ -185,7 +185,9 @@ class ClientContext { // Get and set census context void set_census_context(struct census_context* ccp) { census_context_ = ccp; } - struct census_context* census_context() const { return census_context_; } + struct census_context* census_context() const { + return census_context_; + } void TryCancel(); diff --git a/include/grpc++/dynamic_thread_pool.h b/include/grpc++/dynamic_thread_pool.h index f0cd35940f..a4d4885b51 100644 --- a/include/grpc++/dynamic_thread_pool.h +++ b/include/grpc++/dynamic_thread_pool.h @@ -55,11 +55,12 @@ class DynamicThreadPool GRPC_FINAL : public ThreadPoolInterface { private: class DynamicThread { - public: - DynamicThread(DynamicThreadPool *pool); + public: + DynamicThread(DynamicThreadPool* pool); ~DynamicThread(); - private: - DynamicThreadPool *pool_; + + private: + DynamicThreadPool* pool_; std::unique_ptr<grpc::thread> thd_; void ThreadFunc(); }; diff --git a/include/grpc++/generic_stub.h b/include/grpc++/generic_stub.h index c34e1fcf55..172f10e45a 100644 --- a/include/grpc++/generic_stub.h +++ b/include/grpc++/generic_stub.h @@ -52,8 +52,8 @@ class GenericStub GRPC_FINAL { // begin a call to a named method std::unique_ptr<GenericClientAsyncReaderWriter> Call( - ClientContext* context, const grpc::string& method, - CompletionQueue* cq, void* tag); + ClientContext* context, const grpc::string& method, CompletionQueue* cq, + void* tag); private: std::shared_ptr<ChannelInterface> channel_; diff --git a/include/grpc++/impl/call.h b/include/grpc++/impl/call.h index d49102fa3e..bc1db4c12c 100644 --- a/include/grpc++/impl/call.h +++ b/include/grpc++/impl/call.h @@ -67,14 +67,10 @@ class WriteOptions { WriteOptions(const WriteOptions& other) : flags_(other.flags_) {} /// Clear all flags. - inline void Clear() { - flags_ = 0; - } + inline void Clear() { flags_ = 0; } /// Returns raw flags bitset. - inline gpr_uint32 flags() const { - return flags_; - } + inline gpr_uint32 flags() const { return flags_; } /// Sets flag for the disabling of compression for the next message write. /// @@ -122,9 +118,7 @@ class WriteOptions { /// not go out on the wire immediately. /// /// \sa GRPC_WRITE_BUFFER_HINT - inline bool get_buffer_hint() const { - return GetBit(GRPC_WRITE_BUFFER_HINT); - } + inline bool get_buffer_hint() const { return GetBit(GRPC_WRITE_BUFFER_HINT); } WriteOptions& operator=(const WriteOptions& rhs) { flags_ = rhs.flags_; @@ -132,17 +126,11 @@ class WriteOptions { } private: - void SetBit(const gpr_int32 mask) { - flags_ |= mask; - } + void SetBit(const gpr_int32 mask) { flags_ |= mask; } - void ClearBit(const gpr_int32 mask) { - flags_ &= ~mask; - } + void ClearBit(const gpr_int32 mask) { flags_ &= ~mask; } - bool GetBit(const gpr_int32 mask) const { - return flags_ & mask; - } + bool GetBit(const gpr_int32 mask) const { return flags_ & mask; } gpr_uint32 flags_; }; diff --git a/include/grpc++/impl/grpc_library.h b/include/grpc++/impl/grpc_library.h index f9fa677901..ce4211418d 100644 --- a/include/grpc++/impl/grpc_library.h +++ b/include/grpc++/impl/grpc_library.h @@ -46,5 +46,4 @@ class GrpcLibrary { } // namespace grpc - #endif // GRPCXX_IMPL_GRPC_LIBRARY_H diff --git a/include/grpc++/impl/serialization_traits.h b/include/grpc++/impl/serialization_traits.h index 1f5c674e4c..3ea66a3405 100644 --- a/include/grpc++/impl/serialization_traits.h +++ b/include/grpc++/impl/serialization_traits.h @@ -37,12 +37,12 @@ namespace grpc { /// Defines how to serialize and deserialize some type. -/// +/// /// Used for hooking different message serialization API's into GRPC. /// Each SerializationTraits implementation must provide the following /// functions: /// static Status Serialize(const Message& msg, -/// grpc_byte_buffer** buffer, +/// grpc_byte_buffer** buffer, // bool* own_buffer); /// static Status Deserialize(grpc_byte_buffer* buffer, /// Message* msg, @@ -57,7 +57,7 @@ namespace grpc { /// msg. max_message_size is passed in as a bound on the maximum number of /// message bytes Deserialize should accept. /// -/// Both functions return a Status, allowing them to explain what went +/// Both functions return a Status, allowing them to explain what went /// wrong if required. template <class Message, class UnusedButHereForPartialTemplateSpecialization = void> diff --git a/include/grpc++/impl/sync_no_cxx11.h b/include/grpc++/impl/sync_no_cxx11.h index 5869b04c76..120a031045 100644 --- a/include/grpc++/impl/sync_no_cxx11.h +++ b/include/grpc++/impl/sync_no_cxx11.h @@ -38,7 +38,7 @@ namespace grpc { -template<class mutex> +template <class mutex> class lock_guard; class condition_variable; @@ -46,6 +46,7 @@ class mutex { public: mutex() { gpr_mu_init(&mu_); } ~mutex() { gpr_mu_destroy(&mu_); } + private: ::gpr_mu mu_; template <class mutex> @@ -58,6 +59,7 @@ class lock_guard { public: lock_guard(mutex &mu) : mu_(mu), locked(true) { gpr_mu_lock(&mu.mu_); } ~lock_guard() { unlock_internal(); } + protected: void lock_internal() { if (!locked) gpr_mu_lock(&mu_.mu_); @@ -67,6 +69,7 @@ class lock_guard { if (locked) gpr_mu_unlock(&mu_.mu_); locked = false; } + private: mutex &mu_; bool locked; @@ -76,7 +79,7 @@ class lock_guard { template <class mutex> class unique_lock : public lock_guard<mutex> { public: - unique_lock(mutex &mu) : lock_guard<mutex>(mu) { } + unique_lock(mutex &mu) : lock_guard<mutex>(mu) {} void lock() { this->lock_internal(); } void unlock() { this->unlock_internal(); } }; @@ -92,6 +95,7 @@ class condition_variable { } void notify_one() { gpr_cv_signal(&cv_); } void notify_all() { gpr_cv_broadcast(&cv_); } + private: gpr_cv cv_; }; diff --git a/include/grpc++/impl/thd_no_cxx11.h b/include/grpc++/impl/thd_no_cxx11.h index a6bdd7dfe9..84d03ce184 100644 --- a/include/grpc++/impl/thd_no_cxx11.h +++ b/include/grpc++/impl/thd_no_cxx11.h @@ -40,7 +40,8 @@ namespace grpc { class thread { public: - template<class T> thread(void (T::*fptr)(), T *obj) { + template <class T> + thread(void (T::*fptr)(), T *obj) { func_ = new thread_function<T>(fptr, obj); joined_ = false; start(); @@ -53,28 +54,28 @@ class thread { gpr_thd_join(thd_); joined_ = true; } + private: void start() { gpr_thd_options options = gpr_thd_options_default(); gpr_thd_options_set_joinable(&options); - gpr_thd_new(&thd_, thread_func, (void *) func_, &options); + gpr_thd_new(&thd_, thread_func, (void *)func_, &options); } static void thread_func(void *arg) { - thread_function_base *func = (thread_function_base *) arg; + thread_function_base *func = (thread_function_base *)arg; func->call(); } class thread_function_base { public: - virtual ~thread_function_base() { } + virtual ~thread_function_base() {} virtual void call() = 0; }; - template<class T> + template <class T> class thread_function : public thread_function_base { public: - thread_function(void (T::*fptr)(), T *obj) - : fptr_(fptr) - , obj_(obj) { } + thread_function(void (T::*fptr)(), T *obj) : fptr_(fptr), obj_(obj) {} virtual void call() { (obj_->*fptr_)(); } + private: void (T::*fptr_)(); T *obj_; @@ -84,8 +85,8 @@ class thread { bool joined_; // Disallow copy and assign. - thread(const thread&); - void operator=(const thread&); + thread(const thread &); + void operator=(const thread &); }; } // namespace grpc diff --git a/include/grpc++/server.h b/include/grpc++/server.h index 8755b4b445..99f288d179 100644 --- a/include/grpc++/server.h +++ b/include/grpc++/server.h @@ -84,8 +84,9 @@ class Server GRPC_FINAL : public GrpcLibrary, private CallHook { int max_message_size); // Register a service. This call does not take ownership of the service. // The service must exist for the lifetime of the Server instance. - bool RegisterService(const grpc::string *host, RpcService* service); - bool RegisterAsyncService(const grpc::string *host, AsynchronousService* service); + bool RegisterService(const grpc::string* host, RpcService* service); + bool RegisterAsyncService(const grpc::string* host, + AsynchronousService* service); void RegisterAsyncGenericService(AsyncGenericService* service); // Add a listening port. Can be called multiple times. int AddListeningPort(const grpc::string& addr, ServerCredentials* creds); diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h index 44ee00eec9..906daf1370 100644 --- a/include/grpc++/server_builder.h +++ b/include/grpc++/server_builder.h @@ -76,15 +76,14 @@ class ServerBuilder { // The service must exist for the lifetime of the Server instance returned by // BuildAndStart(). // Only matches requests with :authority \a host - void RegisterService(const grpc::string& host, - SynchronousService* service); + void RegisterService(const grpc::string& host, SynchronousService* service); // Register an asynchronous service. // This call does not take ownership of the service or completion queue. // The service and completion queuemust exist for the lifetime of the Server // instance returned by BuildAndStart(). // Only matches requests with :authority \a host - void RegisterAsyncService(const grpc::string& host, + void RegisterAsyncService(const grpc::string& host, AsynchronousService* service); // Set max message size in bytes. @@ -117,9 +116,10 @@ class ServerBuilder { }; typedef std::unique_ptr<grpc::string> HostString; - template <class T> struct NamedService { + template <class T> + struct NamedService { explicit NamedService(T* s) : service(s) {} - NamedService(const grpc::string& h, T *s) + NamedService(const grpc::string& h, T* s) : host(new grpc::string(h)), service(s) {} HostString host; T* service; @@ -127,7 +127,8 @@ class ServerBuilder { int max_message_size_; std::vector<std::unique_ptr<NamedService<RpcService>>> services_; - std::vector<std::unique_ptr<NamedService<AsynchronousService>>> async_services_; + std::vector<std::unique_ptr<NamedService<AsynchronousService>>> + async_services_; std::vector<Port> ports_; std::vector<ServerCompletionQueue*> cqs_; std::shared_ptr<ServerCredentials> creds_; diff --git a/include/grpc++/stream.h b/include/grpc++/stream.h index bc0c3c0f3b..45dafcd282 100644 --- a/include/grpc++/stream.h +++ b/include/grpc++/stream.h @@ -85,9 +85,7 @@ class WriterInterface { // Returns false when the stream has been closed. virtual bool Write(const W& msg, const WriteOptions& options) = 0; - inline bool Write(const W& msg) { - return Write(msg, WriteOptions()); - } + inline bool Write(const W& msg) { return Write(msg, WriteOptions()); } }; template <class R> @@ -640,9 +638,8 @@ class ServerAsyncReader GRPC_FINAL : public ServerAsyncStreamingInterface, } // The response is dropped if the status is not OK. if (status.ok()) { - finish_ops_.ServerSendStatus( - ctx_->trailing_metadata_, - finish_ops_.SendMessage(msg)); + finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, + finish_ops_.SendMessage(msg)); } else { finish_ops_.ServerSendStatus(ctx_->trailing_metadata_, status); } diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h index 56fd4db16c..2220e8f039 100644 --- a/include/grpc/grpc.h +++ b/include/grpc/grpc.h @@ -378,11 +378,11 @@ typedef struct grpc_op { /** Registers a plugin to be initialized and destroyed with the library. - The \a init and \a destroy functions will be invoked as part of - \a grpc_init() and \a grpc_shutdown(), respectively. + The \a init and \a destroy functions will be invoked as part of + \a grpc_init() and \a grpc_shutdown(), respectively. Note that these functions can be invoked an arbitrary number of times (and hence so will \a init and \a destroy). - It is safe to pass NULL to either argument. Plugins are destroyed in + It is safe to pass NULL to either argument. Plugins are destroyed in the reverse order they were initialized. */ void grpc_register_plugin(void (*init)(void), void (*destroy)(void)); @@ -629,8 +629,7 @@ grpc_call_error grpc_server_request_registered_call( be specified with args. If no additional configuration is needed, args can be NULL. See grpc_channel_args for more. The data in 'args' need only live through the invocation of this function. */ -grpc_server *grpc_server_create(const grpc_channel_args *args, - void *reserved); +grpc_server *grpc_server_create(const grpc_channel_args *args, void *reserved); /** Register a completion queue with the server. Must be done for any notification completion queue that is passed to grpc_server_request_*_call diff --git a/include/grpc/status.h b/include/grpc/status.h index 456b9006e7..65ce410227 100644 --- a/include/grpc/status.h +++ b/include/grpc/status.h @@ -160,4 +160,4 @@ typedef enum { } #endif -#endif /* GRPC_STATUS_H */ +#endif /* GRPC_STATUS_H */ diff --git a/include/grpc/support/alloc.h b/include/grpc/support/alloc.h index 509870f3e3..9d4e743da7 100644 --- a/include/grpc/support/alloc.h +++ b/include/grpc/support/alloc.h @@ -55,4 +55,4 @@ void gpr_free_aligned(void *ptr); } #endif -#endif /* GRPC_SUPPORT_ALLOC_H */ +#endif /* GRPC_SUPPORT_ALLOC_H */ diff --git a/include/grpc/support/atm.h b/include/grpc/support/atm.h index ba8d7f579e..3f88e2e1a5 100644 --- a/include/grpc/support/atm.h +++ b/include/grpc/support/atm.h @@ -89,4 +89,4 @@ #error could not determine platform for atm #endif -#endif /* GRPC_SUPPORT_ATM_H */ +#endif /* GRPC_SUPPORT_ATM_H */ diff --git a/include/grpc/support/atm_gcc_atomic.h b/include/grpc/support/atm_gcc_atomic.h index a2c8386028..104e1d51df 100644 --- a/include/grpc/support/atm_gcc_atomic.h +++ b/include/grpc/support/atm_gcc_atomic.h @@ -69,4 +69,4 @@ static __inline int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { __ATOMIC_RELAXED); } -#endif /* GRPC_SUPPORT_ATM_GCC_ATOMIC_H */ +#endif /* GRPC_SUPPORT_ATM_GCC_ATOMIC_H */ diff --git a/include/grpc/support/atm_gcc_sync.h b/include/grpc/support/atm_gcc_sync.h index 38b5a9eec2..241ae76c91 100644 --- a/include/grpc/support/atm_gcc_sync.h +++ b/include/grpc/support/atm_gcc_sync.h @@ -84,4 +84,4 @@ static __inline void gpr_atm_no_barrier_store(gpr_atm *p, gpr_atm value) { #define gpr_atm_acq_cas(p, o, n) (__sync_bool_compare_and_swap((p), (o), (n))) #define gpr_atm_rel_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n)) -#endif /* GRPC_SUPPORT_ATM_GCC_SYNC_H */ +#endif /* GRPC_SUPPORT_ATM_GCC_SYNC_H */ diff --git a/include/grpc/support/atm_win32.h b/include/grpc/support/atm_win32.h index 694528a9ba..cc016e5cdf 100644 --- a/include/grpc/support/atm_win32.h +++ b/include/grpc/support/atm_win32.h @@ -66,31 +66,31 @@ static __inline int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { /* InterlockedCompareExchangePointerNoFence() not available on vista or windows7 */ #ifdef GPR_ARCH_64 - return o == (gpr_atm)InterlockedCompareExchangeAcquire64((volatile LONGLONG *) p, - (LONGLONG) n, (LONGLONG) o); + return o == (gpr_atm)InterlockedCompareExchangeAcquire64( + (volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o); #else - return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG *) p, - (LONG) n, (LONG) o); + return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG *)p, + (LONG)n, (LONG)o); #endif } static __inline int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { #ifdef GPR_ARCH_64 - return o == (gpr_atm)InterlockedCompareExchangeAcquire64((volatile LONGLONG *) p, - (LONGLONG) n, (LONGLONG) o); + return o == (gpr_atm)InterlockedCompareExchangeAcquire64( + (volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o); #else - return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG *) p, - (LONG) n, (LONG) o); + return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG *)p, + (LONG)n, (LONG)o); #endif } static __inline int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n) { #ifdef GPR_ARCH_64 - return o == (gpr_atm)InterlockedCompareExchangeRelease64((volatile LONGLONG *) p, - (LONGLONG) n, (LONGLONG) o); + return o == (gpr_atm)InterlockedCompareExchangeRelease64( + (volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o); #else - return o == (gpr_atm)InterlockedCompareExchangeRelease((volatile LONG *) p, - (LONG) n, (LONG) o); + return o == (gpr_atm)InterlockedCompareExchangeRelease((volatile LONG *)p, + (LONG)n, (LONG)o); #endif } @@ -110,17 +110,16 @@ static __inline gpr_atm gpr_atm_full_fetch_add(gpr_atm *p, gpr_atm delta) { #ifdef GPR_ARCH_64 do { old = *p; - } while (old != (gpr_atm)InterlockedCompareExchange64((volatile LONGLONG *) p, - (LONGLONG) old + delta, - (LONGLONG) old)); + } while (old != (gpr_atm)InterlockedCompareExchange64((volatile LONGLONG *)p, + (LONGLONG)old + delta, + (LONGLONG)old)); #else do { old = *p; - } while (old != (gpr_atm)InterlockedCompareExchange((volatile LONG *) p, - (LONG) old + delta, - (LONG) old)); + } while (old != (gpr_atm)InterlockedCompareExchange( + (volatile LONG *)p, (LONG)old + delta, (LONG)old)); #endif return old; } -#endif /* GRPC_SUPPORT_ATM_WIN32_H */ +#endif /* GRPC_SUPPORT_ATM_WIN32_H */ diff --git a/include/grpc/support/cmdline.h b/include/grpc/support/cmdline.h index e5a266666e..028dac2955 100644 --- a/include/grpc/support/cmdline.h +++ b/include/grpc/support/cmdline.h @@ -94,4 +94,4 @@ char *gpr_cmdline_usage_string(gpr_cmdline *cl, const char *argv0); } #endif -#endif /* GRPC_SUPPORT_CMDLINE_H */ +#endif /* GRPC_SUPPORT_CMDLINE_H */ diff --git a/include/grpc/support/cpu.h b/include/grpc/support/cpu.h index 2b2a56168a..7d8af59911 100644 --- a/include/grpc/support/cpu.h +++ b/include/grpc/support/cpu.h @@ -54,4 +54,4 @@ unsigned gpr_cpu_current_cpu(void); } // extern "C" #endif -#endif /* GRPC_SUPPORT_CPU_H */ +#endif /* GRPC_SUPPORT_CPU_H */ diff --git a/include/grpc/support/histogram.h b/include/grpc/support/histogram.h index 64d08f0bf1..2fd1084208 100644 --- a/include/grpc/support/histogram.h +++ b/include/grpc/support/histogram.h @@ -73,4 +73,4 @@ void gpr_histogram_merge_contents(gpr_histogram *histogram, } #endif -#endif /* GRPC_SUPPORT_HISTOGRAM_H */ +#endif /* GRPC_SUPPORT_HISTOGRAM_H */ diff --git a/include/grpc/support/host_port.h b/include/grpc/support/host_port.h index 30267ab1df..375d1774e6 100644 --- a/include/grpc/support/host_port.h +++ b/include/grpc/support/host_port.h @@ -61,4 +61,4 @@ int gpr_split_host_port(const char *name, char **host, char **port); } #endif -#endif /* GRPC_SUPPORT_HOST_PORT_H */ +#endif /* GRPC_SUPPORT_HOST_PORT_H */ diff --git a/include/grpc/support/log.h b/include/grpc/support/log.h index aad4f235d2..59db4ba1dd 100644 --- a/include/grpc/support/log.h +++ b/include/grpc/support/log.h @@ -105,4 +105,4 @@ void gpr_set_log_function(gpr_log_func func); } #endif -#endif /* GRPC_SUPPORT_LOG_H */ +#endif /* GRPC_SUPPORT_LOG_H */ diff --git a/include/grpc/support/log_win32.h b/include/grpc/support/log_win32.h index 595a81a5af..ea6b16dd77 100644 --- a/include/grpc/support/log_win32.h +++ b/include/grpc/support/log_win32.h @@ -48,4 +48,4 @@ char *gpr_format_message(DWORD messageid); } #endif -#endif /* GRPC_SUPPORT_LOG_WIN32_H */ +#endif /* GRPC_SUPPORT_LOG_WIN32_H */ diff --git a/include/grpc/support/port_platform.h b/include/grpc/support/port_platform.h index d5745f9878..d09815557e 100644 --- a/include/grpc/support/port_platform.h +++ b/include/grpc/support/port_platform.h @@ -64,7 +64,8 @@ #undef GRPC_NOMINMAX_WAS_NOT_DEFINED #undef NOMINMAX #endif /* GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED */ -#endif /* defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32) */ +#endif /* defined(_WIN64) || defined(WIN64) || defined(_WIN32) || \ + defined(WIN32) */ /* Override this file with one for your platform if you need to redefine things. */ diff --git a/include/grpc/support/slice.h b/include/grpc/support/slice.h index ec6c117afe..3abb1b7ca1 100644 --- a/include/grpc/support/slice.h +++ b/include/grpc/support/slice.h @@ -96,7 +96,7 @@ typedef struct gpr_slice { #define GPR_SLICE_LENGTH(slice) \ ((slice).refcount ? (slice).data.refcounted.length \ : (slice).data.inlined.length) -#define GPR_SLICE_SET_LENGTH(slice, newlen) \ +#define GPR_SLICE_SET_LENGTH(slice, newlen) \ ((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \ : ((slice).data.inlined.length = (gpr_uint8)(newlen))) #define GPR_SLICE_END_PTR(slice) \ diff --git a/include/grpc/support/string_util.h b/include/grpc/support/string_util.h index 515709447b..109f9ffdf7 100644 --- a/include/grpc/support/string_util.h +++ b/include/grpc/support/string_util.h @@ -58,4 +58,4 @@ int gpr_asprintf(char **strp, const char *format, ...); } #endif -#endif /* GRPC_SUPPORT_STRING_UTIL_H */ +#endif /* GRPC_SUPPORT_STRING_UTIL_H */ diff --git a/include/grpc/support/subprocess.h b/include/grpc/support/subprocess.h index c884e5ef5e..654623fd09 100644 --- a/include/grpc/support/subprocess.h +++ b/include/grpc/support/subprocess.h @@ -36,7 +36,7 @@ #ifdef __cplusplus extern "C" { -#endif +#endif typedef struct gpr_subprocess gpr_subprocess; diff --git a/include/grpc/support/sync.h b/include/grpc/support/sync.h index 1dd826a828..172aea0217 100644 --- a/include/grpc/support/sync.h +++ b/include/grpc/support/sync.h @@ -312,4 +312,4 @@ gpr_intptr gpr_stats_read(const gpr_stats_counter *c); } #endif -#endif /* GRPC_SUPPORT_SYNC_H */ +#endif /* GRPC_SUPPORT_SYNC_H */ diff --git a/include/grpc/support/sync_generic.h b/include/grpc/support/sync_generic.h index bbd1b3ea2e..fd55e02ea8 100644 --- a/include/grpc/support/sync_generic.h +++ b/include/grpc/support/sync_generic.h @@ -38,24 +38,18 @@ #include <grpc/support/atm.h> /* gpr_event */ -typedef struct { - gpr_atm state; -} gpr_event; +typedef struct { gpr_atm state; } gpr_event; #define GPR_EVENT_INIT \ { 0 } /* gpr_refcount */ -typedef struct { - gpr_atm count; -} gpr_refcount; +typedef struct { gpr_atm count; } gpr_refcount; /* gpr_stats_counter */ -typedef struct { - gpr_atm value; -} gpr_stats_counter; +typedef struct { gpr_atm value; } gpr_stats_counter; #define GPR_STATS_INIT \ { 0 } -#endif /* GRPC_SUPPORT_SYNC_GENERIC_H */ +#endif /* GRPC_SUPPORT_SYNC_GENERIC_H */ diff --git a/include/grpc/support/sync_posix.h b/include/grpc/support/sync_posix.h index 762d9ebe3c..81ffa25900 100644 --- a/include/grpc/support/sync_posix.h +++ b/include/grpc/support/sync_posix.h @@ -44,4 +44,4 @@ typedef pthread_once_t gpr_once; #define GPR_ONCE_INIT PTHREAD_ONCE_INIT -#endif /* GRPC_SUPPORT_SYNC_POSIX_H */ +#endif /* GRPC_SUPPORT_SYNC_POSIX_H */ diff --git a/include/grpc/support/sync_win32.h b/include/grpc/support/sync_win32.h index 66b9af9074..8ddbeaab97 100644 --- a/include/grpc/support/sync_win32.h +++ b/include/grpc/support/sync_win32.h @@ -46,4 +46,4 @@ typedef CONDITION_VARIABLE gpr_cv; typedef INIT_ONCE gpr_once; #define GPR_ONCE_INIT INIT_ONCE_STATIC_INIT -#endif /* GRPC_SUPPORT_SYNC_WIN32_H */ +#endif /* GRPC_SUPPORT_SYNC_WIN32_H */ diff --git a/include/grpc/support/thd.h b/include/grpc/support/thd.h index 8126992d6b..d3265f25bd 100644 --- a/include/grpc/support/thd.h +++ b/include/grpc/support/thd.h @@ -88,4 +88,4 @@ void gpr_thd_join(gpr_thd_id t); } #endif -#endif /* GRPC_SUPPORT_THD_H */ +#endif /* GRPC_SUPPORT_THD_H */ diff --git a/include/grpc/support/time.h b/include/grpc/support/time.h index be59c37956..4ef9c76459 100644 --- a/include/grpc/support/time.h +++ b/include/grpc/support/time.h @@ -84,7 +84,8 @@ void gpr_time_init(void); gpr_timespec gpr_now(gpr_clock_type clock); /* Convert a timespec from one clock to another */ -gpr_timespec gpr_convert_clock_type(gpr_timespec t, gpr_clock_type target_clock); +gpr_timespec gpr_convert_clock_type(gpr_timespec t, + gpr_clock_type target_clock); /* Return -ve, 0, or +ve according to whether a < b, a == b, or a > b respectively. */ diff --git a/include/grpc/support/tls.h b/include/grpc/support/tls.h index 156280e47d..a4ebac56fd 100644 --- a/include/grpc/support/tls.h +++ b/include/grpc/support/tls.h @@ -47,7 +47,7 @@ GPR_TLS_DECL(foo); Thread locals always have static scope. - Initializing a thread local (must be done at library initialization + Initializing a thread local (must be done at library initialization time): gpr_tls_init(&foo); @@ -58,7 +58,7 @@ gpr_tls_set(&foo, new_value); Accessing a thread local: - current_value = gpr_tls_get(&foo, value); + current_value = gpr_tls_get(&foo, value); ALL functions here may be implemented as macros. */ diff --git a/include/grpc/support/tls_gcc.h b/include/grpc/support/tls_gcc.h index a078b104ea..1a02fb22d7 100644 --- a/include/grpc/support/tls_gcc.h +++ b/include/grpc/support/tls_gcc.h @@ -42,10 +42,14 @@ struct gpr_gcc_thread_local { }; #define GPR_TLS_DECL(name) \ - static __thread struct gpr_gcc_thread_local name = {0} + static __thread struct gpr_gcc_thread_local name = {0} -#define gpr_tls_init(tls) do {} while (0) -#define gpr_tls_destroy(tls) do {} while (0) +#define gpr_tls_init(tls) \ + do { \ + } while (0) +#define gpr_tls_destroy(tls) \ + do { \ + } while (0) #define gpr_tls_set(tls, new_value) (((tls)->value) = (new_value)) #define gpr_tls_get(tls) ((tls)->value) diff --git a/include/grpc/support/tls_msvc.h b/include/grpc/support/tls_msvc.h index 526aeeacdf..9997f8e4b0 100644 --- a/include/grpc/support/tls_msvc.h +++ b/include/grpc/support/tls_msvc.h @@ -42,10 +42,14 @@ struct gpr_msvc_thread_local { }; #define GPR_TLS_DECL(name) \ - static __declspec(thread) struct gpr_msvc_thread_local name = {0} + static __declspec(thread) struct gpr_msvc_thread_local name = {0} -#define gpr_tls_init(tls) do {} while (0) -#define gpr_tls_destroy(tls) do {} while (0) +#define gpr_tls_init(tls) \ + do { \ + } while (0) +#define gpr_tls_destroy(tls) \ + do { \ + } while (0) #define gpr_tls_set(tls, new_value) (((tls)->value) = (new_value)) #define gpr_tls_get(tls) ((tls)->value) diff --git a/include/grpc/support/useful.h b/include/grpc/support/useful.h index 3842611590..9f08d788c0 100644 --- a/include/grpc/support/useful.h +++ b/include/grpc/support/useful.h @@ -46,10 +46,10 @@ #define GPR_ARRAY_SIZE(array) (sizeof(array) / sizeof(*(array))) #define GPR_SWAP(type, a, b) \ - do { \ - type x = a; \ - a = b; \ - b = x; \ + do { \ + type x = a; \ + a = b; \ + b = x; \ } while (0) /** Set the \a n-th bit of \a i (a mutable pointer). */ @@ -72,4 +72,4 @@ 0x0f0f0f0f) % \ 255) -#endif /* GRPC_SUPPORT_USEFUL_H */ +#endif /* GRPC_SUPPORT_USEFUL_H */ diff --git a/src/core/channel/census_filter.h b/src/core/channel/census_filter.h index 4f9759f0db..1453c05d28 100644 --- a/src/core/channel/census_filter.h +++ b/src/core/channel/census_filter.h @@ -41,4 +41,4 @@ extern const grpc_channel_filter grpc_client_census_filter; extern const grpc_channel_filter grpc_server_census_filter; -#endif /* GRPC_INTERNAL_CORE_CHANNEL_CENSUS_FILTER_H */ +#endif /* GRPC_INTERNAL_CORE_CHANNEL_CENSUS_FILTER_H */ diff --git a/src/core/channel/client_channel.c b/src/core/channel/client_channel.c index 6c2e6b38a8..a73458821e 100644 --- a/src/core/channel/client_channel.c +++ b/src/core/channel/client_channel.c @@ -84,8 +84,10 @@ typedef struct { grpc_pollset_set pollset_set; } channel_data; -/** We create one watcher for each new lb_policy that is returned from a resolver, - to watch for state changes from the lb_policy. When a state change is seen, we +/** We create one watcher for each new lb_policy that is returned from a + resolver, + to watch for state changes from the lb_policy. When a state change is seen, + we update the channel, and create a new watcher */ typedef struct { channel_data *chand; @@ -380,7 +382,8 @@ static void perform_transport_stream_op(grpc_call_element *elem, if (lb_policy) { grpc_transport_stream_op *op = &calld->waiting_op; grpc_pollset *bind_pollset = op->bind_pollset; - grpc_metadata_batch *initial_metadata = &op->send_ops->ops[0].data.metadata; + grpc_metadata_batch *initial_metadata = + &op->send_ops->ops[0].data.metadata; GRPC_LB_POLICY_REF(lb_policy, "pick"); gpr_mu_unlock(&chand->mu_config); calld->state = CALL_WAITING_FOR_PICK; @@ -388,13 +391,14 @@ static void perform_transport_stream_op(grpc_call_element *elem, GPR_ASSERT(op->bind_pollset); GPR_ASSERT(op->send_ops); GPR_ASSERT(op->send_ops->nops >= 1); - GPR_ASSERT( - op->send_ops->ops[0].type == GRPC_OP_METADATA); + GPR_ASSERT(op->send_ops->ops[0].type == GRPC_OP_METADATA); gpr_mu_unlock(&calld->mu_state); - grpc_iomgr_closure_init(&calld->async_setup_task, picked_target, calld); + grpc_iomgr_closure_init(&calld->async_setup_task, picked_target, + calld); grpc_lb_policy_pick(lb_policy, bind_pollset, initial_metadata, - &calld->picked_channel, &calld->async_setup_task); + &calld->picked_channel, + &calld->async_setup_task); GRPC_LB_POLICY_UNREF(lb_policy, "pick"); } else if (chand->resolver != NULL) { @@ -430,7 +434,8 @@ static void cc_start_transport_stream_op(grpc_call_element *elem, perform_transport_stream_op(elem, op, 0); } -static void watch_lb_policy(channel_data *chand, grpc_lb_policy *lb_policy, grpc_connectivity_state current_state); +static void watch_lb_policy(channel_data *chand, grpc_lb_policy *lb_policy, + grpc_connectivity_state current_state); static void on_lb_policy_state_changed(void *arg, int iomgr_success) { lb_policy_connectivity_watcher *w = arg; @@ -450,7 +455,8 @@ static void on_lb_policy_state_changed(void *arg, int iomgr_success) { gpr_free(w); } -static void watch_lb_policy(channel_data *chand, grpc_lb_policy *lb_policy, grpc_connectivity_state current_state) { +static void watch_lb_policy(channel_data *chand, grpc_lb_policy *lb_policy, + grpc_connectivity_state current_state) { lb_policy_connectivity_watcher *w = gpr_malloc(sizeof(*w)); GRPC_CHANNEL_INTERNAL_REF(chand->master, "watch_lb_policy"); @@ -663,7 +669,8 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, grpc_iomgr_closure_init(&chand->on_config_changed, cc_on_config_changed, chand); - grpc_connectivity_state_init(&chand->state_tracker, GRPC_CHANNEL_IDLE, "client_channel"); + grpc_connectivity_state_init(&chand->state_tracker, GRPC_CHANNEL_IDLE, + "client_channel"); } /* Destructor for channel_data */ @@ -747,19 +754,20 @@ void grpc_client_channel_watch_connectivity_state( gpr_mu_unlock(&chand->mu_config); } -grpc_pollset_set *grpc_client_channel_get_connecting_pollset_set(grpc_channel_element *elem) { +grpc_pollset_set *grpc_client_channel_get_connecting_pollset_set( + grpc_channel_element *elem) { channel_data *chand = elem->channel_data; return &chand->pollset_set; } void grpc_client_channel_add_interested_party(grpc_channel_element *elem, - grpc_pollset *pollset) { + grpc_pollset *pollset) { channel_data *chand = elem->channel_data; grpc_pollset_set_add_pollset(&chand->pollset_set, pollset); } void grpc_client_channel_del_interested_party(grpc_channel_element *elem, - grpc_pollset *pollset) { + grpc_pollset *pollset) { channel_data *chand = elem->channel_data; grpc_pollset_set_del_pollset(&chand->pollset_set, pollset); } diff --git a/src/core/channel/client_channel.h b/src/core/channel/client_channel.h index cd81294eb3..13681e3956 100644 --- a/src/core/channel/client_channel.h +++ b/src/core/channel/client_channel.h @@ -59,11 +59,12 @@ void grpc_client_channel_watch_connectivity_state( grpc_channel_element *elem, grpc_connectivity_state *state, grpc_iomgr_closure *on_complete); -grpc_pollset_set *grpc_client_channel_get_connecting_pollset_set(grpc_channel_element *elem); +grpc_pollset_set *grpc_client_channel_get_connecting_pollset_set( + grpc_channel_element *elem); void grpc_client_channel_add_interested_party(grpc_channel_element *channel, - grpc_pollset *pollset); + grpc_pollset *pollset); void grpc_client_channel_del_interested_party(grpc_channel_element *channel, - grpc_pollset *pollset); + grpc_pollset *pollset); #endif /* GRPC_INTERNAL_CORE_CHANNEL_CLIENT_CHANNEL_H */ diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c index 2fd4c8cae6..20d723bbc1 100644 --- a/src/core/channel/compress_filter.c +++ b/src/core/channel/compress_filter.c @@ -53,7 +53,7 @@ typedef struct call_data { /** Compression algorithm we'll try to use. It may be given by incoming * metadata, or by the channel's default compression settings. */ grpc_compression_algorithm compression_algorithm; - /** If true, contents of \a compression_algorithm are authoritative */ + /** If true, contents of \a compression_algorithm are authoritative */ int has_compression_algorithm; } call_data; @@ -78,7 +78,7 @@ typedef struct channel_data { * * Returns 1 if the data was actually compress and 0 otherwise. */ static int compress_send_sb(grpc_compression_algorithm algorithm, - gpr_slice_buffer *slices) { + gpr_slice_buffer *slices) { int did_compress; gpr_slice_buffer tmp; gpr_slice_buffer_init(&tmp); @@ -93,7 +93,7 @@ static int compress_send_sb(grpc_compression_algorithm algorithm, /** For each \a md element from the incoming metadata, filter out the entry for * "grpc-encoding", using its value to populate the call data's * compression_algorithm field. */ -static grpc_mdelem* compression_md_filter(void *user_data, grpc_mdelem *md) { +static grpc_mdelem *compression_md_filter(void *user_data, grpc_mdelem *md) { grpc_call_element *elem = user_data; call_data *calld = elem->call_data; channel_data *channeld = elem->channel_data; @@ -115,10 +115,10 @@ static grpc_mdelem* compression_md_filter(void *user_data, grpc_mdelem *md) { static int skip_compression(channel_data *channeld, call_data *calld) { if (calld->has_compression_algorithm) { - if (calld->compression_algorithm == GRPC_COMPRESS_NONE) { - return 1; - } - return 0; /* we have an actual call-specific algorithm */ + if (calld->compression_algorithm == GRPC_COMPRESS_NONE) { + return 1; + } + return 0; /* we have an actual call-specific algorithm */ } /* no per-call compression override */ return channeld->default_compression_algorithm == GRPC_COMPRESS_NONE; @@ -191,7 +191,7 @@ static void process_send_ops(grpc_call_element *elem, * given by GRPC_OP_BEGIN_MESSAGE) */ calld->remaining_slice_bytes = sop->data.begin_message.length; if (sop->data.begin_message.flags & GRPC_WRITE_NO_COMPRESS) { - calld->has_compression_algorithm = 1; /* GPR_TRUE */ + calld->has_compression_algorithm = 1; /* GPR_TRUE */ calld->compression_algorithm = GRPC_COMPRESS_NONE; } break; @@ -293,7 +293,7 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, int is_first, int is_last) { channel_data *channeld = elem->channel_data; grpc_compression_algorithm algo_idx; - const char* supported_algorithms_names[GRPC_COMPRESS_ALGORITHMS_COUNT-1]; + const char *supported_algorithms_names[GRPC_COMPRESS_ALGORITHMS_COUNT - 1]; char *accept_encoding_str; size_t accept_encoding_str_len; @@ -318,23 +318,19 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, GRPC_MDSTR_REF(channeld->mdstr_outgoing_compression_algorithm_key), grpc_mdstr_from_string(mdctx, algorithm_name, 0)); if (algo_idx > 0) { - supported_algorithms_names[algo_idx-1] = algorithm_name; + supported_algorithms_names[algo_idx - 1] = algorithm_name; } } /* TODO(dgq): gpr_strjoin_sep could be made to work with statically allocated * arrays, as to avoid the heap allocs */ - accept_encoding_str = - gpr_strjoin_sep(supported_algorithms_names, - GPR_ARRAY_SIZE(supported_algorithms_names), - ", ", - &accept_encoding_str_len); - - channeld->mdelem_accept_encoding = - grpc_mdelem_from_metadata_strings( - mdctx, - GRPC_MDSTR_REF(channeld->mdstr_compression_capabilities_key), - grpc_mdstr_from_string(mdctx, accept_encoding_str, 0)); + accept_encoding_str = gpr_strjoin_sep( + supported_algorithms_names, GPR_ARRAY_SIZE(supported_algorithms_names), + ", ", &accept_encoding_str_len); + + channeld->mdelem_accept_encoding = grpc_mdelem_from_metadata_strings( + mdctx, GRPC_MDSTR_REF(channeld->mdstr_compression_capabilities_key), + grpc_mdstr_from_string(mdctx, accept_encoding_str, 0)); gpr_free(accept_encoding_str); GPR_ASSERT(!is_last); @@ -348,8 +344,7 @@ static void destroy_channel_elem(grpc_channel_element *elem) { GRPC_MDSTR_UNREF(channeld->mdstr_request_compression_algorithm_key); GRPC_MDSTR_UNREF(channeld->mdstr_outgoing_compression_algorithm_key); GRPC_MDSTR_UNREF(channeld->mdstr_compression_capabilities_key); - for (algo_idx = 0; algo_idx < GRPC_COMPRESS_ALGORITHMS_COUNT; - ++algo_idx) { + for (algo_idx = 0; algo_idx < GRPC_COMPRESS_ALGORITHMS_COUNT; ++algo_idx) { GRPC_MDELEM_UNREF(channeld->mdelem_compression_algorithms[algo_idx]); } GRPC_MDELEM_UNREF(channeld->mdelem_accept_encoding); diff --git a/src/core/channel/compress_filter.h b/src/core/channel/compress_filter.h index 0694e2c1dd..0917e81ca4 100644 --- a/src/core/channel/compress_filter.h +++ b/src/core/channel/compress_filter.h @@ -62,4 +62,4 @@ extern const grpc_channel_filter grpc_compress_filter; -#endif /* GRPC_INTERNAL_CORE_CHANNEL_COMPRESS_FILTER_H */ +#endif /* GRPC_INTERNAL_CORE_CHANNEL_COMPRESS_FILTER_H */ diff --git a/src/core/channel/http_client_filter.h b/src/core/channel/http_client_filter.h index 04eb839e00..21c66b9b8e 100644 --- a/src/core/channel/http_client_filter.h +++ b/src/core/channel/http_client_filter.h @@ -41,4 +41,4 @@ extern const grpc_channel_filter grpc_http_client_filter; #define GRPC_ARG_HTTP2_SCHEME "grpc.http2_scheme" -#endif /* GRPC_INTERNAL_CORE_CHANNEL_HTTP_CLIENT_FILTER_H */ +#endif /* GRPC_INTERNAL_CORE_CHANNEL_HTTP_CLIENT_FILTER_H */ diff --git a/src/core/channel/http_server_filter.h b/src/core/channel/http_server_filter.h index 42f76ed17f..f219d4e66f 100644 --- a/src/core/channel/http_server_filter.h +++ b/src/core/channel/http_server_filter.h @@ -39,4 +39,4 @@ /* Processes metadata on the client side for HTTP2 transports */ extern const grpc_channel_filter grpc_http_server_filter; -#endif /* GRPC_INTERNAL_CORE_CHANNEL_HTTP_SERVER_FILTER_H */ +#endif /* GRPC_INTERNAL_CORE_CHANNEL_HTTP_SERVER_FILTER_H */ diff --git a/src/core/channel/noop_filter.h b/src/core/channel/noop_filter.h index 96463e5322..ded9b33117 100644 --- a/src/core/channel/noop_filter.h +++ b/src/core/channel/noop_filter.h @@ -41,4 +41,4 @@ customize for their own filters */ extern const grpc_channel_filter grpc_no_op_filter; -#endif /* GRPC_INTERNAL_CORE_CHANNEL_NOOP_FILTER_H */ +#endif /* GRPC_INTERNAL_CORE_CHANNEL_NOOP_FILTER_H */ diff --git a/src/core/client_config/resolvers/dns_resolver.c b/src/core/client_config/resolvers/dns_resolver.c index 827b1a2be5..7b35b7902f 100644 --- a/src/core/client_config/resolvers/dns_resolver.c +++ b/src/core/client_config/resolvers/dns_resolver.c @@ -219,7 +219,8 @@ static grpc_resolver *dns_create( default_host_arg.type = GRPC_ARG_STRING; default_host_arg.key = GRPC_ARG_DEFAULT_AUTHORITY; default_host_arg.value.string = host; - subchannel_factory = grpc_subchannel_factory_add_channel_arg(subchannel_factory, &default_host_arg); + subchannel_factory = grpc_subchannel_factory_add_channel_arg( + subchannel_factory, &default_host_arg); gpr_free(host); gpr_free(port); diff --git a/src/core/client_config/resolvers/zookeeper_resolver.c b/src/core/client_config/resolvers/zookeeper_resolver.c index a8397a3da1..acb2ba136e 100644 --- a/src/core/client_config/resolvers/zookeeper_resolver.c +++ b/src/core/client_config/resolvers/zookeeper_resolver.c @@ -142,7 +142,7 @@ static void zookeeper_next(grpc_resolver *resolver, gpr_mu_unlock(&r->mu); } -/** Zookeeper global watcher for connection management +/** Zookeeper global watcher for connection management TODO: better connection management besides logs */ static void zookeeper_global_watcher(zhandle_t *zookeeper_handle, int type, int state, const char *path, @@ -172,7 +172,7 @@ static void zookeeper_watcher(zhandle_t *zookeeper_handle, int type, int state, } } -/** Callback function after getting all resolved addresses +/** Callback function after getting all resolved addresses Creates a subchannel for each address */ static void zookeeper_on_resolved(void *arg, grpc_resolved_addresses *addresses) { @@ -249,7 +249,7 @@ static char *zookeeper_parse_address(const char *value, int value_len) { grpc_json *cur; const char *host; const char *port; - char* buffer; + char *buffer; char *address = NULL; buffer = gpr_malloc(value_len); @@ -449,7 +449,7 @@ static grpc_resolver *zookeeper_create( gpr_mu_init(&r->mu); grpc_resolver_init(&r->base, &zookeeper_resolver_vtable); r->name = gpr_strdup(path); - + r->subchannel_factory = subchannel_factory; r->lb_policy_factory = lb_policy_factory; grpc_subchannel_factory_ref(subchannel_factory); diff --git a/src/core/client_config/subchannel_factory_decorators/add_channel_arg.c b/src/core/client_config/subchannel_factory_decorators/add_channel_arg.c index 7dc6d99ebe..585e465fa4 100644 --- a/src/core/client_config/subchannel_factory_decorators/add_channel_arg.c +++ b/src/core/client_config/subchannel_factory_decorators/add_channel_arg.c @@ -35,9 +35,9 @@ #include "src/core/client_config/subchannel_factory_decorators/merge_channel_args.h" grpc_subchannel_factory *grpc_subchannel_factory_add_channel_arg( - grpc_subchannel_factory *input, const grpc_arg *arg) { - grpc_channel_args args; - args.num_args = 1; - args.args = (grpc_arg *)arg; - return grpc_subchannel_factory_merge_channel_args(input, &args); + grpc_subchannel_factory *input, const grpc_arg *arg) { + grpc_channel_args args; + args.num_args = 1; + args.args = (grpc_arg *)arg; + return grpc_subchannel_factory_merge_channel_args(input, &args); } diff --git a/src/core/client_config/subchannel_factory_decorators/add_channel_arg.h b/src/core/client_config/subchannel_factory_decorators/add_channel_arg.h index 1937623374..8457294000 100644 --- a/src/core/client_config/subchannel_factory_decorators/add_channel_arg.h +++ b/src/core/client_config/subchannel_factory_decorators/add_channel_arg.h @@ -40,6 +40,7 @@ channel_args by adding a new argument; ownership of input, arg is retained by the caller. */ grpc_subchannel_factory *grpc_subchannel_factory_add_channel_arg( - grpc_subchannel_factory *input, const grpc_arg *arg); + grpc_subchannel_factory *input, const grpc_arg *arg); -#endif /* GRPC_INTERNAL_CORE_CLIENT_CONFIG_SUBCHANNEL_FACTORY_DECORATORS_ADD_CHANNEL_ARG_H */ +#endif /* GRPC_INTERNAL_CORE_CLIENT_CONFIG_SUBCHANNEL_FACTORY_DECORATORS_ADD_CHANNEL_ARG_H \ + */ diff --git a/src/core/client_config/subchannel_factory_decorators/merge_channel_args.c b/src/core/client_config/subchannel_factory_decorators/merge_channel_args.c index 7e028857ac..c1b5507fde 100644 --- a/src/core/client_config/subchannel_factory_decorators/merge_channel_args.c +++ b/src/core/client_config/subchannel_factory_decorators/merge_channel_args.c @@ -50,7 +50,7 @@ static void merge_args_factory_ref(grpc_subchannel_factory *scf) { static void merge_args_factory_unref(grpc_subchannel_factory *scf) { merge_args_factory *f = (merge_args_factory *)scf; if (gpr_unref(&f->refs)) { - grpc_subchannel_factory_unref(f->wrapped); + grpc_subchannel_factory_unref(f->wrapped); grpc_channel_args_destroy(f->merge_args); gpr_free(f); } @@ -73,7 +73,7 @@ static const grpc_subchannel_factory_vtable merge_args_factory_vtable = { merge_args_factory_create_subchannel}; grpc_subchannel_factory *grpc_subchannel_factory_merge_channel_args( - grpc_subchannel_factory *input, const grpc_channel_args *args) { + grpc_subchannel_factory *input, const grpc_channel_args *args) { merge_args_factory *f = gpr_malloc(sizeof(*f)); f->base.vtable = &merge_args_factory_vtable; gpr_ref_init(&f->refs, 1); diff --git a/src/core/client_config/subchannel_factory_decorators/merge_channel_args.h b/src/core/client_config/subchannel_factory_decorators/merge_channel_args.h index 73a03b752f..f4757f0650 100644 --- a/src/core/client_config/subchannel_factory_decorators/merge_channel_args.h +++ b/src/core/client_config/subchannel_factory_decorators/merge_channel_args.h @@ -40,6 +40,7 @@ channel_args by adding a new argument; ownership of input, args is retained by the caller. */ grpc_subchannel_factory *grpc_subchannel_factory_merge_channel_args( - grpc_subchannel_factory *input, const grpc_channel_args *args); + grpc_subchannel_factory *input, const grpc_channel_args *args); -#endif /* GRPC_INTERNAL_CORE_CLIENT_CONFIG_SUBCHANNEL_FACTORY_DECORATORS_MERGE_CHANNEL_ARGS_H */ +#endif /* GRPC_INTERNAL_CORE_CLIENT_CONFIG_SUBCHANNEL_FACTORY_DECORATORS_MERGE_CHANNEL_ARGS_H \ + */ diff --git a/src/core/compression/algorithm.c b/src/core/compression/algorithm.c index 8d4f3b9c76..6ed6dbe93f 100644 --- a/src/core/compression/algorithm.c +++ b/src/core/compression/algorithm.c @@ -35,7 +35,7 @@ #include <string.h> #include <grpc/compression.h> -int grpc_compression_algorithm_parse(const char* name, size_t name_length, +int grpc_compression_algorithm_parse(const char *name, size_t name_length, grpc_compression_algorithm *algorithm) { /* we use strncmp not only because it's safer (even though in this case it * doesn't matter, given that we are comparing against string literals, but diff --git a/src/core/debug/trace.c b/src/core/debug/trace.c index b53dfe804b..1014b1f4db 100644 --- a/src/core/debug/trace.c +++ b/src/core/debug/trace.c @@ -61,8 +61,8 @@ static void add(const char *beg, const char *end, char ***ss, size_t *ns) { size_t np = n + 1; char *s = gpr_malloc(end - beg + 1); memcpy(s, beg, end - beg); - s[end-beg] = 0; - *ss = gpr_realloc(*ss, sizeof(char**) * np); + s[end - beg] = 0; + *ss = gpr_realloc(*ss, sizeof(char **) * np); (*ss)[n] = s; *ns = np; } @@ -73,7 +73,7 @@ static void split(const char *s, char ***ss, size_t *ns) { add(s, s + strlen(s), ss, ns); } else { add(s, c, ss, ns); - split(c+1, ss, ns); + split(c + 1, ss, ns); } } @@ -125,7 +125,7 @@ int grpc_tracer_set_enabled(const char *name, int enabled) { } if (!found) { gpr_log(GPR_ERROR, "Unknown trace var: '%s'", name); - return 0; /* early return */ + return 0; /* early return */ } } return 1; diff --git a/src/core/debug/trace.h b/src/core/debug/trace.h index fc8615bc69..dc5875976e 100644 --- a/src/core/debug/trace.h +++ b/src/core/debug/trace.h @@ -40,4 +40,4 @@ void grpc_register_tracer(const char *name, int *flag); void grpc_tracer_init(const char *env_var_name); void grpc_tracer_shutdown(void); -#endif /* GRPC_INTERNAL_CORE_DEBUG_TRACE_H */ +#endif /* GRPC_INTERNAL_CORE_DEBUG_TRACE_H */ diff --git a/src/core/httpcli/format_request.c b/src/core/httpcli/format_request.c index e875423e87..6189fce86b 100644 --- a/src/core/httpcli/format_request.c +++ b/src/core/httpcli/format_request.c @@ -43,7 +43,8 @@ #include <grpc/support/string_util.h> #include <grpc/support/useful.h> -static void fill_common_header(const grpc_httpcli_request *request, gpr_strvec *buf) { +static void fill_common_header(const grpc_httpcli_request *request, + gpr_strvec *buf) { size_t i; gpr_strvec_add(buf, gpr_strdup(request->path)); gpr_strvec_add(buf, gpr_strdup(" HTTP/1.0\r\n")); @@ -52,7 +53,8 @@ static void fill_common_header(const grpc_httpcli_request *request, gpr_strvec * gpr_strvec_add(buf, gpr_strdup(request->host)); gpr_strvec_add(buf, gpr_strdup("\r\n")); gpr_strvec_add(buf, gpr_strdup("Connection: close\r\n")); - gpr_strvec_add(buf, gpr_strdup("User-Agent: "GRPC_HTTPCLI_USER_AGENT"\r\n")); + gpr_strvec_add(buf, + gpr_strdup("User-Agent: " GRPC_HTTPCLI_USER_AGENT "\r\n")); /* user supplied headers */ for (i = 0; i < request->hdr_count; i++) { gpr_strvec_add(buf, gpr_strdup(request->hdrs[i].key)); diff --git a/src/core/httpcli/format_request.h b/src/core/httpcli/format_request.h index 8bfb20bfd0..c8dc8f7d4e 100644 --- a/src/core/httpcli/format_request.h +++ b/src/core/httpcli/format_request.h @@ -42,4 +42,4 @@ gpr_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request, const char *body_bytes, size_t body_size); -#endif /* GRPC_INTERNAL_CORE_HTTPCLI_FORMAT_REQUEST_H */ +#endif /* GRPC_INTERNAL_CORE_HTTPCLI_FORMAT_REQUEST_H */ diff --git a/src/core/httpcli/parser.h b/src/core/httpcli/parser.h index 71280e7479..3fbb4c7479 100644 --- a/src/core/httpcli/parser.h +++ b/src/core/httpcli/parser.h @@ -61,4 +61,4 @@ void grpc_httpcli_parser_destroy(grpc_httpcli_parser *parser); int grpc_httpcli_parser_parse(grpc_httpcli_parser *parser, gpr_slice slice); int grpc_httpcli_parser_eof(grpc_httpcli_parser *parser); -#endif /* GRPC_INTERNAL_CORE_HTTPCLI_PARSER_H */ +#endif /* GRPC_INTERNAL_CORE_HTTPCLI_PARSER_H */ diff --git a/src/core/iomgr/alarm.c b/src/core/iomgr/alarm.c index 68d33b9cf6..ddb30dc4bb 100644 --- a/src/core/iomgr/alarm.c +++ b/src/core/iomgr/alarm.c @@ -105,8 +105,7 @@ void grpc_alarm_list_init(gpr_timespec now) { void grpc_alarm_list_shutdown(void) { int i; - while (run_some_expired_alarms(NULL, gpr_inf_future(g_clock_type), NULL, - 0)) + while (run_some_expired_alarms(NULL, gpr_inf_future(g_clock_type), NULL, 0)) ; for (i = 0; i < NUM_SHARDS; i++) { shard_type *shard = &g_shards[i]; @@ -362,7 +361,7 @@ static int run_some_expired_alarms(gpr_mu *drop_mu, gpr_timespec now, int grpc_alarm_check(gpr_mu *drop_mu, gpr_timespec now, gpr_timespec *next) { GPR_ASSERT(now.clock_type == g_clock_type); return run_some_expired_alarms( - drop_mu, now, next, + drop_mu, now, next, gpr_time_cmp(now, gpr_inf_future(now.clock_type)) != 0); } diff --git a/src/core/iomgr/alarm.h b/src/core/iomgr/alarm.h index c067a0b8a3..4a13527e64 100644 --- a/src/core/iomgr/alarm.h +++ b/src/core/iomgr/alarm.h @@ -86,4 +86,4 @@ void grpc_alarm_init(grpc_alarm *alarm, gpr_timespec deadline, Requires: cancel() must happen after add() on a given alarm */ void grpc_alarm_cancel(grpc_alarm *alarm); -#endif /* GRPC_INTERNAL_CORE_IOMGR_ALARM_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_ALARM_H */ diff --git a/src/core/iomgr/alarm_heap.c b/src/core/iomgr/alarm_heap.c index d912178fda..daed251982 100644 --- a/src/core/iomgr/alarm_heap.c +++ b/src/core/iomgr/alarm_heap.c @@ -66,11 +66,11 @@ static void adjust_downwards(grpc_alarm **first, int i, int length, int next_i; if (left_child >= length) break; right_child = left_child + 1; - next_i = - right_child < length && gpr_time_cmp(first[left_child]->deadline, - first[right_child]->deadline) < 0 - ? right_child - : left_child; + next_i = right_child < length && + gpr_time_cmp(first[left_child]->deadline, + first[right_child]->deadline) < 0 + ? right_child + : left_child; if (gpr_time_cmp(t->deadline, first[next_i]->deadline) >= 0) break; first[i] = first[next_i]; first[i]->heap_index = i; diff --git a/src/core/iomgr/alarm_heap.h b/src/core/iomgr/alarm_heap.h index c5adfc6d31..60db6c991b 100644 --- a/src/core/iomgr/alarm_heap.h +++ b/src/core/iomgr/alarm_heap.h @@ -54,4 +54,4 @@ void grpc_alarm_heap_pop(grpc_alarm_heap *heap); int grpc_alarm_heap_is_empty(grpc_alarm_heap *heap); -#endif /* GRPC_INTERNAL_CORE_IOMGR_ALARM_HEAP_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_ALARM_HEAP_H */ diff --git a/src/core/iomgr/alarm_internal.h b/src/core/iomgr/alarm_internal.h index 0268a01bad..e9f98a3444 100644 --- a/src/core/iomgr/alarm_internal.h +++ b/src/core/iomgr/alarm_internal.h @@ -59,4 +59,4 @@ gpr_timespec grpc_alarm_list_next_timeout(void); void grpc_kick_poller(void); -#endif /* GRPC_INTERNAL_CORE_IOMGR_ALARM_INTERNAL_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_ALARM_INTERNAL_H */ diff --git a/src/core/iomgr/endpoint.c b/src/core/iomgr/endpoint.c index 744fe7656c..8ee14bce9b 100644 --- a/src/core/iomgr/endpoint.c +++ b/src/core/iomgr/endpoint.c @@ -50,7 +50,8 @@ void grpc_endpoint_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset) { ep->vtable->add_to_pollset(ep, pollset); } -void grpc_endpoint_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pollset_set) { +void grpc_endpoint_add_to_pollset_set(grpc_endpoint *ep, + grpc_pollset_set *pollset_set) { ep->vtable->add_to_pollset_set(ep, pollset_set); } diff --git a/src/core/iomgr/endpoint.h b/src/core/iomgr/endpoint.h index a2216925f9..ea92a500e8 100644 --- a/src/core/iomgr/endpoint.h +++ b/src/core/iomgr/endpoint.h @@ -103,10 +103,11 @@ void grpc_endpoint_destroy(grpc_endpoint *ep); /* Add an endpoint to a pollset, so that when the pollset is polled, events from this endpoint are considered */ void grpc_endpoint_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset); -void grpc_endpoint_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pollset_set); +void grpc_endpoint_add_to_pollset_set(grpc_endpoint *ep, + grpc_pollset_set *pollset_set); struct grpc_endpoint { const grpc_endpoint_vtable *vtable; }; -#endif /* GRPC_INTERNAL_CORE_IOMGR_ENDPOINT_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_ENDPOINT_H */ diff --git a/src/core/iomgr/endpoint_pair.h b/src/core/iomgr/endpoint_pair.h index 25087be0c7..095ec5fcc9 100644 --- a/src/core/iomgr/endpoint_pair.h +++ b/src/core/iomgr/endpoint_pair.h @@ -44,4 +44,4 @@ typedef struct { grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char *name, size_t read_slice_size); -#endif /* GRPC_INTERNAL_CORE_IOMGR_ENDPOINT_PAIR_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_ENDPOINT_PAIR_H */ diff --git a/src/core/iomgr/endpoint_pair_windows.c b/src/core/iomgr/endpoint_pair_windows.c index e8295df8b3..db9d092dca 100644 --- a/src/core/iomgr/endpoint_pair_windows.c +++ b/src/core/iomgr/endpoint_pair_windows.c @@ -52,21 +52,26 @@ static void create_sockets(SOCKET sv[2]) { SOCKADDR_IN addr; int addr_len = sizeof(addr); - lst_sock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED); + lst_sock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, + WSA_FLAG_OVERLAPPED); GPR_ASSERT(lst_sock != INVALID_SOCKET); memset(&addr, 0, sizeof(addr)); addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); addr.sin_family = AF_INET; - GPR_ASSERT(bind(lst_sock, (struct sockaddr*)&addr, sizeof(addr)) != SOCKET_ERROR); + GPR_ASSERT(bind(lst_sock, (struct sockaddr *)&addr, sizeof(addr)) != + SOCKET_ERROR); GPR_ASSERT(listen(lst_sock, SOMAXCONN) != SOCKET_ERROR); - GPR_ASSERT(getsockname(lst_sock, (struct sockaddr*)&addr, &addr_len) != SOCKET_ERROR); + GPR_ASSERT(getsockname(lst_sock, (struct sockaddr *)&addr, &addr_len) != + SOCKET_ERROR); - cli_sock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED); + cli_sock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, + WSA_FLAG_OVERLAPPED); GPR_ASSERT(cli_sock != INVALID_SOCKET); - GPR_ASSERT(WSAConnect(cli_sock, (struct sockaddr*)&addr, addr_len, NULL, NULL, NULL, NULL) == 0); - svr_sock = accept(lst_sock, (struct sockaddr*)&addr, &addr_len); + GPR_ASSERT(WSAConnect(cli_sock, (struct sockaddr *)&addr, addr_len, NULL, + NULL, NULL, NULL) == 0); + svr_sock = accept(lst_sock, (struct sockaddr *)&addr, &addr_len); GPR_ASSERT(svr_sock != INVALID_SOCKET); closesocket(lst_sock); @@ -77,7 +82,8 @@ static void create_sockets(SOCKET sv[2]) { sv[0] = svr_sock; } -grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char *name, size_t read_slice_size) { +grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char *name, + size_t read_slice_size) { SOCKET sv[2]; grpc_endpoint_pair p; create_sockets(sv); diff --git a/src/core/iomgr/iocp_windows.c b/src/core/iomgr/iocp_windows.c index 8741241fb8..09a457dd9a 100644 --- a/src/core/iomgr/iocp_windows.c +++ b/src/core/iomgr/iocp_windows.c @@ -65,18 +65,17 @@ static void do_iocp_work() { LPOVERLAPPED overlapped; grpc_winsocket *socket; grpc_winsocket_callback_info *info; - void(*f)(void *, int) = NULL; + void (*f)(void *, int) = NULL; void *opaque = NULL; - success = GetQueuedCompletionStatus(g_iocp, &bytes, - &completion_key, &overlapped, - INFINITE); + success = GetQueuedCompletionStatus(g_iocp, &bytes, &completion_key, + &overlapped, INFINITE); /* success = 0 and overlapped = NULL means the deadline got attained. Which is impossible. since our wait time is +inf */ GPR_ASSERT(success || overlapped); GPR_ASSERT(completion_key && overlapped); if (overlapped == &g_iocp_custom_overlap) { gpr_atm_full_fetch_add(&g_custom_events, -1); - if (completion_key == (ULONG_PTR) &g_iocp_kick_token) { + if (completion_key == (ULONG_PTR)&g_iocp_kick_token) { /* We were awoken from a kick. */ return; } @@ -84,7 +83,7 @@ static void do_iocp_work() { abort(); } - socket = (grpc_winsocket*) completion_key; + socket = (grpc_winsocket *)completion_key; if (overlapped == &socket->write_info.overlapped) { info = &socket->write_info; } else if (overlapped == &socket->read_info.overlapped) { @@ -121,8 +120,7 @@ static void do_iocp_work() { } static void iocp_loop(void *p) { - while (gpr_atm_acq_load(&g_orphans) || - gpr_atm_acq_load(&g_custom_events) || + while (gpr_atm_acq_load(&g_orphans) || gpr_atm_acq_load(&g_custom_events) || !gpr_event_get(&g_shutdown_iocp)) { grpc_maybe_call_delayed_callbacks(NULL, 1); do_iocp_work(); @@ -134,8 +132,8 @@ static void iocp_loop(void *p) { void grpc_iocp_init(void) { gpr_thd_id id; - g_iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, - NULL, (ULONG_PTR)NULL, 0); + g_iocp = + CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, (ULONG_PTR)NULL, 0); GPR_ASSERT(g_iocp); gpr_event_init(&g_iocp_done); @@ -147,8 +145,7 @@ void grpc_iocp_kick(void) { BOOL success; gpr_atm_full_fetch_add(&g_custom_events, 1); - success = PostQueuedCompletionStatus(g_iocp, 0, - (ULONG_PTR) &g_iocp_kick_token, + success = PostQueuedCompletionStatus(g_iocp, 0, (ULONG_PTR)&g_iocp_kick_token, &g_iocp_custom_overlap); GPR_ASSERT(success); } @@ -165,8 +162,8 @@ void grpc_iocp_shutdown(void) { void grpc_iocp_add_socket(grpc_winsocket *socket) { HANDLE ret; if (socket->added_to_iocp) return; - ret = CreateIoCompletionPort((HANDLE)socket->socket, - g_iocp, (gpr_uintptr) socket, 0); + ret = CreateIoCompletionPort((HANDLE)socket->socket, g_iocp, + (gpr_uintptr)socket, 0); if (!ret) { char *utf8_message = gpr_format_message(WSAGetLastError()); gpr_log(GPR_ERROR, "Unable to add socket to iocp: %s", utf8_message); @@ -189,7 +186,7 @@ void grpc_iocp_socket_orphan(grpc_winsocket *socket) { the callback now. -) The IOCP hasn't completed yet, and we're queuing it for later. */ static void socket_notify_on_iocp(grpc_winsocket *socket, - void(*cb)(void *, int), void *opaque, + void (*cb)(void *, int), void *opaque, grpc_winsocket_callback_info *info) { int run_now = 0; GPR_ASSERT(!info->cb); @@ -206,13 +203,13 @@ static void socket_notify_on_iocp(grpc_winsocket *socket, } void grpc_socket_notify_on_write(grpc_winsocket *socket, - void(*cb)(void *, int), void *opaque) { + void (*cb)(void *, int), void *opaque) { socket_notify_on_iocp(socket, cb, opaque, &socket->write_info); } -void grpc_socket_notify_on_read(grpc_winsocket *socket, - void(*cb)(void *, int), void *opaque) { +void grpc_socket_notify_on_read(grpc_winsocket *socket, void (*cb)(void *, int), + void *opaque) { socket_notify_on_iocp(socket, cb, opaque, &socket->read_info); } -#endif /* GPR_WINSOCK_SOCKET */ +#endif /* GPR_WINSOCK_SOCKET */ diff --git a/src/core/iomgr/iocp_windows.h b/src/core/iomgr/iocp_windows.h index 9df6476917..ee3847a229 100644 --- a/src/core/iomgr/iocp_windows.h +++ b/src/core/iomgr/iocp_windows.h @@ -44,10 +44,10 @@ void grpc_iocp_shutdown(void); void grpc_iocp_add_socket(grpc_winsocket *); void grpc_iocp_socket_orphan(grpc_winsocket *); -void grpc_socket_notify_on_write(grpc_winsocket *, void(*cb)(void *, int success), - void *opaque); +void grpc_socket_notify_on_write(grpc_winsocket *, + void (*cb)(void *, int success), void *opaque); -void grpc_socket_notify_on_read(grpc_winsocket *, void(*cb)(void *, int success), - void *opaque); +void grpc_socket_notify_on_read(grpc_winsocket *, + void (*cb)(void *, int success), void *opaque); -#endif /* GRPC_INTERNAL_CORE_IOMGR_IOCP_WINDOWS_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_IOCP_WINDOWS_H */ diff --git a/src/core/iomgr/iomgr.h b/src/core/iomgr/iomgr.h index 6d4a82917b..261c17366a 100644 --- a/src/core/iomgr/iomgr.h +++ b/src/core/iomgr/iomgr.h @@ -77,4 +77,4 @@ void grpc_iomgr_add_callback(grpc_iomgr_closure *closure); argument. */ void grpc_iomgr_add_delayed_callback(grpc_iomgr_closure *iocb, int success); -#endif /* GRPC_INTERNAL_CORE_IOMGR_IOMGR_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_IOMGR_H */ diff --git a/src/core/iomgr/iomgr_internal.h b/src/core/iomgr/iomgr_internal.h index 6c1e0e1799..4cec973ba0 100644 --- a/src/core/iomgr/iomgr_internal.h +++ b/src/core/iomgr/iomgr_internal.h @@ -52,4 +52,4 @@ void grpc_iomgr_unregister_object(grpc_iomgr_object *obj); void grpc_iomgr_platform_init(void); void grpc_iomgr_platform_shutdown(void); -#endif /* GRPC_INTERNAL_CORE_IOMGR_IOMGR_INTERNAL_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_IOMGR_INTERNAL_H */ diff --git a/src/core/iomgr/iomgr_posix.c b/src/core/iomgr/iomgr_posix.c index 758ae77b86..2425e59941 100644 --- a/src/core/iomgr/iomgr_posix.c +++ b/src/core/iomgr/iomgr_posix.c @@ -51,4 +51,4 @@ void grpc_iomgr_platform_shutdown(void) { grpc_fd_global_shutdown(); } -#endif /* GRPC_POSIX_SOCKET */ +#endif /* GRPC_POSIX_SOCKET */ diff --git a/src/core/iomgr/iomgr_posix.h b/src/core/iomgr/iomgr_posix.h index a404f6433e..716fedb636 100644 --- a/src/core/iomgr/iomgr_posix.h +++ b/src/core/iomgr/iomgr_posix.h @@ -39,4 +39,4 @@ void grpc_pollset_global_init(void); void grpc_pollset_global_shutdown(void); -#endif /* GRPC_INTERNAL_CORE_IOMGR_IOMGR_POSIX_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_IOMGR_POSIX_H */ diff --git a/src/core/iomgr/iomgr_windows.c b/src/core/iomgr/iomgr_windows.c index 74cd5a829b..b49cb87e97 100644 --- a/src/core/iomgr/iomgr_windows.c +++ b/src/core/iomgr/iomgr_windows.c @@ -68,4 +68,4 @@ void grpc_iomgr_platform_shutdown(void) { winsock_shutdown(); } -#endif /* GRPC_WINSOCK_SOCKET */ +#endif /* GRPC_WINSOCK_SOCKET */ diff --git a/src/core/iomgr/pollset_multipoller_with_epoll.c b/src/core/iomgr/pollset_multipoller_with_epoll.c index 1320c64579..5ea9dd2101 100644 --- a/src/core/iomgr/pollset_multipoller_with_epoll.c +++ b/src/core/iomgr/pollset_multipoller_with_epoll.c @@ -234,8 +234,7 @@ static void multipoll_with_epoll_pollset_destroy(grpc_pollset *pollset) { } static const grpc_pollset_vtable multipoll_with_epoll_pollset = { - multipoll_with_epoll_pollset_add_fd, - multipoll_with_epoll_pollset_del_fd, + multipoll_with_epoll_pollset_add_fd, multipoll_with_epoll_pollset_del_fd, multipoll_with_epoll_pollset_maybe_work, multipoll_with_epoll_pollset_finish_shutdown, multipoll_with_epoll_pollset_destroy}; diff --git a/src/core/iomgr/pollset_multipoller_with_poll_posix.c b/src/core/iomgr/pollset_multipoller_with_poll_posix.c index b5b2d7534d..001fcecf76 100644 --- a/src/core/iomgr/pollset_multipoller_with_poll_posix.c +++ b/src/core/iomgr/pollset_multipoller_with_poll_posix.c @@ -74,7 +74,7 @@ static void multipoll_with_poll_pollset_add_fd(grpc_pollset *pollset, } h->fds[h->fd_count++] = fd; GRPC_FD_REF(fd, "multipoller"); -exit: +exit: if (and_unlock_pollset) { gpr_mu_unlock(&pollset->mu); } @@ -202,8 +202,7 @@ static void multipoll_with_poll_pollset_destroy(grpc_pollset *pollset) { } static const grpc_pollset_vtable multipoll_with_poll_pollset = { - multipoll_with_poll_pollset_add_fd, - multipoll_with_poll_pollset_del_fd, + multipoll_with_poll_pollset_add_fd, multipoll_with_poll_pollset_del_fd, multipoll_with_poll_pollset_maybe_work, multipoll_with_poll_pollset_finish_shutdown, multipoll_with_poll_pollset_destroy}; diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index d3a9193af1..a01f9ff727 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -140,10 +140,10 @@ void grpc_pollset_init(grpc_pollset *pollset) { void grpc_pollset_add_fd(grpc_pollset *pollset, grpc_fd *fd) { gpr_mu_lock(&pollset->mu); pollset->vtable->add_fd(pollset, fd, 1); - /* the following (enabled only in debug) will reacquire and then release - our lock - meaning that if the unlocking flag passed to del_fd above is - not respected, the code will deadlock (in a way that we have a chance of - debugging) */ +/* the following (enabled only in debug) will reacquire and then release + our lock - meaning that if the unlocking flag passed to del_fd above is + not respected, the code will deadlock (in a way that we have a chance of + debugging) */ #ifndef NDEBUG gpr_mu_lock(&pollset->mu); gpr_mu_unlock(&pollset->mu); @@ -153,10 +153,10 @@ void grpc_pollset_add_fd(grpc_pollset *pollset, grpc_fd *fd) { void grpc_pollset_del_fd(grpc_pollset *pollset, grpc_fd *fd) { gpr_mu_lock(&pollset->mu); pollset->vtable->del_fd(pollset, fd, 1); - /* the following (enabled only in debug) will reacquire and then release - our lock - meaning that if the unlocking flag passed to del_fd above is - not respected, the code will deadlock (in a way that we have a chance of - debugging) */ +/* the following (enabled only in debug) will reacquire and then release + our lock - meaning that if the unlocking flag passed to del_fd above is + not respected, the code will deadlock (in a way that we have a chance of + debugging) */ #ifndef NDEBUG gpr_mu_lock(&pollset->mu); gpr_mu_unlock(&pollset->mu); diff --git a/src/core/iomgr/pollset_posix.h b/src/core/iomgr/pollset_posix.h index 1c1b736193..a3ea353de6 100644 --- a/src/core/iomgr/pollset_posix.h +++ b/src/core/iomgr/pollset_posix.h @@ -102,7 +102,8 @@ void grpc_kick_drain(grpc_pollset *p); - longer than a millisecond polls are rounded up to the next nearest millisecond to avoid spinning - infinite timeouts are converted to -1 */ -int grpc_poll_deadline_to_millis_timeout(gpr_timespec deadline, gpr_timespec now); +int grpc_poll_deadline_to_millis_timeout(gpr_timespec deadline, + gpr_timespec now); /* turn a pollset into a multipoller: platform specific */ typedef void (*grpc_platform_become_multipoller_type)(grpc_pollset *pollset, diff --git a/src/core/iomgr/pollset_windows.c b/src/core/iomgr/pollset_windows.c index 22dc5891c3..8710395ab3 100644 --- a/src/core/iomgr/pollset_windows.c +++ b/src/core/iomgr/pollset_windows.c @@ -56,8 +56,7 @@ static grpc_pollset_worker *pop_front_worker(grpc_pollset *p) { grpc_pollset_worker *w = p->root_worker.next; remove_worker(p, w); return w; - } - else { + } else { return NULL; } } @@ -100,7 +99,8 @@ void grpc_pollset_destroy(grpc_pollset *pollset) { gpr_mu_destroy(&pollset->mu); } -int grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker *worker, gpr_timespec deadline) { +int grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker *worker, + gpr_timespec deadline) { gpr_timespec now; int added_worker = 0; now = gpr_now(GPR_CLOCK_MONOTONIC); @@ -134,8 +134,8 @@ void grpc_pollset_kick(grpc_pollset *p, grpc_pollset_worker *specific_worker) { if (specific_worker != NULL) { if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) { for (specific_worker = p->root_worker.next; - specific_worker != &p->root_worker; - specific_worker = specific_worker->next) { + specific_worker != &p->root_worker; + specific_worker = specific_worker->next) { gpr_cv_signal(&specific_worker->cv); } p->kicked_without_pollers = 1; diff --git a/src/core/iomgr/resolve_address.h b/src/core/iomgr/resolve_address.h index 8f1d7a22bb..cc1bd428b0 100644 --- a/src/core/iomgr/resolve_address.h +++ b/src/core/iomgr/resolve_address.h @@ -66,4 +66,4 @@ void grpc_resolved_addresses_destroy(grpc_resolved_addresses *addresses); grpc_resolved_addresses *grpc_blocking_resolve_address( const char *addr, const char *default_port); -#endif /* GRPC_INTERNAL_CORE_IOMGR_RESOLVE_ADDRESS_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_RESOLVE_ADDRESS_H */ diff --git a/src/core/iomgr/resolve_address_posix.c b/src/core/iomgr/resolve_address_posix.c index dbf884c769..ce6972b797 100644 --- a/src/core/iomgr/resolve_address_posix.c +++ b/src/core/iomgr/resolve_address_posix.c @@ -105,10 +105,7 @@ grpc_resolved_addresses *grpc_blocking_resolve_address( s = getaddrinfo(host, port, &hints, &result); if (s != 0) { /* Retry if well-known service name is recognized */ - char *svc[][2] = { - {"http", "80"}, - {"https", "443"} - }; + char *svc[][2] = {{"http", "80"}, {"https", "443"}}; int i; for (i = 0; i < (int)(sizeof(svc) / sizeof(svc[0])); i++) { if (strcmp(port, svc[i][0]) == 0) { diff --git a/src/core/iomgr/sockaddr.h b/src/core/iomgr/sockaddr.h index 7528db73b8..e41e1ec6b4 100644 --- a/src/core/iomgr/sockaddr.h +++ b/src/core/iomgr/sockaddr.h @@ -44,4 +44,4 @@ #include "src/core/iomgr/sockaddr_posix.h" #endif -#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_H */ diff --git a/src/core/iomgr/sockaddr_posix.h b/src/core/iomgr/sockaddr_posix.h index 2a3d932f70..388abb3306 100644 --- a/src/core/iomgr/sockaddr_posix.h +++ b/src/core/iomgr/sockaddr_posix.h @@ -41,4 +41,4 @@ #include <netdb.h> #include <unistd.h> -#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_POSIX_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_POSIX_H */ diff --git a/src/core/iomgr/sockaddr_utils.c b/src/core/iomgr/sockaddr_utils.c index 65ec1f94ac..efdc480365 100644 --- a/src/core/iomgr/sockaddr_utils.c +++ b/src/core/iomgr/sockaddr_utils.c @@ -206,7 +206,8 @@ int grpc_sockaddr_get_port(const struct sockaddr *addr) { case AF_UNIX: return 1; default: - gpr_log(GPR_ERROR, "Unknown socket family %d in grpc_sockaddr_get_port", addr->sa_family); + gpr_log(GPR_ERROR, "Unknown socket family %d in grpc_sockaddr_get_port", + addr->sa_family); return 0; } } @@ -220,7 +221,8 @@ int grpc_sockaddr_set_port(const struct sockaddr *addr, int port) { ((struct sockaddr_in6 *)addr)->sin6_port = htons(port); return 1; default: - gpr_log(GPR_ERROR, "Unknown socket family %d in grpc_sockaddr_set_port", addr->sa_family); + gpr_log(GPR_ERROR, "Unknown socket family %d in grpc_sockaddr_set_port", + addr->sa_family); return 0; } } diff --git a/src/core/iomgr/sockaddr_utils.h b/src/core/iomgr/sockaddr_utils.h index 99f1ed54da..6f7a279900 100644 --- a/src/core/iomgr/sockaddr_utils.h +++ b/src/core/iomgr/sockaddr_utils.h @@ -86,4 +86,4 @@ int grpc_sockaddr_to_string(char **out, const struct sockaddr *addr, char *grpc_sockaddr_to_uri(const struct sockaddr *addr); -#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_UTILS_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_UTILS_H */ diff --git a/src/core/iomgr/sockaddr_win32.h b/src/core/iomgr/sockaddr_win32.h index be55db805a..fe2be99145 100644 --- a/src/core/iomgr/sockaddr_win32.h +++ b/src/core/iomgr/sockaddr_win32.h @@ -43,4 +43,4 @@ const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); #endif -#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_WIN32_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_WIN32_H */ diff --git a/src/core/iomgr/socket_utils_posix.h b/src/core/iomgr/socket_utils_posix.h index d2a315b462..d330d1986e 100644 --- a/src/core/iomgr/socket_utils_posix.h +++ b/src/core/iomgr/socket_utils_posix.h @@ -110,4 +110,4 @@ extern int grpc_forbid_dualstack_sockets_for_testing; int grpc_create_dualstack_socket(const struct sockaddr *addr, int type, int protocol, grpc_dualstack_mode *dsmode); -#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKET_UTILS_POSIX_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKET_UTILS_POSIX_H */ diff --git a/src/core/iomgr/socket_windows.c b/src/core/iomgr/socket_windows.c index f6ddfff0ad..7d8421376b 100644 --- a/src/core/iomgr/socket_windows.c +++ b/src/core/iomgr/socket_windows.c @@ -106,4 +106,4 @@ void grpc_winsocket_destroy(grpc_winsocket *winsocket) { gpr_free(winsocket); } -#endif /* GPR_WINSOCK_SOCKET */ +#endif /* GPR_WINSOCK_SOCKET */ diff --git a/src/core/iomgr/socket_windows.h b/src/core/iomgr/socket_windows.h index 346fde8edd..ecf2530173 100644 --- a/src/core/iomgr/socket_windows.h +++ b/src/core/iomgr/socket_windows.h @@ -54,7 +54,7 @@ typedef struct grpc_winsocket_callback_info { OVERLAPPED overlapped; /* The callback information for the pending operation. May be empty if the caller hasn't registered a callback yet. */ - void(*cb)(void *opaque, int success); + void (*cb)(void *opaque, int success); void *opaque; /* A boolean to describe if the IO Completion Port got a notification for that operation. This will happen if the operation completed before the @@ -118,4 +118,4 @@ void grpc_winsocket_orphan(grpc_winsocket *socket); or by grpc_winsocket_orphan if there's no pending operation. */ void grpc_winsocket_destroy(grpc_winsocket *socket); -#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKET_WINDOWS_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_SOCKET_WINDOWS_H */ diff --git a/src/core/iomgr/tcp_client.h b/src/core/iomgr/tcp_client.h index 0fa08b52b0..8ad9b818e1 100644 --- a/src/core/iomgr/tcp_client.h +++ b/src/core/iomgr/tcp_client.h @@ -41,7 +41,7 @@ /* Asynchronously connect to an address (specified as (addr, len)), and call cb with arg and the completed connection when done (or call cb with arg and - NULL on failure). + NULL on failure). interested_parties points to a set of pollsets that would be interested in this connection being established (in order to continue their work) */ void grpc_tcp_client_connect(void (*cb)(void *arg, grpc_endpoint *tcp), diff --git a/src/core/iomgr/tcp_client_posix.c b/src/core/iomgr/tcp_client_posix.c index 9572ce5980..66027f87a0 100644 --- a/src/core/iomgr/tcp_client_posix.c +++ b/src/core/iomgr/tcp_client_posix.c @@ -264,7 +264,8 @@ void grpc_tcp_client_connect(void (*cb)(void *arg, grpc_endpoint *ep), ac->write_closure.cb_arg = ac; gpr_mu_lock(&ac->mu); - grpc_alarm_init(&ac->alarm, gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC), + grpc_alarm_init(&ac->alarm, + gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC), tc_on_alarm, ac, gpr_now(GPR_CLOCK_MONOTONIC)); grpc_fd_notify_on_write(ac->fd, &ac->write_closure); gpr_mu_unlock(&ac->mu); diff --git a/src/core/iomgr/tcp_posix.c b/src/core/iomgr/tcp_posix.c index 24fee0596f..360e6ebd8c 100644 --- a/src/core/iomgr/tcp_posix.c +++ b/src/core/iomgr/tcp_posix.c @@ -572,7 +572,8 @@ static void grpc_tcp_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset) { grpc_pollset_add_fd(pollset, tcp->em_fd); } -static void grpc_tcp_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pollset_set) { +static void grpc_tcp_add_to_pollset_set(grpc_endpoint *ep, + grpc_pollset_set *pollset_set) { grpc_tcp *tcp = (grpc_tcp *)ep; grpc_pollset_set_add_fd(pollset_set, tcp->em_fd); } diff --git a/src/core/iomgr/tcp_posix.h b/src/core/iomgr/tcp_posix.h index d752feaeea..40b3ae2679 100644 --- a/src/core/iomgr/tcp_posix.h +++ b/src/core/iomgr/tcp_posix.h @@ -56,4 +56,4 @@ extern int grpc_tcp_trace; grpc_endpoint *grpc_tcp_create(grpc_fd *fd, size_t read_slice_size, const char *peer_string); -#endif /* GRPC_INTERNAL_CORE_IOMGR_TCP_POSIX_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_TCP_POSIX_H */ diff --git a/src/core/iomgr/tcp_server_windows.c b/src/core/iomgr/tcp_server_windows.c index 0adbe9507c..d0478d3604 100644 --- a/src/core/iomgr/tcp_server_windows.c +++ b/src/core/iomgr/tcp_server_windows.c @@ -79,7 +79,8 @@ struct grpc_tcp_server { /* active port count: how many ports are actually still listening */ int active_ports; - /* number of iomgr callbacks that have been explicitly scheduled during shutdown */ + /* number of iomgr callbacks that have been explicitly scheduled during + * shutdown */ int iomgr_callbacks_pending; /* all listening ports */ @@ -292,7 +293,7 @@ static void on_accept(void *arg, int from_iocp) { and act accordingly. */ transfered_bytes = 0; wsa_success = WSAGetOverlappedResult(sock, &info->overlapped, - &transfered_bytes, FALSE, &flags); + &transfered_bytes, FALSE, &flags); if (!wsa_success) { if (sp->shutting_down) { /* During the shutdown case, we ARE expecting an error. So that's well, @@ -309,16 +310,15 @@ static void on_accept(void *arg, int from_iocp) { if (!sp->shutting_down) { peer_name_string = NULL; err = setsockopt(sock, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT, - (char *)&sp->socket->socket, - sizeof(sp->socket->socket)); + (char *)&sp->socket->socket, sizeof(sp->socket->socket)); if (err) { char *utf8_message = gpr_format_message(WSAGetLastError()); gpr_log(GPR_ERROR, "setsockopt error: %s", utf8_message); gpr_free(utf8_message); } - err = getpeername(sock, (struct sockaddr*)&peer_name, &peer_name_len); + err = getpeername(sock, (struct sockaddr *)&peer_name, &peer_name_len); if (!err) { - peer_name_string = grpc_sockaddr_to_uri((struct sockaddr*)&peer_name); + peer_name_string = grpc_sockaddr_to_uri((struct sockaddr *)&peer_name); } else { char *utf8_message = gpr_format_message(WSAGetLastError()); gpr_log(GPR_ERROR, "getpeername error: %s", utf8_message); diff --git a/src/core/iomgr/tcp_windows.c b/src/core/iomgr/tcp_windows.c index 89aa741470..123f46d71d 100644 --- a/src/core/iomgr/tcp_windows.c +++ b/src/core/iomgr/tcp_windows.c @@ -55,24 +55,22 @@ static int set_non_block(SOCKET sock) { int status; unsigned long param = 1; DWORD ret; - status = WSAIoctl(sock, FIONBIO, ¶m, sizeof(param), NULL, 0, &ret, - NULL, NULL); + status = + WSAIoctl(sock, FIONBIO, ¶m, sizeof(param), NULL, 0, &ret, NULL, NULL); return status == 0; } static int set_dualstack(SOCKET sock) { int status; unsigned long param = 0; - status = setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, - (const char *) ¶m, sizeof(param)); + status = setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (const char *)¶m, + sizeof(param)); return status == 0; } int grpc_tcp_prepare_socket(SOCKET sock) { - if (!set_non_block(sock)) - return 0; - if (!set_dualstack(sock)) - return 0; + if (!set_non_block(sock)) return 0; + if (!set_dualstack(sock)) return 0; return 1; } @@ -100,9 +98,7 @@ typedef struct grpc_tcp { char *peer_string; } grpc_tcp; -static void tcp_ref(grpc_tcp *tcp) { - gpr_ref(&tcp->refcount); -} +static void tcp_ref(grpc_tcp *tcp) { gpr_ref(&tcp->refcount); } static void tcp_unref(grpc_tcp *tcp) { if (gpr_unref(&tcp->refcount)) { @@ -116,7 +112,7 @@ static void tcp_unref(grpc_tcp *tcp) { /* Asynchronous callback from the IOCP, or the background thread. */ static void on_read(void *tcpp, int from_iocp) { - grpc_tcp *tcp = (grpc_tcp *) tcpp; + grpc_tcp *tcp = (grpc_tcp *)tcpp; grpc_winsocket *socket = tcp->socket; gpr_slice sub; gpr_slice *slice = NULL; @@ -175,9 +171,9 @@ static void on_read(void *tcpp, int from_iocp) { cb(opaque, slice, nslices, status); } -static void win_notify_on_read(grpc_endpoint *ep, - grpc_endpoint_read_cb cb, void *arg) { - grpc_tcp *tcp = (grpc_tcp *) ep; +static void win_notify_on_read(grpc_endpoint *ep, grpc_endpoint_read_cb cb, + void *arg) { + grpc_tcp *tcp = (grpc_tcp *)ep; grpc_winsocket *handle = tcp->socket; grpc_winsocket_callback_info *info = &handle->read_info; int status; @@ -201,8 +197,8 @@ static void win_notify_on_read(grpc_endpoint *ep, buffer.buf = (char *)GPR_SLICE_START_PTR(tcp->read_slice); /* First let's try a synchronous, non-blocking read. */ - status = WSARecv(tcp->socket->socket, &buffer, 1, &bytes_read, &flags, - NULL, NULL); + status = + WSARecv(tcp->socket->socket, &buffer, 1, &bytes_read, &flags, NULL, NULL); info->wsa_error = status == 0 ? 0 : WSAGetLastError(); /* Did we get data immediately ? Yay. */ @@ -232,7 +228,7 @@ static void win_notify_on_read(grpc_endpoint *ep, /* Asynchronous callback from the IOCP, or the background thread. */ static void on_write(void *tcpp, int from_iocp) { - grpc_tcp *tcp = (grpc_tcp *) tcpp; + grpc_tcp *tcp = (grpc_tcp *)tcpp; grpc_winsocket *handle = tcp->socket; grpc_winsocket_callback_info *info = &handle->write_info; grpc_endpoint_cb_status status = GRPC_ENDPOINT_CB_OK; @@ -286,7 +282,7 @@ static grpc_endpoint_write_status win_write(grpc_endpoint *ep, gpr_slice *slices, size_t nslices, grpc_endpoint_write_cb cb, void *arg) { - grpc_tcp *tcp = (grpc_tcp *) ep; + grpc_tcp *tcp = (grpc_tcp *)ep; grpc_winsocket *socket = tcp->socket; grpc_winsocket_callback_info *info = &socket->write_info; unsigned i; @@ -309,7 +305,7 @@ static grpc_endpoint_write_status win_write(grpc_endpoint *ep, gpr_slice_buffer_addn(&tcp->write_slices, slices, nslices); if (tcp->write_slices.count > GPR_ARRAY_SIZE(local_buffers)) { - buffers = (WSABUF *) gpr_malloc(sizeof(WSABUF) * tcp->write_slices.count); + buffers = (WSABUF *)gpr_malloc(sizeof(WSABUF) * tcp->write_slices.count); allocated = buffers; } @@ -370,15 +366,15 @@ static grpc_endpoint_write_status win_write(grpc_endpoint *ep, static void win_add_to_pollset(grpc_endpoint *ep, grpc_pollset *ps) { grpc_tcp *tcp; - (void) ps; - tcp = (grpc_tcp *) ep; + (void)ps; + tcp = (grpc_tcp *)ep; grpc_iocp_add_socket(tcp->socket); } static void win_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pss) { grpc_tcp *tcp; - (void) pss; - tcp = (grpc_tcp *) ep; + (void)pss; + tcp = (grpc_tcp *)ep; grpc_iocp_add_socket(tcp->socket); } @@ -389,7 +385,7 @@ static void win_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pss) { callback will happen from another thread, so we need to protect against concurrent access of the data structure in that regard. */ static void win_shutdown(grpc_endpoint *ep) { - grpc_tcp *tcp = (grpc_tcp *) ep; + grpc_tcp *tcp = (grpc_tcp *)ep; int extra_refs = 0; gpr_mu_lock(&tcp->mu); /* At that point, what may happen is that we're already inside the IOCP @@ -401,7 +397,7 @@ static void win_shutdown(grpc_endpoint *ep) { } static void win_destroy(grpc_endpoint *ep) { - grpc_tcp *tcp = (grpc_tcp *) ep; + grpc_tcp *tcp = (grpc_tcp *)ep; tcp_unref(tcp); } @@ -410,13 +406,12 @@ static char *win_get_peer(grpc_endpoint *ep) { return gpr_strdup(tcp->peer_string); } -static grpc_endpoint_vtable vtable = {win_notify_on_read, win_write, - win_add_to_pollset, win_add_to_pollset_set, - win_shutdown, win_destroy, - win_get_peer}; +static grpc_endpoint_vtable vtable = { + win_notify_on_read, win_write, win_add_to_pollset, win_add_to_pollset_set, + win_shutdown, win_destroy, win_get_peer}; grpc_endpoint *grpc_tcp_create(grpc_winsocket *socket, char *peer_string) { - grpc_tcp *tcp = (grpc_tcp *) gpr_malloc(sizeof(grpc_tcp)); + grpc_tcp *tcp = (grpc_tcp *)gpr_malloc(sizeof(grpc_tcp)); memset(tcp, 0, sizeof(grpc_tcp)); tcp->base.vtable = &vtable; tcp->socket = socket; @@ -427,4 +422,4 @@ grpc_endpoint *grpc_tcp_create(grpc_winsocket *socket, char *peer_string) { return &tcp->base; } -#endif /* GPR_WINSOCK_SOCKET */ +#endif /* GPR_WINSOCK_SOCKET */ diff --git a/src/core/iomgr/tcp_windows.h b/src/core/iomgr/tcp_windows.h index 7e301db250..deb3e48293 100644 --- a/src/core/iomgr/tcp_windows.h +++ b/src/core/iomgr/tcp_windows.h @@ -54,4 +54,4 @@ grpc_endpoint *grpc_tcp_create(grpc_winsocket *socket, char *peer_string); int grpc_tcp_prepare_socket(SOCKET sock); -#endif /* GRPC_INTERNAL_CORE_IOMGR_TCP_WINDOWS_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_TCP_WINDOWS_H */ diff --git a/src/core/iomgr/time_averaged_stats.h b/src/core/iomgr/time_averaged_stats.h index 13894b2640..e6dec1b4cd 100644 --- a/src/core/iomgr/time_averaged_stats.h +++ b/src/core/iomgr/time_averaged_stats.h @@ -85,4 +85,4 @@ void grpc_time_averaged_stats_add_sample(grpc_time_averaged_stats *stats, value. */ double grpc_time_averaged_stats_update_average(grpc_time_averaged_stats *stats); -#endif /* GRPC_INTERNAL_CORE_IOMGR_TIME_AVERAGED_STATS_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_TIME_AVERAGED_STATS_H */ diff --git a/src/core/iomgr/udp_server.c b/src/core/iomgr/udp_server.c index db0aef8120..16482c08f7 100644 --- a/src/core/iomgr/udp_server.c +++ b/src/core/iomgr/udp_server.c @@ -232,11 +232,11 @@ static int prepare_socket(int fd, const struct sockaddr *addr, int addr_len) { } get_local_ip = 1; - rc = setsockopt(fd, IPPROTO_IP, IP_PKTINFO, - &get_local_ip, sizeof(get_local_ip)); + rc = setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &get_local_ip, + sizeof(get_local_ip)); if (rc == 0 && addr->sa_family == AF_INET6) { - rc = setsockopt(fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, - &get_local_ip, sizeof(get_local_ip)); + rc = setsockopt(fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &get_local_ip, + sizeof(get_local_ip)); } if (bind(fd, addr, addr_len) < 0) { @@ -317,8 +317,8 @@ static int add_socket_to_server(grpc_udp_server *s, int fd, return port; } -int grpc_udp_server_add_port(grpc_udp_server *s, const void *addr, - int addr_len, grpc_udp_server_read_cb read_cb) { +int grpc_udp_server_add_port(grpc_udp_server *s, const void *addr, int addr_len, + grpc_udp_server_read_cb read_cb) { int allocated_port1 = -1; int allocated_port2 = -1; unsigned i; diff --git a/src/core/iomgr/wakeup_fd_eventfd.c b/src/core/iomgr/wakeup_fd_eventfd.c index 52912235f8..08fdc74f17 100644 --- a/src/core/iomgr/wakeup_fd_eventfd.c +++ b/src/core/iomgr/wakeup_fd_eventfd.c @@ -75,8 +75,7 @@ static int eventfd_check_availability(void) { } const grpc_wakeup_fd_vtable grpc_specialized_wakeup_fd_vtable = { - eventfd_create, eventfd_consume, eventfd_wakeup, eventfd_destroy, - eventfd_check_availability -}; + eventfd_create, eventfd_consume, eventfd_wakeup, eventfd_destroy, + eventfd_check_availability}; #endif /* GPR_LINUX_EVENTFD */ diff --git a/src/core/iomgr/wakeup_fd_nospecial.c b/src/core/iomgr/wakeup_fd_nospecial.c index c1038bf379..78d763c103 100644 --- a/src/core/iomgr/wakeup_fd_nospecial.c +++ b/src/core/iomgr/wakeup_fd_nospecial.c @@ -43,12 +43,9 @@ #include "src/core/iomgr/wakeup_fd_posix.h" #include <stddef.h> -static int check_availability_invalid(void) { - return 0; -} +static int check_availability_invalid(void) { return 0; } const grpc_wakeup_fd_vtable grpc_specialized_wakeup_fd_vtable = { - NULL, NULL, NULL, NULL, check_availability_invalid -}; + NULL, NULL, NULL, NULL, check_availability_invalid}; -#endif /* GPR_POSIX_NO_SPECIAL_WAKEUP_FD */ +#endif /* GPR_POSIX_NO_SPECIAL_WAKEUP_FD */ diff --git a/src/core/iomgr/wakeup_fd_pipe.c b/src/core/iomgr/wakeup_fd_pipe.c index 9fc4ee2388..bd643e8061 100644 --- a/src/core/iomgr/wakeup_fd_pipe.c +++ b/src/core/iomgr/wakeup_fd_pipe.c @@ -94,4 +94,4 @@ const grpc_wakeup_fd_vtable grpc_pipe_wakeup_fd_vtable = { pipe_init, pipe_consume, pipe_wakeup, pipe_destroy, pipe_check_availability}; -#endif /* GPR_POSIX_WAKUP_FD */ +#endif /* GPR_POSIX_WAKUP_FD */ diff --git a/src/core/iomgr/wakeup_fd_pipe.h b/src/core/iomgr/wakeup_fd_pipe.h index aa8f977ddb..01a13a97c0 100644 --- a/src/core/iomgr/wakeup_fd_pipe.h +++ b/src/core/iomgr/wakeup_fd_pipe.h @@ -38,4 +38,4 @@ extern grpc_wakeup_fd_vtable grpc_pipe_wakeup_fd_vtable; -#endif /* GRPC_INTERNAL_CORE_IOMGR_WAKEUP_FD_PIPE_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_WAKEUP_FD_PIPE_H */ diff --git a/src/core/iomgr/wakeup_fd_posix.c b/src/core/iomgr/wakeup_fd_posix.c index e48f5223fa..d09fb78d12 100644 --- a/src/core/iomgr/wakeup_fd_posix.c +++ b/src/core/iomgr/wakeup_fd_posix.c @@ -53,9 +53,7 @@ void grpc_wakeup_fd_global_init_force_fallback(void) { wakeup_fd_vtable = &grpc_pipe_wakeup_fd_vtable; } -void grpc_wakeup_fd_global_destroy(void) { - wakeup_fd_vtable = NULL; -} +void grpc_wakeup_fd_global_destroy(void) { wakeup_fd_vtable = NULL; } void grpc_wakeup_fd_init(grpc_wakeup_fd *fd_info) { wakeup_fd_vtable->init(fd_info); @@ -73,4 +71,4 @@ void grpc_wakeup_fd_destroy(grpc_wakeup_fd *fd_info) { wakeup_fd_vtable->destroy(fd_info); } -#endif /* GPR_POSIX_WAKEUP_FD */ +#endif /* GPR_POSIX_WAKEUP_FD */ diff --git a/src/core/iomgr/wakeup_fd_posix.h b/src/core/iomgr/wakeup_fd_posix.h index a4da4df51f..b6c086900d 100644 --- a/src/core/iomgr/wakeup_fd_posix.h +++ b/src/core/iomgr/wakeup_fd_posix.h @@ -96,4 +96,4 @@ void grpc_wakeup_fd_destroy(grpc_wakeup_fd *fd_info); * wakeup_fd_nospecial.c if no such implementation exists. */ extern const grpc_wakeup_fd_vtable grpc_specialized_wakeup_fd_vtable; -#endif /* GRPC_INTERNAL_CORE_IOMGR_WAKEUP_FD_POSIX_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_WAKEUP_FD_POSIX_H */ diff --git a/src/core/json/json.h b/src/core/json/json.h index cac18ad885..573584bf6f 100644 --- a/src/core/json/json.h +++ b/src/core/json/json.h @@ -85,4 +85,4 @@ char* grpc_json_dump_to_string(grpc_json* json, int indent); grpc_json* grpc_json_create(grpc_json_type type); void grpc_json_destroy(grpc_json* json); -#endif /* GRPC_INTERNAL_CORE_JSON_JSON_H */ +#endif /* GRPC_INTERNAL_CORE_JSON_JSON_H */ diff --git a/src/core/json/json_common.h b/src/core/json/json_common.h index 84bf375916..481695b38b 100644 --- a/src/core/json/json_common.h +++ b/src/core/json/json_common.h @@ -46,4 +46,4 @@ typedef enum { GRPC_JSON_TOP_LEVEL } grpc_json_type; -#endif /* GRPC_INTERNAL_CORE_JSON_JSON_COMMON_H */ +#endif /* GRPC_INTERNAL_CORE_JSON_JSON_COMMON_H */ diff --git a/src/core/json/json_reader.c b/src/core/json/json_reader.c index c14094c290..c22d4edd47 100644 --- a/src/core/json/json_reader.c +++ b/src/core/json/json_reader.c @@ -42,27 +42,26 @@ static void json_reader_string_clear(grpc_json_reader* reader) { } static void json_reader_string_add_char(grpc_json_reader* reader, - gpr_uint32 c) { + gpr_uint32 c) { reader->vtable->string_add_char(reader->userdata, c); } static void json_reader_string_add_utf32(grpc_json_reader* reader, - gpr_uint32 utf32) { + gpr_uint32 utf32) { reader->vtable->string_add_utf32(reader->userdata, utf32); } -static gpr_uint32 - grpc_json_reader_read_char(grpc_json_reader* reader) { +static gpr_uint32 grpc_json_reader_read_char(grpc_json_reader* reader) { return reader->vtable->read_char(reader->userdata); } static void json_reader_container_begins(grpc_json_reader* reader, - grpc_json_type type) { + grpc_json_type type) { reader->vtable->container_begins(reader->userdata, type); } -static grpc_json_type - grpc_json_reader_container_ends(grpc_json_reader* reader) { +static grpc_json_type grpc_json_reader_container_ends( + grpc_json_reader* reader) { return reader->vtable->container_ends(reader->userdata); } @@ -101,8 +100,9 @@ void grpc_json_reader_init(grpc_json_reader* reader, } int grpc_json_reader_is_complete(grpc_json_reader* reader) { - return ((reader->depth == 0) && ((reader->state == GRPC_JSON_STATE_END) || - (reader->state == GRPC_JSON_STATE_VALUE_END))); + return ((reader->depth == 0) && + ((reader->state == GRPC_JSON_STATE_END) || + (reader->state == GRPC_JSON_STATE_VALUE_END))); } grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) { @@ -143,7 +143,8 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) { case GRPC_JSON_STATE_OBJECT_KEY_STRING: case GRPC_JSON_STATE_VALUE_STRING: if (c != ' ') return GRPC_JSON_PARSE_ERROR; - if (reader->unicode_high_surrogate != 0) return GRPC_JSON_PARSE_ERROR; + if (reader->unicode_high_surrogate != 0) + return GRPC_JSON_PARSE_ERROR; json_reader_string_add_char(reader, c); break; @@ -169,7 +170,8 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) { switch (reader->state) { case GRPC_JSON_STATE_OBJECT_KEY_STRING: case GRPC_JSON_STATE_VALUE_STRING: - if (reader->unicode_high_surrogate != 0) return GRPC_JSON_PARSE_ERROR; + if (reader->unicode_high_surrogate != 0) + return GRPC_JSON_PARSE_ERROR; json_reader_string_add_char(reader, c); break; @@ -253,7 +255,8 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) { /* This is the \\ case. */ case GRPC_JSON_STATE_STRING_ESCAPE: - if (reader->unicode_high_surrogate != 0) return GRPC_JSON_PARSE_ERROR; + if (reader->unicode_high_surrogate != 0) + return GRPC_JSON_PARSE_ERROR; json_reader_string_add_char(reader, '\\'); if (reader->escaped_string_was_key) { reader->state = GRPC_JSON_STATE_OBJECT_KEY_STRING; @@ -276,7 +279,8 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) { break; case GRPC_JSON_STATE_OBJECT_KEY_STRING: - if (reader->unicode_high_surrogate != 0) return GRPC_JSON_PARSE_ERROR; + if (reader->unicode_high_surrogate != 0) + return GRPC_JSON_PARSE_ERROR; if (c == '"') { reader->state = GRPC_JSON_STATE_OBJECT_KEY_END; json_reader_set_key(reader); @@ -288,7 +292,8 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) { break; case GRPC_JSON_STATE_VALUE_STRING: - if (reader->unicode_high_surrogate != 0) return GRPC_JSON_PARSE_ERROR; + if (reader->unicode_high_surrogate != 0) + return GRPC_JSON_PARSE_ERROR; if (c == '"') { reader->state = GRPC_JSON_STATE_VALUE_END; json_reader_set_string(reader); @@ -438,7 +443,8 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) { if (reader->unicode_high_surrogate == 0) return GRPC_JSON_PARSE_ERROR; utf32 = 0x10000; - utf32 += (gpr_uint32)((reader->unicode_high_surrogate - 0xd800) * 0x400); + utf32 += (gpr_uint32)( + (reader->unicode_high_surrogate - 0xd800) * 0x400); utf32 += (gpr_uint32)(reader->unicode_char - 0xdc00); json_reader_string_add_utf32(reader, utf32); reader->unicode_high_surrogate = 0; diff --git a/src/core/json/json_reader.h b/src/core/json/json_reader.h index b1a5ace8fb..4d5487f790 100644 --- a/src/core/json/json_reader.h +++ b/src/core/json/json_reader.h @@ -157,4 +157,4 @@ void grpc_json_reader_init(grpc_json_reader* reader, */ int grpc_json_reader_is_complete(grpc_json_reader* reader); -#endif /* GRPC_INTERNAL_CORE_JSON_JSON_READER_H */ +#endif /* GRPC_INTERNAL_CORE_JSON_JSON_READER_H */ diff --git a/src/core/json/json_string.c b/src/core/json/json_string.c index 03c1099167..e6622ec461 100644 --- a/src/core/json/json_string.c +++ b/src/core/json/json_string.c @@ -73,7 +73,6 @@ typedef struct { size_t allocated; } json_writer_userdata; - /* This function checks if there's enough space left in the output buffer, * and will enlarge it if necessary. We're only allocating chunks of 256 * bytes at a time (or multiples thereof). @@ -97,8 +96,8 @@ static void json_writer_output_char(void* userdata, char c) { state->free_space--; } -static void json_writer_output_string_with_len(void* userdata, - const char* str, size_t len) { +static void json_writer_output_string_with_len(void* userdata, const char* str, + size_t len) { json_writer_userdata* state = userdata; json_writer_output_check(userdata, len); memcpy(state->output + state->string_len, str, len); @@ -106,8 +105,7 @@ static void json_writer_output_string_with_len(void* userdata, state->free_space -= len; } -static void json_writer_output_string(void* userdata, - const char* str) { +static void json_writer_output_string(void* userdata, const char* str) { size_t len = strlen(str); json_writer_output_string_with_len(userdata, str, len); } @@ -184,8 +182,7 @@ static gpr_uint32 json_reader_read_char(void* userdata) { /* Helper function to create a new grpc_json object and link it into * our tree-in-progress inside our opaque structure. */ -static grpc_json* json_create_and_link(void* userdata, - grpc_json_type type) { +static grpc_json* json_create_and_link(void* userdata, grpc_json_type type) { json_reader_userdata* state = userdata; grpc_json* json = grpc_json_create(type); @@ -201,7 +198,7 @@ static grpc_json* json_create_and_link(void* userdata, json->parent->child = json; } if (json->parent->type == GRPC_JSON_OBJECT) { - json->key = (char*) state->key; + json->key = (char*)state->key; } } if (!state->top) { @@ -261,13 +258,13 @@ static void json_reader_set_key(void* userdata) { static void json_reader_set_string(void* userdata) { json_reader_userdata* state = userdata; grpc_json* json = json_create_and_link(userdata, GRPC_JSON_STRING); - json->value = (char*) state->string; + json->value = (char*)state->string; } static int json_reader_set_number(void* userdata) { json_reader_userdata* state = userdata; grpc_json* json = json_create_and_link(userdata, GRPC_JSON_NUMBER); - json->value = (char*) state->string; + json->value = (char*)state->string; return 1; } @@ -287,32 +284,25 @@ static void json_reader_set_null(void* userdata) { } static grpc_json_reader_vtable reader_vtable = { - json_reader_string_clear, - json_reader_string_add_char, - json_reader_string_add_utf32, - json_reader_read_char, - json_reader_container_begins, - json_reader_container_ends, - json_reader_set_key, - json_reader_set_string, - json_reader_set_number, - json_reader_set_true, - json_reader_set_false, - json_reader_set_null -}; + json_reader_string_clear, json_reader_string_add_char, + json_reader_string_add_utf32, json_reader_read_char, + json_reader_container_begins, json_reader_container_ends, + json_reader_set_key, json_reader_set_string, + json_reader_set_number, json_reader_set_true, + json_reader_set_false, json_reader_set_null}; /* And finally, let's define our public API. */ grpc_json* grpc_json_parse_string_with_len(char* input, size_t size) { grpc_json_reader reader; json_reader_userdata state; - grpc_json *json = NULL; + grpc_json* json = NULL; grpc_json_reader_status status; if (!input) return NULL; state.top = state.current_container = state.current_value = NULL; state.string = state.key = NULL; - state.string_ptr = state.input = (gpr_uint8*) input; + state.string_ptr = state.input = (gpr_uint8*)input; state.remaining_input = size; grpc_json_reader_init(&reader, &reader_vtable, &state); @@ -333,8 +323,8 @@ grpc_json* grpc_json_parse_string(char* input) { return grpc_json_parse_string_with_len(input, UNBOUND_JSON_STRING_LENGTH); } -static void json_dump_recursive(grpc_json_writer* writer, - grpc_json* json, int in_object) { +static void json_dump_recursive(grpc_json_writer* writer, grpc_json* json, + int in_object) { while (json) { if (in_object) grpc_json_writer_object_key(writer, json->key); @@ -370,10 +360,8 @@ static void json_dump_recursive(grpc_json_writer* writer, } static grpc_json_writer_vtable writer_vtable = { - json_writer_output_char, - json_writer_output_string, - json_writer_output_string_with_len -}; + json_writer_output_char, json_writer_output_string, + json_writer_output_string_with_len}; char* grpc_json_dump_to_string(grpc_json* json, int indent) { grpc_json_writer writer; diff --git a/src/core/json/json_writer.c b/src/core/json/json_writer.c index bed9a9bfa5..ca9c835825 100644 --- a/src/core/json/json_writer.c +++ b/src/core/json/json_writer.c @@ -41,11 +41,13 @@ static void json_writer_output_char(grpc_json_writer* writer, char c) { writer->vtable->output_char(writer->userdata, c); } -static void json_writer_output_string(grpc_json_writer* writer, const char* str) { +static void json_writer_output_string(grpc_json_writer* writer, + const char* str) { writer->vtable->output_string(writer->userdata, str); } -static void json_writer_output_string_with_len(grpc_json_writer* writer, const char* str, size_t len) { +static void json_writer_output_string_with_len(grpc_json_writer* writer, + const char* str, size_t len) { writer->vtable->output_string_with_len(writer->userdata, str, len); } @@ -58,8 +60,7 @@ void grpc_json_writer_init(grpc_json_writer* writer, int indent, writer->userdata = userdata; } -static void json_writer_output_indent( - grpc_json_writer* writer) { +static void json_writer_output_indent(grpc_json_writer* writer) { static const char spacesstr[] = " " " " @@ -99,14 +100,15 @@ static void json_writer_value_end(grpc_json_writer* writer) { } } -static void json_writer_escape_utf16(grpc_json_writer* writer, gpr_uint16 utf16) { +static void json_writer_escape_utf16(grpc_json_writer* writer, + gpr_uint16 utf16) { static const char hex[] = "0123456789abcdef"; json_writer_output_string_with_len(writer, "\\u", 2); json_writer_output_char(writer, hex[(utf16 >> 12) & 0x0f]); json_writer_output_char(writer, hex[(utf16 >> 8) & 0x0f]); json_writer_output_char(writer, hex[(utf16 >> 4) & 0x0f]); - json_writer_output_char(writer, hex[(utf16) & 0x0f]); + json_writer_output_char(writer, hex[(utf16)&0x0f]); } static void json_writer_escape_string(grpc_json_writer* writer, @@ -173,8 +175,8 @@ static void json_writer_escape_string(grpc_json_writer* writer, * Any other range is technically reserved for future usage, so if we * don't want the software to break in the future, we have to allow * anything else. The first non-unicode character is 0x110000. */ - if (((utf32 >= 0xd800) && (utf32 <= 0xdfff)) || - (utf32 >= 0x110000)) break; + if (((utf32 >= 0xd800) && (utf32 <= 0xdfff)) || (utf32 >= 0x110000)) + break; if (utf32 >= 0x10000) { /* If utf32 contains a character that is above 0xffff, it needs to be * broken down into a utf-16 surrogate pair. A surrogate pair is first @@ -194,7 +196,8 @@ static void json_writer_escape_string(grpc_json_writer* writer, */ utf32 -= 0x10000; json_writer_escape_utf16(writer, (gpr_uint16)(0xd800 | (utf32 >> 10))); - json_writer_escape_utf16(writer, (gpr_uint16)(0xdc00 | (utf32 & 0x3ff))); + json_writer_escape_utf16(writer, + (gpr_uint16)(0xdc00 | (utf32 & 0x3ff))); } else { json_writer_escape_utf16(writer, (gpr_uint16)utf32); } @@ -204,7 +207,8 @@ static void json_writer_escape_string(grpc_json_writer* writer, json_writer_output_char(writer, '"'); } -void grpc_json_writer_container_begins(grpc_json_writer* writer, grpc_json_type type) { +void grpc_json_writer_container_begins(grpc_json_writer* writer, + grpc_json_type type) { if (!writer->got_key) json_writer_value_end(writer); json_writer_output_indent(writer); json_writer_output_char(writer, type == GRPC_JSON_OBJECT ? '{' : '['); @@ -213,7 +217,8 @@ void grpc_json_writer_container_begins(grpc_json_writer* writer, grpc_json_type writer->depth++; } -void grpc_json_writer_container_ends(grpc_json_writer* writer, grpc_json_type type) { +void grpc_json_writer_container_ends(grpc_json_writer* writer, + grpc_json_type type) { if (writer->indent && !writer->container_empty) json_writer_output_char(writer, '\n'); writer->depth--; @@ -238,14 +243,16 @@ void grpc_json_writer_value_raw(grpc_json_writer* writer, const char* string) { writer->got_key = 0; } -void grpc_json_writer_value_raw_with_len(grpc_json_writer* writer, const char* string, size_t len) { +void grpc_json_writer_value_raw_with_len(grpc_json_writer* writer, + const char* string, size_t len) { if (!writer->got_key) json_writer_value_end(writer); json_writer_output_indent(writer); json_writer_output_string_with_len(writer, string, len); writer->got_key = 0; } -void grpc_json_writer_value_string(grpc_json_writer* writer, const char* string) { +void grpc_json_writer_value_string(grpc_json_writer* writer, + const char* string) { if (!writer->got_key) json_writer_value_end(writer); json_writer_output_indent(writer); json_writer_escape_string(writer, string); diff --git a/src/core/json/json_writer.h b/src/core/json/json_writer.h index dfa61a5fef..a299dfabf8 100644 --- a/src/core/json/json_writer.h +++ b/src/core/json/json_writer.h @@ -78,16 +78,20 @@ void grpc_json_writer_init(grpc_json_writer* writer, int indent, grpc_json_writer_vtable* vtable, void* userdata); /* Signals the beginning of a container. */ -void grpc_json_writer_container_begins(grpc_json_writer* writer, grpc_json_type type); +void grpc_json_writer_container_begins(grpc_json_writer* writer, + grpc_json_type type); /* Signals the end of a container. */ -void grpc_json_writer_container_ends(grpc_json_writer* writer, grpc_json_type type); +void grpc_json_writer_container_ends(grpc_json_writer* writer, + grpc_json_type type); /* Writes down an object key for the next value. */ void grpc_json_writer_object_key(grpc_json_writer* writer, const char* string); /* Sets a raw value. Useful for numbers. */ void grpc_json_writer_value_raw(grpc_json_writer* writer, const char* string); /* Sets a raw value with its length. Useful for values like true or false. */ -void grpc_json_writer_value_raw_with_len(grpc_json_writer* writer, const char* string, size_t len); +void grpc_json_writer_value_raw_with_len(grpc_json_writer* writer, + const char* string, size_t len); /* Sets a string value. It'll be escaped, and utf-8 validated. */ -void grpc_json_writer_value_string(grpc_json_writer* writer, const char* string); +void grpc_json_writer_value_string(grpc_json_writer* writer, + const char* string); -#endif /* GRPC_INTERNAL_CORE_JSON_JSON_WRITER_H */ +#endif /* GRPC_INTERNAL_CORE_JSON_JSON_WRITER_H */ diff --git a/src/core/profiling/timers.h b/src/core/profiling/timers.h index 036d02f187..92dbab9042 100644 --- a/src/core/profiling/timers.h +++ b/src/core/profiling/timers.h @@ -88,7 +88,7 @@ enum grpc_profiling_tags { } while (0) #define GRPC_TIMER_IMPORTANT_MARK(tag, id) \ - do { \ + do { \ } while (0) #define GRPC_TIMER_BEGIN(tag, id) \ diff --git a/src/core/security/auth_filters.h b/src/core/security/auth_filters.h index ff921690e0..c179b54bec 100644 --- a/src/core/security/auth_filters.h +++ b/src/core/security/auth_filters.h @@ -39,4 +39,4 @@ extern const grpc_channel_filter grpc_client_auth_filter; extern const grpc_channel_filter grpc_server_auth_filter; -#endif /* GRPC_INTERNAL_CORE_SECURITY_AUTH_FILTERS_H */ +#endif /* GRPC_INTERNAL_CORE_SECURITY_AUTH_FILTERS_H */ diff --git a/src/core/security/base64.h b/src/core/security/base64.h index b9abc07b52..31ae982691 100644 --- a/src/core/security/base64.h +++ b/src/core/security/base64.h @@ -49,4 +49,4 @@ gpr_slice grpc_base64_decode(const char *b64, int url_safe); gpr_slice grpc_base64_decode_with_len(const char *b64, size_t b64_len, int url_safe); -#endif /* GRPC_INTERNAL_CORE_SECURITY_BASE64_H */ +#endif /* GRPC_INTERNAL_CORE_SECURITY_BASE64_H */ diff --git a/src/core/security/client_auth_filter.c b/src/core/security/client_auth_filter.c index 410852da52..8e63978b82 100644 --- a/src/core/security/client_auth_filter.c +++ b/src/core/security/client_auth_filter.c @@ -200,7 +200,7 @@ static void auth_start_transport_op(grpc_call_element *elem, channel_data *chand = elem->channel_data; grpc_linked_mdelem *l; size_t i; - grpc_client_security_context* sec_ctx = NULL; + grpc_client_security_context *sec_ctx = NULL; if (calld->security_context_set == 0) { calld->security_context_set = 1; @@ -316,9 +316,11 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, (grpc_channel_security_connector *)GRPC_SECURITY_CONNECTOR_REF( sc, "client_auth_filter"); chand->md_ctx = metadata_context; - chand->authority_string = grpc_mdstr_from_string(chand->md_ctx, ":authority", 0); + chand->authority_string = + grpc_mdstr_from_string(chand->md_ctx, ":authority", 0); chand->path_string = grpc_mdstr_from_string(chand->md_ctx, ":path", 0); - chand->error_msg_key = grpc_mdstr_from_string(chand->md_ctx, "grpc-message", 0); + chand->error_msg_key = + grpc_mdstr_from_string(chand->md_ctx, "grpc-message", 0); chand->status_key = grpc_mdstr_from_string(chand->md_ctx, "grpc-status", 0); } diff --git a/src/core/security/credentials.c b/src/core/security/credentials.c index 6421ce673d..8852cab3e7 100644 --- a/src/core/security/credentials.c +++ b/src/core/security/credentials.c @@ -793,16 +793,16 @@ void on_simulated_token_fetch_done(void *user_data, int success) { (grpc_credentials_metadata_request *)user_data; grpc_md_only_test_credentials *c = (grpc_md_only_test_credentials *)r->creds; GPR_ASSERT(success); - r->cb(r->user_data, c->md_store->entries, - c->md_store->num_entries, GRPC_CREDENTIALS_OK); + r->cb(r->user_data, c->md_store->entries, c->md_store->num_entries, + GRPC_CREDENTIALS_OK); grpc_credentials_metadata_request_destroy(r); } static void md_only_test_get_request_metadata(grpc_credentials *creds, - grpc_pollset *pollset, - const char *service_url, - grpc_credentials_metadata_cb cb, - void *user_data) { + grpc_pollset *pollset, + const char *service_url, + grpc_credentials_metadata_cb cb, + void *user_data) { grpc_md_only_test_credentials *c = (grpc_md_only_test_credentials *)creds; if (c->is_async) { @@ -854,10 +854,10 @@ static int access_token_has_request_metadata_only( } static void access_token_get_request_metadata(grpc_credentials *creds, - grpc_pollset *pollset, - const char *service_url, - grpc_credentials_metadata_cb cb, - void *user_data) { + grpc_pollset *pollset, + const char *service_url, + grpc_credentials_metadata_cb cb, + void *user_data) { grpc_access_token_credentials *c = (grpc_access_token_credentials *)creds; cb(user_data, c->access_token_md->entries, 1, GRPC_CREDENTIALS_OK); } diff --git a/src/core/security/credentials.h b/src/core/security/credentials.h index 04736525dc..29cd1ac87f 100644 --- a/src/core/security/credentials.h +++ b/src/core/security/credentials.h @@ -192,8 +192,9 @@ void grpc_flush_cached_google_default_credentials(void); /* Metadata-only credentials with the specified key and value where asynchronicity can be simulated for testing. */ -grpc_credentials *grpc_md_only_test_credentials_create( - const char *md_key, const char *md_value, int is_async); +grpc_credentials *grpc_md_only_test_credentials_create(const char *md_key, + const char *md_value, + int is_async); /* Private constructor for jwt credentials from an already parsed json key. Takes ownership of the key. */ diff --git a/src/core/security/credentials_metadata.c b/src/core/security/credentials_metadata.c index 22c786be56..b8a132f1ea 100644 --- a/src/core/security/credentials_metadata.c +++ b/src/core/security/credentials_metadata.c @@ -47,7 +47,8 @@ static void store_ensure_capacity(grpc_credentials_md_store *store) { grpc_credentials_md_store *grpc_credentials_md_store_create( size_t initial_capacity) { - grpc_credentials_md_store *store = gpr_malloc(sizeof(grpc_credentials_md_store)); + grpc_credentials_md_store *store = + gpr_malloc(sizeof(grpc_credentials_md_store)); memset(store, 0, sizeof(grpc_credentials_md_store)); if (initial_capacity > 0) { store->entries = gpr_malloc(initial_capacity * sizeof(grpc_credentials_md)); @@ -98,4 +99,3 @@ void grpc_credentials_md_store_unref(grpc_credentials_md_store *store) { gpr_free(store); } } - diff --git a/src/core/security/google_default_credentials.c b/src/core/security/google_default_credentials.c index d1f228665f..d6092ece32 100644 --- a/src/core/security/google_default_credentials.c +++ b/src/core/security/google_default_credentials.c @@ -203,8 +203,8 @@ end: /* Blend with default ssl credentials and add a global reference so that it can be cached and re-served. */ grpc_credentials *ssl_creds = grpc_ssl_credentials_create(NULL, NULL); - default_credentials = grpc_credentials_ref(grpc_composite_credentials_create( - ssl_creds, result)); + default_credentials = grpc_credentials_ref( + grpc_composite_credentials_create(ssl_creds, result)); GPR_ASSERT(default_credentials != NULL); grpc_credentials_unref(ssl_creds); grpc_credentials_unref(result); diff --git a/src/core/security/json_token.h b/src/core/security/json_token.h index 091dfefb6e..7e06864ff3 100644 --- a/src/core/security/json_token.h +++ b/src/core/security/json_token.h @@ -115,4 +115,4 @@ grpc_auth_refresh_token grpc_auth_refresh_token_create_from_json( /* Destructs the object. */ void grpc_auth_refresh_token_destruct(grpc_auth_refresh_token *refresh_token); -#endif /* GRPC_INTERNAL_CORE_SECURITY_JSON_TOKEN_H */ +#endif /* GRPC_INTERNAL_CORE_SECURITY_JSON_TOKEN_H */ diff --git a/src/core/security/jwt_verifier.h b/src/core/security/jwt_verifier.h index 8077e24883..7a32debfcb 100644 --- a/src/core/security/jwt_verifier.h +++ b/src/core/security/jwt_verifier.h @@ -133,4 +133,3 @@ grpc_jwt_verifier_status grpc_jwt_claims_check(const grpc_jwt_claims *claims, const char *audience); #endif /* GRPC_INTERNAL_CORE_SECURITY_JWT_VERIFIER_H */ - diff --git a/src/core/security/secure_endpoint.c b/src/core/security/secure_endpoint.c index 95fbf71f3d..81b3e33cb2 100644 --- a/src/core/security/secure_endpoint.c +++ b/src/core/security/secure_endpoint.c @@ -332,7 +332,7 @@ static void endpoint_add_to_pollset(grpc_endpoint *secure_ep, } static void endpoint_add_to_pollset_set(grpc_endpoint *secure_ep, - grpc_pollset_set *pollset_set) { + grpc_pollset_set *pollset_set) { secure_endpoint *ep = (secure_endpoint *)secure_ep; grpc_endpoint_add_to_pollset_set(ep->wrapped_ep, pollset_set); } diff --git a/src/core/security/secure_endpoint.h b/src/core/security/secure_endpoint.h index 93c29b5111..c563bdd9c5 100644 --- a/src/core/security/secure_endpoint.h +++ b/src/core/security/secure_endpoint.h @@ -46,4 +46,4 @@ grpc_endpoint *grpc_secure_endpoint_create( struct tsi_frame_protector *protector, grpc_endpoint *to_wrap, gpr_slice *leftover_slices, size_t leftover_nslices); -#endif /* GRPC_INTERNAL_CORE_SECURITY_SECURE_ENDPOINT_H */ +#endif /* GRPC_INTERNAL_CORE_SECURITY_SECURE_ENDPOINT_H */ diff --git a/src/core/security/secure_transport_setup.h b/src/core/security/secure_transport_setup.h index 29025f5236..d9b802556d 100644 --- a/src/core/security/secure_transport_setup.h +++ b/src/core/security/secure_transport_setup.h @@ -50,4 +50,4 @@ void grpc_setup_secure_transport(grpc_security_connector *connector, grpc_secure_transport_setup_done_cb cb, void *user_data); -#endif /* GRPC_INTERNAL_CORE_SECURITY_SECURE_TRANSPORT_SETUP_H */ +#endif /* GRPC_INTERNAL_CORE_SECURITY_SECURE_TRANSPORT_SETUP_H */ diff --git a/src/core/security/security_context.c b/src/core/security/security_context.c index 1ef0fc9255..c1b434f302 100644 --- a/src/core/security/security_context.c +++ b/src/core/security/security_context.c @@ -204,8 +204,7 @@ int grpc_auth_context_set_peer_identity_property_name(grpc_auth_context *ctx, return 1; } -int grpc_auth_context_peer_is_authenticated( - const grpc_auth_context *ctx) { +int grpc_auth_context_peer_is_authenticated(const grpc_auth_context *ctx) { return ctx->peer_identity_property_name == NULL ? 0 : 1; } @@ -326,4 +325,3 @@ grpc_auth_metadata_processor *grpc_find_auth_metadata_processor_in_args( } return NULL; } - diff --git a/src/core/security/security_context.h b/src/core/security/security_context.h index 7fcd438cf6..a9a0306410 100644 --- a/src/core/security/security_context.h +++ b/src/core/security/security_context.h @@ -112,5 +112,4 @@ grpc_auth_metadata_processor *grpc_auth_metadata_processor_from_arg( grpc_auth_metadata_processor *grpc_find_auth_metadata_processor_in_args( const grpc_channel_args *args); -#endif /* GRPC_INTERNAL_CORE_SECURITY_SECURITY_CONTEXT_H */ - +#endif /* GRPC_INTERNAL_CORE_SECURITY_SECURITY_CONTEXT_H */ diff --git a/src/core/security/server_auth_filter.c b/src/core/security/server_auth_filter.c index 2fc689caec..2f42f01f53 100644 --- a/src/core/security/server_auth_filter.c +++ b/src/core/security/server_auth_filter.c @@ -212,8 +212,7 @@ static void init_call_elem(grpc_call_element *elem, } /* Destructor for call_data */ -static void destroy_call_elem(grpc_call_element *elem) { -} +static void destroy_call_elem(grpc_call_element *elem) {} /* Constructor for channel_data */ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, diff --git a/src/core/statistics/census_interface.h b/src/core/statistics/census_interface.h index eb4349c311..ac1ff24866 100644 --- a/src/core/statistics/census_interface.h +++ b/src/core/statistics/census_interface.h @@ -73,4 +73,4 @@ census_op_id census_tracing_start_op(void); /* Ends tracing. Calling this function will invalidate the input op_id. */ void census_tracing_end_op(census_op_id op_id); -#endif /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_INTERFACE_H */ +#endif /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_INTERFACE_H */ diff --git a/src/core/statistics/census_log.h b/src/core/statistics/census_log.h index 06869b7a33..60b6d597df 100644 --- a/src/core/statistics/census_log.h +++ b/src/core/statistics/census_log.h @@ -88,4 +88,4 @@ size_t census_log_remaining_space(void); out-of-space. */ int census_log_out_of_space_count(void); -#endif /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_LOG_H */ +#endif /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_LOG_H */ diff --git a/src/core/statistics/census_rpc_stats.c b/src/core/statistics/census_rpc_stats.c index 3e571b1143..b836987cf0 100644 --- a/src/core/statistics/census_rpc_stats.c +++ b/src/core/statistics/census_rpc_stats.c @@ -85,8 +85,8 @@ static void delete_key(void* key) { gpr_free(key); } static const census_ht_option ht_opt = { CENSUS_HT_POINTER /* key type */, 1999 /* n_of_buckets */, - simple_hash /* hash function */, cmp_str_keys /* key comparator */, - delete_stats /* data deleter */, delete_key /* key deleter */ + simple_hash /* hash function */, cmp_str_keys /* key comparator */, + delete_stats /* data deleter */, delete_key /* key deleter */ }; static void init_rpc_stats(void* stats) { diff --git a/src/core/statistics/census_rpc_stats.h b/src/core/statistics/census_rpc_stats.h index 9336dce1f8..aec31c1971 100644 --- a/src/core/statistics/census_rpc_stats.h +++ b/src/core/statistics/census_rpc_stats.h @@ -98,4 +98,4 @@ void census_stats_store_shutdown(void); } #endif -#endif /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_RPC_STATS_H */ +#endif /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_RPC_STATS_H */ diff --git a/src/core/statistics/census_tracing.c b/src/core/statistics/census_tracing.c index 3036ba5407..f2a09dc06e 100644 --- a/src/core/statistics/census_tracing.c +++ b/src/core/statistics/census_tracing.c @@ -60,8 +60,11 @@ static void delete_trace_obj(void* obj) { } static const census_ht_option ht_opt = { - CENSUS_HT_UINT64 /* key type*/, 571 /* n_of_buckets */, NULL /* hash */, - NULL /* compare_keys */, delete_trace_obj /* delete data */, + CENSUS_HT_UINT64 /* key type*/, + 571 /* n_of_buckets */, + NULL /* hash */, + NULL /* compare_keys */, + delete_trace_obj /* delete data */, NULL /* delete key */ }; diff --git a/src/core/statistics/census_tracing.h b/src/core/statistics/census_tracing.h index a4494b510c..08305c2469 100644 --- a/src/core/statistics/census_tracing.h +++ b/src/core/statistics/census_tracing.h @@ -93,4 +93,4 @@ census_trace_obj** census_get_active_ops(int* num_active_ops); } #endif -#endif /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_TRACING_H */ +#endif /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_TRACING_H */ diff --git a/src/core/statistics/hash_table.h b/src/core/statistics/hash_table.h index 7bcb4bcd9b..b7f8e11af4 100644 --- a/src/core/statistics/hash_table.h +++ b/src/core/statistics/hash_table.h @@ -128,4 +128,4 @@ typedef void (*census_ht_itr_cb)(census_ht_key key, const void* val_ptr, should not invalidate data entries. */ gpr_uint64 census_ht_for_all(const census_ht* ht, census_ht_itr_cb); -#endif /* GRPC_INTERNAL_CORE_STATISTICS_HASH_TABLE_H */ +#endif /* GRPC_INTERNAL_CORE_STATISTICS_HASH_TABLE_H */ diff --git a/src/core/support/cpu_iphone.c b/src/core/support/cpu_iphone.c index d412a6d7ee..82b49b47bc 100644 --- a/src/core/support/cpu_iphone.c +++ b/src/core/support/cpu_iphone.c @@ -36,9 +36,7 @@ #ifdef GPR_CPU_IPHONE /* Probably 2 instead of 1, but see comment on gpr_cpu_current_cpu. */ -unsigned gpr_cpu_num_cores(void) { - return 1; -} +unsigned gpr_cpu_num_cores(void) { return 1; } /* Most code that's using this is using it to shard across work queues. So unless profiling shows it's a problem or there appears a way to detect the @@ -46,8 +44,6 @@ unsigned gpr_cpu_num_cores(void) { Note that the interface in cpu.h lets gpr_cpu_num_cores return 0, but doing it makes it impossible for gpr_cpu_current_cpu to satisfy its stated range, and some code might be relying on it. */ -unsigned gpr_cpu_current_cpu(void) { - return 0; -} +unsigned gpr_cpu_current_cpu(void) { return 0; } #endif /* GPR_CPU_IPHONE */ diff --git a/src/core/support/cpu_linux.c b/src/core/support/cpu_linux.c index 282d4daab1..7af6a8f009 100644 --- a/src/core/support/cpu_linux.c +++ b/src/core/support/cpu_linux.c @@ -33,7 +33,7 @@ #ifndef _GNU_SOURCE #define _GNU_SOURCE -#endif /* _GNU_SOURCE */ +#endif /* _GNU_SOURCE */ #include <grpc/support/port_platform.h> diff --git a/src/core/support/env.h b/src/core/support/env.h index 4f2e394d14..24172d8673 100644 --- a/src/core/support/env.h +++ b/src/core/support/env.h @@ -57,4 +57,4 @@ void gpr_setenv(const char *name, const char *value); } #endif -#endif /* GRPC_INTERNAL_CORE_SUPPORT_ENV_H */ +#endif /* GRPC_INTERNAL_CORE_SUPPORT_ENV_H */ diff --git a/src/core/support/file.h b/src/core/support/file.h index 1dafe390e3..d8b7cea44f 100644 --- a/src/core/support/file.h +++ b/src/core/support/file.h @@ -60,4 +60,4 @@ FILE *gpr_tmpfile(const char *prefix, char **tmp_filename); } #endif -#endif /* GRPC_INTERNAL_CORE_SUPPORT_FILE_H */ +#endif /* GRPC_INTERNAL_CORE_SUPPORT_FILE_H */ diff --git a/src/core/support/histogram.c b/src/core/support/histogram.c index 9029703891..78dbf98684 100644 --- a/src/core/support/histogram.c +++ b/src/core/support/histogram.c @@ -191,15 +191,18 @@ static double threshold_for_count_below(gpr_histogram *h, double count_below) { break; } } - return (bucket_start(h, (double)lower_idx) + bucket_start(h, (double)upper_idx)) / 2.0; + return (bucket_start(h, (double)lower_idx) + + bucket_start(h, (double)upper_idx)) / + 2.0; } else { /* treat values as uniform throughout the bucket, and find where this value should lie */ lower_bound = bucket_start(h, (double)lower_idx); upper_bound = bucket_start(h, (double)(lower_idx + 1)); - return GPR_CLAMP(upper_bound - (upper_bound - lower_bound) * - (count_so_far - count_below) / - h->buckets[lower_idx], + return GPR_CLAMP(upper_bound - + (upper_bound - lower_bound) * + (count_so_far - count_below) / + h->buckets[lower_idx], h->min_seen, h->max_seen); } } diff --git a/src/core/support/log_linux.c b/src/core/support/log_linux.c index 5ac36e7b95..02f64d8b7e 100644 --- a/src/core/support/log_linux.c +++ b/src/core/support/log_linux.c @@ -93,8 +93,8 @@ void gpr_default_log(gpr_log_func_args *args) { } gpr_asprintf(&prefix, "%s%s.%09d %7tu %s:%d]", - gpr_log_severity_string(args->severity), time_buffer, - (int)(now.tv_nsec), gettid(), display_file, args->line); + gpr_log_severity_string(args->severity), time_buffer, + (int)(now.tv_nsec), gettid(), display_file, args->line); fprintf(stderr, "%-60s %s\n", prefix, args->message); gpr_free(prefix); diff --git a/src/core/support/murmur_hash.h b/src/core/support/murmur_hash.h index 85ab2fe4bf..343fcb99f7 100644 --- a/src/core/support/murmur_hash.h +++ b/src/core/support/murmur_hash.h @@ -41,4 +41,4 @@ /* compute the hash of key (length len) */ gpr_uint32 gpr_murmur_hash3(const void *key, size_t len, gpr_uint32 seed); -#endif /* GRPC_INTERNAL_CORE_SUPPORT_MURMUR_HASH_H */ +#endif /* GRPC_INTERNAL_CORE_SUPPORT_MURMUR_HASH_H */ diff --git a/src/core/support/slice.c b/src/core/support/slice.c index e4196a48c6..53024e88f1 100644 --- a/src/core/support/slice.c +++ b/src/core/support/slice.c @@ -284,7 +284,8 @@ gpr_slice gpr_slice_split_head(gpr_slice *source, size_t split) { head.refcount = NULL; head.data.inlined.length = (gpr_uint8)split; memcpy(head.data.inlined.bytes, source->data.inlined.bytes, split); - source->data.inlined.length = (gpr_uint8)(source->data.inlined.length - split); + source->data.inlined.length = + (gpr_uint8)(source->data.inlined.length - split); memmove(source->data.inlined.bytes, source->data.inlined.bytes + split, source->data.inlined.length); } else if (split < sizeof(head.data.inlined.bytes)) { diff --git a/src/core/support/slice_buffer.c b/src/core/support/slice_buffer.c index 6e6c72a2bf..987d5cb9b5 100644 --- a/src/core/support/slice_buffer.c +++ b/src/core/support/slice_buffer.c @@ -116,7 +116,8 @@ void gpr_slice_buffer_add(gpr_slice_buffer *sb, gpr_slice s) { GPR_SLICE_INLINED_SIZE) { memcpy(back->data.inlined.bytes + back->data.inlined.length, s.data.inlined.bytes, s.data.inlined.length); - back->data.inlined.length = (gpr_uint8)(back->data.inlined.length + s.data.inlined.length); + back->data.inlined.length = + (gpr_uint8)(back->data.inlined.length + s.data.inlined.length); } else { size_t cp1 = GPR_SLICE_INLINED_SIZE - back->data.inlined.length; memcpy(back->data.inlined.bytes + back->data.inlined.length, diff --git a/src/core/support/stack_lockfree.c b/src/core/support/stack_lockfree.c index bc741f8c70..27ecf62280 100644 --- a/src/core/support/stack_lockfree.c +++ b/src/core/support/stack_lockfree.c @@ -67,7 +67,7 @@ typedef union lockfree_node { #define ENTRY_ALIGNMENT_BITS 3 /* make sure that entries aligned to 8-bytes */ #define INVALID_ENTRY_INDEX \ ((1 << 16) - 1) /* reserve this entry as invalid \ - */ + */ struct gpr_stack_lockfree { lockfree_node *entries; @@ -75,7 +75,7 @@ struct gpr_stack_lockfree { #ifndef NDEBUG /* Bitmap of pushed entries to check for double-push or pop */ - gpr_atm pushed[(INVALID_ENTRY_INDEX+1)/(8*sizeof(gpr_atm))]; + gpr_atm pushed[(INVALID_ENTRY_INDEX + 1) / (8 * sizeof(gpr_atm))]; #endif }; @@ -123,13 +123,13 @@ int gpr_stack_lockfree_push(gpr_stack_lockfree *stack, int entry) { #ifndef NDEBUG /* Check for double push */ { - int pushed_index = entry / (8*sizeof(gpr_atm)); - int pushed_bit = entry % (8*sizeof(gpr_atm)); + int pushed_index = entry / (8 * sizeof(gpr_atm)); + int pushed_bit = entry % (8 * sizeof(gpr_atm)); gpr_atm old_val; old_val = gpr_atm_no_barrier_fetch_add(&stack->pushed[pushed_index], - (gpr_atm)(1UL << pushed_bit)); - GPR_ASSERT((old_val & (1UL<<pushed_bit)) == 0); + (gpr_atm)(1UL << pushed_bit)); + GPR_ASSERT((old_val & (1UL << pushed_bit)) == 0); } #endif @@ -161,13 +161,13 @@ int gpr_stack_lockfree_pop(gpr_stack_lockfree *stack) { #ifndef NDEBUG /* Check for valid pop */ { - int pushed_index = head.contents.index / (8*sizeof(gpr_atm)); - int pushed_bit = head.contents.index % (8*sizeof(gpr_atm)); + int pushed_index = head.contents.index / (8 * sizeof(gpr_atm)); + int pushed_bit = head.contents.index % (8 * sizeof(gpr_atm)); gpr_atm old_val; old_val = gpr_atm_no_barrier_fetch_add(&stack->pushed[pushed_index], - -(gpr_atm)(1UL << pushed_bit)); - GPR_ASSERT((old_val & (1UL<<pushed_bit)) != 0); + -(gpr_atm)(1UL << pushed_bit)); + GPR_ASSERT((old_val & (1UL << pushed_bit)) != 0); } #endif diff --git a/src/core/support/string.c b/src/core/support/string.c index 9babbd910a..af0389ea83 100644 --- a/src/core/support/string.c +++ b/src/core/support/string.c @@ -125,7 +125,6 @@ char *gpr_dump_slice(gpr_slice s, gpr_uint32 flags) { flags); } - int gpr_parse_bytes_to_uint32(const char *buf, size_t len, gpr_uint32 *result) { gpr_uint32 out = 0; gpr_uint32 new; @@ -187,9 +186,9 @@ char *gpr_strjoin_sep(const char **strs, size_t nstrs, const char *sep, for (i = 0; i < nstrs; i++) { out_length += strlen(strs[i]); } - out_length += 1; /* null terminator */ + out_length += 1; /* null terminator */ if (nstrs > 0) { - out_length += sep_len * (nstrs - 1); /* separators */ + out_length += sep_len * (nstrs - 1); /* separators */ } out = gpr_malloc(out_length); out_length = 0; @@ -214,10 +213,8 @@ char *gpr_strjoin_sep(const char **strs, size_t nstrs, const char *sep, * str. * * Returns 1 and updates \a begin and \a end. Returns 0 otherwise. */ -static int slice_find_separator_offset(const gpr_slice str, - const char *sep, - const size_t read_offset, - size_t *begin, +static int slice_find_separator_offset(const gpr_slice str, const char *sep, + const size_t read_offset, size_t *begin, size_t *end) { size_t i; const gpr_uint8 *str_ptr = GPR_SLICE_START_PTR(str) + read_offset; @@ -255,9 +252,7 @@ void gpr_slice_split(gpr_slice str, const char *sep, gpr_slice_buffer *dst) { } } -void gpr_strvec_init(gpr_strvec *sv) { - memset(sv, 0, sizeof(*sv)); -} +void gpr_strvec_init(gpr_strvec *sv) { memset(sv, 0, sizeof(*sv)); } void gpr_strvec_destroy(gpr_strvec *sv) { size_t i; @@ -270,11 +265,11 @@ void gpr_strvec_destroy(gpr_strvec *sv) { void gpr_strvec_add(gpr_strvec *sv, char *str) { if (sv->count == sv->capacity) { sv->capacity = GPR_MAX(sv->capacity + 8, sv->capacity * 2); - sv->strs = gpr_realloc(sv->strs, sizeof(char*) * sv->capacity); + sv->strs = gpr_realloc(sv->strs, sizeof(char *) * sv->capacity); } sv->strs[sv->count++] = str; } char *gpr_strvec_flatten(gpr_strvec *sv, size_t *final_length) { - return gpr_strjoin((const char**)sv->strs, sv->count, final_length); + return gpr_strjoin((const char **)sv->strs, sv->count, final_length); } diff --git a/src/core/support/string.h b/src/core/support/string.h index 3ac4abeef8..a28e00fd3e 100644 --- a/src/core/support/string.h +++ b/src/core/support/string.h @@ -47,7 +47,7 @@ extern "C" { /* String utility functions */ /* Flags for gpr_dump function. */ -#define GPR_DUMP_HEX 0x00000001 +#define GPR_DUMP_HEX 0x00000001 #define GPR_DUMP_ASCII 0x00000002 /* Converts array buf, of length len, into a C string according to the flags. @@ -108,4 +108,4 @@ char *gpr_strvec_flatten(gpr_strvec *strs, size_t *total_length); } #endif -#endif /* GRPC_INTERNAL_CORE_SUPPORT_STRING_H */ +#endif /* GRPC_INTERNAL_CORE_SUPPORT_STRING_H */ diff --git a/src/core/support/string_win32.c b/src/core/support/string_win32.c index 27b9f3637a..8ffb0a225e 100644 --- a/src/core/support/string_win32.c +++ b/src/core/support/string_win32.c @@ -99,13 +99,9 @@ LPSTR gpr_tchar_to_char(LPCTSTR input) { return ret; } #else -char *gpr_tchar_to_char(LPTSTR input) { - return gpr_strdup(input); -} +char *gpr_tchar_to_char(LPTSTR input) { return gpr_strdup(input); } -char *gpr_char_to_tchar(LPTSTR input) { - return gpr_strdup(input); -} +char *gpr_char_to_tchar(LPTSTR input) { return gpr_strdup(input); } #endif #endif /* GPR_WIN32 */ diff --git a/src/core/support/string_win32.h b/src/core/support/string_win32.h index 1260aa55c1..e3043656fb 100644 --- a/src/core/support/string_win32.h +++ b/src/core/support/string_win32.h @@ -42,6 +42,6 @@ LPTSTR gpr_char_to_tchar(LPCSTR input); LPSTR gpr_tchar_to_char(LPCTSTR input); -#endif /* GPR_WIN32 */ +#endif /* GPR_WIN32 */ -#endif /* GRPC_INTERNAL_CORE_SUPPORT_STRING_WIN32_H */ +#endif /* GRPC_INTERNAL_CORE_SUPPORT_STRING_WIN32_H */ diff --git a/src/core/support/sync_posix.c b/src/core/support/sync_posix.c index 61572b9a8e..6f078cd4bb 100644 --- a/src/core/support/sync_posix.c +++ b/src/core/support/sync_posix.c @@ -63,7 +63,8 @@ void gpr_cv_destroy(gpr_cv *cv) { GPR_ASSERT(pthread_cond_destroy(cv) == 0); } int gpr_cv_wait(gpr_cv *cv, gpr_mu *mu, gpr_timespec abs_deadline) { int err = 0; - if (gpr_time_cmp(abs_deadline, gpr_inf_future(abs_deadline.clock_type)) == 0) { + if (gpr_time_cmp(abs_deadline, gpr_inf_future(abs_deadline.clock_type)) == + 0) { err = pthread_cond_wait(cv, mu); } else { struct timespec abs_deadline_ts; diff --git a/src/core/support/sync_win32.c b/src/core/support/sync_win32.c index 54f84a46ac..df23492171 100644 --- a/src/core/support/sync_win32.c +++ b/src/core/support/sync_win32.c @@ -83,7 +83,8 @@ int gpr_cv_wait(gpr_cv *cv, gpr_mu *mu, gpr_timespec abs_deadline) { int timeout = 0; DWORD timeout_max_ms; mu->locked = 0; - if (gpr_time_cmp(abs_deadline, gpr_inf_future(abs_deadline.clock_type)) == 0) { + if (gpr_time_cmp(abs_deadline, gpr_inf_future(abs_deadline.clock_type)) == + 0) { SleepConditionVariableCS(cv, &mu->cs, INFINITE); } else { gpr_timespec now = gpr_now(abs_deadline.clock_type); diff --git a/src/core/support/thd.c b/src/core/support/thd.c index ec308f3119..32c0db5b66 100644 --- a/src/core/support/thd.c +++ b/src/core/support/thd.c @@ -37,9 +37,7 @@ #include <grpc/support/thd.h> -enum { - GPR_THD_JOINABLE = 1 -}; +enum { GPR_THD_JOINABLE = 1 }; gpr_thd_options gpr_thd_options_default(void) { gpr_thd_options options; diff --git a/src/core/support/thd_internal.h b/src/core/support/thd_internal.h index 4683c37742..1508c4691f 100644 --- a/src/core/support/thd_internal.h +++ b/src/core/support/thd_internal.h @@ -36,4 +36,4 @@ /* Internal interfaces between modules within the gpr support library. */ -#endif /* GRPC_INTERNAL_CORE_SUPPORT_THD_INTERNAL_H */ +#endif /* GRPC_INTERNAL_CORE_SUPPORT_THD_INTERNAL_H */ diff --git a/src/core/support/thd_posix.c b/src/core/support/thd_posix.c index fa4eb50556..c36d94d044 100644 --- a/src/core/support/thd_posix.c +++ b/src/core/support/thd_posix.c @@ -69,9 +69,11 @@ int gpr_thd_new(gpr_thd_id *t, void (*thd_body)(void *arg), void *arg, GPR_ASSERT(pthread_attr_init(&attr) == 0); if (gpr_thd_options_is_detached(options)) { - GPR_ASSERT(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) == 0); + GPR_ASSERT(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) == + 0); } else { - GPR_ASSERT(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE) == 0); + GPR_ASSERT(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE) == + 0); } thread_started = (pthread_create(&p, &attr, &thread_body, a) == 0); GPR_ASSERT(pthread_attr_destroy(&attr) == 0); @@ -82,12 +84,8 @@ int gpr_thd_new(gpr_thd_id *t, void (*thd_body)(void *arg), void *arg, return thread_started; } -gpr_thd_id gpr_thd_currentid(void) { - return (gpr_thd_id)pthread_self(); -} +gpr_thd_id gpr_thd_currentid(void) { return (gpr_thd_id)pthread_self(); } -void gpr_thd_join(gpr_thd_id t) { - pthread_join((pthread_t)t, NULL); -} +void gpr_thd_join(gpr_thd_id t) { pthread_join((pthread_t)t, NULL); } #endif /* GPR_POSIX_SYNC */ diff --git a/src/core/support/thd_win32.c b/src/core/support/thd_win32.c index 4fa3907444..a9db180c1b 100644 --- a/src/core/support/thd_win32.c +++ b/src/core/support/thd_win32.c @@ -105,9 +105,7 @@ int gpr_thd_new(gpr_thd_id *t, void (*thd_body)(void *arg), void *arg, return handle != NULL; } -gpr_thd_id gpr_thd_currentid(void) { - return (gpr_thd_id)g_thd_info; -} +gpr_thd_id gpr_thd_currentid(void) { return (gpr_thd_id)g_thd_info; } void gpr_thd_join(gpr_thd_id t) { struct thd_info *info = (struct thd_info *)t; diff --git a/src/core/support/time.c b/src/core/support/time.c index b523ae01cc..929adac918 100644 --- a/src/core/support/time.c +++ b/src/core/support/time.c @@ -315,5 +315,6 @@ gpr_timespec gpr_convert_clock_type(gpr_timespec t, gpr_clock_type clock_type) { return gpr_time_add(gpr_now(clock_type), t); } - return gpr_time_add(gpr_now(clock_type), gpr_time_sub(t, gpr_now(t.clock_type))); + return gpr_time_add(gpr_now(clock_type), + gpr_time_sub(t, gpr_now(t.clock_type))); } diff --git a/src/core/support/tls_pthread.c b/src/core/support/tls_pthread.c index f2e76a553f..2d28226fc4 100644 --- a/src/core/support/tls_pthread.c +++ b/src/core/support/tls_pthread.c @@ -38,7 +38,7 @@ #include <grpc/support/tls.h> gpr_intptr gpr_tls_set(struct gpr_pthread_thread_local *tls, gpr_intptr value) { - GPR_ASSERT(0 == pthread_setspecific(tls->key, (void*)value)); + GPR_ASSERT(0 == pthread_setspecific(tls->key, (void *)value)); return value; } diff --git a/src/core/surface/byte_buffer_queue.h b/src/core/surface/byte_buffer_queue.h index f01958984f..2c3b22d24e 100644 --- a/src/core/surface/byte_buffer_queue.h +++ b/src/core/surface/byte_buffer_queue.h @@ -59,4 +59,4 @@ int grpc_bbq_empty(grpc_byte_buffer_queue *q); void grpc_bbq_push(grpc_byte_buffer_queue *q, grpc_byte_buffer *bb); size_t grpc_bbq_bytes(grpc_byte_buffer_queue *q); -#endif /* GRPC_INTERNAL_CORE_SURFACE_BYTE_BUFFER_QUEUE_H */ +#endif /* GRPC_INTERNAL_CORE_SURFACE_BYTE_BUFFER_QUEUE_H */ diff --git a/src/core/surface/call.c b/src/core/surface/call.c index f3012d0c59..a6153b479d 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -276,7 +276,8 @@ struct grpc_call { /** completion events - for completion queue use */ grpc_cq_completion completions[MAX_CONCURRENT_COMPLETIONS]; - /** siblings: children of the same parent form a list, and this list is protected under + /** siblings: children of the same parent form a list, and this list is + protected under parent->mu */ grpc_call *sibling_next; grpc_call *sibling_prev; @@ -398,7 +399,8 @@ grpc_call *grpc_call_create(grpc_channel *channel, grpc_call *parent_call, } else { call->sibling_next = parent_call->first_child; call->sibling_prev = parent_call->first_child->sibling_prev; - call->sibling_next->sibling_prev = call->sibling_prev->sibling_next = call; + call->sibling_next->sibling_prev = call->sibling_prev->sibling_next = + call; } gpr_mu_unlock(&parent_call->mu); @@ -536,9 +538,8 @@ 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 set_encodings_accepted_by_peer( + grpc_call *call, const gpr_slice accept_encoding_slice) { size_t i; grpc_compression_algorithm algorithm; gpr_slice_buffer accept_encoding_parts; @@ -1324,7 +1325,7 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call *c, const char *description, void *reserved) { grpc_call_error r; - (void) reserved; + (void)reserved; lock(c); r = cancel_with_status(c, status, description); unlock(c); @@ -1592,7 +1593,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, /* Flag validation: currently allow no flags */ if (op->flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS; req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_SEND_INITIAL_METADATA; req->data.send_metadata.count = op->data.send_initial_metadata.count; req->data.send_metadata.metadata = @@ -1607,7 +1608,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, return GRPC_CALL_ERROR_INVALID_MESSAGE; } req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_SEND_MESSAGE; req->data.send_message = op->data.send_message; req->flags = op->flags; @@ -1619,7 +1620,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, return GRPC_CALL_ERROR_NOT_ON_SERVER; } req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_SEND_CLOSE; req->flags = op->flags; break; @@ -1630,7 +1631,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, return GRPC_CALL_ERROR_NOT_ON_CLIENT; } req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_SEND_TRAILING_METADATA; req->flags = op->flags; req->data.send_metadata.count = @@ -1638,7 +1639,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, req->data.send_metadata.metadata = op->data.send_status_from_server.trailing_metadata; req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_SEND_STATUS; req->data.send_status.code = op->data.send_status_from_server.status; req->data.send_status.details = @@ -1648,7 +1649,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, op->data.send_status_from_server.status_details, 0) : NULL; req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_SEND_CLOSE; break; case GRPC_OP_RECV_INITIAL_METADATA: @@ -1658,7 +1659,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, return GRPC_CALL_ERROR_NOT_ON_SERVER; } req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_RECV_INITIAL_METADATA; req->data.recv_metadata = op->data.recv_initial_metadata; req->data.recv_metadata->count = 0; @@ -1668,7 +1669,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, /* Flag validation: currently allow no flags */ if (op->flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS; req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_RECV_MESSAGE; req->data.recv_message = op->data.recv_message; req->flags = op->flags; @@ -1680,26 +1681,26 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, return GRPC_CALL_ERROR_NOT_ON_SERVER; } req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_RECV_STATUS; req->flags = op->flags; req->data.recv_status.set_value = set_status_value_directly; req->data.recv_status.user_data = op->data.recv_status_on_client.status; req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_RECV_STATUS_DETAILS; req->data.recv_status_details.details = op->data.recv_status_on_client.status_details; req->data.recv_status_details.details_capacity = op->data.recv_status_on_client.status_details_capacity; req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_RECV_TRAILING_METADATA; req->data.recv_metadata = op->data.recv_status_on_client.trailing_metadata; req->data.recv_metadata->count = 0; req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_RECV_CLOSE; finish_func = finish_batch_with_close; break; @@ -1707,14 +1708,14 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, /* Flag validation: currently allow no flags */ if (op->flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS; req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_RECV_STATUS; req->flags = op->flags; req->data.recv_status.set_value = set_cancelled_value; req->data.recv_status.user_data = op->data.recv_close_on_server.cancelled; req = &reqs[out++]; - if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; + if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG; req->op = GRPC_IOREQ_RECV_CLOSE; finish_func = finish_batch_with_close; break; diff --git a/src/core/surface/call_log_batch.c b/src/core/surface/call_log_batch.c index 7bf8cafc24..5a3ef1e5f4 100644 --- a/src/core/surface/call_log_batch.c +++ b/src/core/surface/call_log_batch.c @@ -41,7 +41,7 @@ int grpc_trace_batch = 0; static void add_metadata(gpr_strvec *b, const grpc_metadata *md, size_t count) { size_t i; - for(i = 0; i < count; i++) { + for (i = 0; i < count; i++) { gpr_strvec_add(b, gpr_strdup("\nkey=")); gpr_strvec_add(b, gpr_strdup(md[i].key)); @@ -113,8 +113,9 @@ void grpc_call_log_batch(char *file, int line, gpr_log_severity severity, char *tmp; size_t i; gpr_log(file, line, severity, - "grpc_call_start_batch(call=%p, ops=%p, nops=%d, tag=%p)", call, ops, nops, tag); - for(i = 0; i < nops; i++) { + "grpc_call_start_batch(call=%p, ops=%p, nops=%d, tag=%p)", call, ops, + nops, tag); + for (i = 0; i < nops; i++) { tmp = grpc_op_string(&ops[i]); gpr_log(file, line, severity, "ops[%d]: %s", i, tmp); gpr_free(tmp); @@ -123,8 +124,7 @@ void grpc_call_log_batch(char *file, int line, gpr_log_severity severity, void grpc_server_log_request_call(char *file, int line, gpr_log_severity severity, - grpc_server *server, - grpc_call **call, + grpc_server *server, grpc_call **call, grpc_call_details *details, grpc_metadata_array *initial_metadata, grpc_completion_queue *cq_bound_to_call, @@ -133,8 +133,9 @@ void grpc_server_log_request_call(char *file, int line, gpr_log(file, line, severity, "grpc_server_request_call(server=%p, call=%p, details=%p, " "initial_metadata=%p, cq_bound_to_call=%p, cq_for_notification=%p, " - "tag=%p)", server, call, details, initial_metadata, - cq_bound_to_call, cq_for_notification, tag); + "tag=%p)", + server, call, details, initial_metadata, cq_bound_to_call, + cq_for_notification, tag); } void grpc_server_log_shutdown(char *file, int line, gpr_log_severity severity, diff --git a/src/core/surface/channel.c b/src/core/surface/channel.c index 89fe152a0e..e50251566d 100644 --- a/src/core/surface/channel.c +++ b/src/core/surface/channel.c @@ -163,7 +163,7 @@ static grpc_call *grpc_channel_create_call_internal( send_metadata[num_metadata++] = authority_mdelem; } - return grpc_call_create(channel, parent_call, propagation_mask, cq, NULL, + return grpc_call_create(channel, parent_call, propagation_mask, cq, NULL, send_metadata, num_metadata, deadline); } @@ -179,10 +179,11 @@ grpc_call *grpc_channel_create_call(grpc_channel *channel, grpc_mdelem_from_metadata_strings( channel->metadata_context, GRPC_MDSTR_REF(channel->path_string), grpc_mdstr_from_string(channel->metadata_context, method, 0)), - host ? - grpc_mdelem_from_metadata_strings( - channel->metadata_context, GRPC_MDSTR_REF(channel->authority_string), - grpc_mdstr_from_string(channel->metadata_context, host, 0)) : NULL, + host ? grpc_mdelem_from_metadata_strings( + channel->metadata_context, + GRPC_MDSTR_REF(channel->authority_string), + grpc_mdstr_from_string(channel->metadata_context, host, 0)) + : NULL, deadline); } @@ -193,9 +194,12 @@ void *grpc_channel_register_call(grpc_channel *channel, const char *method, rc->path = grpc_mdelem_from_metadata_strings( channel->metadata_context, GRPC_MDSTR_REF(channel->path_string), grpc_mdstr_from_string(channel->metadata_context, method, 0)); - rc->authority = host ? grpc_mdelem_from_metadata_strings( - channel->metadata_context, GRPC_MDSTR_REF(channel->authority_string), - grpc_mdstr_from_string(channel->metadata_context, host, 0)) : NULL; + rc->authority = + host ? grpc_mdelem_from_metadata_strings( + channel->metadata_context, + GRPC_MDSTR_REF(channel->authority_string), + grpc_mdstr_from_string(channel->metadata_context, host, 0)) + : NULL; gpr_mu_lock(&channel->registered_call_mu); rc->next = channel->registered_calls; channel->registered_calls = rc; @@ -210,8 +214,8 @@ grpc_call *grpc_channel_create_registered_call( registered_call *rc = registered_call_handle; GPR_ASSERT(!reserved); return grpc_channel_create_call_internal( - channel, parent_call, propagation_mask, completion_queue, - GRPC_MDELEM_REF(rc->path), + channel, parent_call, propagation_mask, completion_queue, + GRPC_MDELEM_REF(rc->path), rc->authority ? GRPC_MDELEM_REF(rc->authority) : NULL, deadline); } diff --git a/src/core/surface/channel_connectivity.c b/src/core/surface/channel_connectivity.c index 1223706457..88a7c16598 100644 --- a/src/core/surface/channel_connectivity.c +++ b/src/core/surface/channel_connectivity.c @@ -77,9 +77,10 @@ typedef struct { } state_watcher; static void delete_state_watcher(state_watcher *w) { - grpc_channel_element *client_channel_elem = - grpc_channel_stack_last_element(grpc_channel_get_channel_stack(w->channel)); - grpc_client_channel_del_interested_party(client_channel_elem, grpc_cq_pollset(w->cq)); + grpc_channel_element *client_channel_elem = grpc_channel_stack_last_element( + grpc_channel_get_channel_stack(w->channel)); + grpc_client_channel_del_interested_party(client_channel_elem, + grpc_cq_pollset(w->cq)); GRPC_CHANNEL_INTERNAL_UNREF(w->channel, "watch_connectivity"); gpr_mu_destroy(&w->mu); gpr_free(w); @@ -166,9 +167,9 @@ void grpc_channel_watch_connectivity_state( w->tag = tag; w->channel = channel; - grpc_alarm_init( - &w->alarm, gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC), - timeout_complete, w, gpr_now(GPR_CLOCK_MONOTONIC)); + grpc_alarm_init(&w->alarm, + gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC), + timeout_complete, w, gpr_now(GPR_CLOCK_MONOTONIC)); if (client_channel_elem->filter != &grpc_client_channel_filter) { gpr_log(GPR_ERROR, @@ -178,7 +179,8 @@ void grpc_channel_watch_connectivity_state( grpc_iomgr_add_delayed_callback(&w->on_complete, 1); } else { GRPC_CHANNEL_INTERNAL_REF(channel, "watch_connectivity"); - grpc_client_channel_add_interested_party(client_channel_elem, grpc_cq_pollset(cq)); + grpc_client_channel_add_interested_party(client_channel_elem, + grpc_cq_pollset(cq)); grpc_client_channel_watch_connectivity_state(client_channel_elem, &w->state, &w->on_complete); } diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c index 378b3f71a1..77443a7ae8 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -167,8 +167,7 @@ void grpc_cq_end_op(grpc_completion_queue *cc, void *tag, int success, } grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, - gpr_timespec deadline, - void *reserved) { + gpr_timespec deadline, void *reserved) { grpc_event ret; grpc_pollset_worker worker; GPR_ASSERT(!reserved); @@ -272,8 +271,9 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag, break; } if (!add_plucker(cc, tag, &worker)) { - gpr_log(GPR_DEBUG, - "Too many outstanding grpc_completion_queue_pluck calls: maximum is %d", + gpr_log(GPR_DEBUG, + "Too many outstanding grpc_completion_queue_pluck calls: maximum " + "is %d", GRPC_MAX_COMPLETION_QUEUE_PLUCKERS); gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset)); memset(&ret, 0, sizeof(ret)); diff --git a/src/core/surface/event_string.h b/src/core/surface/event_string.h index e8a8f93518..07c474e3a0 100644 --- a/src/core/surface/event_string.h +++ b/src/core/surface/event_string.h @@ -39,4 +39,4 @@ /* Returns a string describing an event. Must be later freed with gpr_free() */ char *grpc_event_string(grpc_event *ev); -#endif /* GRPC_INTERNAL_CORE_SURFACE_EVENT_STRING_H */ +#endif /* GRPC_INTERNAL_CORE_SURFACE_EVENT_STRING_H */ diff --git a/src/core/surface/init.h b/src/core/surface/init.h index 416874020d..771c30f412 100644 --- a/src/core/surface/init.h +++ b/src/core/surface/init.h @@ -37,4 +37,4 @@ void grpc_security_pre_init(void); int grpc_is_initialized(void); -#endif /* GRPC_INTERNAL_CORE_SURFACE_INIT_H */ +#endif /* GRPC_INTERNAL_CORE_SURFACE_INIT_H */ diff --git a/src/core/surface/init_unsecure.c b/src/core/surface/init_unsecure.c index ddb70cef8e..630d564a7d 100644 --- a/src/core/surface/init_unsecure.c +++ b/src/core/surface/init_unsecure.c @@ -33,5 +33,4 @@ #include "src/core/surface/init.h" -void grpc_security_pre_init(void) { -} +void grpc_security_pre_init(void) {} diff --git a/src/core/surface/server.c b/src/core/surface/server.c index f883275951..f399aa69f2 100644 --- a/src/core/surface/server.c +++ b/src/core/surface/server.c @@ -712,7 +712,8 @@ static void init_channel_elem(grpc_channel_element *elem, grpc_channel *master, chand->server = NULL; chand->channel = NULL; chand->path_key = grpc_mdstr_from_string(metadata_context, ":path", 0); - chand->authority_key = grpc_mdstr_from_string(metadata_context, ":authority", 0); + chand->authority_key = + grpc_mdstr_from_string(metadata_context, ":authority", 0); chand->next = chand->prev = chand; chand->registered_methods = NULL; chand->connectivity_state = GRPC_CHANNEL_IDLE; diff --git a/src/core/surface/server_create.c b/src/core/surface/server_create.c index 9237eb5a90..fc7ae820f5 100644 --- a/src/core/surface/server_create.c +++ b/src/core/surface/server_create.c @@ -38,7 +38,7 @@ grpc_server *grpc_server_create(const grpc_channel_args *args, void *reserved) { const grpc_channel_filter *filters[] = {&grpc_compress_filter}; - (void) reserved; + (void)reserved; return grpc_server_create_from_filters(filters, GPR_ARRAY_SIZE(filters), args); } diff --git a/src/core/surface/surface_trace.h b/src/core/surface/surface_trace.h index 01302bb5d4..2b4728e2b4 100644 --- a/src/core/surface/surface_trace.h +++ b/src/core/surface/surface_trace.h @@ -40,10 +40,10 @@ extern int grpc_surface_trace; #define GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, event) \ - if (grpc_surface_trace) { \ + if (grpc_surface_trace) { \ char *_ev = grpc_event_string(event); \ gpr_log(GPR_INFO, "RETURN_EVENT[%p]: %s", cq, _ev); \ gpr_free(_ev); \ } -#endif /* GRPC_INTERNAL_CORE_SURFACE_SURFACE_TRACE_H */ +#endif /* GRPC_INTERNAL_CORE_SURFACE_SURFACE_TRACE_H */ diff --git a/src/core/surface/version.c b/src/core/surface/version.c index d7aaba3868..61e762eb60 100644 --- a/src/core/surface/version.c +++ b/src/core/surface/version.c @@ -36,6 +36,4 @@ #include <grpc/grpc.h> -const char *grpc_version_string(void) { - return "0.10.1.0"; -} +const char *grpc_version_string(void) { return "0.10.1.0"; } diff --git a/src/core/transport/chttp2/frame_data.c b/src/core/transport/chttp2/frame_data.c index 40bf2ebd79..474c3d5ee6 100644 --- a/src/core/transport/chttp2/frame_data.c +++ b/src/core/transport/chttp2/frame_data.c @@ -92,10 +92,10 @@ grpc_chttp2_parse_error grpc_chttp2_data_parser_parse( p->frame_type = *cur; switch (p->frame_type) { case 0: - p->is_frame_compressed = 0; /* GPR_FALSE */ + p->is_frame_compressed = 0; /* GPR_FALSE */ break; case 1: - p->is_frame_compressed = 1; /* GPR_TRUE */ + p->is_frame_compressed = 1; /* GPR_TRUE */ break; default: gpr_log(GPR_ERROR, "Bad GRPC frame type 0x%02x", p->frame_type); diff --git a/src/core/transport/chttp2/parsing.c b/src/core/transport/chttp2/parsing.c index d84960009b..dc5eb18e42 100644 --- a/src/core/transport/chttp2/parsing.c +++ b/src/core/transport/chttp2/parsing.c @@ -177,10 +177,9 @@ void grpc_chttp2_publish_reads( "parsed", transport_parsing, stream_global, max_recv_bytes, -(gpr_int64)stream_parsing->incoming_window_delta); stream_global->incoming_window -= stream_parsing->incoming_window_delta; - GPR_ASSERT(stream_global->max_recv_bytes >= - stream_parsing->incoming_window_delta); - stream_global->max_recv_bytes -= - stream_parsing->incoming_window_delta; + GPR_ASSERT(stream_global->max_recv_bytes >= + stream_parsing->incoming_window_delta); + stream_global->max_recv_bytes -= stream_parsing->incoming_window_delta; stream_parsing->incoming_window_delta = 0; grpc_chttp2_list_add_writable_stream(transport_global, stream_global); } diff --git a/src/core/transport/chttp2/stream_lists.c b/src/core/transport/chttp2/stream_lists.c index 9c3ad7a777..38c6052f9c 100644 --- a/src/core/transport/chttp2/stream_lists.c +++ b/src/core/transport/chttp2/stream_lists.c @@ -363,7 +363,7 @@ void grpc_chttp2_register_stream(grpc_chttp2_transport *t, } int grpc_chttp2_unregister_stream(grpc_chttp2_transport *t, - grpc_chttp2_stream *s) { + grpc_chttp2_stream *s) { stream_list_maybe_remove(t, s, GRPC_CHTTP2_LIST_ALL_STREAMS); return stream_list_empty(t, GRPC_CHTTP2_LIST_ALL_STREAMS); } diff --git a/src/core/transport/chttp2/stream_map.c b/src/core/transport/chttp2/stream_map.c index 0ec2f27291..bd16153ed1 100644 --- a/src/core/transport/chttp2/stream_map.c +++ b/src/core/transport/chttp2/stream_map.c @@ -123,8 +123,7 @@ void grpc_chttp2_stream_map_move_into(grpc_chttp2_stream_map *src, dst->values = gpr_realloc(dst->values, dst->capacity * sizeof(void *)); } memcpy(dst->keys + dst->count, src->keys, src->count * sizeof(gpr_uint32)); - memcpy(dst->values + dst->count, src->values, - src->count * sizeof(void*)); + memcpy(dst->values + dst->count, src->values, src->count * sizeof(void *)); dst->count += src->count; dst->free += src->free; src->count = 0; diff --git a/src/core/transport/chttp2/writing.c b/src/core/transport/chttp2/writing.c index b55e81fdca..123061b3fc 100644 --- a/src/core/transport/chttp2/writing.c +++ b/src/core/transport/chttp2/writing.c @@ -112,13 +112,18 @@ int grpc_chttp2_unlocking_check_writes( } } - if (!stream_global->read_closed && stream_global->unannounced_incoming_window > 0) { - stream_writing->announce_window = stream_global->unannounced_incoming_window; - GRPC_CHTTP2_FLOWCTL_TRACE_STREAM("write", transport_global, stream_global, - incoming_window, stream_global->unannounced_incoming_window); - GRPC_CHTTP2_FLOWCTL_TRACE_STREAM("write", transport_global, stream_global, - unannounced_incoming_window, -(gpr_int64)stream_global->unannounced_incoming_window); - stream_global->incoming_window += stream_global->unannounced_incoming_window; + if (!stream_global->read_closed && + stream_global->unannounced_incoming_window > 0) { + stream_writing->announce_window = + stream_global->unannounced_incoming_window; + GRPC_CHTTP2_FLOWCTL_TRACE_STREAM( + "write", transport_global, stream_global, incoming_window, + stream_global->unannounced_incoming_window); + GRPC_CHTTP2_FLOWCTL_TRACE_STREAM( + "write", transport_global, stream_global, unannounced_incoming_window, + -(gpr_int64)stream_global->unannounced_incoming_window); + stream_global->incoming_window += + stream_global->unannounced_incoming_window; stream_global->unannounced_incoming_window = 0; grpc_chttp2_list_add_incoming_window_updated(transport_global, stream_global); @@ -179,18 +184,20 @@ static void finalize_outbuf(grpc_chttp2_transport_writing *transport_writing) { while ( grpc_chttp2_list_pop_writing_stream(transport_writing, &stream_writing)) { - if (stream_writing->sopb.nops > 0 || stream_writing->send_closed != GRPC_DONT_SEND_CLOSED) { + if (stream_writing->sopb.nops > 0 || + stream_writing->send_closed != GRPC_DONT_SEND_CLOSED) { grpc_chttp2_encode(stream_writing->sopb.ops, stream_writing->sopb.nops, stream_writing->send_closed != GRPC_DONT_SEND_CLOSED, - stream_writing->id, &transport_writing->hpack_compressor, + stream_writing->id, + &transport_writing->hpack_compressor, &transport_writing->outbuf); stream_writing->sopb.nops = 0; } if (stream_writing->announce_window > 0) { gpr_slice_buffer_add( &transport_writing->outbuf, - grpc_chttp2_window_update_create( - stream_writing->id, stream_writing->announce_window)); + grpc_chttp2_window_update_create(stream_writing->id, + stream_writing->announce_window)); stream_writing->announce_window = 0; } if (stream_writing->send_closed == GRPC_SEND_CLOSED_WITH_RST_STREAM) { diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c index a9f91b64d5..1bbd210e46 100644 --- a/src/core/transport/chttp2_transport.c +++ b/src/core/transport/chttp2_transport.c @@ -116,7 +116,7 @@ static void close_from_api(grpc_chttp2_transport_global *transport_global, static void add_to_pollset_locked(grpc_chttp2_transport *t, grpc_pollset *pollset); static void add_to_pollset_set_locked(grpc_chttp2_transport *t, - grpc_pollset_set *pollset_set); + grpc_pollset_set *pollset_set); /** Start new streams that have been created if we can */ static void maybe_start_some_streams( @@ -368,11 +368,10 @@ static int init_stream(grpc_transport *gt, grpc_stream *gs, s->global.outgoing_window = t->global.settings[GRPC_PEER_SETTINGS] [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]; - s->global.max_recv_bytes = - s->parsing.incoming_window = + s->global.max_recv_bytes = s->parsing.incoming_window = s->global.incoming_window = - t->global.settings[GRPC_SENT_SETTINGS] - [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]; + t->global.settings[GRPC_SENT_SETTINGS] + [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]; *t->accepting_stream = s; grpc_chttp2_stream_map_add(&t->parsing_stream_map, s->global.id, s); s->global.in_stream_map = 1; @@ -580,7 +579,7 @@ static void maybe_start_some_streams( stream_global->incoming_window = transport_global->settings[GRPC_SENT_SETTINGS] [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]; - stream_global->max_recv_bytes = + stream_global->max_recv_bytes = GPR_MAX(stream_global->incoming_window, stream_global->max_recv_bytes); grpc_chttp2_stream_map_add( &TRANSPORT_FROM_GLOBAL(transport_global)->new_stream_map, @@ -590,7 +589,6 @@ static void maybe_start_some_streams( grpc_chttp2_list_add_incoming_window_updated(transport_global, stream_global); grpc_chttp2_list_add_writable_stream(transport_global, stream_global); - } /* cancel out streams that will never be started */ while (transport_global->next_stream_id >= MAX_CLIENT_STREAM_ID && @@ -648,12 +646,14 @@ static void perform_stream_op_locked( stream_global->publish_sopb->nops = 0; stream_global->publish_state = op->recv_state; if (stream_global->max_recv_bytes < op->max_recv_bytes) { - GRPC_CHTTP2_FLOWCTL_TRACE_STREAM("op", transport_global, stream_global, - max_recv_bytes, op->max_recv_bytes - stream_global->max_recv_bytes); + GRPC_CHTTP2_FLOWCTL_TRACE_STREAM( + "op", transport_global, stream_global, max_recv_bytes, + op->max_recv_bytes - stream_global->max_recv_bytes); GRPC_CHTTP2_FLOWCTL_TRACE_STREAM( "op", transport_global, stream_global, unannounced_incoming_window, op->max_recv_bytes - stream_global->max_recv_bytes); - stream_global->unannounced_incoming_window += op->max_recv_bytes - stream_global->max_recv_bytes; + stream_global->unannounced_incoming_window += + op->max_recv_bytes - stream_global->max_recv_bytes; stream_global->max_recv_bytes = op->max_recv_bytes; } grpc_chttp2_incoming_metadata_live_op_buffer_end( @@ -1175,7 +1175,7 @@ static void add_to_pollset_locked(grpc_chttp2_transport *t, } static void add_to_pollset_set_locked(grpc_chttp2_transport *t, - grpc_pollset_set *pollset_set) { + grpc_pollset_set *pollset_set) { if (t->ep) { grpc_endpoint_add_to_pollset_set(t->ep, pollset_set); } diff --git a/src/core/transport/metadata.c b/src/core/transport/metadata.c index 44d32b6cb2..f92e87e9dd 100644 --- a/src/core/transport/metadata.c +++ b/src/core/transport/metadata.c @@ -133,8 +133,8 @@ static void unlock(grpc_mdctx *ctx) { case), since otherwise we can be stuck waiting for a garbage collection that will never happen. */ if (ctx->refs == 0) { - /* uncomment if you're having trouble diagnosing an mdelem leak to make - things clearer (slows down destruction a lot, however) */ +/* uncomment if you're having trouble diagnosing an mdelem leak to make + things clearer (slows down destruction a lot, however) */ #ifdef GRPC_METADATA_REFCOUNT_DEBUG gc_mdtab(ctx); #endif @@ -311,7 +311,8 @@ static void slice_unref(void *p) { unlock(ctx); } -grpc_mdstr *grpc_mdstr_from_string(grpc_mdctx *ctx, const char *str, int canonicalize_key) { +grpc_mdstr *grpc_mdstr_from_string(grpc_mdctx *ctx, const char *str, + int canonicalize_key) { if (canonicalize_key) { size_t len; size_t i; @@ -522,9 +523,9 @@ grpc_mdelem *grpc_mdelem_from_metadata_strings(grpc_mdctx *ctx, grpc_mdelem *grpc_mdelem_from_strings(grpc_mdctx *ctx, const char *key, const char *value) { - return grpc_mdelem_from_metadata_strings(ctx, - grpc_mdstr_from_string(ctx, key, 0), - grpc_mdstr_from_string(ctx, value, 0)); + return grpc_mdelem_from_metadata_strings( + ctx, grpc_mdstr_from_string(ctx, key, 0), + grpc_mdstr_from_string(ctx, value, 0)); } grpc_mdelem *grpc_mdelem_from_slices(grpc_mdctx *ctx, gpr_slice key, diff --git a/src/core/transport/metadata.h b/src/core/transport/metadata.h index 15ef9bb555..a7af49ba55 100644 --- a/src/core/transport/metadata.h +++ b/src/core/transport/metadata.h @@ -95,7 +95,8 @@ size_t grpc_mdctx_get_mdtab_free_test_only(grpc_mdctx *mdctx); /* Constructors for grpc_mdstr instances; take a variety of data types that clients may have handy */ -grpc_mdstr *grpc_mdstr_from_string(grpc_mdctx *ctx, const char *str, int perform_key_canonicalization); +grpc_mdstr *grpc_mdstr_from_string(grpc_mdctx *ctx, const char *str, + int perform_key_canonicalization); /* Unrefs the slice. */ grpc_mdstr *grpc_mdstr_from_slice(grpc_mdctx *ctx, gpr_slice slice); grpc_mdstr *grpc_mdstr_from_buffer(grpc_mdctx *ctx, const gpr_uint8 *str, @@ -179,4 +180,4 @@ 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 */ +#endif /* GRPC_INTERNAL_CORE_TRANSPORT_METADATA_H */ diff --git a/src/core/transport/stream_op.c b/src/core/transport/stream_op.c index 0a9669b0ab..038586d48e 100644 --- a/src/core/transport/stream_op.c +++ b/src/core/transport/stream_op.c @@ -203,8 +203,8 @@ void grpc_metadata_batch_assert_ok(grpc_metadata_batch *batch) { #endif /* NDEBUG */ void grpc_metadata_batch_init(grpc_metadata_batch *batch) { - batch->list.head = batch->list.tail = batch->garbage.head = batch->garbage.tail = - NULL; + batch->list.head = batch->list.tail = batch->garbage.head = + batch->garbage.tail = NULL; batch->deadline = gpr_inf_future(GPR_CLOCK_REALTIME); } @@ -288,7 +288,7 @@ void grpc_metadata_batch_merge(grpc_metadata_batch *target, } void grpc_metadata_batch_move(grpc_metadata_batch *dst, - grpc_metadata_batch *src) { + grpc_metadata_batch *src) { *dst = *src; memset(src, 0, sizeof(grpc_metadata_batch)); } diff --git a/src/core/tsi/fake_transport_security.c b/src/core/tsi/fake_transport_security.c index 9ce1ddb95e..29127c4269 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) { @@ -370,7 +370,8 @@ static void fake_protector_destroy(tsi_frame_protector* self) { static const tsi_frame_protector_vtable frame_protector_vtable = { fake_protector_protect, fake_protector_protect_flush, - fake_protector_unprotect, fake_protector_destroy, }; + fake_protector_unprotect, fake_protector_destroy, +}; /* --- tsi_handshaker methods implementation. ---*/ @@ -393,7 +394,8 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer( next_message_to_send = TSI_FAKE_HANDSHAKE_MESSAGE_MAX; } if (tsi_tracing_enabled) { - gpr_log(GPR_INFO, "%s prepared %s.", impl->is_client ? "Client" : "Server", + gpr_log(GPR_INFO, "%s prepared %s.", + impl->is_client ? "Client" : "Server", tsi_fake_handshake_message_to_string(impl->next_message_to_send)); } impl->next_message_to_send = next_message_to_send; @@ -493,7 +495,8 @@ static const tsi_handshaker_vtable handshaker_vtable = { fake_handshaker_get_result, fake_handshaker_extract_peer, fake_handshaker_create_frame_protector, - fake_handshaker_destroy, }; + fake_handshaker_destroy, +}; tsi_handshaker* tsi_create_fake_handshaker(int is_client) { tsi_fake_handshaker* impl = calloc(1, sizeof(tsi_fake_handshaker)); diff --git a/src/core/tsi/fake_transport_security.h b/src/core/tsi/fake_transport_security.h index af9730b90e..1fa11349fb 100644 --- a/src/core/tsi/fake_transport_security.h +++ b/src/core/tsi/fake_transport_security.h @@ -58,4 +58,4 @@ tsi_frame_protector* tsi_create_fake_protector( } #endif -#endif /* GRPC_INTERNAL_CORE_TSI_FAKE_TRANSPORT_SECURITY_H */ +#endif /* GRPC_INTERNAL_CORE_TSI_FAKE_TRANSPORT_SECURITY_H */ diff --git a/src/core/tsi/ssl_transport_security.c b/src/core/tsi/ssl_transport_security.c index 609fc06ed5..0b416f6c9d 100644 --- a/src/core/tsi/ssl_transport_security.c +++ b/src/core/tsi/ssl_transport_security.c @@ -43,7 +43,7 @@ #include "src/core/tsi/transport_security.h" #include <openssl/bio.h> -#include <openssl/crypto.h> /* For OPENSSL_free */ +#include <openssl/crypto.h> /* For OPENSSL_free */ #include <openssl/err.h> #include <openssl/ssl.h> #include <openssl/x509.h> @@ -54,7 +54,6 @@ #define TSI_SSL_MAX_PROTECTED_FRAME_SIZE_UPPER_BOUND 16384 #define TSI_SSL_MAX_PROTECTED_FRAME_SIZE_LOWER_BOUND 1024 - /* Putting a macro like this and littering the source file with #if is really bad practice. TODO(jboeuf): refactor all the #if / #endif in a separate module. */ @@ -116,7 +115,7 @@ typedef struct { /* --- Library Initialization. ---*/ static gpr_once init_openssl_once = GPR_ONCE_INIT; -static gpr_mu *openssl_mutexes = NULL; +static gpr_mu* openssl_mutexes = NULL; static void openssl_locking_cb(int mode, int type, const char* file, int line) { if (mode & CRYPTO_LOCK) { @@ -195,7 +194,7 @@ static void ssl_info_callback(const SSL* ssl, int where, int ret) { /* Returns 1 if name looks like an IP address, 0 otherwise. This is a very rough heuristic as it does not handle IPV6 or things like: 0300.0250.00.01, 0xC0.0Xa8.0x0.0x1, 000030052000001, 0xc0.052000001 */ -static int looks_like_ip_address(const char *name) { +static int looks_like_ip_address(const char* name) { size_t i; size_t dot_count = 0; size_t num_size = 0; @@ -215,7 +214,6 @@ static int looks_like_ip_address(const char *name) { return 1; } - /* Gets the subject CN from an X509 cert. */ static tsi_result ssl_get_x509_common_name(X509* cert, unsigned char** utf8, size_t* utf8_size) { @@ -630,7 +628,8 @@ static tsi_result build_alpn_protocol_name_list( } /* Safety check. */ if ((current < *protocol_name_list) || - ((gpr_uintptr)(current - *protocol_name_list) != *protocol_name_list_length)) { + ((gpr_uintptr)(current - *protocol_name_list) != + *protocol_name_list_length)) { return TSI_INTERNAL_ERROR; } return TSI_OK; @@ -768,7 +767,8 @@ static void ssl_protector_destroy(tsi_frame_protector* self) { static const tsi_frame_protector_vtable frame_protector_vtable = { ssl_protector_protect, ssl_protector_protect_flush, ssl_protector_unprotect, - ssl_protector_destroy, }; + ssl_protector_destroy, +}; /* --- tsi_handshaker methods implementation. ---*/ @@ -948,7 +948,8 @@ static const tsi_handshaker_vtable handshaker_vtable = { ssl_handshaker_get_result, ssl_handshaker_extract_peer, ssl_handshaker_create_frame_protector, - ssl_handshaker_destroy, }; + ssl_handshaker_destroy, +}; /* --- tsi_ssl_handshaker_factory common methods. --- */ @@ -1075,9 +1076,11 @@ static void ssl_client_handshaker_factory_destroy( free(impl); } -static int client_handshaker_factory_npn_callback( - SSL* ssl, unsigned char** out, unsigned char* outlen, - const unsigned char* in, unsigned int inlen, void* arg) { +static int client_handshaker_factory_npn_callback(SSL* ssl, unsigned char** out, + unsigned char* outlen, + const unsigned char* in, + unsigned int inlen, + void* arg) { tsi_ssl_client_handshaker_factory* factory = (tsi_ssl_client_handshaker_factory*)arg; return select_protocol_list((const unsigned char**)out, outlen, @@ -1121,7 +1124,7 @@ static void ssl_server_handshaker_factory_destroy( static int does_entry_match_name(const char* entry, size_t entry_length, const char* name) { - const char *dot; + const char* dot; const char* name_subdomain = NULL; size_t name_length = strlen(name); size_t name_subdomain_length; @@ -1153,7 +1156,7 @@ static int does_entry_match_name(const char* entry, size_t entry_length, if (name_subdomain_length < 2) return 0; name_subdomain++; /* Starts after the dot. */ name_subdomain_length--; - entry += 2; /* Remove *. */ + entry += 2; /* Remove *. */ entry_length -= 2; dot = strchr(name_subdomain, '.'); if ((dot == NULL) || (dot == &name_subdomain[name_subdomain_length - 1])) { @@ -1170,7 +1173,7 @@ static int does_entry_match_name(const char* entry, size_t entry_length, static int ssl_server_handshaker_factory_servername_callback(SSL* ssl, int* ap, void* arg) { tsi_ssl_server_handshaker_factory* impl = - (tsi_ssl_server_handshaker_factory*)arg; + (tsi_ssl_server_handshaker_factory*)arg; size_t i = 0; const char* servername = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name); if (servername == NULL || strlen(servername) == 0) { diff --git a/src/core/tsi/ssl_transport_security.h b/src/core/tsi/ssl_transport_security.h index 4bf6c81b75..cdf4f294be 100644 --- a/src/core/tsi/ssl_transport_security.h +++ b/src/core/tsi/ssl_transport_security.h @@ -170,4 +170,4 @@ int tsi_ssl_peer_matches_name(const tsi_peer* peer, const char* name); } #endif -#endif /* GRPC_INTERNAL_CORE_TSI_SSL_TRANSPORT_SECURITY_H */ +#endif /* GRPC_INTERNAL_CORE_TSI_SSL_TRANSPORT_SECURITY_H */ diff --git a/src/core/tsi/transport_security.h b/src/core/tsi/transport_security.h index 4cd0ec2cfb..34283f2f9c 100644 --- a/src/core/tsi/transport_security.h +++ b/src/core/tsi/transport_security.h @@ -108,4 +108,4 @@ char* tsi_strdup(const char* src); /* Sadly, no strdup in C89. */ } #endif -#endif /* GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_H */ +#endif /* GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_H */ diff --git a/src/core/tsi/transport_security_interface.h b/src/core/tsi/transport_security_interface.h index e27e6b9fc9..03a51683a2 100644 --- a/src/core/tsi/transport_security_interface.h +++ b/src/core/tsi/transport_security_interface.h @@ -341,4 +341,4 @@ void tsi_handshaker_destroy(tsi_handshaker* self); } #endif -#endif /* GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_INTERFACE_H */ +#endif /* GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_INTERFACE_H */ diff --git a/src/cpp/client/channel.cc b/src/cpp/client/channel.cc index 0582b59a6d..9695a0f14b 100644 --- a/src/cpp/client/channel.cc +++ b/src/cpp/client/channel.cc @@ -98,9 +98,8 @@ void Channel::PerformOpsOnCall(CallOpSetInterface* ops, Call* call) { } void* Channel::RegisterMethod(const char* method) { - return grpc_channel_register_call(c_channel_, method, - host_.empty() ? NULL : host_.c_str(), - nullptr); + return grpc_channel_register_call( + c_channel_, method, host_.empty() ? NULL : host_.c_str(), nullptr); } grpc_connectivity_state Channel::GetState(bool try_to_connect) { @@ -117,6 +116,7 @@ class TagSaver GRPC_FINAL : public CompletionQueueTag { delete this; return true; } + private: void* tag_; }; diff --git a/src/cpp/client/channel.h b/src/cpp/client/channel.h index cb8e8d98d2..7e406ad788 100644 --- a/src/cpp/client/channel.h +++ b/src/cpp/client/channel.h @@ -58,9 +58,8 @@ class Channel GRPC_FINAL : public GrpcLibrary, public ChannelInterface { void* RegisterMethod(const char* method) GRPC_OVERRIDE; Call CreateCall(const RpcMethod& method, ClientContext* context, - CompletionQueue* cq) GRPC_OVERRIDE; - void PerformOpsOnCall(CallOpSetInterface* ops, - Call* call) GRPC_OVERRIDE; + CompletionQueue* cq) GRPC_OVERRIDE; + void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) GRPC_OVERRIDE; grpc_connectivity_state GetState(bool try_to_connect) GRPC_OVERRIDE; diff --git a/src/cpp/client/secure_credentials.h b/src/cpp/client/secure_credentials.h index ddf69911b5..c2b8d43a15 100644 --- a/src/cpp/client/secure_credentials.h +++ b/src/cpp/client/secure_credentials.h @@ -59,4 +59,3 @@ class SecureCredentials GRPC_FINAL : public Credentials { } // namespace grpc #endif // GRPC_INTERNAL_CPP_CLIENT_SECURE_CREDENTIALS_H - diff --git a/src/cpp/common/auth_property_iterator.cc b/src/cpp/common/auth_property_iterator.cc index ba88983515..d3bfd5cb6b 100644 --- a/src/cpp/common/auth_property_iterator.cc +++ b/src/cpp/common/auth_property_iterator.cc @@ -64,8 +64,7 @@ AuthPropertyIterator AuthPropertyIterator::operator++(int) { return tmp; } -bool AuthPropertyIterator::operator==( - const AuthPropertyIterator& rhs) const { +bool AuthPropertyIterator::operator==(const AuthPropertyIterator& rhs) const { if (property_ == nullptr || rhs.property_ == nullptr) { return property_ == rhs.property_; } else { @@ -73,8 +72,7 @@ bool AuthPropertyIterator::operator==( } } -bool AuthPropertyIterator::operator!=( - const AuthPropertyIterator& rhs) const { +bool AuthPropertyIterator::operator!=(const AuthPropertyIterator& rhs) const { return !operator==(rhs); } diff --git a/src/cpp/proto/proto_utils.cc b/src/cpp/proto/proto_utils.cc index 94ae5ba636..05470ec627 100644 --- a/src/cpp/proto/proto_utils.cc +++ b/src/cpp/proto/proto_utils.cc @@ -154,7 +154,8 @@ class GrpcBufferReader GRPC_FINAL namespace grpc { -Status SerializeProto(const grpc::protobuf::Message& msg, grpc_byte_buffer** bp) { +Status SerializeProto(const grpc::protobuf::Message& msg, + grpc_byte_buffer** bp) { GrpcBufferWriter writer(bp); return msg.SerializeToZeroCopyStream(&writer) ? Status::OK @@ -172,8 +173,7 @@ Status DeserializeProto(grpc_byte_buffer* buffer, grpc::protobuf::Message* msg, decoder.SetTotalBytesLimit(max_message_size, max_message_size); } if (!msg->ParseFromCodedStream(&decoder)) { - return Status(StatusCode::INTERNAL, - msg->InitializationErrorString()); + return Status(StatusCode::INTERNAL, msg->InitializationErrorString()); } if (!decoder.ConsumedEntireMessage()) { return Status(StatusCode::INTERNAL, "Did not read entire message"); diff --git a/src/cpp/server/create_default_thread_pool.cc b/src/cpp/server/create_default_thread_pool.cc index 81c84474d8..9f59d254f1 100644 --- a/src/cpp/server/create_default_thread_pool.cc +++ b/src/cpp/server/create_default_thread_pool.cc @@ -39,9 +39,9 @@ namespace grpc { ThreadPoolInterface* CreateDefaultThreadPool() { - int cores = gpr_cpu_num_cores(); - if (!cores) cores = 4; - return new DynamicThreadPool(cores); + int cores = gpr_cpu_num_cores(); + if (!cores) cores = 4; + return new DynamicThreadPool(cores); } } // namespace grpc diff --git a/src/cpp/server/dynamic_thread_pool.cc b/src/cpp/server/dynamic_thread_pool.cc index f58d0420df..b475f43b1d 100644 --- a/src/cpp/server/dynamic_thread_pool.cc +++ b/src/cpp/server/dynamic_thread_pool.cc @@ -36,10 +36,10 @@ #include <grpc++/dynamic_thread_pool.h> namespace grpc { -DynamicThreadPool::DynamicThread::DynamicThread(DynamicThreadPool *pool): - pool_(pool), - thd_(new grpc::thread(&DynamicThreadPool::DynamicThread::ThreadFunc, this)) { -} +DynamicThreadPool::DynamicThread::DynamicThread(DynamicThreadPool* pool) + : pool_(pool), + thd_(new grpc::thread(&DynamicThreadPool::DynamicThread::ThreadFunc, + this)) {} DynamicThreadPool::DynamicThread::~DynamicThread() { thd_->join(); thd_.reset(); @@ -57,7 +57,7 @@ void DynamicThreadPool::DynamicThread::ThreadFunc() { pool_->shutdown_cv_.notify_one(); } } - + void DynamicThreadPool::ThreadFunc() { for (;;) { // Wait until work is available or we are shutting down. @@ -65,7 +65,7 @@ void DynamicThreadPool::ThreadFunc() { if (!shutdown_ && callbacks_.empty()) { // If there are too many threads waiting, then quit this thread if (threads_waiting_ >= reserve_threads_) { - break; + break; } threads_waiting_++; cv_.wait(lock); @@ -84,9 +84,11 @@ void DynamicThreadPool::ThreadFunc() { } } -DynamicThreadPool::DynamicThreadPool(int reserve_threads) : - shutdown_(false), reserve_threads_(reserve_threads), nthreads_(0), - threads_waiting_(0) { +DynamicThreadPool::DynamicThreadPool(int reserve_threads) + : shutdown_(false), + reserve_threads_(reserve_threads), + nthreads_(0), + threads_waiting_(0) { for (int i = 0; i < reserve_threads_; i++) { grpc::lock_guard<grpc::mutex> lock(mu_); nthreads_++; @@ -96,10 +98,10 @@ DynamicThreadPool::DynamicThreadPool(int reserve_threads) : void DynamicThreadPool::ReapThreads(std::list<DynamicThread*>* tlist) { for (auto t = tlist->begin(); t != tlist->end(); t = tlist->erase(t)) { - delete *t; + delete *t; } } - + DynamicThreadPool::~DynamicThreadPool() { grpc::unique_lock<grpc::mutex> lock(mu_); shutdown_ = true; diff --git a/src/cpp/server/secure_server_credentials.cc b/src/cpp/server/secure_server_credentials.cc index 32c45e2280..f203cf7f49 100644 --- a/src/cpp/server/secure_server_credentials.cc +++ b/src/cpp/server/secure_server_credentials.cc @@ -35,8 +35,8 @@ namespace grpc { -int SecureServerCredentials::AddPortToServer( - const grpc::string& addr, grpc_server* server) { +int SecureServerCredentials::AddPortToServer(const grpc::string& addr, + grpc_server* server) { return grpc_server_add_secure_http2_port(server, addr.c_str(), creds_); } diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index a70b555855..27472f4880 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -230,11 +230,11 @@ Server::~Server() { delete sync_methods_; } -bool Server::RegisterService(const grpc::string *host, RpcService* service) { +bool Server::RegisterService(const grpc::string* host, RpcService* service) { for (int i = 0; i < service->GetMethodCount(); ++i) { RpcServiceMethod* method = service->GetMethod(i); - void* tag = grpc_server_register_method( - server_, method->name(), host ? host->c_str() : nullptr); + void* tag = grpc_server_register_method(server_, method->name(), + host ? host->c_str() : nullptr); if (!tag) { gpr_log(GPR_DEBUG, "Attempt to register %s multiple times", method->name()); diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc index 09118879f4..0b11d86173 100644 --- a/src/cpp/server/server_builder.cc +++ b/src/cpp/server/server_builder.cc @@ -59,14 +59,16 @@ void ServerBuilder::RegisterAsyncService(AsynchronousService* service) { async_services_.emplace_back(new NamedService<AsynchronousService>(service)); } -void ServerBuilder::RegisterService( - const grpc::string& addr, SynchronousService* service) { - services_.emplace_back(new NamedService<RpcService>(addr, service->service())); +void ServerBuilder::RegisterService(const grpc::string& addr, + SynchronousService* service) { + services_.emplace_back( + new NamedService<RpcService>(addr, service->service())); } -void ServerBuilder::RegisterAsyncService( - const grpc::string& addr, AsynchronousService* service) { - async_services_.emplace_back(new NamedService<AsynchronousService>(addr, service)); +void ServerBuilder::RegisterAsyncService(const grpc::string& addr, + AsynchronousService* service) { + async_services_.emplace_back( + new NamedService<AsynchronousService>(addr, service)); } void ServerBuilder::RegisterAsyncGenericService(AsyncGenericService* service) { @@ -119,9 +121,10 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() { return nullptr; } } - for (auto service = async_services_.begin(); - service != async_services_.end(); service++) { - if (!server->RegisterAsyncService((*service)->host.get(), (*service)->service)) { + for (auto service = async_services_.begin(); service != async_services_.end(); + service++) { + if (!server->RegisterAsyncService((*service)->host.get(), + (*service)->service)) { return nullptr; } } diff --git a/src/cpp/server/server_context.cc b/src/cpp/server/server_context.cc index bb34040a2f..03461ddda5 100644 --- a/src/cpp/server/server_context.cc +++ b/src/cpp/server/server_context.cc @@ -50,7 +50,12 @@ namespace grpc { class ServerContext::CompletionOp GRPC_FINAL : public CallOpSetInterface { public: // initial refs: one in the server context, one in the cq - CompletionOp() : has_tag_(false), tag_(nullptr), refs_(2), finalized_(false), cancelled_(0) {} + CompletionOp() + : has_tag_(false), + tag_(nullptr), + refs_(2), + finalized_(false), + cancelled_(0) {} void FillOps(grpc_op* ops, size_t* nops) GRPC_OVERRIDE; bool FinalizeResult(void** tag, bool* status) GRPC_OVERRIDE; diff --git a/test/build/protobuf.cc b/test/build/protobuf.cc index bac33ad727..49cd8e8365 100644 --- a/test/build/protobuf.cc +++ b/test/build/protobuf.cc @@ -38,6 +38,4 @@ bool protobuf_test(const google::protobuf::MethodDescriptor *method) { return method->client_streaming() || method->server_streaming(); } -int main() { - return 0; -} +int main() { return 0; } diff --git a/test/core/bad_client/bad_client.c b/test/core/bad_client/bad_client.c index f7399770dd..24bf5d3625 100644 --- a/test/core/bad_client/bad_client.c +++ b/test/core/bad_client/bad_client.c @@ -150,9 +150,8 @@ void grpc_run_bad_client_test(grpc_bad_client_server_side_validator validator, grpc_endpoint_destroy(sfd.client); } grpc_server_shutdown_and_notify(a.server, a.cq, NULL); - GPR_ASSERT(grpc_completion_queue_pluck(a.cq, NULL, - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + a.cq, NULL, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(a.server); grpc_completion_queue_destroy(a.cq); diff --git a/test/core/bad_client/tests/connection_prefix.c b/test/core/bad_client/tests/connection_prefix.c index de62e923f0..ec85211605 100644 --- a/test/core/bad_client/tests/connection_prefix.c +++ b/test/core/bad_client/tests/connection_prefix.c @@ -36,9 +36,9 @@ static void verifier(grpc_server *server, grpc_completion_queue *cq) { while (grpc_server_has_open_connections(server)) { - GPR_ASSERT( - grpc_completion_queue_next(cq, GRPC_TIMEOUT_MILLIS_TO_DEADLINE(20), - NULL).type == GRPC_QUEUE_TIMEOUT); + GPR_ASSERT(grpc_completion_queue_next( + cq, GRPC_TIMEOUT_MILLIS_TO_DEADLINE(20), NULL) + .type == GRPC_QUEUE_TIMEOUT); } } diff --git a/test/core/bad_client/tests/initial_settings_frame.c b/test/core/bad_client/tests/initial_settings_frame.c index 28e9a39dff..261fecdaf2 100644 --- a/test/core/bad_client/tests/initial_settings_frame.c +++ b/test/core/bad_client/tests/initial_settings_frame.c @@ -38,9 +38,9 @@ static void verifier(grpc_server *server, grpc_completion_queue *cq) { while (grpc_server_has_open_connections(server)) { - GPR_ASSERT( - grpc_completion_queue_next(cq, GRPC_TIMEOUT_MILLIS_TO_DEADLINE(20), - NULL).type == GRPC_QUEUE_TIMEOUT); + GPR_ASSERT(grpc_completion_queue_next( + cq, GRPC_TIMEOUT_MILLIS_TO_DEADLINE(20), NULL) + .type == GRPC_QUEUE_TIMEOUT); } } diff --git a/test/core/client_config/uri_parser_test.c b/test/core/client_config/uri_parser_test.c index 3451ca1e8c..d324029c7e 100644 --- a/test/core/client_config/uri_parser_test.c +++ b/test/core/client_config/uri_parser_test.c @@ -60,7 +60,8 @@ int main(int argc, char **argv) { test_succeeds("http://www.google.com:90", "http", "www.google.com:90", ""); test_succeeds("a192.4-df:foo.coom", "a192.4-df", "", "foo.coom"); test_succeeds("a+b:foo.coom", "a+b", "", "foo.coom"); - test_succeeds("zookeeper://127.0.0.1:2181/foo/bar", "zookeeper", "127.0.0.1:2181", "/foo/bar"); + test_succeeds("zookeeper://127.0.0.1:2181/foo/bar", "zookeeper", + "127.0.0.1:2181", "/foo/bar"); test_fails("xyz"); test_fails("http://www.google.com?why-are-you-using-queries"); test_fails("dns:foo.com#fragments-arent-supported-here"); diff --git a/test/core/compression/compression_test.c b/test/core/compression/compression_test.c index 810bcee8cc..4df0acae37 100644 --- a/test/core/compression/compression_test.c +++ b/test/core/compression/compression_test.c @@ -70,7 +70,7 @@ static void test_compression_algorithm_parse(void) { } } -int main(int argc, char **argv) { +int main(int argc, char** argv) { test_compression_algorithm_parse(); return 0; diff --git a/test/core/compression/message_compress_test.c b/test/core/compression/message_compress_test.c index f5f21cff25..495841c79f 100644 --- a/test/core/compression/message_compress_test.c +++ b/test/core/compression/message_compress_test.c @@ -69,8 +69,7 @@ static void assert_passthrough(gpr_slice value, "algorithm='%s' uncompressed_split='%s' compressed_split='%s'", GPR_SLICE_LENGTH(value), gpr_murmur_hash3(GPR_SLICE_START_PTR(value), GPR_SLICE_LENGTH(value), 0), - algorithm_name, - grpc_slice_split_mode_name(uncompressed_split_mode), + algorithm_name, grpc_slice_split_mode_name(uncompressed_split_mode), grpc_slice_split_mode_name(compressed_split_mode)); gpr_slice_buffer_init(&input); diff --git a/test/core/end2end/cq_verifier.c b/test/core/end2end/cq_verifier.c index a9ba78dfdb..922de268f4 100644 --- a/test/core/end2end/cq_verifier.c +++ b/test/core/end2end/cq_verifier.c @@ -146,7 +146,7 @@ static int byte_buffer_eq_slice(grpc_byte_buffer *bb, gpr_slice b) { int byte_buffer_eq_string(grpc_byte_buffer *bb, const char *str) { grpc_byte_buffer_reader reader; - grpc_byte_buffer* rbb; + grpc_byte_buffer *rbb; int res; grpc_byte_buffer_reader_init(&reader, bb); diff --git a/test/core/end2end/cq_verifier.h b/test/core/end2end/cq_verifier.h index 1ecd4db5da..b3e07c45a5 100644 --- a/test/core/end2end/cq_verifier.h +++ b/test/core/end2end/cq_verifier.h @@ -60,6 +60,7 @@ void cq_verify_empty(cq_verifier *v); void cq_expect_completion(cq_verifier *v, void *tag, int success); int byte_buffer_eq_string(grpc_byte_buffer *byte_buffer, const char *string); -int contains_metadata(grpc_metadata_array *array, const char *key, const char *value); +int contains_metadata(grpc_metadata_array *array, const char *key, + const char *value); -#endif /* GRPC_TEST_CORE_END2END_CQ_VERIFIER_H */ +#endif /* GRPC_TEST_CORE_END2END_CQ_VERIFIER_H */ diff --git a/test/core/end2end/data/ssl_test_data.h b/test/core/end2end/data/ssl_test_data.h index 4f4b30ef21..675249dbd5 100644 --- a/test/core/end2end/data/ssl_test_data.h +++ b/test/core/end2end/data/ssl_test_data.h @@ -38,4 +38,4 @@ extern const char test_root_cert[]; extern const char test_server1_cert[]; extern const char test_server1_key[]; -#endif /* GRPC_TEST_CORE_END2END_DATA_SSL_TEST_DATA_H */ +#endif /* GRPC_TEST_CORE_END2END_DATA_SSL_TEST_DATA_H */ diff --git a/test/core/end2end/dualstack_socket_test.c b/test/core/end2end/dualstack_socket_test.c index 7b7dbc7472..1f64062bf7 100644 --- a/test/core/end2end/dualstack_socket_test.c +++ b/test/core/end2end/dualstack_socket_test.c @@ -220,9 +220,8 @@ void test_connect(const char *server_host, const char *client_host, int port, /* Destroy server. */ grpc_server_shutdown_and_notify(server, cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(server); grpc_completion_queue_shutdown(cq); diff --git a/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c b/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c index 3c35baec6b..d82e623f22 100644 --- a/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c +++ b/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c @@ -55,8 +55,7 @@ typedef struct fullstack_secure_fixture_data { } fullstack_secure_fixture_data; static const grpc_metadata *find_metadata(const grpc_metadata *md, - size_t md_count, - const char *key, + size_t md_count, const char *key, const char *value) { size_t i; for (i = 0; i < md_count; i++) { diff --git a/test/core/end2end/fixtures/proxy.c b/test/core/end2end/fixtures/proxy.c index 798d4e94d4..8ae9e0ebe3 100644 --- a/test/core/end2end/fixtures/proxy.c +++ b/test/core/end2end/fixtures/proxy.c @@ -177,9 +177,8 @@ static void on_p2s_recv_initial_metadata(void *arg, int success) { op.data.send_initial_metadata.count = pc->p2s_initial_metadata.count; op.data.send_initial_metadata.metadata = pc->p2s_initial_metadata.metadata; refpc(pc, "on_c2p_sent_initial_metadata"); - err = grpc_call_start_batch(pc->c2p, &op, 1, - new_closure(on_c2p_sent_initial_metadata, pc), - NULL); + err = grpc_call_start_batch( + pc->c2p, &op, 1, new_closure(on_c2p_sent_initial_metadata, pc), NULL); GPR_ASSERT(err == GRPC_CALL_OK); } @@ -339,18 +338,16 @@ static void on_new_call(void *arg, int success) { op.op = GRPC_OP_RECV_INITIAL_METADATA; op.data.recv_initial_metadata = &pc->p2s_initial_metadata; refpc(pc, "on_p2s_recv_initial_metadata"); - err = grpc_call_start_batch(pc->p2s, &op, 1, - new_closure(on_p2s_recv_initial_metadata, pc), - NULL); + err = grpc_call_start_batch( + pc->p2s, &op, 1, new_closure(on_p2s_recv_initial_metadata, pc), NULL); GPR_ASSERT(err == GRPC_CALL_OK); op.op = GRPC_OP_SEND_INITIAL_METADATA; op.data.send_initial_metadata.count = pc->c2p_initial_metadata.count; op.data.send_initial_metadata.metadata = pc->c2p_initial_metadata.metadata; refpc(pc, "on_p2s_sent_initial_metadata"); - err = grpc_call_start_batch(pc->p2s, &op, 1, - new_closure(on_p2s_sent_initial_metadata, pc), - NULL); + err = grpc_call_start_batch( + pc->p2s, &op, 1, new_closure(on_p2s_sent_initial_metadata, pc), NULL); GPR_ASSERT(err == GRPC_CALL_OK); op.op = GRPC_OP_RECV_MESSAGE; @@ -375,15 +372,15 @@ static void on_new_call(void *arg, int success) { op.data.recv_status_on_client.status_details_capacity = &pc->p2s_status_details_capacity; refpc(pc, "on_p2s_status"); - err = grpc_call_start_batch(pc->p2s, &op, 1, - new_closure(on_p2s_status, pc), NULL); + err = grpc_call_start_batch(pc->p2s, &op, 1, new_closure(on_p2s_status, pc), + NULL); GPR_ASSERT(err == GRPC_CALL_OK); op.op = GRPC_OP_RECV_CLOSE_ON_SERVER; op.data.recv_close_on_server.cancelled = &pc->c2p_server_cancelled; refpc(pc, "on_c2p_closed"); - err = grpc_call_start_batch(pc->c2p, &op, 1, - new_closure(on_c2p_closed, pc), NULL); + err = grpc_call_start_batch(pc->c2p, &op, 1, new_closure(on_c2p_closed, pc), + NULL); GPR_ASSERT(err == GRPC_CALL_OK); request_call(proxy); diff --git a/test/core/end2end/multiple_server_queues_test.c b/test/core/end2end/multiple_server_queues_test.c index 2befcd0124..5e2eaf4ae9 100644 --- a/test/core/end2end/multiple_server_queues_test.c +++ b/test/core/end2end/multiple_server_queues_test.c @@ -49,8 +49,8 @@ int main(int argc, char **argv) { grpc_server_register_completion_queue(server, cq2, NULL); grpc_server_start(server); grpc_server_shutdown_and_notify(server, cq2, NULL); - grpc_completion_queue_next( - cq2, gpr_inf_future(GPR_CLOCK_REALTIME), NULL); /* cue queue hang */ + grpc_completion_queue_next(cq2, gpr_inf_future(GPR_CLOCK_REALTIME), + NULL); /* cue queue hang */ grpc_completion_queue_shutdown(cq1); grpc_completion_queue_shutdown(cq2); grpc_completion_queue_next(cq1, gpr_inf_future(GPR_CLOCK_REALTIME), NULL); diff --git a/test/core/end2end/no_server_test.c b/test/core/end2end/no_server_test.c index 6ae87288f7..619627ddd2 100644 --- a/test/core/end2end/no_server_test.c +++ b/test/core/end2end/no_server_test.c @@ -88,8 +88,9 @@ int main(int argc, char **argv) { GPR_ASSERT(status == GRPC_STATUS_DEADLINE_EXCEEDED); grpc_completion_queue_shutdown(cq); - while (grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME), - NULL).type != GRPC_QUEUE_SHUTDOWN) + while ( + grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME), NULL) + .type != GRPC_QUEUE_SHUTDOWN) ; grpc_completion_queue_destroy(cq); grpc_call_destroy(call); diff --git a/test/core/end2end/tests/bad_hostname.c b/test/core/end2end/tests/bad_hostname.c index 61bbbe4855..8f28fa1e63 100644 --- a/test/core/end2end/tests/bad_hostname.c +++ b/test/core/end2end/tests/bad_hostname.c @@ -77,9 +77,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; diff --git a/test/core/end2end/tests/cancel_after_accept.c b/test/core/end2end/tests/cancel_after_accept.c index 3715166348..313e0b05bd 100644 --- a/test/core/end2end/tests/cancel_after_accept.c +++ b/test/core/end2end/tests/cancel_after_accept.c @@ -76,9 +76,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; diff --git a/test/core/end2end/tests/cancel_after_accept_and_writes_closed.c b/test/core/end2end/tests/cancel_after_accept_and_writes_closed.c index ffb267c236..2430a6d218 100644 --- a/test/core/end2end/tests/cancel_after_accept_and_writes_closed.c +++ b/test/core/end2end/tests/cancel_after_accept_and_writes_closed.c @@ -76,9 +76,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; diff --git a/test/core/end2end/tests/cancel_after_invoke.c b/test/core/end2end/tests/cancel_after_invoke.c index 7e984da591..9991ee02f0 100644 --- a/test/core/end2end/tests/cancel_after_invoke.c +++ b/test/core/end2end/tests/cancel_after_invoke.c @@ -77,9 +77,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; diff --git a/test/core/end2end/tests/cancel_before_invoke.c b/test/core/end2end/tests/cancel_before_invoke.c index 06e6602681..8b582e0c42 100644 --- a/test/core/end2end/tests/cancel_before_invoke.c +++ b/test/core/end2end/tests/cancel_before_invoke.c @@ -75,9 +75,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; diff --git a/test/core/end2end/tests/cancel_in_a_vacuum.c b/test/core/end2end/tests/cancel_in_a_vacuum.c index f57a44caa4..6c63d7c0ad 100644 --- a/test/core/end2end/tests/cancel_in_a_vacuum.c +++ b/test/core/end2end/tests/cancel_in_a_vacuum.c @@ -76,9 +76,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; diff --git a/test/core/end2end/tests/cancel_test_helpers.h b/test/core/end2end/tests/cancel_test_helpers.h index 6ea822fa9a..f8fafae597 100644 --- a/test/core/end2end/tests/cancel_test_helpers.h +++ b/test/core/end2end/tests/cancel_test_helpers.h @@ -42,7 +42,7 @@ typedef struct { } cancellation_mode; static grpc_call_error wait_for_deadline(grpc_call *call, void *reserved) { - (void) reserved; + (void)reserved; return GRPC_CALL_OK; } diff --git a/test/core/end2end/tests/census_simple_request.c b/test/core/end2end/tests/census_simple_request.c index 8f615dec20..36b9e92884 100644 --- a/test/core/end2end/tests/census_simple_request.c +++ b/test/core/end2end/tests/census_simple_request.c @@ -66,9 +66,8 @@ static void *tag(gpr_intptr t) { return (void *)t; } static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -149,9 +148,9 @@ static void test_body(grpc_end2end_test_fixture f) { error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/channel_connectivity.c b/test/core/end2end/tests/channel_connectivity.c index ec0417abda..0b7a8a664b 100644 --- a/test/core/end2end/tests/channel_connectivity.c +++ b/test/core/end2end/tests/channel_connectivity.c @@ -48,33 +48,38 @@ static void test_connectivity(grpc_end2end_test_config config) { config.init_client(&f, NULL); /* channels should start life in IDLE, and stay there */ - GPR_ASSERT(grpc_channel_check_connectivity_state(f.client, 0) == GRPC_CHANNEL_IDLE); + GPR_ASSERT(grpc_channel_check_connectivity_state(f.client, 0) == + GRPC_CHANNEL_IDLE); gpr_sleep_until(GRPC_TIMEOUT_MILLIS_TO_DEADLINE(100)); - GPR_ASSERT(grpc_channel_check_connectivity_state(f.client, 0) == GRPC_CHANNEL_IDLE); + GPR_ASSERT(grpc_channel_check_connectivity_state(f.client, 0) == + GRPC_CHANNEL_IDLE); /* start watching for a change */ - grpc_channel_watch_connectivity_state( - f.client, GRPC_CHANNEL_IDLE, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(3), f.cq, tag(1)); + grpc_channel_watch_connectivity_state(f.client, GRPC_CHANNEL_IDLE, + GRPC_TIMEOUT_SECONDS_TO_DEADLINE(3), + f.cq, tag(1)); /* nothing should happen */ cq_verify_empty(cqv); /* check that we're still in idle, and start connecting */ - GPR_ASSERT(grpc_channel_check_connectivity_state(f.client, 1) == GRPC_CHANNEL_IDLE); + GPR_ASSERT(grpc_channel_check_connectivity_state(f.client, 1) == + GRPC_CHANNEL_IDLE); /* and now the watch should trigger */ cq_expect_completion(cqv, tag(1), 1); cq_verify(cqv); state = grpc_channel_check_connectivity_state(f.client, 0); - GPR_ASSERT(state == GRPC_CHANNEL_TRANSIENT_FAILURE || + GPR_ASSERT(state == GRPC_CHANNEL_TRANSIENT_FAILURE || state == GRPC_CHANNEL_CONNECTING); /* quickly followed by a transition to TRANSIENT_FAILURE */ - grpc_channel_watch_connectivity_state( - f.client, GRPC_CHANNEL_CONNECTING, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(3), f.cq, tag(2)); + grpc_channel_watch_connectivity_state(f.client, GRPC_CHANNEL_CONNECTING, + GRPC_TIMEOUT_SECONDS_TO_DEADLINE(3), + f.cq, tag(2)); cq_expect_completion(cqv, tag(2), 1); cq_verify(cqv); state = grpc_channel_check_connectivity_state(f.client, 0); - GPR_ASSERT(state == GRPC_CHANNEL_TRANSIENT_FAILURE || + GPR_ASSERT(state == GRPC_CHANNEL_TRANSIENT_FAILURE || state == GRPC_CHANNEL_CONNECTING); gpr_log(GPR_DEBUG, "*** STARTING SERVER ***"); @@ -87,13 +92,13 @@ static void test_connectivity(grpc_end2end_test_config config) { /* we'll go through some set of transitions (some might be missed), until READY is reached */ while (state != GRPC_CHANNEL_READY) { - grpc_channel_watch_connectivity_state( - f.client, state, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(3), f.cq, tag(3)); - cq_expect_completion(cqv, tag(3), 1); + grpc_channel_watch_connectivity_state( + f.client, state, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(3), f.cq, tag(3)); + cq_expect_completion(cqv, tag(3), 1); cq_verify(cqv); state = grpc_channel_check_connectivity_state(f.client, 0); - GPR_ASSERT(state == GRPC_CHANNEL_READY || - state == GRPC_CHANNEL_CONNECTING || + GPR_ASSERT(state == GRPC_CHANNEL_READY || + state == GRPC_CHANNEL_CONNECTING || state == GRPC_CHANNEL_TRANSIENT_FAILURE); } @@ -101,8 +106,9 @@ static void test_connectivity(grpc_end2end_test_config config) { /* we should go immediately to TRANSIENT_FAILURE */ gpr_log(GPR_DEBUG, "*** SHUTTING DOWN SERVER ***"); - grpc_channel_watch_connectivity_state( - f.client, GRPC_CHANNEL_READY, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(3), f.cq, tag(4)); + grpc_channel_watch_connectivity_state(f.client, GRPC_CHANNEL_READY, + GRPC_TIMEOUT_SECONDS_TO_DEADLINE(3), + f.cq, tag(4)); grpc_server_shutdown_and_notify(f.server, f.cq, tag(0xdead)); @@ -110,7 +116,7 @@ static void test_connectivity(grpc_end2end_test_config config) { cq_expect_completion(cqv, tag(0xdead), 1); cq_verify(cqv); state = grpc_channel_check_connectivity_state(f.client, 0); - GPR_ASSERT(state == GRPC_CHANNEL_TRANSIENT_FAILURE || + GPR_ASSERT(state == GRPC_CHANNEL_TRANSIENT_FAILURE || state == GRPC_CHANNEL_CONNECTING); /* cleanup server */ diff --git a/test/core/end2end/tests/default_host.c b/test/core/end2end/tests/default_host.c index 5cbf26b94f..91330c718e 100644 --- a/test/core/end2end/tests/default_host.c +++ b/test/core/end2end/tests/default_host.c @@ -77,9 +77,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -154,9 +153,9 @@ static void simple_request_body(grpc_end2end_test_fixture f) { error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(error == GRPC_CALL_OK); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(error == GRPC_CALL_OK); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); @@ -220,7 +219,9 @@ static void test_invoke_simple_request(grpc_end2end_test_config config) { } void grpc_end2end_tests(grpc_end2end_test_config config) { - if ((config.feature_mask & FEATURE_MASK_SUPPORTS_HOSTNAME_VERIFICATION) != 0) return; - if ((config.feature_mask & FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION) == 0) return; + if ((config.feature_mask & FEATURE_MASK_SUPPORTS_HOSTNAME_VERIFICATION) != 0) + return; + if ((config.feature_mask & FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION) == 0) + return; test_invoke_simple_request(config); } diff --git a/test/core/end2end/tests/disappearing_server.c b/test/core/end2end/tests/disappearing_server.c index 0b98424c25..09762705e3 100644 --- a/test/core/end2end/tests/disappearing_server.c +++ b/test/core/end2end/tests/disappearing_server.c @@ -134,9 +134,9 @@ static void do_request_and_shutdown_server(grpc_end2end_test_fixture *f, error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f->server, &s, &call_details, - &request_metadata_recv, f->cq, f->cq, - tag(101)); + error = + grpc_server_request_call(f->server, &s, &call_details, + &request_metadata_recv, f->cq, f->cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/early_server_shutdown_finishes_inflight_calls.c b/test/core/end2end/tests/early_server_shutdown_finishes_inflight_calls.c index a5683129c1..233bc9bee2 100644 --- a/test/core/end2end/tests/early_server_shutdown_finishes_inflight_calls.c +++ b/test/core/end2end/tests/early_server_shutdown_finishes_inflight_calls.c @@ -142,9 +142,9 @@ static void test_early_server_shutdown_finishes_inflight_calls( error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/empty_batch.c b/test/core/end2end/tests/empty_batch.c index feb2f18166..c93d236a6a 100644 --- a/test/core/end2end/tests/empty_batch.c +++ b/test/core/end2end/tests/empty_batch.c @@ -77,9 +77,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; diff --git a/test/core/end2end/tests/graceful_server_shutdown.c b/test/core/end2end/tests/graceful_server_shutdown.c index 9ec9430d47..d4e7a1ac6d 100644 --- a/test/core/end2end/tests/graceful_server_shutdown.c +++ b/test/core/end2end/tests/graceful_server_shutdown.c @@ -149,9 +149,9 @@ static void test_early_server_shutdown_finishes_inflight_calls( error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/invoke_large_request.c b/test/core/end2end/tests/invoke_large_request.c index 5fe369ea45..7677084511 100644 --- a/test/core/end2end/tests/invoke_large_request.c +++ b/test/core/end2end/tests/invoke_large_request.c @@ -73,9 +73,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -175,9 +174,9 @@ static void test_invoke_large_request(grpc_end2end_test_config config) { error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/max_concurrent_streams.c b/test/core/end2end/tests/max_concurrent_streams.c index 203d98d100..0ba620b851 100644 --- a/test/core/end2end/tests/max_concurrent_streams.c +++ b/test/core/end2end/tests/max_concurrent_streams.c @@ -75,9 +75,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -151,9 +150,9 @@ static void simple_request_body(grpc_end2end_test_fixture f) { error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/max_message_length.c b/test/core/end2end/tests/max_message_length.c index dd30e68f42..2b9560716f 100644 --- a/test/core/end2end/tests/max_message_length.c +++ b/test/core/end2end/tests/max_message_length.c @@ -75,9 +75,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -171,9 +170,9 @@ static void test_max_message_length(grpc_end2end_test_config config) { error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/no_op.c b/test/core/end2end/tests/no_op.c index 565d4ea280..157d0d5349 100644 --- a/test/core/end2end/tests/no_op.c +++ b/test/core/end2end/tests/no_op.c @@ -75,9 +75,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; diff --git a/test/core/end2end/tests/ping_pong_streaming.c b/test/core/end2end/tests/ping_pong_streaming.c index e19f115e40..43abda4d7f 100644 --- a/test/core/end2end/tests/ping_pong_streaming.c +++ b/test/core/end2end/tests/ping_pong_streaming.c @@ -75,9 +75,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -158,9 +157,9 @@ static void test_pingpong_streaming(grpc_end2end_test_config config, error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(100)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(100)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(100), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/registered_call.c b/test/core/end2end/tests/registered_call.c index 1ef595ee56..eddce6ded4 100644 --- a/test/core/end2end/tests/registered_call.c +++ b/test/core/end2end/tests/registered_call.c @@ -77,9 +77,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -152,9 +151,9 @@ static void simple_request_body(grpc_end2end_test_fixture f, void *rc) { error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); @@ -205,9 +204,8 @@ static void simple_request_body(grpc_end2end_test_fixture f, void *rc) { static void test_invoke_simple_request(grpc_end2end_test_config config) { grpc_end2end_test_fixture f = begin_test(config, "test_invoke_simple_request", NULL, NULL); - void *rc = - grpc_channel_register_call(f.client, "/foo", "foo.test.google.fr:1234", - NULL); + void *rc = grpc_channel_register_call(f.client, "/foo", + "foo.test.google.fr:1234", NULL); simple_request_body(f, rc); end_test(&f); @@ -218,9 +216,8 @@ static void test_invoke_10_simple_requests(grpc_end2end_test_config config) { int i; grpc_end2end_test_fixture f = begin_test(config, "test_invoke_10_simple_requests", NULL, NULL); - void *rc = - grpc_channel_register_call(f.client, "/foo", "foo.test.google.fr:1234", - NULL); + void *rc = grpc_channel_register_call(f.client, "/foo", + "foo.test.google.fr:1234", NULL); for (i = 0; i < 10; i++) { simple_request_body(f, rc); diff --git a/test/core/end2end/tests/request_response_with_binary_metadata_and_payload.c b/test/core/end2end/tests/request_response_with_binary_metadata_and_payload.c index de6f460795..2345f94044 100644 --- a/test/core/end2end/tests/request_response_with_binary_metadata_and_payload.c +++ b/test/core/end2end/tests/request_response_with_binary_metadata_and_payload.c @@ -75,9 +75,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -195,9 +194,9 @@ static void test_request_response_with_metadata_and_payload( error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/request_response_with_metadata_and_payload.c b/test/core/end2end/tests/request_response_with_metadata_and_payload.c index b6196ab46e..a4cc27896c 100644 --- a/test/core/end2end/tests/request_response_with_metadata_and_payload.c +++ b/test/core/end2end/tests/request_response_with_metadata_and_payload.c @@ -75,9 +75,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -110,10 +109,12 @@ static void test_request_response_with_metadata_and_payload( grpc_byte_buffer *response_payload = grpc_raw_byte_buffer_create(&response_payload_slice, 1); gpr_timespec deadline = five_seconds_time(); - grpc_metadata meta_c[2] = {{"key1", "val1", 4, 0, {{NULL, NULL, NULL, NULL}}}, - {"key2", "val2", 4, 0, {{NULL, NULL, NULL, NULL}}}}; - grpc_metadata meta_s[2] = {{"KeY3", "val3", 4, 0, {{NULL, NULL, NULL, NULL}}}, - {"KeY4", "val4", 4, 0, {{NULL, NULL, NULL, NULL}}}}; + grpc_metadata meta_c[2] = { + {"key1", "val1", 4, 0, {{NULL, NULL, NULL, NULL}}}, + {"key2", "val2", 4, 0, {{NULL, NULL, NULL, NULL}}}}; + grpc_metadata meta_s[2] = { + {"KeY3", "val3", 4, 0, {{NULL, NULL, NULL, NULL}}}, + {"KeY4", "val4", 4, 0, {{NULL, NULL, NULL, NULL}}}}; grpc_end2end_test_fixture f = begin_test( config, "test_request_response_with_metadata_and_payload", NULL, NULL); cq_verifier *cqv = cq_verifier_create(f.cq); @@ -177,9 +178,9 @@ static void test_request_response_with_metadata_and_payload( error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/request_response_with_payload.c b/test/core/end2end/tests/request_response_with_payload.c index 0a45a482a3..ff00ae6d9d 100644 --- a/test/core/end2end/tests/request_response_with_payload.c +++ b/test/core/end2end/tests/request_response_with_payload.c @@ -75,9 +75,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -168,9 +167,9 @@ static void request_response_with_payload(grpc_end2end_test_fixture f) { error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/request_response_with_payload_and_call_creds.c b/test/core/end2end/tests/request_response_with_payload_and_call_creds.c index 8e0bc4e2ae..9bb3abb6bf 100644 --- a/test/core/end2end/tests/request_response_with_payload_and_call_creds.c +++ b/test/core/end2end/tests/request_response_with_payload_and_call_creds.c @@ -68,7 +68,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config, grpc_arg fail_auth_arg = { GRPC_ARG_STRING, FAIL_AUTH_CHECK_SERVER_ARG_NAME, {NULL}}; grpc_channel_args args; - args.num_args= 1; + args.num_args = 1; args.args = &fail_auth_arg; config.init_server(&f, &args); } else { @@ -93,9 +93,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -251,9 +250,9 @@ static void request_response_with_payload_and_call_creds( error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/request_response_with_trailing_metadata_and_payload.c b/test/core/end2end/tests/request_response_with_trailing_metadata_and_payload.c index 83744a8e24..8b764751f6 100644 --- a/test/core/end2end/tests/request_response_with_trailing_metadata_and_payload.c +++ b/test/core/end2end/tests/request_response_with_trailing_metadata_and_payload.c @@ -75,9 +75,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -110,12 +109,15 @@ static void test_request_response_with_metadata_and_payload( grpc_byte_buffer *response_payload = grpc_raw_byte_buffer_create(&response_payload_slice, 1); gpr_timespec deadline = five_seconds_time(); - grpc_metadata meta_c[2] = {{"key1", "val1", 4, 0, {{NULL, NULL, NULL, NULL}}}, - {"key2", "val2", 4, 0, {{NULL, NULL, NULL, NULL}}}}; - grpc_metadata meta_s[2] = {{"key3", "val3", 4, 0, {{NULL, NULL, NULL, NULL}}}, - {"key4", "val4", 4, 0, {{NULL, NULL, NULL, NULL}}}}; - grpc_metadata meta_t[2] = {{"key5", "val5", 4, 0, {{NULL, NULL, NULL, NULL}}}, - {"key6", "val6", 4, 0, {{NULL, NULL, NULL, NULL}}}}; + grpc_metadata meta_c[2] = { + {"key1", "val1", 4, 0, {{NULL, NULL, NULL, NULL}}}, + {"key2", "val2", 4, 0, {{NULL, NULL, NULL, NULL}}}}; + grpc_metadata meta_s[2] = { + {"key3", "val3", 4, 0, {{NULL, NULL, NULL, NULL}}}, + {"key4", "val4", 4, 0, {{NULL, NULL, NULL, NULL}}}}; + grpc_metadata meta_t[2] = { + {"key5", "val5", 4, 0, {{NULL, NULL, NULL, NULL}}}, + {"key6", "val6", 4, 0, {{NULL, NULL, NULL, NULL}}}}; grpc_end2end_test_fixture f = begin_test( config, "test_request_response_with_metadata_and_payload", NULL, NULL); cq_verifier *cqv = cq_verifier_create(f.cq); @@ -179,9 +181,9 @@ static void test_request_response_with_metadata_and_payload( error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/request_with_compressed_payload.c b/test/core/end2end/tests/request_with_compressed_payload.c index cb8b3381d6..299943c548 100644 --- a/test/core/end2end/tests/request_with_compressed_payload.c +++ b/test/core/end2end/tests/request_with_compressed_payload.c @@ -80,9 +80,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -132,7 +131,8 @@ static void request_with_payload_template( cq_verifier *cqv; char str[1024]; - memset(str, 'x', 1023); str[1023] = '\0'; + memset(str, 'x', 1023); + str[1023] = '\0'; request_payload_slice = gpr_slice_from_copied_string(str); request_payload = grpc_raw_byte_buffer_create(&request_payload_slice, 1); @@ -189,9 +189,9 @@ static void request_with_payload_template( error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, - f.cq, tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); @@ -279,8 +279,7 @@ static void test_invoke_request_with_exceptionally_uncompressed_payload( grpc_end2end_test_config config) { request_with_payload_template( config, "test_invoke_request_with_exceptionally_uncompressed_payload", - GRPC_WRITE_NO_COMPRESS, GRPC_COMPRESS_GZIP, GRPC_COMPRESS_NONE, - NULL); + GRPC_WRITE_NO_COMPRESS, GRPC_COMPRESS_GZIP, GRPC_COMPRESS_NONE, NULL); } static void test_invoke_request_with_uncompressed_payload( diff --git a/test/core/end2end/tests/request_with_flags.c b/test/core/end2end/tests/request_with_flags.c index 3255f14457..eb2e5dc7e8 100644 --- a/test/core/end2end/tests/request_with_flags.c +++ b/test/core/end2end/tests/request_with_flags.c @@ -76,9 +76,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; diff --git a/test/core/end2end/tests/request_with_large_metadata.c b/test/core/end2end/tests/request_with_large_metadata.c index 5b43caf18c..98e47aaf98 100644 --- a/test/core/end2end/tests/request_with_large_metadata.c +++ b/test/core/end2end/tests/request_with_large_metadata.c @@ -75,9 +75,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -171,9 +170,9 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) { error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/request_with_payload.c b/test/core/end2end/tests/request_with_payload.c index c0013fb60f..149dbaeb00 100644 --- a/test/core/end2end/tests/request_with_payload.c +++ b/test/core/end2end/tests/request_with_payload.c @@ -75,9 +75,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; diff --git a/test/core/end2end/tests/server_finishes_request.c b/test/core/end2end/tests/server_finishes_request.c index ab2f575263..8bacc6c730 100644 --- a/test/core/end2end/tests/server_finishes_request.c +++ b/test/core/end2end/tests/server_finishes_request.c @@ -77,9 +77,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -149,9 +148,9 @@ static void simple_request_body(grpc_end2end_test_fixture f) { error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/simple_delayed_request.c b/test/core/end2end/tests/simple_delayed_request.c index 277aa2596e..9133aacc35 100644 --- a/test/core/end2end/tests/simple_delayed_request.c +++ b/test/core/end2end/tests/simple_delayed_request.c @@ -63,9 +63,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -146,9 +145,9 @@ static void simple_delayed_request_body(grpc_end2end_test_config config, config.init_server(f, server_args); - error = grpc_server_request_call(f->server, &s, &call_details, - &request_metadata_recv, f->cq, f->cq, - tag(101)); + error = + grpc_server_request_call(f->server, &s, &call_details, + &request_metadata_recv, f->cq, f->cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/simple_request.c b/test/core/end2end/tests/simple_request.c index d3d2f27560..0f62d958ae 100644 --- a/test/core/end2end/tests/simple_request.c +++ b/test/core/end2end/tests/simple_request.c @@ -77,9 +77,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -159,9 +158,9 @@ static void simple_request_body(grpc_end2end_test_fixture f) { error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/end2end/tests/simple_request_with_high_initial_sequence_number.c b/test/core/end2end/tests/simple_request_with_high_initial_sequence_number.c index 4fc206cbfc..0067bb4bef 100644 --- a/test/core/end2end/tests/simple_request_with_high_initial_sequence_number.c +++ b/test/core/end2end/tests/simple_request_with_high_initial_sequence_number.c @@ -77,9 +77,8 @@ static void drain_cq(grpc_completion_queue *cq) { static void shutdown_server(grpc_end2end_test_fixture *f) { if (!f->server) return; grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); - GPR_ASSERT(grpc_completion_queue_pluck(f->cq, tag(1000), - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), - NULL) + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) .type == GRPC_OP_COMPLETE); grpc_server_destroy(f->server); f->server = NULL; @@ -153,9 +152,9 @@ static void simple_request_body(grpc_end2end_test_fixture f) { error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(GRPC_CALL_OK == error); - error = grpc_server_request_call(f.server, &s, &call_details, - &request_metadata_recv, f.cq, f.cq, - tag(101)); + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); GPR_ASSERT(GRPC_CALL_OK == error); cq_expect_completion(cqv, tag(101), 1); cq_verify(cqv); diff --git a/test/core/fling/fling_test.c b/test/core/fling/fling_test.c index f9ba461d24..29d9050704 100644 --- a/test/core/fling/fling_test.c +++ b/test/core/fling/fling_test.c @@ -57,22 +57,24 @@ int main(int argc, char **argv) { strcpy(root, "."); } /* start the server */ - gpr_asprintf(&args[0], "%s/fling_server%s", root, gpr_subprocess_binary_extension()); + gpr_asprintf(&args[0], "%s/fling_server%s", root, + gpr_subprocess_binary_extension()); args[1] = "--bind"; gpr_join_host_port(&args[2], "::", port); args[3] = "--no-secure"; - svr = gpr_subprocess_create(4, (const char**)args); + svr = gpr_subprocess_create(4, (const char **)args); gpr_free(args[0]); gpr_free(args[2]); /* start the client */ - gpr_asprintf(&args[0], "%s/fling_client%s", root, gpr_subprocess_binary_extension()); + gpr_asprintf(&args[0], "%s/fling_client%s", root, + gpr_subprocess_binary_extension()); args[1] = "--target"; gpr_join_host_port(&args[2], "127.0.0.1", port); args[3] = "--scenario=ping-pong-request"; args[4] = "--no-secure"; args[5] = 0; - cli = gpr_subprocess_create(6, (const char**)args); + cli = gpr_subprocess_create(6, (const char **)args); gpr_free(args[0]); gpr_free(args[2]); diff --git a/test/core/fling/server.c b/test/core/fling/server.c index 2873e4af4b..010217939d 100644 --- a/test/core/fling/server.c +++ b/test/core/fling/server.c @@ -248,7 +248,8 @@ int main(int argc, char **argv) { } ev = grpc_completion_queue_next( cq, gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), - gpr_time_from_micros(1000000, GPR_TIMESPAN)), NULL); + gpr_time_from_micros(1000000, GPR_TIMESPAN)), + NULL); s = ev.tag; switch (ev.type) { case GRPC_OP_COMPLETE: diff --git a/test/core/httpcli/format_request_test.c b/test/core/httpcli/format_request_test.c index da850049e2..82b2ccb122 100644 --- a/test/core/httpcli/format_request_test.c +++ b/test/core/httpcli/format_request_test.c @@ -142,8 +142,7 @@ static void test_format_post_request_content_type_override(void) { "POST /index.html HTTP/1.0\r\n" "Host: example.com\r\n" "Connection: close\r\n" - "User-Agent: " GRPC_HTTPCLI_USER_AGENT - "\r\n" + "User-Agent: " GRPC_HTTPCLI_USER_AGENT "\r\n" "x-yz: abc\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Content-Length: 11\r\n" diff --git a/test/core/iomgr/udp_server_test.c b/test/core/iomgr/udp_server_test.c index 74b78958b0..5a5f99fb94 100644 --- a/test/core/iomgr/udp_server_test.c +++ b/test/core/iomgr/udp_server_test.c @@ -49,8 +49,7 @@ static grpc_pollset g_pollset; static int g_number_of_reads = 0; static int g_number_of_bytes_read = 0; -static void on_connect(void *arg, grpc_endpoint *udp) { -} +static void on_connect(void *arg, grpc_endpoint *udp) {} static void on_read(int fd, grpc_udp_server_cb new_transport_cb, void *cb_arg) { char read_buffer[512]; @@ -122,7 +121,8 @@ static void test_receive(int number_of_clients) { memset(&addr, 0, sizeof(addr)); addr.ss_family = AF_INET; - GPR_ASSERT(grpc_udp_server_add_port(s, (struct sockaddr *)&addr, addr_len, on_read)); + GPR_ASSERT( + grpc_udp_server_add_port(s, (struct sockaddr *)&addr, addr_len, on_read)); svrfd = grpc_udp_server_get_fd(s, 0); GPR_ASSERT(svrfd >= 0); diff --git a/test/core/json/json_test.c b/test/core/json/json_test.c index 3033419118..a500effcea 100644 --- a/test/core/json/json_test.c +++ b/test/core/json/json_test.c @@ -66,7 +66,7 @@ static testing_pair testing_pairs[] = { {"\"\\ud834\\udd1e\"", "\"\\ud834\\udd1e\""}, /* Testing nested empty containers. */ { - " [ [ ] , { } , [ ] ] ", "[[],{},[]]", + " [ [ ] , { } , [ ] ] ", "[[],{},[]]", }, /* Testing escapes and control chars in key strings. */ {" { \"\x7f\\n\\\\a , b\": 1, \"\": 0 } ", diff --git a/test/core/security/auth_context_test.c b/test/core/security/auth_context_test.c index d785eb6064..d091c7e7e6 100644 --- a/test/core/security/auth_context_test.c +++ b/test/core/security/auth_context_test.c @@ -151,4 +151,3 @@ int main(int argc, char **argv) { test_chained_context(); return 0; } - diff --git a/test/core/security/json_token_test.c b/test/core/security/json_token_test.c index da57cef15c..0bac61eb54 100644 --- a/test/core/security/json_token_test.c +++ b/test/core/security/json_token_test.c @@ -263,8 +263,8 @@ static void check_jwt_header(grpc_json *header) { GPR_ASSERT(kid != NULL); GPR_ASSERT(kid->type == GRPC_JSON_STRING); - GPR_ASSERT(strcmp(kid->value, - "e6b5137873db8d2ef81e06a47289e6434ec8a165") == 0); + GPR_ASSERT(strcmp(kid->value, "e6b5137873db8d2ef81e06a47289e6434ec8a165") == + 0); } static void check_jwt_claim(grpc_json *claim, const char *expected_audience, @@ -298,9 +298,11 @@ static void check_jwt_claim(grpc_json *claim, const char *expected_audience, GPR_ASSERT(iss != NULL); GPR_ASSERT(iss->type == GRPC_JSON_STRING); - GPR_ASSERT(strcmp(iss->value, - "777-abaslkan11hlb6nmim3bpspl31ud@developer.gserviceaccount.com") - ==0); + GPR_ASSERT( + strcmp( + iss->value, + "777-abaslkan11hlb6nmim3bpspl31ud@developer.gserviceaccount.com") == + 0); if (expected_scope != NULL) { GPR_ASSERT(scope != NULL); diff --git a/test/core/security/jwt_verifier_test.c b/test/core/security/jwt_verifier_test.c index 440286ea1a..5cc8b2e9be 100644 --- a/test/core/security/jwt_verifier_test.c +++ b/test/core/security/jwt_verifier_test.c @@ -93,8 +93,7 @@ static const char json_key_str_part3_for_custom_email_issuer[] = "com\", \"type\": \"service_account\" }"; static grpc_jwt_verifier_email_domain_key_url_mapping custom_mapping = { - "bar.com", "keys.bar.com/jwk" -}; + "bar.com", "keys.bar.com/jwk"}; static const char expected_user_data[] = "user data"; @@ -153,7 +152,7 @@ static const char expired_claims[] = " \"iss\": \"blah.foo.com\"," " \"sub\": \"juju@blah.foo.com\"," " \"jti\": \"jwtuniqueid\"," - " \"iat\": 100," /* Way back in the past... */ + " \"iat\": 100," /* Way back in the past... */ " \"exp\": 120," " \"nbf\": 60," " \"foo\": \"bar\"}"; @@ -316,8 +315,8 @@ static void test_jwt_verifier_google_email_issuer_success(void) { GPR_ASSERT(grpc_auth_json_key_is_valid(&key)); grpc_httpcli_set_override(httpcli_get_google_keys_for_email, httpcli_post_should_not_be_called); - jwt = - grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, NULL); + jwt = grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, + NULL); grpc_auth_json_key_destruct(&key); GPR_ASSERT(jwt != NULL); grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, @@ -348,8 +347,8 @@ static void test_jwt_verifier_custom_email_issuer_success(void) { GPR_ASSERT(grpc_auth_json_key_is_valid(&key)); grpc_httpcli_set_override(httpcli_get_custom_keys_for_email, httpcli_post_should_not_be_called); - jwt = - grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, NULL); + jwt = grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, + NULL); grpc_auth_json_key_destruct(&key); GPR_ASSERT(jwt != NULL); grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, @@ -359,9 +358,10 @@ static void test_jwt_verifier_custom_email_issuer_success(void) { grpc_httpcli_set_override(NULL, NULL); } -static int httpcli_get_jwk_set( - const grpc_httpcli_request *request, gpr_timespec deadline, - grpc_httpcli_response_cb on_response, void *user_data) { +static int httpcli_get_jwk_set(const grpc_httpcli_request *request, + gpr_timespec deadline, + grpc_httpcli_response_cb on_response, + void *user_data) { grpc_httpcli_response response = http_response(200, gpr_strdup(good_jwk_set)); GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl); GPR_ASSERT(strcmp(request->host, "www.googleapis.com") == 0); @@ -396,8 +396,8 @@ static void test_jwt_verifier_url_issuer_success(void) { GPR_ASSERT(grpc_auth_json_key_is_valid(&key)); grpc_httpcli_set_override(httpcli_get_openid_config, httpcli_post_should_not_be_called); - jwt = - grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, NULL); + jwt = grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, + NULL); grpc_auth_json_key_destruct(&key); GPR_ASSERT(jwt != NULL); grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, @@ -436,8 +436,8 @@ static void test_jwt_verifier_url_issuer_bad_config(void) { GPR_ASSERT(grpc_auth_json_key_is_valid(&key)); grpc_httpcli_set_override(httpcli_get_bad_json, httpcli_post_should_not_be_called); - jwt = - grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, NULL); + jwt = grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, + NULL); grpc_auth_json_key_destruct(&key); GPR_ASSERT(jwt != NULL); grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, @@ -457,8 +457,8 @@ static void test_jwt_verifier_bad_json_key(void) { GPR_ASSERT(grpc_auth_json_key_is_valid(&key)); grpc_httpcli_set_override(httpcli_get_bad_json, httpcli_post_should_not_be_called); - jwt = - grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, NULL); + jwt = grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, + NULL); grpc_auth_json_key_destruct(&key); GPR_ASSERT(jwt != NULL); grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, @@ -503,8 +503,8 @@ static void test_jwt_verifier_bad_signature(void) { GPR_ASSERT(grpc_auth_json_key_is_valid(&key)); grpc_httpcli_set_override(httpcli_get_openid_config, httpcli_post_should_not_be_called); - jwt = - grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, NULL); + jwt = grpc_jwt_encode_and_sign(&key, expected_audience, expected_lifetime, + NULL); grpc_auth_json_key_destruct(&key); corrupt_jwt_sig(jwt); GPR_ASSERT(jwt != NULL); @@ -546,7 +546,6 @@ static void test_jwt_verifier_bad_format(void) { /* bad signature custom provided email*/ /* bad key */ - int main(int argc, char **argv) { grpc_test_init(argc, argv); test_claims_success(); @@ -562,4 +561,3 @@ int main(int argc, char **argv) { test_jwt_verifier_bad_format(); return 0; } - diff --git a/test/core/security/print_google_default_creds_token.c b/test/core/security/print_google_default_creds_token.c index 7238efbbfd..b4323ab200 100644 --- a/test/core/security/print_google_default_creds_token.c +++ b/test/core/security/print_google_default_creds_token.c @@ -49,8 +49,7 @@ typedef struct { int is_done; } synchronizer; -static void on_metadata_response(void *user_data, - grpc_credentials_md *md_elems, +static void on_metadata_response(void *user_data, grpc_credentials_md *md_elems, size_t num_md, grpc_credentials_status status) { synchronizer *sync = user_data; diff --git a/test/core/security/security_connector_test.c b/test/core/security/security_connector_test.c index b37fd7213d..3f6c592b0b 100644 --- a/test/core/security/security_connector_test.c +++ b/test/core/security/security_connector_test.c @@ -77,9 +77,9 @@ static void test_unauthenticated_ssl_peer(void) { } static int check_identity(const grpc_auth_context *ctx, - const char *expected_property_name, - const char **expected_identities, - size_t num_identities) { + const char *expected_property_name, + const char **expected_identities, + size_t num_identities) { grpc_auth_property_iterator it; const grpc_auth_property *prop; size_t i; @@ -166,7 +166,8 @@ static void test_cn_and_one_san_ssl_peer_to_auth_context(void) { ctx = tsi_ssl_peer_to_auth_context(&peer); GPR_ASSERT(ctx != NULL); GPR_ASSERT(grpc_auth_context_peer_is_authenticated(ctx)); - GPR_ASSERT(check_identity(ctx, GRPC_X509_SAN_PROPERTY_NAME, &expected_san, 1)); + GPR_ASSERT( + check_identity(ctx, GRPC_X509_SAN_PROPERTY_NAME, &expected_san, 1)); GPR_ASSERT(check_transport_security_type(ctx)); GPR_ASSERT(check_x509_cn(ctx, expected_cn)); diff --git a/test/core/security/verify_jwt.c b/test/core/security/verify_jwt.c index 69bbc3cc0c..5ebde5fbb4 100644 --- a/test/core/security/verify_jwt.c +++ b/test/core/security/verify_jwt.c @@ -120,4 +120,3 @@ int main(int argc, char **argv) { gpr_cmdline_destroy(cl); return !sync.success; } - diff --git a/test/core/statistics/census_log_tests.h b/test/core/statistics/census_log_tests.h index 28bde086f3..ec3241b4f9 100644 --- a/test/core/statistics/census_log_tests.h +++ b/test/core/statistics/census_log_tests.h @@ -48,4 +48,4 @@ void test_multiple_writers(); void test_performance(); void test_small_log(); -#endif /* GRPC_TEST_CORE_STATISTICS_CENSUS_LOG_TESTS_H */ +#endif /* GRPC_TEST_CORE_STATISTICS_CENSUS_LOG_TESTS_H */ diff --git a/test/core/statistics/hash_table_test.c b/test/core/statistics/hash_table_test.c index 1e9e1c8d23..2568e96cba 100644 --- a/test/core/statistics/hash_table_test.c +++ b/test/core/statistics/hash_table_test.c @@ -65,8 +65,8 @@ static void free_data(void* data) { gpr_free(data); } static void test_create_table(void) { /* Create table with uint64 key type */ census_ht* ht = NULL; - census_ht_option ht_options = {CENSUS_HT_UINT64, 1999, NULL, - NULL, NULL, NULL}; + census_ht_option ht_options = { + CENSUS_HT_UINT64, 1999, NULL, NULL, NULL, NULL}; ht = census_ht_create(&ht_options); GPR_ASSERT(ht != NULL); GPR_ASSERT(census_ht_get_size(ht) == 0); @@ -97,7 +97,7 @@ static void test_table_with_int_key(void) { for (i = 0; i < 20; ++i) { census_ht_key key; key.val = i; - census_ht_insert(ht, key, (void*)(gpr_intptr) i); + census_ht_insert(ht, key, (void*)(gpr_intptr)i); GPR_ASSERT(census_ht_get_size(ht) == i + 1); } for (i = 0; i < 20; i++) { @@ -105,7 +105,7 @@ static void test_table_with_int_key(void) { census_ht_key key; key.val = i; val = census_ht_find(ht, key); - GPR_ASSERT(val == (void*)(gpr_intptr) i); + GPR_ASSERT(val == (void*)(gpr_intptr)i); } elements = census_ht_get_all_elements(ht, &num_elements); GPR_ASSERT(elements != NULL); @@ -212,9 +212,9 @@ static void test_table_with_string_key(void) { census_ht_option opt = {CENSUS_HT_POINTER, 7, &hash64, &cmp_str_keys, NULL, NULL}; census_ht* ht = census_ht_create(&opt); - const char* keys[] = {"k1", "a", "000", - "apple", "banana_a_long_long_long_banana", "%$", - "111", "foo", "b"}; + const char* keys[] = { + "k1", "a", "000", "apple", "banana_a_long_long_long_banana", + "%$", "111", "foo", "b"}; const int vals[] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; int i = 0; GPR_ASSERT(ht != NULL); diff --git a/test/core/support/cmdline_test.c b/test/core/support/cmdline_test.c index 26153b192c..1c77c15233 100644 --- a/test/core/support/cmdline_test.c +++ b/test/core/support/cmdline_test.c @@ -287,8 +287,9 @@ static void test_usage(void) { gpr_cmdline_add_flag(cl, "flag", NULL, &flag); usage = gpr_cmdline_usage_string(cl, "test"); - GPR_ASSERT(0 == strcmp(usage, - "Usage: test [--str=string] [--x=int] [--flag|--no-flag]\n")); + GPR_ASSERT( + 0 == strcmp(usage, + "Usage: test [--str=string] [--x=int] [--flag|--no-flag]\n")); gpr_free(usage); gpr_cmdline_destroy(cl); diff --git a/test/core/support/string_test.c b/test/core/support/string_test.c index 9023d0746b..f62cbe3435 100644 --- a/test/core/support/string_test.c +++ b/test/core/support/string_test.c @@ -71,7 +71,7 @@ static void test_dump(void) { expect_dump("\x01", 1, GPR_DUMP_HEX | GPR_DUMP_ASCII, "01 '.'"); expect_dump("\x01\x02", 2, GPR_DUMP_HEX, "01 02"); expect_dump("\x01\x23\x45\x67\x89\xab\xcd\xef", 8, GPR_DUMP_HEX, - "01 23 45 67 89 ab cd ef"); + "01 23 45 67 89 ab cd ef"); expect_dump("ab", 2, GPR_DUMP_HEX | GPR_DUMP_ASCII, "61 62 'ab'"); } @@ -221,7 +221,7 @@ static void test_strjoin_sep(void) { } static void test_strsplit(void) { - gpr_slice_buffer* parts; + gpr_slice_buffer *parts; gpr_slice str; LOG_TEST_NAME("test_strsplit"); diff --git a/test/core/support/thd_test.c b/test/core/support/thd_test.c index 7232cd9f5b..faba33c5e8 100644 --- a/test/core/support/thd_test.c +++ b/test/core/support/thd_test.c @@ -60,7 +60,7 @@ static void thd_body(void *v) { gpr_mu_unlock(&t->mu); } -static void thd_body_joinable(void *v) { } +static void thd_body_joinable(void *v) {} /* Test that we can create a number of threads and wait for them. */ static void test(void) { diff --git a/test/core/surface/completion_queue_test.c b/test/core/surface/completion_queue_test.c index 0741ab920d..a5298a25e0 100644 --- a/test/core/surface/completion_queue_test.c +++ b/test/core/surface/completion_queue_test.c @@ -105,8 +105,8 @@ static void test_shutdown_then_next_polling(void) { cc = grpc_completion_queue_create(NULL); grpc_completion_queue_shutdown(cc); - event = grpc_completion_queue_next(cc, gpr_inf_past(GPR_CLOCK_REALTIME), - NULL); + event = + grpc_completion_queue_next(cc, gpr_inf_past(GPR_CLOCK_REALTIME), NULL); GPR_ASSERT(event.type == GRPC_QUEUE_SHUTDOWN); grpc_completion_queue_destroy(cc); } @@ -118,8 +118,8 @@ static void test_shutdown_then_next_with_timeout(void) { cc = grpc_completion_queue_create(NULL); grpc_completion_queue_shutdown(cc); - event = grpc_completion_queue_next(cc, gpr_inf_future(GPR_CLOCK_REALTIME), - NULL); + event = + grpc_completion_queue_next(cc, gpr_inf_future(GPR_CLOCK_REALTIME), NULL); GPR_ASSERT(event.type == GRPC_QUEUE_SHUTDOWN); grpc_completion_queue_destroy(cc); } diff --git a/test/core/surface/lame_client_test.c b/test/core/surface/lame_client_test.c index 0c53c954c8..96434193c9 100644 --- a/test/core/surface/lame_client_test.c +++ b/test/core/surface/lame_client_test.c @@ -64,8 +64,7 @@ int main(int argc, char **argv) { cq = grpc_completion_queue_create(NULL); call = grpc_channel_create_call(chan, NULL, GRPC_PROPAGATE_DEFAULTS, cq, "/Foo", "anywhere", - GRPC_TIMEOUT_SECONDS_TO_DEADLINE(100), - NULL); + GRPC_TIMEOUT_SECONDS_TO_DEADLINE(100), NULL); GPR_ASSERT(call); cqv = cq_verifier_create(cq); diff --git a/test/core/transport/chttp2/stream_map_test.c b/test/core/transport/chttp2/stream_map_test.c index 3c6976ee9d..b0bb3a8904 100644 --- a/test/core/transport/chttp2/stream_map_test.c +++ b/test/core/transport/chttp2/stream_map_test.c @@ -93,7 +93,7 @@ static void test_basic_add_find(size_t n) { grpc_chttp2_stream_map_init(&map, 8); GPR_ASSERT(0 == grpc_chttp2_stream_map_size(&map)); for (i = 1; i <= n; i++) { - grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr) i); + grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr)i); } GPR_ASSERT(n == grpc_chttp2_stream_map_size(&map)); GPR_ASSERT(NULL == grpc_chttp2_stream_map_find(&map, 0)); @@ -148,7 +148,7 @@ static void test_delete_evens_sweep(size_t n) { grpc_chttp2_stream_map_init(&map, 8); for (i = 1; i <= n; i++) { - grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr) i); + grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr)i); } for (i = 1; i <= n; i++) { if ((i & 1) == 0) { @@ -170,7 +170,7 @@ static void test_delete_evens_incremental(size_t n) { grpc_chttp2_stream_map_init(&map, 8); for (i = 1; i <= n; i++) { - grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr) i); + grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr)i); if ((i & 1) == 0) { grpc_chttp2_stream_map_delete(&map, i); } diff --git a/test/core/util/grpc_profiler.h b/test/core/util/grpc_profiler.h index 347a1d39d5..88ec6bcb0e 100644 --- a/test/core/util/grpc_profiler.h +++ b/test/core/util/grpc_profiler.h @@ -45,4 +45,4 @@ void grpc_profiler_stop(); } #endif /* __cplusplus */ -#endif /* GRPC_TEST_CORE_UTIL_GRPC_PROFILER_H */ +#endif /* GRPC_TEST_CORE_UTIL_GRPC_PROFILER_H */ diff --git a/test/core/util/parse_hexstring.h b/test/core/util/parse_hexstring.h index 22bbd1756f..ddbfe541c6 100644 --- a/test/core/util/parse_hexstring.h +++ b/test/core/util/parse_hexstring.h @@ -38,4 +38,4 @@ gpr_slice parse_hexstring(const char *hexstring); -#endif /* GRPC_TEST_CORE_UTIL_PARSE_HEXSTRING_H */ +#endif /* GRPC_TEST_CORE_UTIL_PARSE_HEXSTRING_H */ diff --git a/test/core/util/port.h b/test/core/util/port.h index b516ec5a48..93788bcab2 100644 --- a/test/core/util/port.h +++ b/test/core/util/port.h @@ -49,4 +49,4 @@ int grpc_pick_unused_port_or_die(); } #endif -#endif /* GRPC_TEST_CORE_UTIL_PORT_H */ +#endif /* GRPC_TEST_CORE_UTIL_PORT_H */ diff --git a/test/core/util/port_posix.c b/test/core/util/port_posix.c index 9bff18d311..cec0eebd33 100644 --- a/test/core/util/port_posix.c +++ b/test/core/util/port_posix.c @@ -66,9 +66,7 @@ static int has_port_been_chosen(int port) { return 0; } -static void free_chosen_ports() { - gpr_free(chosen_ports); -} +static void free_chosen_ports() { gpr_free(chosen_ports); } static void chose_port(int port) { if (chosen_ports == NULL) { @@ -206,7 +204,8 @@ int grpc_pick_unused_port(void) { /* Type of port to first pick in next iteration */ int is_tcp = 1; - int try = 0; + int try + = 0; char *env = gpr_getenv("GRPC_TEST_PORT_SERVER"); if (env) { @@ -219,7 +218,8 @@ int grpc_pick_unused_port(void) { for (;;) { int port; - try++; + try + ++; if (try == 1) { port = getpid() % (65536 - 30000) + 30000; } else if (try <= NUM_RANDOM_PORTS_TO_PICK) { diff --git a/test/core/util/port_windows.c b/test/core/util/port_windows.c index fc52150435..5b072f805a 100644 --- a/test/core/util/port_windows.c +++ b/test/core/util/port_windows.c @@ -63,7 +63,8 @@ static int is_port_available(int *port, int is_tcp) { } /* Reuseaddr lets us start up a server immediately after it exits */ - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&one, sizeof(one)) < 0) { + if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const char *)&one, + sizeof(one)) < 0) { gpr_log(GPR_ERROR, "setsockopt() failed: %s", strerror(errno)); closesocket(fd); return 0; @@ -75,14 +76,14 @@ static int is_port_available(int *port, int is_tcp) { addr.sin_port = htons(*port); if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { gpr_log(GPR_DEBUG, "bind(port=%d) failed: %s", *port, strerror(errno)); - closesocket(fd); + closesocket(fd); return 0; } /* Get the bound port number */ if (getsockname(fd, (struct sockaddr *)&addr, &alen) < 0) { gpr_log(GPR_ERROR, "getsockname() failed: %s", strerror(errno)); - closesocket(fd); + closesocket(fd); return 0; } GPR_ASSERT(alen <= sizeof(addr)); @@ -113,11 +114,13 @@ int grpc_pick_unused_port(void) { /* Type of port to first pick in next iteration */ int is_tcp = 1; - int try = 0; + int try + = 0; for (;;) { int port; - try++; + try + ++; if (try == 1) { port = _getpid() % (65536 - 30000) + 30000; } else if (try <= NUM_RANDOM_PORTS_TO_PICK) { diff --git a/test/core/util/slice_splitter.h b/test/core/util/slice_splitter.h index 1ce1c097e2..d030c2cb55 100644 --- a/test/core/util/slice_splitter.h +++ b/test/core/util/slice_splitter.h @@ -65,4 +65,4 @@ gpr_slice grpc_slice_merge(gpr_slice *slices, size_t nslices); const char *grpc_slice_split_mode_name(grpc_slice_split_mode mode); -#endif /* GRPC_TEST_CORE_UTIL_SLICE_SPLITTER_H */ +#endif /* GRPC_TEST_CORE_UTIL_SLICE_SPLITTER_H */ diff --git a/test/core/util/test_config.c b/test/core/util/test_config.c index cadf88a7c6..685bdff530 100644 --- a/test/core/util/test_config.c +++ b/test/core/util/test_config.c @@ -78,16 +78,16 @@ void abort_handler(int sig) { } static void install_crash_handler() { - SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER) crash_handler); + SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)crash_handler); _set_abort_behavior(0, _WRITE_ABORT_MSG); _set_abort_behavior(0, _CALL_REPORTFAULT); signal(SIGABRT, abort_handler); } #else -static void install_crash_handler() { } +static void install_crash_handler() {} #endif -void grpc_test_init(int argc, char **argv) { +void grpc_test_init(int argc, char** argv) { install_crash_handler(); gpr_log(GPR_DEBUG, "test slowdown: machine=%f build=%f total=%f", (double)GRPC_TEST_SLOWDOWN_MACHINE_FACTOR, diff --git a/test/cpp/common/auth_property_iterator_test.cc b/test/cpp/common/auth_property_iterator_test.cc index 74b18ced0d..bf17842a84 100644 --- a/test/cpp/common/auth_property_iterator_test.cc +++ b/test/cpp/common/auth_property_iterator_test.cc @@ -61,11 +61,8 @@ class AuthPropertyIteratorTest : public ::testing::Test { EXPECT_EQ(1, grpc_auth_context_set_peer_identity_property_name(ctx_, "name")); } - void TearDown() GRPC_OVERRIDE { - grpc_auth_context_release(ctx_); - } + void TearDown() GRPC_OVERRIDE { grpc_auth_context_release(ctx_); } grpc_auth_context* ctx_; - }; TEST_F(AuthPropertyIteratorTest, DefaultCtor) { @@ -100,7 +97,7 @@ TEST_F(AuthPropertyIteratorTest, GeneralTest) { } // namespace } // namespace grpc -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } diff --git a/test/cpp/common/secure_auth_context_test.cc b/test/cpp/common/secure_auth_context_test.cc index 075d4ce8c9..e0376c9cc7 100644 --- a/test/cpp/common/secure_auth_context_test.cc +++ b/test/cpp/common/secure_auth_context_test.cc @@ -101,7 +101,7 @@ TEST_F(SecureAuthContextTest, Iterators) { } // namespace } // namespace grpc -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc index f00d19ed6c..a30c841216 100644 --- a/test/cpp/end2end/async_end2end_test.cc +++ b/test/cpp/end2end/async_end2end_test.cc @@ -65,7 +65,7 @@ namespace testing { namespace { -void* tag(int i) { return (void*)(gpr_intptr) i; } +void* tag(int i) { return (void*)(gpr_intptr)i; } class Verifier { public: @@ -73,7 +73,7 @@ class Verifier { expectations_[tag(i)] = expect_ok; return *this; } - void Verify(CompletionQueue *cq) { + void Verify(CompletionQueue* cq) { GPR_ASSERT(!expectations_.empty()); while (!expectations_.empty()) { bool ok; @@ -85,16 +85,19 @@ class Verifier { expectations_.erase(it); } } - void Verify(CompletionQueue *cq, std::chrono::system_clock::time_point deadline) { + void Verify(CompletionQueue* cq, + std::chrono::system_clock::time_point deadline) { if (expectations_.empty()) { bool ok; - void *got_tag; - EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), CompletionQueue::TIMEOUT); + void* got_tag; + EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), + CompletionQueue::TIMEOUT); } else { while (!expectations_.empty()) { bool ok; - void *got_tag; - EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), CompletionQueue::GOT_EVENT); + void* got_tag; + EXPECT_EQ(cq->AsyncNext(&got_tag, &ok, deadline), + CompletionQueue::GOT_EVENT); auto it = expectations_.find(got_tag); EXPECT_TRUE(it != expectations_.end()); EXPECT_EQ(it->second, ok); @@ -116,7 +119,8 @@ class AsyncEnd2endTest : public ::testing::Test { server_address_ << "localhost:" << port; // Setup server ServerBuilder builder; - builder.AddListeningPort(server_address_.str(), grpc::InsecureServerCredentials()); + builder.AddListeningPort(server_address_.str(), + grpc::InsecureServerCredentials()); builder.RegisterAsyncService(&service_); cq_ = builder.AddCompletionQueue(); server_ = builder.BuildAndStart(); @@ -153,8 +157,8 @@ class AsyncEnd2endTest : public ::testing::Test { std::unique_ptr<ClientAsyncResponseReader<EchoResponse> > response_reader( stub_->AsyncEcho(&cli_ctx, send_request, cq_.get())); - service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, - cq_.get(), cq_.get(), tag(2)); + service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(), + cq_.get(), tag(2)); Verifier().Expect(2, true).Verify(cq_.get()); EXPECT_EQ(send_request.message(), recv_request.message()); @@ -221,10 +225,12 @@ TEST_F(AsyncEnd2endTest, AsyncNextRpc) { send_response.set_message(recv_request.message()); response_writer.Finish(send_response, Status::OK, tag(3)); - Verifier().Expect(3, true).Verify(cq_.get(), std::chrono::system_clock::time_point::max()); + Verifier().Expect(3, true).Verify( + cq_.get(), std::chrono::system_clock::time_point::max()); response_reader->Finish(&recv_response, &recv_status, tag(4)); - Verifier().Expect(4, true).Verify(cq_.get(), std::chrono::system_clock::time_point::max()); + Verifier().Expect(4, true).Verify( + cq_.get(), std::chrono::system_clock::time_point::max()); EXPECT_EQ(send_response.message(), recv_response.message()); EXPECT_TRUE(recv_status.ok()); @@ -247,8 +253,8 @@ TEST_F(AsyncEnd2endTest, SimpleClientStreaming) { std::unique_ptr<ClientAsyncWriter<EchoRequest> > cli_stream( stub_->AsyncRequestStream(&cli_ctx, &recv_response, cq_.get(), tag(1))); - service_.RequestRequestStream(&srv_ctx, &srv_stream, cq_.get(), - cq_.get(), tag(2)); + service_.RequestRequestStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(), + tag(2)); Verifier().Expect(2, true).Expect(1, true).Verify(cq_.get()); @@ -350,8 +356,8 @@ TEST_F(AsyncEnd2endTest, SimpleBidiStreaming) { std::unique_ptr<ClientAsyncReaderWriter<EchoRequest, EchoResponse> > cli_stream(stub_->AsyncBidiStream(&cli_ctx, cq_.get(), tag(1))); - service_.RequestBidiStream(&srv_ctx, &srv_stream, cq_.get(), - cq_.get(), tag(2)); + service_.RequestBidiStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(), + tag(2)); Verifier().Expect(1, true).Expect(2, true).Verify(cq_.get()); @@ -537,18 +543,17 @@ TEST_F(AsyncEnd2endTest, MetadataRpc) { std::pair<grpc::string, grpc::string> meta1("key1", "val1"); std::pair<grpc::string, grpc::string> meta2( "key2-bin", - grpc::string("\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc", - 13)); + grpc::string("\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc", 13)); std::pair<grpc::string, grpc::string> meta3("key3", "val3"); std::pair<grpc::string, grpc::string> meta6( "key4-bin", grpc::string("\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d", - 14)); + 14)); std::pair<grpc::string, grpc::string> meta5("key5", "val5"); std::pair<grpc::string, grpc::string> meta4( "key6-bin", - grpc::string("\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee", - 15)); + grpc::string( + "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee", 15)); cli_ctx.AddMetadata(meta1.first, meta1.second); cli_ctx.AddMetadata(meta2.first, meta2.second); diff --git a/test/cpp/end2end/client_crash_test.cc b/test/cpp/end2end/client_crash_test.cc index 906f124c05..1c2a5c3a36 100644 --- a/test/cpp/end2end/client_crash_test.cc +++ b/test/cpp/end2end/client_crash_test.cc @@ -77,17 +77,14 @@ class CrashTest : public ::testing::Test { addr_stream << "localhost:" << port; auto addr = addr_stream.str(); server_.reset(new SubProcess({ - g_root + "/client_crash_test_server", - "--address=" + addr, + g_root + "/client_crash_test_server", "--address=" + addr, })); GPR_ASSERT(server_); return grpc::cpp::test::util::TestService::NewStub( CreateChannel(addr, InsecureCredentials(), ChannelArguments())); } - void KillServer() { - server_.reset(); - } + void KillServer() { server_.reset(); } private: std::unique_ptr<SubProcess> server_; diff --git a/test/cpp/end2end/client_crash_test_server.cc b/test/cpp/end2end/client_crash_test_server.cc index 20808a0240..3fd8c2c2f9 100644 --- a/test/cpp/end2end/client_crash_test_server.cc +++ b/test/cpp/end2end/client_crash_test_server.cc @@ -58,7 +58,8 @@ using namespace gflags; namespace grpc { namespace testing { -class ServiceImpl GRPC_FINAL : public ::grpc::cpp::test::util::TestService::Service { +class ServiceImpl GRPC_FINAL + : public ::grpc::cpp::test::util::TestService::Service { Status BidiStream(ServerContext* context, ServerReaderWriter<EchoResponse, EchoRequest>* stream) GRPC_OVERRIDE { diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc index 22af1fde6a..350b10726f 100644 --- a/test/cpp/end2end/end2end_test.cc +++ b/test/cpp/end2end/end2end_test.cc @@ -270,7 +270,7 @@ class End2endTest : public ::testing::TestWithParam<bool> { // Setup server ServerBuilder builder; SslServerCredentialsOptions::PemKeyCertPair pkcp = {test_server1_key, - test_server1_cert}; + test_server1_cert}; SslServerCredentialsOptions ssl_opts; ssl_opts.pem_root_certs = ""; ssl_opts.pem_key_cert_pairs.push_back(pkcp); @@ -295,8 +295,8 @@ class End2endTest : public ::testing::TestWithParam<bool> { ChannelArguments args; args.SetSslTargetNameOverride("foo.test.google.fr"); args.SetString(GRPC_ARG_SECONDARY_USER_AGENT_STRING, "end2end_test"); - channel_ = CreateChannel(server_address_.str(), SslCredentials(ssl_opts), - args); + channel_ = + CreateChannel(server_address_.str(), SslCredentials(ssl_opts), args); } void ResetStub(bool use_proxy) { @@ -874,7 +874,7 @@ TEST_P(End2endTest, HugeResponse) { namespace { void ReaderThreadFunc(ClientReaderWriter<EchoRequest, EchoResponse>* stream, - gpr_event *ev) { + gpr_event* ev) { EchoResponse resp; gpr_event_set(ev, (void*)1); while (stream->Read(&resp)) { @@ -929,8 +929,8 @@ TEST_F(End2endTest, ChannelState) { EXPECT_FALSE(ok); EXPECT_EQ(GRPC_CHANNEL_IDLE, channel_->GetState(true)); - EXPECT_TRUE(channel_->WaitForStateChange( - GRPC_CHANNEL_IDLE, gpr_inf_future(GPR_CLOCK_REALTIME))); + EXPECT_TRUE(channel_->WaitForStateChange(GRPC_CHANNEL_IDLE, + gpr_inf_future(GPR_CLOCK_REALTIME))); EXPECT_EQ(GRPC_CHANNEL_CONNECTING, channel_->GetState(false)); } diff --git a/test/cpp/end2end/generic_end2end_test.cc b/test/cpp/end2end/generic_end2end_test.cc index b53c32144b..3120cec938 100644 --- a/test/cpp/end2end/generic_end2end_test.cc +++ b/test/cpp/end2end/generic_end2end_test.cc @@ -68,7 +68,7 @@ namespace grpc { namespace testing { namespace { -void* tag(int i) { return (void*)(gpr_intptr) i; } +void* tag(int i) { return (void*)(gpr_intptr)i; } void verify_ok(CompletionQueue* cq, int i, bool expect_ok) { bool ok; @@ -107,7 +107,8 @@ class GenericEnd2endTest : public ::testing::Test { server_address_ << server_host_ << ":" << port; // Setup server ServerBuilder builder; - builder.AddListeningPort(server_address_.str(), InsecureServerCredentials()); + builder.AddListeningPort(server_address_.str(), + InsecureServerCredentials()); builder.RegisterAsyncGenericService(&generic_service_); srv_cq_ = builder.AddCompletionQueue(); server_ = builder.BuildAndStart(); diff --git a/test/cpp/end2end/server_crash_test_client.cc b/test/cpp/end2end/server_crash_test_client.cc index 497ccb4cb2..1da4f05c8d 100644 --- a/test/cpp/end2end/server_crash_test_client.cc +++ b/test/cpp/end2end/server_crash_test_client.cc @@ -60,8 +60,8 @@ using namespace gflags; int main(int argc, char** argv) { ParseCommandLineFlags(&argc, &argv, true); - auto stub = grpc::cpp::test::util::TestService::NewStub( - grpc::CreateChannel(FLAGS_address, grpc::InsecureCredentials(), grpc::ChannelArguments())); + auto stub = grpc::cpp::test::util::TestService::NewStub(grpc::CreateChannel( + FLAGS_address, grpc::InsecureCredentials(), grpc::ChannelArguments())); EchoRequest request; EchoResponse response; diff --git a/test/cpp/end2end/zookeeper_test.cc b/test/cpp/end2end/zookeeper_test.cc index a48c497d9a..f5eba66cb2 100644 --- a/test/cpp/end2end/zookeeper_test.cc +++ b/test/cpp/end2end/zookeeper_test.cc @@ -89,8 +89,7 @@ class ZookeeperTest : public ::testing::Test { RegisterService("/test/1", value); // Registers service instance /test/2 in zookeeper - value = - "{\"host\":\"localhost\",\"port\":\"" + to_string(port2) + "\"}"; + value = "{\"host\":\"localhost\",\"port\":\"" + to_string(port2) + "\"}"; RegisterService("/test/2", value); } @@ -196,7 +195,7 @@ TEST_F(ZookeeperTest, ZookeeperStateChangeTwoRpc) { EXPECT_TRUE(s1.ok()); // Zookeeper state changes - gpr_log(GPR_DEBUG, "Zookeeper state change"); + gpr_log(GPR_DEBUG, "Zookeeper state change"); ChangeZookeeperState(); // Waits for re-resolving addresses // TODO(ctiller): RPC will probably fail if not waiting diff --git a/test/cpp/interop/client_helper.h b/test/cpp/interop/client_helper.h index 1c7036d25d..28fca3266c 100644 --- a/test/cpp/interop/client_helper.h +++ b/test/cpp/interop/client_helper.h @@ -67,7 +67,6 @@ class InteropClientContextInspector { const ::grpc::ClientContext& context_; }; - } // namespace testing } // namespace grpc diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index 27bb1d4725..ddf91aa5eb 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -134,13 +134,12 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, grpc::string(kLargeResponseSize, '\0')); break; case PayloadType::UNCOMPRESSABLE: { - std::ifstream rnd_file(kRandomFile); - GPR_ASSERT(rnd_file.good()); - for (int i = 0; i < kLargeResponseSize; i++) { - GPR_ASSERT(response->payload().body()[i] == (char)rnd_file.get()); - } + std::ifstream rnd_file(kRandomFile); + GPR_ASSERT(rnd_file.good()); + for (int i = 0; i < kLargeResponseSize; i++) { + GPR_ASSERT(response->payload().body()[i] == (char)rnd_file.get()); } - break; + } break; default: GPR_ASSERT(false); } @@ -262,8 +261,8 @@ void InteropClient::DoLargeCompressedUnary() { for (const auto compression_type : compression_types) { char* log_suffix; gpr_asprintf(&log_suffix, "(compression=%s; payload=%s)", - CompressionType_Name(compression_type).c_str(), - PayloadType_Name(payload_type).c_str()); + CompressionType_Name(compression_type).c_str(), + PayloadType_Name(payload_type).c_str()); gpr_log(GPR_INFO, "Sending a large compressed unary rpc %s.", log_suffix); SimpleRequest request; @@ -342,8 +341,8 @@ void InteropClient::DoResponseCompressedStreaming() { char* log_suffix; gpr_asprintf(&log_suffix, "(compression=%s; payload=%s)", - CompressionType_Name(compression_type).c_str(), - PayloadType_Name(payload_type).c_str()); + CompressionType_Name(compression_type).c_str(), + PayloadType_Name(payload_type).c_str()); gpr_log(GPR_INFO, "Receiving response steaming rpc %s.", log_suffix); @@ -553,7 +552,7 @@ void InteropClient::DoStatusWithMessage() { ClientContext context; SimpleRequest request; SimpleResponse response; - EchoStatus *requested_status = request.mutable_response_status(); + EchoStatus* requested_status = request.mutable_response_status(); requested_status->set_code(grpc::StatusCode::UNKNOWN); grpc::string test_msg = "This is a test message"; requested_status->set_message(test_msg); diff --git a/test/cpp/qps/perf_db_client.cc b/test/cpp/qps/perf_db_client.cc index 08d20f0b8d..98efd8c3e3 100644 --- a/test/cpp/qps/perf_db_client.cc +++ b/test/cpp/qps/perf_db_client.cc @@ -44,9 +44,7 @@ void PerfDbClient::setConfigs(const ClientConfig& client_config, } // sets the QPS -void PerfDbClient::setQps(double qps) { - qps_ = qps; -} +void PerfDbClient::setQps(double qps) { qps_ = qps; } // sets the QPS per core void PerfDbClient::setQpsPerCore(double qps_per_core) { @@ -54,10 +52,8 @@ void PerfDbClient::setQpsPerCore(double qps_per_core) { } // sets the 50th, 90th, 95th, 99th and 99.9th percentile latency -void PerfDbClient::setLatencies(double perc_lat_50, - double perc_lat_90, - double perc_lat_95, - double perc_lat_99, +void PerfDbClient::setLatencies(double perc_lat_50, double perc_lat_90, + double perc_lat_95, double perc_lat_99, double perc_lat_99_point_9) { perc_lat_50_ = perc_lat_50; perc_lat_90_ = perc_lat_90; @@ -68,7 +64,8 @@ void PerfDbClient::setLatencies(double perc_lat_50, // sets the server and client, user and system times void PerfDbClient::setTimes(double server_system_time, double server_user_time, - double client_system_time, double client_user_time) { + double client_system_time, + double client_user_time) { server_system_time_ = server_system_time; server_user_time_ = server_user_time; client_system_time_ = client_system_time; diff --git a/test/cpp/qps/perf_db_client.h b/test/cpp/qps/perf_db_client.h index ce7a88bbff..7a9d86d3a6 100644 --- a/test/cpp/qps/perf_db_client.h +++ b/test/cpp/qps/perf_db_client.h @@ -82,9 +82,8 @@ class PerfDbClient { void setQpsPerCore(double qps_per_core); // sets the 50th, 90th, 95th, 99th and 99.9th percentile latency - void setLatencies(double perc_lat_50, double perc_lat_90, - double perc_lat_95, double perc_lat_99, - double perc_lat_99_point_9); + void setLatencies(double perc_lat_50, double perc_lat_90, double perc_lat_95, + double perc_lat_99, double perc_lat_99_point_9); // sets the server and client, user and system times void setTimes(double server_system_time, double server_user_time, diff --git a/test/cpp/qps/qps_interarrival_test.cc b/test/cpp/qps/qps_interarrival_test.cc index cecd1be03f..1eed956a1c 100644 --- a/test/cpp/qps/qps_interarrival_test.cc +++ b/test/cpp/qps/qps_interarrival_test.cc @@ -42,7 +42,7 @@ using grpc::testing::RandomDist; using grpc::testing::InterarrivalTimer; -void RunTest(RandomDist&& r, int threads, std::string title) { +void RunTest(RandomDist &&r, int threads, std::string title) { InterarrivalTimer timer; timer.init(r, threads); gpr_histogram *h(gpr_histogram_create(0.01, 60e9)); diff --git a/test/cpp/qps/qps_openloop_test.cc b/test/cpp/qps/qps_openloop_test.cc index 96a9b4504c..9a7313f6e8 100644 --- a/test/cpp/qps/qps_openloop_test.cc +++ b/test/cpp/qps/qps_openloop_test.cc @@ -59,8 +59,8 @@ static void RunQPS() { client_config.set_async_client_threads(8); client_config.set_rpc_type(UNARY); client_config.set_load_type(POISSON); - client_config.mutable_load_params()-> - mutable_poisson()->set_offered_load(1000.0); + client_config.mutable_load_params()->mutable_poisson()->set_offered_load( + 1000.0); ServerConfig server_config; server_config.set_server_type(ASYNC_SERVER); diff --git a/test/cpp/util/benchmark_config.cc b/test/cpp/util/benchmark_config.cc index 91fbbf9677..3c38221b4c 100644 --- a/test/cpp/util/benchmark_config.cc +++ b/test/cpp/util/benchmark_config.cc @@ -37,7 +37,8 @@ DEFINE_bool(enable_log_reporter, true, "Enable reporting of benchmark results through GprLog"); -DEFINE_bool(report_metrics_db, false, "True if metrics to be reported to performance database"); +DEFINE_bool(report_metrics_db, false, + "True if metrics to be reported to performance database"); DEFINE_string(hashed_id, "", "Hash of the user id"); @@ -45,7 +46,8 @@ DEFINE_string(test_name, "", "Name of the test being executed"); DEFINE_string(sys_info, "", "System information"); -DEFINE_string(server_address, "localhost:50052", "Address of the performance database server"); +DEFINE_string(server_address, "localhost:50052", + "Address of the performance database server"); DEFINE_string(tag, "", "Optional tag for the test"); @@ -69,10 +71,10 @@ static std::shared_ptr<Reporter> InitBenchmarkReporters() { composite_reporter->add( std::unique_ptr<Reporter>(new GprLogReporter("LogReporter"))); } - if(FLAGS_report_metrics_db) { - composite_reporter->add( - std::unique_ptr<Reporter>(new PerfDbReporter("PerfDbReporter", FLAGS_hashed_id, FLAGS_test_name, - FLAGS_sys_info, FLAGS_server_address, FLAGS_tag))); + if (FLAGS_report_metrics_db) { + composite_reporter->add(std::unique_ptr<Reporter>( + new PerfDbReporter("PerfDbReporter", FLAGS_hashed_id, FLAGS_test_name, + FLAGS_sys_info, FLAGS_server_address, FLAGS_tag))); } return std::shared_ptr<Reporter>(composite_reporter); diff --git a/test/cpp/util/byte_buffer_test.cc b/test/cpp/util/byte_buffer_test.cc index 13eb49730a..5195575f99 100644 --- a/test/cpp/util/byte_buffer_test.cc +++ b/test/cpp/util/byte_buffer_test.cc @@ -46,8 +46,7 @@ namespace { const char* kContent1 = "hello xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; const char* kContent2 = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy world"; -class ByteBufferTest : public ::testing::Test { -}; +class ByteBufferTest : public ::testing::Test {}; TEST_F(ByteBufferTest, CreateFromSingleSlice) { gpr_slice hello = gpr_slice_from_copied_string(kContent1); diff --git a/test/cpp/util/cli_call.cc b/test/cpp/util/cli_call.cc index 83a7a1744a..ac88910a01 100644 --- a/test/cpp/util/cli_call.cc +++ b/test/cpp/util/cli_call.cc @@ -49,7 +49,7 @@ namespace grpc { namespace testing { namespace { -void* tag(int i) { return (void*)(gpr_intptr) i; } +void* tag(int i) { return (void*)(gpr_intptr)i; } } // namespace Status CliCall::Call(std::shared_ptr<grpc::ChannelInterface> channel, -- GitLab From 9928d39f4d3ac51775182701b2296caa89052aaa Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Tue, 18 Aug 2015 09:40:24 -0700 Subject: [PATCH 064/178] Add some reserved checks that need to be present --- src/core/surface/call.c | 4 +++- src/core/surface/server.c | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/surface/call.c b/src/core/surface/call.c index f3012d0c59..478001ac18 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -1572,7 +1572,8 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, const grpc_op *op; grpc_ioreq *req; void (*finish_func)(grpc_call *, int, void *) = finish_batch; - GPR_ASSERT(!reserved); + + if (reserved != NULL) return GRPC_CALL_ERROR; GRPC_CALL_LOG_BATCH(GPR_INFO, call, ops, nops, tag); @@ -1587,6 +1588,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, /* rewrite batch ops into ioreq ops */ for (in = 0, out = 0; in < nops; in++) { op = &ops[in]; + if (op->reserved != NULL) return GRPC_CALL_ERROR; switch (op->op) { case GRPC_OP_SEND_INITIAL_METADATA: /* Flag validation: currently allow no flags */ diff --git a/src/core/surface/server.c b/src/core/surface/server.c index f883275951..e3e86d188a 100644 --- a/src/core/surface/server.c +++ b/src/core/surface/server.c @@ -1134,6 +1134,7 @@ grpc_call_error grpc_server_request_call( return GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE; } grpc_cq_begin_op(cq_for_notification); + details->reserved = NULL; rc->type = BATCH_CALL; rc->server = server; rc->tag = tag; -- GitLab From 42758992973025e99f9916bb973471a87121daa1 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Tue, 18 Aug 2015 10:34:32 -0700 Subject: [PATCH 065/178] Sprinkle reserved = NULL around --- src/csharp/ext/grpc_csharp_ext.c | 26 +++++++++++++++++++ src/php/ext/grpc/call.c | 1 + src/python/grpcio/grpc/_adapter/_c/utility.c | 1 + src/ruby/ext/grpc/rb_call.c | 1 + test/core/end2end/fixtures/proxy.c | 8 ++++++ test/core/end2end/tests/default_host.c | 7 +++++ ...est_response_with_payload_and_call_creds.c | 6 +++++ 7 files changed, 50 insertions(+) diff --git a/src/csharp/ext/grpc_csharp_ext.c b/src/csharp/ext/grpc_csharp_ext.c index bf2bbd873b..fc9470f93f 100644 --- a/src/csharp/ext/grpc_csharp_ext.c +++ b/src/csharp/ext/grpc_csharp_ext.c @@ -510,22 +510,27 @@ grpcsharp_call_start_unary(grpc_call *call, grpcsharp_batch_context *ctx, ops[0].data.send_initial_metadata.metadata = ctx->send_initial_metadata.metadata; ops[0].flags = 0; + ops[0].reserved = NULL; ops[1].op = GRPC_OP_SEND_MESSAGE; ctx->send_message = string_to_byte_buffer(send_buffer, send_buffer_len); ops[1].data.send_message = ctx->send_message; ops[1].flags = write_flags; + ops[1].reserved = NULL; ops[2].op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; ops[2].flags = 0; + ops[2].reserved = NULL; ops[3].op = GRPC_OP_RECV_INITIAL_METADATA; ops[3].data.recv_initial_metadata = &(ctx->recv_initial_metadata); ops[3].flags = 0; + ops[3].reserved = NULL; ops[4].op = GRPC_OP_RECV_MESSAGE; ops[4].data.recv_message = &(ctx->recv_message); ops[4].flags = 0; + ops[4].reserved = NULL; ops[5].op = GRPC_OP_RECV_STATUS_ON_CLIENT; ops[5].data.recv_status_on_client.trailing_metadata = @@ -538,6 +543,7 @@ grpcsharp_call_start_unary(grpc_call *call, grpcsharp_batch_context *ctx, ops[5].data.recv_status_on_client.status_details_capacity = &(ctx->recv_status_on_client.status_details_capacity); ops[5].flags = 0; + ops[5].reserved = NULL; return grpc_call_start_batch(call, ops, sizeof(ops) / sizeof(ops[0]), ctx, NULL); @@ -556,14 +562,17 @@ grpcsharp_call_start_client_streaming(grpc_call *call, ops[0].data.send_initial_metadata.metadata = ctx->send_initial_metadata.metadata; ops[0].flags = 0; + ops[0].reserved = NULL; ops[1].op = GRPC_OP_RECV_INITIAL_METADATA; ops[1].data.recv_initial_metadata = &(ctx->recv_initial_metadata); ops[1].flags = 0; + ops[1].reserved = NULL; ops[2].op = GRPC_OP_RECV_MESSAGE; ops[2].data.recv_message = &(ctx->recv_message); ops[2].flags = 0; + ops[2].reserved = NULL; ops[3].op = GRPC_OP_RECV_STATUS_ON_CLIENT; ops[3].data.recv_status_on_client.trailing_metadata = @@ -576,6 +585,7 @@ grpcsharp_call_start_client_streaming(grpc_call *call, ops[3].data.recv_status_on_client.status_details_capacity = &(ctx->recv_status_on_client.status_details_capacity); ops[3].flags = 0; + ops[3].reserved = NULL; return grpc_call_start_batch(call, ops, sizeof(ops) / sizeof(ops[0]), ctx, NULL); @@ -593,18 +603,22 @@ GPR_EXPORT grpc_call_error GPR_CALLTYPE grpcsharp_call_start_server_streaming( ops[0].data.send_initial_metadata.metadata = ctx->send_initial_metadata.metadata; ops[0].flags = 0; + ops[0].reserved = NULL; ops[1].op = GRPC_OP_SEND_MESSAGE; ctx->send_message = string_to_byte_buffer(send_buffer, send_buffer_len); ops[1].data.send_message = ctx->send_message; ops[1].flags = write_flags; + ops[1].reserved = NULL; ops[2].op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; ops[2].flags = 0; + ops[2].reserved = NULL; ops[3].op = GRPC_OP_RECV_INITIAL_METADATA; ops[3].data.recv_initial_metadata = &(ctx->recv_initial_metadata); ops[3].flags = 0; + ops[3].reserved = NULL; ops[4].op = GRPC_OP_RECV_STATUS_ON_CLIENT; ops[4].data.recv_status_on_client.trailing_metadata = @@ -617,6 +631,7 @@ GPR_EXPORT grpc_call_error GPR_CALLTYPE grpcsharp_call_start_server_streaming( ops[4].data.recv_status_on_client.status_details_capacity = &(ctx->recv_status_on_client.status_details_capacity); ops[4].flags = 0; + ops[4].reserved = NULL; return grpc_call_start_batch(call, ops, sizeof(ops) / sizeof(ops[0]), ctx, NULL); @@ -635,10 +650,12 @@ grpcsharp_call_start_duplex_streaming(grpc_call *call, ops[0].data.send_initial_metadata.metadata = ctx->send_initial_metadata.metadata; ops[0].flags = 0; + ops[0].reserved = NULL; ops[1].op = GRPC_OP_RECV_INITIAL_METADATA; ops[1].data.recv_initial_metadata = &(ctx->recv_initial_metadata); ops[1].flags = 0; + ops[1].reserved = NULL; ops[2].op = GRPC_OP_RECV_STATUS_ON_CLIENT; ops[2].data.recv_status_on_client.trailing_metadata = @@ -651,6 +668,7 @@ grpcsharp_call_start_duplex_streaming(grpc_call *call, ops[2].data.recv_status_on_client.status_details_capacity = &(ctx->recv_status_on_client.status_details_capacity); ops[2].flags = 0; + ops[2].reserved = NULL; return grpc_call_start_batch(call, ops, sizeof(ops) / sizeof(ops[0]), ctx, NULL); @@ -668,10 +686,12 @@ grpcsharp_call_send_message(grpc_call *call, grpcsharp_batch_context *ctx, ctx->send_message = string_to_byte_buffer(send_buffer, send_buffer_len); ops[0].data.send_message = ctx->send_message; ops[0].flags = write_flags; + ops[0].reserved = NULL; ops[1].op = GRPC_OP_SEND_INITIAL_METADATA; ops[1].data.send_initial_metadata.count = 0; ops[1].data.send_initial_metadata.metadata = NULL; ops[1].flags = 0; + ops[1].reserved = NULL; return grpc_call_start_batch(call, ops, nops, ctx, NULL); } @@ -683,6 +703,7 @@ grpcsharp_call_send_close_from_client(grpc_call *call, grpc_op ops[1]; ops[0].op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; ops[0].flags = 0; + ops[0].reserved = NULL; return grpc_call_start_batch(call, ops, sizeof(ops) / sizeof(ops[0]), ctx, NULL); @@ -706,10 +727,12 @@ GPR_EXPORT grpc_call_error GPR_CALLTYPE grpcsharp_call_send_status_from_server( ops[0].data.send_status_from_server.trailing_metadata = ctx->send_status_from_server.trailing_metadata.metadata; ops[0].flags = 0; + ops[0].reserved = NULL; ops[1].op = GRPC_OP_SEND_INITIAL_METADATA; ops[1].data.send_initial_metadata.count = 0; ops[1].data.send_initial_metadata.metadata = NULL; ops[1].flags = 0; + ops[1].reserved = NULL; return grpc_call_start_batch(call, ops, nops, ctx, NULL); } @@ -721,6 +744,7 @@ grpcsharp_call_recv_message(grpc_call *call, grpcsharp_batch_context *ctx) { ops[0].op = GRPC_OP_RECV_MESSAGE; ops[0].data.recv_message = &(ctx->recv_message); ops[0].flags = 0; + ops[0].reserved = NULL; return grpc_call_start_batch(call, ops, sizeof(ops) / sizeof(ops[0]), ctx, NULL); } @@ -733,6 +757,7 @@ grpcsharp_call_start_serverside(grpc_call *call, grpcsharp_batch_context *ctx) { ops[0].data.recv_close_on_server.cancelled = (&ctx->recv_close_on_server_cancelled); ops[0].flags = 0; + ops[0].reserved = NULL; return grpc_call_start_batch(call, ops, sizeof(ops) / sizeof(ops[0]), ctx, NULL); @@ -751,6 +776,7 @@ grpcsharp_call_send_initial_metadata(grpc_call *call, ops[0].data.send_initial_metadata.metadata = ctx->send_initial_metadata.metadata; ops[0].flags = 0; + ops[0].reserved = NULL; return grpc_call_start_batch(call, ops, sizeof(ops) / sizeof(ops[0]), ctx, NULL); diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c index 1cf766c312..4e40dc43ce 100644 --- a/src/php/ext/grpc/call.c +++ b/src/php/ext/grpc/call.c @@ -398,6 +398,7 @@ PHP_METHOD(Call, startBatch) { } ops[op_num].op = (grpc_op_type)index; ops[op_num].flags = 0; + ops[op_num].reserved = NULL; op_num++; } error = grpc_call_start_batch(call->wrapped, ops, op_num, call->wrapped, diff --git a/src/python/grpcio/grpc/_adapter/_c/utility.c b/src/python/grpcio/grpc/_adapter/_c/utility.c index 2eea0e18ef..590f7e013a 100644 --- a/src/python/grpcio/grpc/_adapter/_c/utility.c +++ b/src/python/grpcio/grpc/_adapter/_c/utility.c @@ -184,6 +184,7 @@ int pygrpc_produce_op(PyObject *op, grpc_op *result) { return 0; } c_op.op = type; + c_op.reserved = NULL; c_op.flags = PyInt_AsLong(PyTuple_GET_ITEM(op, WRITE_FLAGS_INDEX)); if (PyErr_Occurred()) { return 0; diff --git a/src/ruby/ext/grpc/rb_call.c b/src/ruby/ext/grpc/rb_call.c index b09d4e2cd9..36c6818a7e 100644 --- a/src/ruby/ext/grpc/rb_call.c +++ b/src/ruby/ext/grpc/rb_call.c @@ -526,6 +526,7 @@ static void grpc_run_batch_stack_fill_ops(run_batch_stack *st, VALUE ops_hash) { }; st->ops[st->op_num].op = (grpc_op_type)NUM2INT(this_op); st->ops[st->op_num].flags = 0; + st->ops[st->op_num].reserved = NULL; st->op_num++; } } diff --git a/test/core/end2end/fixtures/proxy.c b/test/core/end2end/fixtures/proxy.c index 798d4e94d4..c5939595ae 100644 --- a/test/core/end2end/fixtures/proxy.c +++ b/test/core/end2end/fixtures/proxy.c @@ -174,6 +174,7 @@ static void on_p2s_recv_initial_metadata(void *arg, int success) { if (!pc->proxy->shutdown) { op.op = GRPC_OP_SEND_INITIAL_METADATA; op.flags = 0; + op.reserved = NULL; op.data.send_initial_metadata.count = pc->p2s_initial_metadata.count; op.data.send_initial_metadata.metadata = pc->p2s_initial_metadata.metadata; refpc(pc, "on_c2p_sent_initial_metadata"); @@ -202,6 +203,7 @@ static void on_p2s_sent_message(void *arg, int success) { if (!pc->proxy->shutdown && success) { op.op = GRPC_OP_RECV_MESSAGE; op.flags = 0; + op.reserved = NULL; op.data.recv_message = &pc->c2p_msg; refpc(pc, "on_c2p_recv_msg"); err = grpc_call_start_batch(pc->c2p, &op, 1, @@ -226,6 +228,7 @@ static void on_c2p_recv_msg(void *arg, int success) { if (pc->c2p_msg != NULL) { op.op = GRPC_OP_SEND_MESSAGE; op.flags = 0; + op.reserved = NULL; op.data.send_message = pc->c2p_msg; refpc(pc, "on_p2s_sent_message"); err = grpc_call_start_batch(pc->p2s, &op, 1, @@ -234,6 +237,7 @@ static void on_c2p_recv_msg(void *arg, int success) { } else { op.op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; op.flags = 0; + op.reserved = NULL; refpc(pc, "on_p2s_sent_close"); err = grpc_call_start_batch(pc->p2s, &op, 1, new_closure(on_p2s_sent_close, pc), NULL); @@ -255,6 +259,7 @@ static void on_c2p_sent_message(void *arg, int success) { if (!pc->proxy->shutdown && success) { op.op = GRPC_OP_RECV_MESSAGE; op.flags = 0; + op.reserved = NULL; op.data.recv_message = &pc->p2s_msg; refpc(pc, "on_p2s_recv_msg"); err = grpc_call_start_batch(pc->p2s, &op, 1, @@ -273,6 +278,7 @@ static void on_p2s_recv_msg(void *arg, int success) { if (!pc->proxy->shutdown && success && pc->p2s_msg) { op.op = GRPC_OP_SEND_MESSAGE; op.flags = 0; + op.reserved = NULL; op.data.send_message = pc->p2s_msg; refpc(pc, "on_c2p_sent_message"); err = grpc_call_start_batch(pc->c2p, &op, 1, @@ -296,6 +302,7 @@ static void on_p2s_status(void *arg, int success) { GPR_ASSERT(success); op.op = GRPC_OP_SEND_STATUS_FROM_SERVER; op.flags = 0; + op.reserved = NULL; op.data.send_status_from_server.trailing_metadata_count = pc->p2s_trailing_metadata.count; op.data.send_status_from_server.trailing_metadata = @@ -335,6 +342,7 @@ static void on_new_call(void *arg, int success) { gpr_ref_init(&pc->refs, 1); op.flags = 0; + op.reserved = NULL; op.op = GRPC_OP_RECV_INITIAL_METADATA; op.data.recv_initial_metadata = &pc->p2s_initial_metadata; diff --git a/test/core/end2end/tests/default_host.c b/test/core/end2end/tests/default_host.c index 5cbf26b94f..344ab48d04 100644 --- a/test/core/end2end/tests/default_host.c +++ b/test/core/end2end/tests/default_host.c @@ -136,13 +136,16 @@ static void simple_request_body(grpc_end2end_test_fixture f) { op->op = GRPC_OP_SEND_INITIAL_METADATA; op->data.send_initial_metadata.count = 0; op->flags = 0; + op->reserved = NULL; op++; op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; op->flags = 0; + op->reserved = NULL; op++; op->op = GRPC_OP_RECV_INITIAL_METADATA; op->data.recv_initial_metadata = &initial_metadata_recv; op->flags = 0; + op->reserved = NULL; op++; op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv; @@ -150,6 +153,7 @@ static void simple_request_body(grpc_end2end_test_fixture f) { op->data.recv_status_on_client.status_details = &details; op->data.recv_status_on_client.status_details_capacity = &details_capacity; op->flags = 0; + op->reserved = NULL; op++; error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(error == GRPC_CALL_OK); @@ -174,16 +178,19 @@ static void simple_request_body(grpc_end2end_test_fixture f) { op->op = GRPC_OP_SEND_INITIAL_METADATA; op->data.send_initial_metadata.count = 0; op->flags = 0; + op->reserved = NULL; op++; op->op = GRPC_OP_SEND_STATUS_FROM_SERVER; op->data.send_status_from_server.trailing_metadata_count = 0; op->data.send_status_from_server.status = GRPC_STATUS_UNIMPLEMENTED; op->data.send_status_from_server.status_details = "xyz"; op->flags = 0; + op->reserved = NULL; op++; op->op = GRPC_OP_RECV_CLOSE_ON_SERVER; op->data.recv_close_on_server.cancelled = &was_cancelled; op->flags = 0; + op->reserved = NULL; op++; error = grpc_call_start_batch(s, ops, op - ops, tag(102), NULL); GPR_ASSERT(error == GRPC_CALL_OK); diff --git a/test/core/end2end/tests/request_response_with_payload_and_call_creds.c b/test/core/end2end/tests/request_response_with_payload_and_call_creds.c index 8e0bc4e2ae..198b4058b3 100644 --- a/test/core/end2end/tests/request_response_with_payload_and_call_creds.c +++ b/test/core/end2end/tests/request_response_with_payload_and_call_creds.c @@ -439,25 +439,31 @@ static void test_request_with_server_rejecting_client_creds( op->data.recv_status_on_client.status_details = &details; op->data.recv_status_on_client.status_details_capacity = &details_capacity; op->flags = 0; + op->reserved = NULL; op++; op->op = GRPC_OP_SEND_INITIAL_METADATA; op->data.send_initial_metadata.count = 0; op->flags = 0; + op->reserved = NULL; op++; op->op = GRPC_OP_SEND_MESSAGE; op->data.send_message = request_payload; op->flags = 0; + op->reserved = NULL; op++; op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; op->flags = 0; + op->reserved = NULL; op++; op->op = GRPC_OP_RECV_INITIAL_METADATA; op->data.recv_initial_metadata = &initial_metadata_recv; op->flags = 0; + op->reserved = NULL; op++; op->op = GRPC_OP_RECV_MESSAGE; op->data.recv_message = &response_payload_recv; op->flags = 0; + op->reserved = NULL; op++; error = grpc_call_start_batch(c, ops, op - ops, tag(1), NULL); GPR_ASSERT(error == GRPC_CALL_OK); -- GitLab From d3176c489553ca74bf8a2889e9c4acd9bdba2dac Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Tue, 18 Aug 2015 10:46:37 -0700 Subject: [PATCH 066/178] update reconnection interop spec --- doc/connection-backoff-interop-test-description.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/connection-backoff-interop-test-description.md b/doc/connection-backoff-interop-test-description.md index 0f00c86dca..64405431d2 100644 --- a/doc/connection-backoff-interop-test-description.md +++ b/doc/connection-backoff-interop-test-description.md @@ -31,9 +31,9 @@ Clients should accept these arguments: * --server_retry_port=PORT * The server port to connect to for testing backoffs. For example, "8081" -The client must connect to the control port without TLS. The client should -either assert on the server returned backoff status or check the returned -backoffs on its own. +The client must connect to the control port without TLS. The client must connect +to the retry port with TLS. The client should either assert on the server +returned backoff status or check the returned backoffs on its own. Procedure of client: -- GitLab From 2a6427ffdbdd8620e71b9b471b7334d3456d247f Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Tue, 18 Aug 2015 11:11:40 -0700 Subject: [PATCH 067/178] removed foreach loops for gcc 4.4 --- test/cpp/interop/interop_client.cc | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index ddf91aa5eb..4e5ac858d9 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -41,6 +41,7 @@ #include <grpc/grpc.h> #include <grpc/support/log.h> #include <grpc/support/string_util.h> +#include <grpc/support/useful.h> #include <grpc++/channel_interface.h> #include <grpc++/client_context.h> #include <grpc++/credentials.h> @@ -257,18 +258,18 @@ void InteropClient::DoLargeUnary() { void InteropClient::DoLargeCompressedUnary() { const CompressionType compression_types[] = {NONE, GZIP, DEFLATE}; const PayloadType payload_types[] = {COMPRESSABLE, UNCOMPRESSABLE, RANDOM}; - for (const auto payload_type : payload_types) { - for (const auto compression_type : compression_types) { + for (size_t i = 0; i < GPR_ARRAY_SIZE(payload_types); i++) { + for (size_t j = 0; j < GPR_ARRAY_SIZE(compression_types); j++) { char* log_suffix; gpr_asprintf(&log_suffix, "(compression=%s; payload=%s)", - CompressionType_Name(compression_type).c_str(), - PayloadType_Name(payload_type).c_str()); + CompressionType_Name(compression_types[j]).c_str(), + PayloadType_Name(payload_types[i]).c_str()); gpr_log(GPR_INFO, "Sending a large compressed unary rpc %s.", log_suffix); SimpleRequest request; SimpleResponse response; - request.set_response_type(payload_type); - request.set_response_compression(compression_type); + request.set_response_type(payload_types[i]); + request.set_response_compression(compression_types[j]); PerformLargeUnary(&request, &response); gpr_log(GPR_INFO, "Large compressed unary done %s.", log_suffix); gpr_free(log_suffix); @@ -333,21 +334,21 @@ void InteropClient::DoResponseCompressedStreaming() { const CompressionType compression_types[] = {NONE, GZIP, DEFLATE}; const PayloadType payload_types[] = {COMPRESSABLE, UNCOMPRESSABLE, RANDOM}; - for (const auto payload_type : payload_types) { - for (const auto compression_type : compression_types) { + for (size_t i = 0; i < GPR_ARRAY_SIZE(payload_types); i++) { + for (size_t j = 0; j < GPR_ARRAY_SIZE(compression_types); j++) { ClientContext context; InteropClientContextInspector inspector(context); StreamingOutputCallRequest request; char* log_suffix; gpr_asprintf(&log_suffix, "(compression=%s; payload=%s)", - CompressionType_Name(compression_type).c_str(), - PayloadType_Name(payload_type).c_str()); + CompressionType_Name(compression_types[j]).c_str(), + PayloadType_Name(payload_types[i]).c_str()); gpr_log(GPR_INFO, "Receiving response steaming rpc %s.", log_suffix); - request.set_response_type(payload_type); - request.set_response_compression(compression_type); + request.set_response_type(payload_types[i]); + request.set_response_compression(compression_types[j]); for (unsigned int i = 0; i < response_stream_sizes.size(); ++i) { ResponseParameters* response_parameter = -- GitLab From 6c1fdc6c89d31950effce2b90618c857f02a9f69 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Tue, 18 Aug 2015 11:57:42 -0700 Subject: [PATCH 068/178] Only run built binaries --- tools/run_tests/run_tests.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 1a6752c784..eaba699ddf 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -143,7 +143,10 @@ class CLanguage(object): binary = 'vsprojects/test_bin/%s.exe' % (target['name']) else: binary = 'bins/%s/%s' % (config.build_config, target['name']) - out.append(config.job_spec([binary], [binary])) + if os.path.isfile(binary): + out.append(config.job_spec([binary], [binary])) + else: + print "\nWARNING: binary not found, skipping", binary return sorted(out) def make_targets(self): @@ -482,12 +485,6 @@ build_steps.extend(set( for cfg in build_configs for l in languages for cmdline in l.build_steps())) -one_run = set( - spec - for config in run_configs - for language in languages - for spec in language.test_specs(config, args.travis) - if re.search(args.regex, spec.shortname)) runs_per_test = args.runs_per_test forever = args.forever @@ -583,6 +580,12 @@ def _build_and_run( _start_port_server(port_server_port) try: infinite_runs = runs_per_test == 0 + one_run = set( + spec + for config in run_configs + for language in languages + for spec in language.test_specs(config, args.travis) + if re.search(args.regex, spec.shortname)) # When running on travis, we want out test runs to be as similar as possible # for reproducibility purposes. if travis: -- GitLab From 2773d5f2f3e35048ad8e354f2a27bd00de2c5843 Mon Sep 17 00:00:00 2001 From: Hongwei Wang <redway180@gmail.com> Date: Tue, 18 Aug 2015 14:43:32 -0500 Subject: [PATCH 069/178] Remove grpc_unregister_all_plugins in grpc.h --- include/grpc/grpc.h | 7 ------- 1 file changed, 7 deletions(-) diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h index 2220e8f039..7869e9272e 100644 --- a/include/grpc/grpc.h +++ b/include/grpc/grpc.h @@ -386,13 +386,6 @@ typedef struct grpc_op { the reverse order they were initialized. */ void grpc_register_plugin(void (*init)(void), void (*destroy)(void)); -/** Frees the memory used by all the plugin information. - - While grpc_init and grpc_shutdown can be called multiple times, the plugins - won't be unregistered and their memory cleaned up unless you call that - function. Using atexit(grpc_unregister_all_plugins) is a valid method. */ -void grpc_unregister_all_plugins(); - /* Propagation bits: this can be bitwise or-ed to form propagation_mask for * grpc_call */ /** Propagate deadline */ -- GitLab From e50e5cbde2f77166b9f557938252de6792557f84 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Tue, 18 Aug 2015 12:44:57 -0700 Subject: [PATCH 070/178] Add a timeout to shutdown to forcefully end calls --- Makefile | 45 ++++++- build.json | 20 +++ include/grpc++/server.h | 10 +- src/cpp/server/server.cc | 31 ++++- test/cpp/end2end/shutdown_test.cc | 159 +++++++++++++++++++++++ tools/run_tests/sources_and_headers.json | 17 +++ tools/run_tests/tests.json | 17 +++ vsprojects/Grpc.mak | 10 +- 8 files changed, 305 insertions(+), 4 deletions(-) create mode 100644 test/cpp/end2end/shutdown_test.cc diff --git a/Makefile b/Makefile index f3944eccbb..31628b4412 100644 --- a/Makefile +++ b/Makefile @@ -889,6 +889,7 @@ reconnect_interop_server: $(BINDIR)/$(CONFIG)/reconnect_interop_server secure_auth_context_test: $(BINDIR)/$(CONFIG)/secure_auth_context_test server_crash_test: $(BINDIR)/$(CONFIG)/server_crash_test server_crash_test_client: $(BINDIR)/$(CONFIG)/server_crash_test_client +shutdown_test: $(BINDIR)/$(CONFIG)/shutdown_test status_test: $(BINDIR)/$(CONFIG)/status_test sync_streaming_ping_pong_test: $(BINDIR)/$(CONFIG)/sync_streaming_ping_pong_test sync_unary_ping_pong_test: $(BINDIR)/$(CONFIG)/sync_unary_ping_pong_test @@ -1735,7 +1736,7 @@ buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONF 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_time_test $(BINDIR)/$(CONFIG)/dynamic_thread_pool_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/fixed_size_thread_pool_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)/status_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 +buildtests_zookeeper: privatelibs_zookeeper $(BINDIR)/$(CONFIG)/shutdown_test $(BINDIR)/$(CONFIG)/zookeeper_test else buildtests_zookeeper: endif @@ -3363,6 +3364,8 @@ flaky_test_cxx: buildtests_cxx ifeq ($(HAS_ZOOKEEPER),true) test_zookeeper: buildtests_zookeeper + $(E) "[RUN] Testing shutdown_test" + $(Q) $(BINDIR)/$(CONFIG)/shutdown_test || ( echo test shutdown_test failed ; exit 1 ) $(E) "[RUN] Testing zookeeper_test" $(Q) $(BINDIR)/$(CONFIG)/zookeeper_test || ( echo test zookeeper_test failed ; exit 1 ) @@ -10262,6 +10265,46 @@ endif endif +SHUTDOWN_TEST_SRC = \ + test/cpp/end2end/shutdown_test.cc \ + +SHUTDOWN_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SHUTDOWN_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/shutdown_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)/shutdown_test: protobuf_dep_error + +else + +$(BINDIR)/$(CONFIG)/shutdown_test: $(PROTOBUF_DEP) $(SHUTDOWN_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc_zookeeper.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) $(SHUTDOWN_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc_zookeeper.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a -lzookeeper_mt $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/shutdown_test + +endif + +endif + +$(OBJDIR)/$(CONFIG)/test/cpp/end2end/shutdown_test.o: $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc_zookeeper.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +deps_shutdown_test: $(SHUTDOWN_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(SHUTDOWN_TEST_OBJS:.o=.dep) +endif +endif + + STATUS_TEST_SRC = \ test/cpp/util/status_test.cc \ diff --git a/build.json b/build.json index e5e435a0ee..547288aaf5 100644 --- a/build.json +++ b/build.json @@ -2611,6 +2611,26 @@ "gpr" ] }, + { + "name": "shutdown_test", + "build": "test", + "language": "c++", + "src": [ + "test/cpp/end2end/shutdown_test.cc" + ], + "deps": [ + "grpc++_test_util", + "grpc_test_util", + "grpc++", + "grpc_zookeeper", + "grpc", + "gpr_test_util", + "gpr" + ], + "external_deps": [ + "zookeeper" + ] + }, { "name": "status_test", "build": "test", diff --git a/include/grpc++/server.h b/include/grpc++/server.h index 8755b4b445..084c9936d5 100644 --- a/include/grpc++/server.h +++ b/include/grpc++/server.h @@ -63,7 +63,13 @@ class Server GRPC_FINAL : public GrpcLibrary, private CallHook { ~Server(); // Shutdown the server, block until all rpc processing finishes. - void Shutdown(); + // Forcefully terminate pending calls after deadline expires. + template <class T> + void Shutdown(const T& deadline) { + ShutdownInternal(TimePoint<T>(deadline).raw_time()); + } + + void Shutdown() { ShutdownInternal(gpr_inf_future(GPR_CLOCK_MONOTONIC)); } // Block waiting for all work to complete (the server must either // be shutting down or some other thread must call Shutdown for this @@ -98,6 +104,8 @@ class Server GRPC_FINAL : public GrpcLibrary, private CallHook { void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) GRPC_OVERRIDE; + void ShutdownInternal(gpr_timespec deadline); + class BaseAsyncRequest : public CompletionQueueTag { public: BaseAsyncRequest(Server* server, ServerContext* context, diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index a70b555855..fca1e517b3 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -90,6 +90,26 @@ class Server::SyncRequest GRPC_FINAL : public CompletionQueueTag { return mrd; } + static bool AsyncWait(CompletionQueue* cq, SyncRequest** req, bool* ok, + gpr_timespec deadline) { + void* tag = nullptr; + *ok = false; + switch (cq->AsyncNext(&tag, ok, deadline)) { + case CompletionQueue::TIMEOUT: + *req = nullptr; + return true; + case CompletionQueue::SHUTDOWN: + *req = nullptr; + return false; + case CompletionQueue::GOT_EVENT: + *req = static_cast<SyncRequest*>(tag); + GPR_ASSERT((*req)->in_flight_); + return true; + } + gpr_log(GPR_ERROR, "Should never reach here"); + abort(); + } + void SetupRequest() { cq_ = grpc_completion_queue_create(nullptr); } void TeardownRequest() { @@ -303,12 +323,21 @@ bool Server::Start() { return true; } -void Server::Shutdown() { +void Server::ShutdownInternal(gpr_timespec deadline) { grpc::unique_lock<grpc::mutex> lock(mu_); if (started_ && !shutdown_) { shutdown_ = true; grpc_server_shutdown_and_notify(server_, cq_.cq(), new ShutdownRequest()); cq_.Shutdown(); + SyncRequest* request; + bool ok; + while (SyncRequest::AsyncWait(&cq_, &request, &ok, deadline)) { + if (request == NULL) { // deadline expired + grpc_server_cancel_all_calls(server_); + } else if (ok) { + SyncRequest::CallData call_data(this, request); + } + } // Wait for running callbacks to finish. while (num_running_cb_ != 0) { diff --git a/test/cpp/end2end/shutdown_test.cc b/test/cpp/end2end/shutdown_test.cc new file mode 100644 index 0000000000..fccbb13030 --- /dev/null +++ b/test/cpp/end2end/shutdown_test.cc @@ -0,0 +1,159 @@ +/* + * + * 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 "test/core/util/test_config.h" + +#include <thread> + +#include "test/core/util/port.h" +#include "test/cpp/util/echo.grpc.pb.h" +#include "src/core/support/env.h" +#include <grpc++/channel_arguments.h> +#include <grpc++/channel_interface.h> +#include <grpc++/client_context.h> +#include <grpc++/create_channel.h> +#include <grpc++/credentials.h> +#include <grpc++/server.h> +#include <grpc++/server_builder.h> +#include <grpc++/server_context.h> +#include <grpc++/server_credentials.h> +#include <grpc++/status.h> +#include <gtest/gtest.h> +#include <grpc/grpc.h> +#include <grpc/support/sync.h> + +using grpc::cpp::test::util::EchoRequest; +using grpc::cpp::test::util::EchoResponse; + +namespace grpc { +namespace testing { + +class TestServiceImpl : public ::grpc::cpp::test::util::TestService::Service { + public: + explicit TestServiceImpl(gpr_event* ev) : ev_(ev) {} + + Status Echo(ServerContext* context, const EchoRequest* request, + EchoResponse* response) GRPC_OVERRIDE { + gpr_event_set(ev_, (void*)1); + while (!context->IsCancelled()) { + } + return Status::OK; + } + + private: + gpr_event* ev_; +}; + +class ShutdownTest : public ::testing::Test { + public: + ShutdownTest() : shutdown_(false), service_(&ev_) { gpr_event_init(&ev_); } + + void SetUp() GRPC_OVERRIDE { + port_ = grpc_pick_unused_port_or_die(); + server_ = SetUpServer(port_); + } + + std::unique_ptr<Server> SetUpServer(const int port) { + grpc::string server_address = "localhost:" + to_string(port); + + ServerBuilder builder; + builder.AddListeningPort(server_address, InsecureServerCredentials()); + builder.RegisterService(&service_); + std::unique_ptr<Server> server = builder.BuildAndStart(); + return server; + } + + void TearDown() GRPC_OVERRIDE { GPR_ASSERT(shutdown_); } + + void ResetStub() { + string target = "dns:localhost:" + to_string(port_); + channel_ = CreateChannel(target, InsecureCredentials(), ChannelArguments()); + stub_ = std::move(grpc::cpp::test::util::TestService::NewStub(channel_)); + } + + string to_string(const int number) { + std::stringstream strs; + strs << number; + return strs.str(); + } + + void SendRequest() { + EchoRequest request; + EchoResponse response; + request.set_message("Hello"); + ClientContext context; + GPR_ASSERT(!shutdown_); + Status s = stub_->Echo(&context, request, &response); + GPR_ASSERT(shutdown_); + } + + protected: + std::shared_ptr<ChannelInterface> channel_; + std::unique_ptr<grpc::cpp::test::util::TestService::Stub> stub_; + std::unique_ptr<Server> server_; + bool shutdown_; + int port_; + gpr_event ev_; + TestServiceImpl service_; +}; + +// Tests zookeeper state change between two RPCs +// TODO(ctiller): leaked objects in this test +TEST_F(ShutdownTest, ShutdownTest) { + ResetStub(); + + // send the request in a background thread + std::thread thr(std::bind(&ShutdownTest::SendRequest, this)); + + // wait for the server to get the event + gpr_event_wait(&ev_, gpr_inf_future(GPR_CLOCK_MONOTONIC)); + + shutdown_ = true; + + // shutdown should trigger cancellation causing everything to shutdown + auto deadline = + std::chrono::system_clock::now() + std::chrono::microseconds(100); + server_->Shutdown(deadline); + EXPECT_GE(std::chrono::system_clock::now(), deadline); + + thr.join(); +} + +} // namespace testing +} // namespace grpc + +int main(int argc, char** argv) { + grpc_test_init(argc, argv); + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 72e6c41508..50f078586d 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -1620,6 +1620,23 @@ "test/cpp/end2end/server_crash_test_client.cc" ] }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc++", + "grpc++_test_util", + "grpc_test_util", + "grpc_zookeeper" + ], + "headers": [], + "language": "c++", + "name": "shutdown_test", + "src": [ + "test/cpp/end2end/shutdown_test.cc" + ] + }, { "deps": [ "gpr", diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index c25c0f3d7d..5f0452d76a 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -1425,6 +1425,23 @@ "posix" ] }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "flaky": false, + "language": "c++", + "name": "shutdown_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, { "ci_platforms": [ "linux", diff --git a/vsprojects/Grpc.mak b/vsprojects/Grpc.mak index 6d49586510..662de784f7 100644 --- a/vsprojects/Grpc.mak +++ b/vsprojects/Grpc.mak @@ -83,7 +83,7 @@ buildtests: buildtests_c buildtests_cxx buildtests_c: alarm_heap_test.exe alarm_list_test.exe alarm_test.exe alpn_test.exe bin_encoder_test.exe chttp2_status_conversion_test.exe chttp2_stream_encoder_test.exe chttp2_stream_map_test.exe compression_test.exe fling_client.exe fling_server.exe gpr_cmdline_test.exe gpr_env_test.exe gpr_file_test.exe gpr_histogram_test.exe gpr_host_port_test.exe gpr_log_test.exe gpr_slice_buffer_test.exe gpr_slice_test.exe gpr_stack_lockfree_test.exe gpr_string_test.exe gpr_sync_test.exe gpr_thd_test.exe gpr_time_test.exe gpr_tls_test.exe gpr_useful_test.exe grpc_auth_context_test.exe grpc_base64_test.exe grpc_byte_buffer_reader_test.exe grpc_channel_stack_test.exe grpc_completion_queue_test.exe grpc_credentials_test.exe grpc_json_token_test.exe grpc_jwt_verifier_test.exe grpc_security_connector_test.exe grpc_stream_op_test.exe hpack_parser_test.exe hpack_table_test.exe httpcli_format_request_test.exe httpcli_parser_test.exe json_rewrite.exe json_rewrite_test.exe json_test.exe lame_client_test.exe message_compress_test.exe multi_init_test.exe multiple_server_queues_test.exe murmur_hash_test.exe no_server_test.exe resolve_address_test.exe secure_endpoint_test.exe sockaddr_utils_test.exe time_averaged_stats_test.exe timeout_encoding_test.exe timers_test.exe transport_metadata_test.exe transport_security_test.exe uri_parser_test.exe chttp2_fake_security_bad_hostname_test.exe chttp2_fake_security_cancel_after_accept_test.exe chttp2_fake_security_cancel_after_accept_and_writes_closed_test.exe chttp2_fake_security_cancel_after_invoke_test.exe chttp2_fake_security_cancel_before_invoke_test.exe chttp2_fake_security_cancel_in_a_vacuum_test.exe chttp2_fake_security_census_simple_request_test.exe chttp2_fake_security_channel_connectivity_test.exe chttp2_fake_security_default_host_test.exe chttp2_fake_security_disappearing_server_test.exe chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fake_security_early_server_shutdown_finishes_tags_test.exe chttp2_fake_security_empty_batch_test.exe chttp2_fake_security_graceful_server_shutdown_test.exe chttp2_fake_security_invoke_large_request_test.exe chttp2_fake_security_max_concurrent_streams_test.exe chttp2_fake_security_max_message_length_test.exe chttp2_fake_security_no_op_test.exe chttp2_fake_security_ping_pong_streaming_test.exe chttp2_fake_security_registered_call_test.exe chttp2_fake_security_request_response_with_binary_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_payload_test.exe chttp2_fake_security_request_response_with_payload_and_call_creds_test.exe chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fake_security_request_with_compressed_payload_test.exe chttp2_fake_security_request_with_flags_test.exe chttp2_fake_security_request_with_large_metadata_test.exe chttp2_fake_security_request_with_payload_test.exe chttp2_fake_security_server_finishes_request_test.exe chttp2_fake_security_simple_delayed_request_test.exe chttp2_fake_security_simple_request_test.exe chttp2_fake_security_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_test.exe chttp2_fullstack_cancel_after_accept_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_cancel_after_invoke_test.exe chttp2_fullstack_cancel_before_invoke_test.exe chttp2_fullstack_cancel_in_a_vacuum_test.exe chttp2_fullstack_census_simple_request_test.exe chttp2_fullstack_channel_connectivity_test.exe chttp2_fullstack_default_host_test.exe chttp2_fullstack_disappearing_server_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_empty_batch_test.exe chttp2_fullstack_graceful_server_shutdown_test.exe chttp2_fullstack_invoke_large_request_test.exe chttp2_fullstack_max_concurrent_streams_test.exe chttp2_fullstack_max_message_length_test.exe chttp2_fullstack_no_op_test.exe chttp2_fullstack_ping_pong_streaming_test.exe chttp2_fullstack_registered_call_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_payload_test.exe chttp2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_request_with_compressed_payload_test.exe chttp2_fullstack_request_with_flags_test.exe chttp2_fullstack_request_with_large_metadata_test.exe chttp2_fullstack_request_with_payload_test.exe chttp2_fullstack_server_finishes_request_test.exe chttp2_fullstack_simple_delayed_request_test.exe chttp2_fullstack_simple_request_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_compression_bad_hostname_test.exe chttp2_fullstack_compression_cancel_after_accept_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_compression_cancel_after_invoke_test.exe chttp2_fullstack_compression_cancel_before_invoke_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_test.exe chttp2_fullstack_compression_census_simple_request_test.exe chttp2_fullstack_compression_channel_connectivity_test.exe chttp2_fullstack_compression_default_host_test.exe chttp2_fullstack_compression_disappearing_server_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_compression_empty_batch_test.exe chttp2_fullstack_compression_graceful_server_shutdown_test.exe chttp2_fullstack_compression_invoke_large_request_test.exe chttp2_fullstack_compression_max_concurrent_streams_test.exe chttp2_fullstack_compression_max_message_length_test.exe chttp2_fullstack_compression_no_op_test.exe chttp2_fullstack_compression_ping_pong_streaming_test.exe chttp2_fullstack_compression_registered_call_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_compression_request_with_compressed_payload_test.exe chttp2_fullstack_compression_request_with_flags_test.exe chttp2_fullstack_compression_request_with_large_metadata_test.exe chttp2_fullstack_compression_request_with_payload_test.exe chttp2_fullstack_compression_server_finishes_request_test.exe chttp2_fullstack_compression_simple_delayed_request_test.exe chttp2_fullstack_compression_simple_request_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_with_proxy_bad_hostname_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_with_proxy_cancel_after_invoke_test.exe chttp2_fullstack_with_proxy_cancel_before_invoke_test.exe chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test.exe chttp2_fullstack_with_proxy_census_simple_request_test.exe chttp2_fullstack_with_proxy_default_host_test.exe chttp2_fullstack_with_proxy_disappearing_server_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_with_proxy_empty_batch_test.exe chttp2_fullstack_with_proxy_graceful_server_shutdown_test.exe chttp2_fullstack_with_proxy_invoke_large_request_test.exe chttp2_fullstack_with_proxy_max_message_length_test.exe chttp2_fullstack_with_proxy_no_op_test.exe chttp2_fullstack_with_proxy_ping_pong_streaming_test.exe chttp2_fullstack_with_proxy_registered_call_test.exe chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_with_large_metadata_test.exe chttp2_fullstack_with_proxy_request_with_payload_test.exe chttp2_fullstack_with_proxy_server_finishes_request_test.exe chttp2_fullstack_with_proxy_simple_delayed_request_test.exe chttp2_fullstack_with_proxy_simple_request_test.exe chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_bad_hostname_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_census_simple_request_test.exe chttp2_simple_ssl_fullstack_channel_connectivity_test.exe chttp2_simple_ssl_fullstack_default_host_test.exe chttp2_simple_ssl_fullstack_disappearing_server_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_empty_batch_test.exe chttp2_simple_ssl_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_fullstack_max_message_length_test.exe chttp2_simple_ssl_fullstack_no_op_test.exe chttp2_simple_ssl_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_registered_call_test.exe chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_fullstack_request_with_flags_test.exe chttp2_simple_ssl_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_request_with_payload_test.exe chttp2_simple_ssl_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_simple_request_test.exe chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_default_host_test.exe chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test.exe chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test.exe chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test.exe chttp2_simple_ssl_fullstack_with_proxy_no_op_test.exe chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_with_proxy_registered_call_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test.exe chttp2_simple_ssl_with_oauth2_fullstack_default_host_test.exe chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test.exe chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test.exe chttp2_simple_ssl_with_oauth2_fullstack_no_op_test.exe chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_bad_hostname_test.exe chttp2_socket_pair_cancel_after_accept_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_cancel_after_invoke_test.exe chttp2_socket_pair_cancel_before_invoke_test.exe chttp2_socket_pair_cancel_in_a_vacuum_test.exe chttp2_socket_pair_census_simple_request_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_empty_batch_test.exe chttp2_socket_pair_graceful_server_shutdown_test.exe chttp2_socket_pair_invoke_large_request_test.exe chttp2_socket_pair_max_concurrent_streams_test.exe chttp2_socket_pair_max_message_length_test.exe chttp2_socket_pair_no_op_test.exe chttp2_socket_pair_ping_pong_streaming_test.exe chttp2_socket_pair_registered_call_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_payload_test.exe chttp2_socket_pair_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_request_with_compressed_payload_test.exe chttp2_socket_pair_request_with_flags_test.exe chttp2_socket_pair_request_with_large_metadata_test.exe chttp2_socket_pair_request_with_payload_test.exe chttp2_socket_pair_server_finishes_request_test.exe chttp2_socket_pair_simple_request_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe chttp2_socket_pair_with_grpc_trace_no_op_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_unsecure_test.exe chttp2_fullstack_cancel_after_accept_unsecure_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_census_simple_request_unsecure_test.exe chttp2_fullstack_channel_connectivity_unsecure_test.exe chttp2_fullstack_default_host_unsecure_test.exe chttp2_fullstack_disappearing_server_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_empty_batch_unsecure_test.exe chttp2_fullstack_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_invoke_large_request_unsecure_test.exe chttp2_fullstack_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_max_message_length_unsecure_test.exe chttp2_fullstack_no_op_unsecure_test.exe chttp2_fullstack_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_registered_call_unsecure_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_payload_unsecure_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_request_with_flags_unsecure_test.exe chttp2_fullstack_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_request_with_payload_unsecure_test.exe chttp2_fullstack_server_finishes_request_unsecure_test.exe chttp2_fullstack_simple_delayed_request_unsecure_test.exe chttp2_fullstack_simple_request_unsecure_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_compression_bad_hostname_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_compression_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_compression_census_simple_request_unsecure_test.exe chttp2_fullstack_compression_channel_connectivity_unsecure_test.exe chttp2_fullstack_compression_default_host_unsecure_test.exe chttp2_fullstack_compression_disappearing_server_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_compression_empty_batch_unsecure_test.exe chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_compression_invoke_large_request_unsecure_test.exe chttp2_fullstack_compression_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_compression_max_message_length_unsecure_test.exe chttp2_fullstack_compression_no_op_unsecure_test.exe chttp2_fullstack_compression_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_compression_registered_call_unsecure_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_flags_unsecure_test.exe chttp2_fullstack_compression_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_compression_request_with_payload_unsecure_test.exe chttp2_fullstack_compression_server_finishes_request_unsecure_test.exe chttp2_fullstack_compression_simple_delayed_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_with_proxy_bad_hostname_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_with_proxy_census_simple_request_unsecure_test.exe chttp2_fullstack_with_proxy_default_host_unsecure_test.exe chttp2_fullstack_with_proxy_disappearing_server_unsecure_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_with_proxy_empty_batch_unsecure_test.exe chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test.exe chttp2_fullstack_with_proxy_max_message_length_unsecure_test.exe chttp2_fullstack_with_proxy_no_op_unsecure_test.exe chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_with_proxy_registered_call_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_with_proxy_request_with_payload_unsecure_test.exe chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_bad_hostname_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_census_simple_request_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_empty_batch_unsecure_test.exe chttp2_socket_pair_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_invoke_large_request_unsecure_test.exe chttp2_socket_pair_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_max_message_length_unsecure_test.exe chttp2_socket_pair_no_op_unsecure_test.exe chttp2_socket_pair_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_registered_call_unsecure_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_request_with_flags_unsecure_test.exe chttp2_socket_pair_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_request_with_payload_unsecure_test.exe chttp2_socket_pair_server_finishes_request_unsecure_test.exe chttp2_socket_pair_simple_request_unsecure_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe connection_prefix_bad_client_test.exe initial_settings_frame_bad_client_test.exe echo All C tests built. -buildtests_cxx: async_end2end_test.exe auth_property_iterator_test.exe channel_arguments_test.exe cli_call_test.exe client_crash_test_server.exe credentials_test.exe cxx_byte_buffer_test.exe cxx_slice_test.exe cxx_time_test.exe dynamic_thread_pool_test.exe end2end_test.exe fixed_size_thread_pool_test.exe generic_end2end_test.exe grpc_cli.exe mock_test.exe reconnect_interop_client.exe reconnect_interop_server.exe secure_auth_context_test.exe server_crash_test_client.exe status_test.exe thread_stress_test.exe zookeeper_test.exe +buildtests_cxx: async_end2end_test.exe auth_property_iterator_test.exe channel_arguments_test.exe cli_call_test.exe client_crash_test_server.exe credentials_test.exe cxx_byte_buffer_test.exe cxx_slice_test.exe cxx_time_test.exe dynamic_thread_pool_test.exe end2end_test.exe fixed_size_thread_pool_test.exe generic_end2end_test.exe grpc_cli.exe mock_test.exe reconnect_interop_client.exe reconnect_interop_server.exe secure_auth_context_test.exe server_crash_test_client.exe shutdown_test.exe status_test.exe thread_stress_test.exe zookeeper_test.exe echo All C++ tests built. @@ -767,6 +767,14 @@ server_crash_test_client: server_crash_test_client.exe echo Running server_crash_test_client $(OUT_DIR)\server_crash_test_client.exe +shutdown_test.exe: Debug\grpc++_test_util.lib build_grpc_test_util build_grpc++ Debug\grpc_zookeeper.lib build_grpc build_gpr_test_util build_gpr $(OUT_DIR) + echo Building shutdown_test + $(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\cpp\end2end\shutdown_test.cc + $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\shutdown_test.exe" Debug\grpc++_test_util.lib Debug\grpc_test_util.lib Debug\grpc++.lib Debug\grpc_zookeeper.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(CXX_LIBS) $(LIBS) $(OUT_DIR)\shutdown_test.obj +shutdown_test: shutdown_test.exe + echo Running shutdown_test + $(OUT_DIR)\shutdown_test.exe + status_test.exe: build_grpc_test_util build_grpc++ build_grpc build_gpr_test_util build_gpr $(OUT_DIR) echo Building status_test $(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\cpp\util\status_test.cc -- GitLab From b9b9d6ee8e969aa1cd987f5153b8be616424a719 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Tue, 18 Aug 2015 12:56:58 -0700 Subject: [PATCH 071/178] add a README for include/grpc++/impl --- include/grpc++/impl/README.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 include/grpc++/impl/README.md diff --git a/include/grpc++/impl/README.md b/include/grpc++/impl/README.md new file mode 100644 index 0000000000..612150caa0 --- /dev/null +++ b/include/grpc++/impl/README.md @@ -0,0 +1,4 @@ +**The APIs in this directory are not stable!** + +This directory contains header files that need to be installed but are not part +of the public API. Users should not use these headers directly. -- GitLab From 8f615526a300ce2a80de2d5a719f2bbab9a88382 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Tue, 18 Aug 2015 15:48:17 -0700 Subject: [PATCH 072/178] Add missing file --- src/core/surface/version.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/surface/version.c b/src/core/surface/version.c index 61e762eb60..d7aaba3868 100644 --- a/src/core/surface/version.c +++ b/src/core/surface/version.c @@ -36,4 +36,6 @@ #include <grpc/grpc.h> -const char *grpc_version_string(void) { return "0.10.1.0"; } +const char *grpc_version_string(void) { + return "0.10.1.0"; +} -- GitLab From f900fb84b26b04a246201ab9911f86a83e7ae523 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Tue, 18 Aug 2015 15:58:43 -0700 Subject: [PATCH 073/178] Fix build breakage --- src/core/surface/version.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/surface/version.c b/src/core/surface/version.c index 61e762eb60..d7aaba3868 100644 --- a/src/core/surface/version.c +++ b/src/core/surface/version.c @@ -36,4 +36,6 @@ #include <grpc/grpc.h> -const char *grpc_version_string(void) { return "0.10.1.0"; } +const char *grpc_version_string(void) { + return "0.10.1.0"; +} -- GitLab From 27ccd197c4e082cb4e210a117beaf716216a8846 Mon Sep 17 00:00:00 2001 From: Tim Emiola <temiola@google.com> Date: Tue, 18 Aug 2015 16:15:14 -0700 Subject: [PATCH 074/178] Corrects logconfig from #2956 --- src/ruby/lib/grpc/logconfig.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ruby/lib/grpc/logconfig.rb b/src/ruby/lib/grpc/logconfig.rb index 2bb7c86d5e..6b442febcb 100644 --- a/src/ruby/lib/grpc/logconfig.rb +++ b/src/ruby/lib/grpc/logconfig.rb @@ -54,5 +54,6 @@ module GRPC LOGGER = NoopLogger.new end - include DefaultLogger unless method_defined?(:logger) + # Inject the noop #logger if no module-level logger method has been injected. + extend DefaultLogger unless methods.include?(:logger) end -- GitLab From 376076b34edd634a4dc920f073df188c14d6a645 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Tue, 18 Aug 2015 16:17:14 -0700 Subject: [PATCH 075/178] Fix TSAN reported race --- src/core/channel/client_channel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/channel/client_channel.c b/src/core/channel/client_channel.c index a73458821e..2e25033813 100644 --- a/src/core/channel/client_channel.c +++ b/src/core/channel/client_channel.c @@ -505,13 +505,13 @@ static void cc_on_config_changed(void *arg, int iomgr_success) { if (iomgr_success && chand->resolver) { grpc_resolver *resolver = chand->resolver; GRPC_RESOLVER_REF(resolver, "channel-next"); + grpc_connectivity_state_set(&chand->state_tracker, state, + "new_lb+resolver"); gpr_mu_unlock(&chand->mu_config); GRPC_CHANNEL_INTERNAL_REF(chand->master, "resolver"); grpc_resolver_next(resolver, &chand->incoming_configuration, &chand->on_config_changed); GRPC_RESOLVER_UNREF(resolver, "channel-next"); - grpc_connectivity_state_set(&chand->state_tracker, state, - "new_lb+resolver"); if (lb_policy != NULL) { watch_lb_policy(chand, lb_policy, state); } -- GitLab From 9876077fdeaed87851a1ad14a7d892867f68ad74 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Tue, 18 Aug 2015 16:45:06 -0700 Subject: [PATCH 076/178] disable grpc_zookeeper target on windows --- build.json | 3 +-- src/core/surface/version.c | 4 +++- vsprojects/grpc.sln | 25 ------------------------- vsprojects/grpc_csharp_ext.sln | 17 ----------------- 4 files changed, 4 insertions(+), 45 deletions(-) diff --git a/build.json b/build.json index e5e435a0ee..85457dde86 100644 --- a/build.json +++ b/build.json @@ -592,8 +592,7 @@ "external_deps": [ "zookeeper" ], - "secure": "no", - "vs_project_guid": "{F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}" + "secure": "no" }, { "name": "reconnect_server", diff --git a/src/core/surface/version.c b/src/core/surface/version.c index 61e762eb60..d7aaba3868 100644 --- a/src/core/surface/version.c +++ b/src/core/surface/version.c @@ -36,4 +36,6 @@ #include <grpc/grpc.h> -const char *grpc_version_string(void) { return "0.10.1.0"; } +const char *grpc_version_string(void) { + return "0.10.1.0"; +} diff --git a/vsprojects/grpc.sln b/vsprojects/grpc.sln index 0a9b5c2826..42ddef4568 100644 --- a/vsprojects/grpc.sln +++ b/vsprojects/grpc.sln @@ -52,15 +52,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_unsecure", "grpc_unsec {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_zookeeper", "grpc_zookeeper\grpc_zookeeper.vcxproj", "{F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}" - ProjectSection(myProperties) = preProject - lib = "True" - EndProjectSection - ProjectSection(ProjectDependencies) = postProject - {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} - {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9} - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc++", "grpc++\grpc++.vcxproj", "{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}" ProjectSection(myProperties) = preProject lib = "True" @@ -187,22 +178,6 @@ Global {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release-DLL|Win32.Build.0 = Release-DLL|Win32 {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release-DLL|x64.ActiveCfg = Release-DLL|x64 {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release-DLL|x64.Build.0 = Release-DLL|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug|Win32.ActiveCfg = Debug|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug|x64.ActiveCfg = Debug|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release|Win32.ActiveCfg = Release|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release|x64.ActiveCfg = Release|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug|Win32.Build.0 = Debug|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug|x64.Build.0 = Debug|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release|Win32.Build.0 = Release|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release|x64.Build.0 = Release|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug-DLL|Win32.ActiveCfg = Debug|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug-DLL|Win32.Build.0 = Debug|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug-DLL|x64.ActiveCfg = Debug|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug-DLL|x64.Build.0 = Debug|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release-DLL|Win32.ActiveCfg = Release|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release-DLL|Win32.Build.0 = Release|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release-DLL|x64.ActiveCfg = Release|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release-DLL|x64.Build.0 = Release|x64 {C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Debug|Win32.ActiveCfg = Debug|Win32 {C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Debug|x64.ActiveCfg = Debug|x64 {C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Release|Win32.ActiveCfg = Release|Win32 diff --git a/vsprojects/grpc_csharp_ext.sln b/vsprojects/grpc_csharp_ext.sln index aa41d87588..df84f3dc16 100644 --- a/vsprojects/grpc_csharp_ext.sln +++ b/vsprojects/grpc_csharp_ext.sln @@ -24,15 +24,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_unsecure", "grpc_unsec {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_zookeeper", "grpc_zookeeper\grpc_zookeeper.vcxproj", "{F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}" - ProjectSection(myProperties) = preProject - lib = "True" - EndProjectSection - ProjectSection(ProjectDependencies) = postProject - {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} - {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9} - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_csharp_ext", "grpc_csharp_ext\grpc_csharp_ext.vcxproj", "{D64C6D63-4458-4A88-AB38-35678384A7E4}" ProjectSection(myProperties) = preProject lib = "True" @@ -74,14 +65,6 @@ Global {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release|Win32.Build.0 = Release-DLL|Win32 {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release|x64.ActiveCfg = Release-DLL|x64 {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release|x64.Build.0 = Release-DLL|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug|Win32.ActiveCfg = Debug|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug|Win32.Build.0 = Debug|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug|x64.ActiveCfg = Debug|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Debug|x64.Build.0 = Debug|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release|Win32.ActiveCfg = Release|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release|Win32.Build.0 = Release|Win32 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release|x64.ActiveCfg = Release|x64 - {F14EBEC1-DC43-45D3-8A7D-1A47072EFE50}.Release|x64.Build.0 = Release|x64 {D64C6D63-4458-4A88-AB38-35678384A7E4}.Debug|Win32.ActiveCfg = Debug|Win32 {D64C6D63-4458-4A88-AB38-35678384A7E4}.Debug|Win32.Build.0 = Debug|Win32 {D64C6D63-4458-4A88-AB38-35678384A7E4}.Debug|x64.ActiveCfg = Debug|x64 -- GitLab From 81491b60430d5ca488cdd6e2e28f3bc2f5d9c6e2 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Tue, 18 Aug 2015 16:46:53 -0700 Subject: [PATCH 077/178] Removed function introducing dependency on proto in .h --- test/cpp/interop/client_helper.cc | 16 ---------------- test/cpp/interop/client_helper.h | 6 ------ test/cpp/interop/interop_client.cc | 14 ++++++++++++++ 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/test/cpp/interop/client_helper.cc b/test/cpp/interop/client_helper.cc index 65fdc63b43..b8a222c54a 100644 --- a/test/cpp/interop/client_helper.cc +++ b/test/cpp/interop/client_helper.cc @@ -65,8 +65,6 @@ DECLARE_string(default_service_account); DECLARE_string(service_account_key_file); DECLARE_string(oauth_scope); -using grpc::testing::CompressionType; - namespace grpc { namespace testing { @@ -143,20 +141,6 @@ std::shared_ptr<ChannelInterface> CreateChannelForTestCase( } } -CompressionType GetInteropCompressionTypeFromCompressionAlgorithm( - grpc_compression_algorithm algorithm) { - switch (algorithm) { - case GRPC_COMPRESS_NONE: - return CompressionType::NONE; - case GRPC_COMPRESS_GZIP: - return CompressionType::GZIP; - case GRPC_COMPRESS_DEFLATE: - return CompressionType::DEFLATE; - default: - GPR_ASSERT(false); - } -} - InteropClientContextInspector::InteropClientContextInspector( const ::grpc::ClientContext& context) : context_(context) {} diff --git a/test/cpp/interop/client_helper.h b/test/cpp/interop/client_helper.h index 28fca3266c..000374ae8e 100644 --- a/test/cpp/interop/client_helper.h +++ b/test/cpp/interop/client_helper.h @@ -39,8 +39,6 @@ #include <grpc++/config.h> #include <grpc++/channel_interface.h> -#include "test/proto/messages.grpc.pb.h" - namespace grpc { namespace testing { @@ -51,10 +49,6 @@ grpc::string GetOauth2AccessToken(); std::shared_ptr<ChannelInterface> CreateChannelForTestCase( const grpc::string& test_case); -grpc::testing::CompressionType -GetInteropCompressionTypeFromCompressionAlgorithm( - grpc_compression_algorithm algorithm); - class InteropClientContextInspector { public: InteropClientContextInspector(const ::grpc::ClientContext& context); diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index ddf91aa5eb..9e738b6d3b 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -67,6 +67,20 @@ const int kResponseMessageSize = 1030; const int kReceiveDelayMilliSeconds = 20; const int kLargeRequestSize = 271828; const int kLargeResponseSize = 314159; + +CompressionType GetInteropCompressionTypeFromCompressionAlgorithm( + grpc_compression_algorithm algorithm) { + switch (algorithm) { + case GRPC_COMPRESS_NONE: + return CompressionType::NONE; + case GRPC_COMPRESS_GZIP: + return CompressionType::GZIP; + case GRPC_COMPRESS_DEFLATE: + return CompressionType::DEFLATE; + default: + GPR_ASSERT(false); + } +} } // namespace InteropClient::InteropClient(std::shared_ptr<ChannelInterface> channel) -- GitLab From a5f9e903bdc1805dc816473a871e42b2555ceea8 Mon Sep 17 00:00:00 2001 From: Xudong Ma <simonma@google.com> Date: Tue, 18 Aug 2015 17:22:53 -0700 Subject: [PATCH 078/178] Add backoff reset spec to the Connection Backoff Protocol --- doc/connection-backoff.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/connection-backoff.md b/doc/connection-backoff.md index 7094e737c5..251a60f384 100644 --- a/doc/connection-backoff.md +++ b/doc/connection-backoff.md @@ -44,3 +44,12 @@ different jitter logic. Alternate implementations must ensure that connection backoffs started at the same time disperse, and must not attempt connections substantially more often than the above algorithm. + +## Reset Backoff + +The back off should be reset to INITIAL_BACKOFF at some time point, so that the +reconnecting behavior is consistent no matter the connection is a newly started +one or a previously disconnected one. + +We choose to reset the Backoff when the SETTINGS frame is received, at that time +point, we know for sure that this connection was accepted by the server. -- GitLab From 2250454721005f643b192e2152c2374e40f6385f Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Mon, 17 Aug 2015 13:43:12 -0700 Subject: [PATCH 079/178] forgot to expose status and trailers for unary call --- .../Grpc.Core/AsyncClientStreamingCall.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs b/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs index bf020cd627..fb9b562c77 100644 --- a/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs @@ -88,6 +88,24 @@ namespace Grpc.Core return responseAsync.GetAwaiter(); } + /// <summary> + /// Gets the call status if the call has already finished. + /// Throws InvalidOperationException otherwise. + /// </summary> + public Status GetStatus() + { + return getStatusFunc(); + } + + /// <summary> + /// Gets the call trailing metadata if the call has already finished. + /// Throws InvalidOperationException otherwise. + /// </summary> + public Metadata GetTrailers() + { + return getTrailersFunc(); + } + /// <summary> /// 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. -- GitLab From 9e14414415d75bca155e5a85a8b7ac226027459f Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Mon, 17 Aug 2015 14:58:09 -0700 Subject: [PATCH 080/178] refactor auth interceptors --- src/csharp/Grpc.Auth/AuthInterceptors.cs | 84 +++++++++++++ src/csharp/Grpc.Auth/Grpc.Auth.csproj | 42 +++---- src/csharp/Grpc.Auth/OAuth2Interceptors.cs | 115 ------------------ .../Grpc.Core/AsyncDuplexStreamingCall.cs | 2 - .../Grpc.Core/AsyncServerStreamingCall.cs | 2 - src/csharp/Grpc.Core/ClientBase.cs | 16 +-- .../Grpc.IntegrationTesting/InteropClient.cs | 10 +- 7 files changed, 112 insertions(+), 159 deletions(-) create mode 100644 src/csharp/Grpc.Auth/AuthInterceptors.cs delete mode 100644 src/csharp/Grpc.Auth/OAuth2Interceptors.cs diff --git a/src/csharp/Grpc.Auth/AuthInterceptors.cs b/src/csharp/Grpc.Auth/AuthInterceptors.cs new file mode 100644 index 0000000000..5a5ca7edc7 --- /dev/null +++ b/src/csharp/Grpc.Auth/AuthInterceptors.cs @@ -0,0 +1,84 @@ +#region Copyright notice and license + +// 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. + +#endregion + +using System; +using System.Threading; + +using Google.Apis.Auth.OAuth2; +using Grpc.Core; +using Grpc.Core.Utils; + +namespace Grpc.Auth +{ + /// <summary> + /// Factory methods to create authorization interceptors. + /// </summary> + public static class AuthInterceptors + { + private const string AuthorizationHeader = "Authorization"; + private const string Schema = "Bearer"; + + /// <summary> + /// Creates interceptor that will obtain access token from any credential type that implements + /// <c>ITokenAccess</c>. (e.g. <c>GoogleCredential</c>). + /// </summary> + public static HeaderInterceptor FromCredential(ITokenAccess credential) + { + return new HeaderInterceptor((authUri, metadata) => + { + // TODO(jtattermusch): Rethink synchronous wait to obtain the result. + var accessToken = credential.GetAccessTokenForRequestAsync(authUri, CancellationToken.None) + .ConfigureAwait(false).GetAwaiter().GetResult(); + metadata.Add(CreateBearerTokenHeader(accessToken)); + }); + } + + /// <summary> + /// Creates OAuth2 interceptor that will use given access token as authorization. + /// </summary> + /// <param name="accessToken">OAuth2 access token.</param> + public static HeaderInterceptor FromAccessToken(string accessToken) + { + Preconditions.CheckNotNull(accessToken); + return new HeaderInterceptor((authUri, metadata) => + { + metadata.Add(CreateBearerTokenHeader(accessToken)); + }); + } + + private static Metadata.Entry CreateBearerTokenHeader(string accessToken) + { + return new Metadata.Entry(AuthorizationHeader, Schema + " " + accessToken); + } + } +} diff --git a/src/csharp/Grpc.Auth/Grpc.Auth.csproj b/src/csharp/Grpc.Auth/Grpc.Auth.csproj index 930a34b0c3..4fb087d4a3 100644 --- a/src/csharp/Grpc.Auth/Grpc.Auth.csproj +++ b/src/csharp/Grpc.Auth/Grpc.Auth.csproj @@ -3,8 +3,6 @@ <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>10.0.0</ProductVersion> - <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{AE21D0EE-9A2C-4C15-AB7F-5224EED5B0EA}</ProjectGuid> <OutputType>Library</OutputType> <RootNamespace>Grpc.Auth</RootNamespace> @@ -41,57 +39,47 @@ <AssemblyOriginatorKeyFile>C:\keys\Grpc.snk</AssemblyOriginatorKeyFile> </PropertyGroup> <ItemGroup> - <Reference Include="BouncyCastle.Crypto, Version=1.7.4137.9688, Culture=neutral, PublicKeyToken=a4292a325f69b123, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> + <Reference Include="System" /> + <Reference Include="System.Net" /> + <Reference Include="System.Net.Http" /> + <Reference Include="System.Net.Http.WebRequest" /> + <Reference Include="BouncyCastle.Crypto"> <HintPath>..\packages\BouncyCastle.1.7.0\lib\Net40-Client\BouncyCastle.Crypto.dll</HintPath> </Reference> - <Reference Include="Google.Apis.Auth, Version=1.9.3.19379, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> + <Reference Include="Google.Apis.Auth"> <HintPath>..\packages\Google.Apis.Auth.1.9.3\lib\net40\Google.Apis.Auth.dll</HintPath> </Reference> - <Reference Include="Google.Apis.Auth.PlatformServices, Version=1.9.3.19383, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> + <Reference Include="Google.Apis.Auth.PlatformServices"> <HintPath>..\packages\Google.Apis.Auth.1.9.3\lib\net40\Google.Apis.Auth.PlatformServices.dll</HintPath> </Reference> - <Reference Include="Google.Apis.Core, Version=1.9.3.19379, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> + <Reference Include="Google.Apis.Core"> <HintPath>..\packages\Google.Apis.Core.1.9.3\lib\portable-net40+sl50+win+wpa81+wp80\Google.Apis.Core.dll</HintPath> </Reference> - <Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> + <Reference Include="Microsoft.Threading.Tasks"> <HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath> </Reference> - <Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> + <Reference Include="Microsoft.Threading.Tasks.Extensions"> <HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath> </Reference> - <Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> + <Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop"> <HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath> </Reference> - <Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> + <Reference Include="Newtonsoft.Json"> <HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> </Reference> - <Reference Include="System" /> - <Reference Include="System.Net" /> - <Reference Include="System.Net.Http" /> - <Reference Include="System.Net.Http.Extensions, Version=2.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> + <Reference Include="System.Net.Http.Extensions"> <HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Extensions.dll</HintPath> </Reference> - <Reference Include="System.Net.Http.Primitives, Version=4.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> + <Reference Include="System.Net.Http.Primitives"> <HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Primitives.dll</HintPath> </Reference> - <Reference Include="System.Net.Http.WebRequest" /> </ItemGroup> <ItemGroup> <Compile Include="..\Grpc.Core\Version.cs"> <Link>Version.cs</Link> </Compile> <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="OAuth2Interceptors.cs" /> + <Compile Include="AuthInterceptors.cs" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ItemGroup> diff --git a/src/csharp/Grpc.Auth/OAuth2Interceptors.cs b/src/csharp/Grpc.Auth/OAuth2Interceptors.cs deleted file mode 100644 index d628a83246..0000000000 --- a/src/csharp/Grpc.Auth/OAuth2Interceptors.cs +++ /dev/null @@ -1,115 +0,0 @@ -#region Copyright notice and license - -// 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. - -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Security.Cryptography.X509Certificates; -using System.Text.RegularExpressions; -using System.Threading; -using System.Threading.Tasks; - -using Google.Apis.Auth.OAuth2; -using Google.Apis.Util; -using Grpc.Core; -using Grpc.Core.Utils; - -namespace Grpc.Auth -{ - public static class OAuth2Interceptors - { - /// <summary> - /// Creates OAuth2 interceptor that will obtain access token from GoogleCredentials. - /// </summary> - public static MetadataInterceptorDelegate FromCredential(GoogleCredential googleCredential) - { - var interceptor = new OAuth2Interceptor(googleCredential, SystemClock.Default); - return new MetadataInterceptorDelegate(interceptor.InterceptHeaders); - } - - /// <summary> - /// Creates OAuth2 interceptor that will use given OAuth2 token. - /// </summary> - /// <param name="oauth2Token"></param> - /// <returns></returns> - public static MetadataInterceptorDelegate FromAccessToken(string oauth2Token) - { - Preconditions.CheckNotNull(oauth2Token); - return new MetadataInterceptorDelegate((authUri, metadata) => - { - metadata.Add(OAuth2Interceptor.CreateBearerTokenHeader(oauth2Token)); - }); - } - - /// <summary> - /// Injects OAuth2 authorization header into initial metadata (= request headers). - /// </summary> - private class OAuth2Interceptor - { - private const string AuthorizationHeader = "Authorization"; - private const string Schema = "Bearer"; - - private ITokenAccess credential; - private IClock clock; - - public OAuth2Interceptor(ITokenAccess credential, IClock clock) - { - this.credential = credential; - this.clock = clock; - } - - /// <summary> - /// Gets access token and requests refreshing it if is going to expire soon. - /// </summary> - /// <param name="cancellationToken"></param> - /// <returns></returns> - public string GetAccessToken(string authUri, CancellationToken cancellationToken) - { - // TODO(jtattermusch): Rethink synchronous wait to obtain the result. - return credential.GetAccessTokenForRequestAsync(authUri, cancellationToken: cancellationToken).GetAwaiter().GetResult(); - } - - public void InterceptHeaders(string authUri, Metadata metadata) - { - var accessToken = GetAccessToken(authUri, CancellationToken.None); - metadata.Add(CreateBearerTokenHeader(accessToken)); - } - - public static Metadata.Entry CreateBearerTokenHeader(string accessToken) - { - return new Metadata.Entry(AuthorizationHeader, Schema + " " + accessToken); - } - } - } -} diff --git a/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs b/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs index 0979de606f..183c84216a 100644 --- a/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs @@ -32,8 +32,6 @@ #endregion using System; -using System.Runtime.CompilerServices; -using System.Threading.Tasks; namespace Grpc.Core { diff --git a/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs b/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs index 380efcdb0e..ab2049f269 100644 --- a/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs @@ -32,8 +32,6 @@ #endregion using System; -using System.Runtime.CompilerServices; -using System.Threading.Tasks; namespace Grpc.Core { diff --git a/src/csharp/Grpc.Core/ClientBase.cs b/src/csharp/Grpc.Core/ClientBase.cs index f240d777b9..751d2d260f 100644 --- a/src/csharp/Grpc.Core/ClientBase.cs +++ b/src/csharp/Grpc.Core/ClientBase.cs @@ -32,15 +32,15 @@ #endregion using System; -using System.Collections.Generic; using System.Text.RegularExpressions; - -using Grpc.Core.Internal; -using Grpc.Core.Utils; +using System.Threading.Tasks; namespace Grpc.Core { - public delegate void MetadataInterceptorDelegate(string authUri, Metadata metadata); + /// <summary> + /// Interceptor for call headers. + /// </summary> + public delegate void HeaderInterceptor(string authUri, Metadata metadata); /// <summary> /// Base class for client-side stubs. @@ -60,10 +60,10 @@ namespace Grpc.Core } /// <summary> - /// Can be used to register a custom header (initial metadata) interceptor. - /// The delegate each time before a new call on this client is started. + /// 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. /// </summary> - public MetadataInterceptorDelegate HeaderInterceptor + public HeaderInterceptor HeaderInterceptor { get; set; diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs index 385ca92086..1047f2efc1 100644 --- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs +++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs @@ -308,7 +308,7 @@ namespace Grpc.IntegrationTesting Console.WriteLine("running service_account_creds"); var credential = await GoogleCredential.GetApplicationDefaultAsync(); credential = credential.CreateScoped(new[] { AuthScope }); - client.HeaderInterceptor = OAuth2Interceptors.FromCredential(credential); + client.HeaderInterceptor = AuthInterceptors.FromCredential(credential); var request = SimpleRequest.CreateBuilder() .SetResponseType(PayloadType.COMPRESSABLE) @@ -332,7 +332,7 @@ namespace Grpc.IntegrationTesting Console.WriteLine("running compute_engine_creds"); var credential = await GoogleCredential.GetApplicationDefaultAsync(); Assert.IsFalse(credential.IsCreateScopedRequired); - client.HeaderInterceptor = OAuth2Interceptors.FromCredential(credential); + client.HeaderInterceptor = AuthInterceptors.FromCredential(credential); var request = SimpleRequest.CreateBuilder() .SetResponseType(PayloadType.COMPRESSABLE) @@ -357,7 +357,7 @@ namespace Grpc.IntegrationTesting var credential = await GoogleCredential.GetApplicationDefaultAsync(); // check this a credential with scope support, but don't add the scope. Assert.IsTrue(credential.IsCreateScopedRequired); - client.HeaderInterceptor = OAuth2Interceptors.FromCredential(credential); + client.HeaderInterceptor = AuthInterceptors.FromCredential(credential); var request = SimpleRequest.CreateBuilder() .SetResponseType(PayloadType.COMPRESSABLE) @@ -381,7 +381,7 @@ namespace Grpc.IntegrationTesting ITokenAccess credential = (await GoogleCredential.GetApplicationDefaultAsync()).CreateScoped(new[] { AuthScope }); string oauth2Token = await credential.GetAccessTokenForRequestAsync(); - client.HeaderInterceptor = OAuth2Interceptors.FromAccessToken(oauth2Token); + client.HeaderInterceptor = AuthInterceptors.FromAccessToken(oauth2Token); var request = SimpleRequest.CreateBuilder() .SetFillUsername(true) @@ -401,7 +401,7 @@ namespace Grpc.IntegrationTesting ITokenAccess credential = (await GoogleCredential.GetApplicationDefaultAsync()).CreateScoped(new[] { AuthScope }); string oauth2Token = await credential.GetAccessTokenForRequestAsync(); - var headerInterceptor = OAuth2Interceptors.FromAccessToken(oauth2Token); + var headerInterceptor = AuthInterceptors.FromAccessToken(oauth2Token); var request = SimpleRequest.CreateBuilder() .SetFillUsername(true) -- GitLab From e7178527ffb4ff5c38685fdd08de24a9b82f2fe4 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Mon, 17 Aug 2015 14:59:14 -0700 Subject: [PATCH 081/178] fix comment --- src/csharp/Grpc.Core/ChannelOptions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/csharp/Grpc.Core/ChannelOptions.cs b/src/csharp/Grpc.Core/ChannelOptions.cs index 0cb2953f2c..ad54b46ad5 100644 --- a/src/csharp/Grpc.Core/ChannelOptions.cs +++ b/src/csharp/Grpc.Core/ChannelOptions.cs @@ -71,7 +71,7 @@ namespace Grpc.Core /// Creates a channel option with an integer value. /// </summary> /// <param name="name">Name.</param> - /// <param name="stringValue">String value.</param> + /// <param name="intValue">Integer value.</param> public ChannelOption(string name, int intValue) { this.type = OptionType.Integer; -- GitLab From e396b8dbeac9dbe3a426cf13f4e7d1ce9a558e2a Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Mon, 17 Aug 2015 15:02:23 -0700 Subject: [PATCH 082/178] add method info to auth interceptor --- src/csharp/Grpc.Auth/AuthInterceptors.cs | 4 +-- src/csharp/Grpc.Core/ClientBase.cs | 4 +-- src/csharp/Grpc.Core/Method.cs | 29 ++++++++++++++++++- .../Grpc.IntegrationTesting/InteropClient.cs | 2 +- 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/csharp/Grpc.Auth/AuthInterceptors.cs b/src/csharp/Grpc.Auth/AuthInterceptors.cs index 5a5ca7edc7..61338f7f0e 100644 --- a/src/csharp/Grpc.Auth/AuthInterceptors.cs +++ b/src/csharp/Grpc.Auth/AuthInterceptors.cs @@ -54,7 +54,7 @@ namespace Grpc.Auth /// </summary> public static HeaderInterceptor FromCredential(ITokenAccess credential) { - return new HeaderInterceptor((authUri, metadata) => + return new HeaderInterceptor((method, authUri, metadata) => { // TODO(jtattermusch): Rethink synchronous wait to obtain the result. var accessToken = credential.GetAccessTokenForRequestAsync(authUri, CancellationToken.None) @@ -70,7 +70,7 @@ namespace Grpc.Auth public static HeaderInterceptor FromAccessToken(string accessToken) { Preconditions.CheckNotNull(accessToken); - return new HeaderInterceptor((authUri, metadata) => + return new HeaderInterceptor((method, authUri, metadata) => { metadata.Add(CreateBearerTokenHeader(accessToken)); }); diff --git a/src/csharp/Grpc.Core/ClientBase.cs b/src/csharp/Grpc.Core/ClientBase.cs index 751d2d260f..7bc100ca60 100644 --- a/src/csharp/Grpc.Core/ClientBase.cs +++ b/src/csharp/Grpc.Core/ClientBase.cs @@ -40,7 +40,7 @@ namespace Grpc.Core /// <summary> /// Interceptor for call headers. /// </summary> - public delegate void HeaderInterceptor(string authUri, Metadata metadata); + public delegate void HeaderInterceptor(IMethod method, string authUri, Metadata metadata); /// <summary> /// Base class for client-side stubs. @@ -107,7 +107,7 @@ namespace Grpc.Core options = options.WithHeaders(new Metadata()); } var authUri = authUriBase != null ? authUriBase + method.ServiceName : null; - interceptor(authUri, options.Headers); + interceptor(method, authUri, options.Headers); } return new CallInvocationDetails<TRequest, TResponse>(channel, method, Host, options); } diff --git a/src/csharp/Grpc.Core/Method.cs b/src/csharp/Grpc.Core/Method.cs index 4c208b4a26..4c53285893 100644 --- a/src/csharp/Grpc.Core/Method.cs +++ b/src/csharp/Grpc.Core/Method.cs @@ -54,10 +54,37 @@ namespace Grpc.Core DuplexStreaming } + /// <summary> + /// A non-generic representation of a remote method. + /// </summary> + public interface IMethod + { + /// <summary> + /// Gets the type of the method. + /// </summary> + MethodType Type { get; } + + /// <summary> + /// Gets the name of the service to which this method belongs. + /// </summary> + string ServiceName { get; } + + /// <summary> + /// Gets the unqualified name of the method. + /// </summary> + string Name { get; } + + /// <summary> + /// Gets the fully qualified name of the method. On the server side, methods are dispatched + /// based on this name. + /// </summary> + string FullName { get; } + } + /// <summary> /// A description of a remote method. /// </summary> - public class Method<TRequest, TResponse> + public class Method<TRequest, TResponse> : IMethod { readonly MethodType type; readonly string serviceName; diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs index 1047f2efc1..f4b0a1028f 100644 --- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs +++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs @@ -409,7 +409,7 @@ namespace Grpc.IntegrationTesting .Build(); var headers = new Metadata(); - headerInterceptor("", headers); + headerInterceptor(null, "", headers); var response = client.UnaryCall(request, headers: headers); Assert.AreEqual(AuthScopeResponse, response.OauthScope); -- GitLab From c3134bc95503ec093b101da6e857ffbf94b205b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Siedlarek?= <mikolaj@siedlarek.pl> Date: Wed, 19 Aug 2015 15:24:07 +0200 Subject: [PATCH 083/178] Allow customization of thread pool size in Python. --- .../grpc/early_adopter/implementations.py | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/python/grpcio/grpc/early_adopter/implementations.py b/src/python/grpcio/grpc/early_adopter/implementations.py index 10919fae69..9c396aa7ad 100644 --- a/src/python/grpcio/grpc/early_adopter/implementations.py +++ b/src/python/grpcio/grpc/early_adopter/implementations.py @@ -41,13 +41,15 @@ from grpc.framework.base import util as _base_utilities from grpc.framework.face import implementations as _face_implementations from grpc.framework.foundation import logging_pool -_THREAD_POOL_SIZE = 8 +_DEFAULT_THREAD_POOL_SIZE = 8 _ONE_DAY_IN_SECONDS = 24 * 60 * 60 class _Server(interfaces.Server): - def __init__(self, breakdown, port, private_key, certificate_chain): + def __init__( + self, breakdown, port, private_key, certificate_chain, + thread_pool_size=_DEFAULT_THREAD_POOL_SIZE): self._lock = threading.Lock() self._breakdown = breakdown self._port = port @@ -56,6 +58,7 @@ class _Server(interfaces.Server): else: self._key_chain_pairs = ((private_key, certificate_chain),) + self._pool_size = thread_pool_size self._pool = None self._back = None self._fore_link = None @@ -63,7 +66,7 @@ class _Server(interfaces.Server): def _start(self): with self._lock: if self._pool is None: - self._pool = logging_pool.pool(_THREAD_POOL_SIZE) + self._pool = logging_pool.pool(self._pool_size) servicer = _face_implementations.servicer( self._pool, self._breakdown.implementations, None) self._back = _base_implementations.back_link( @@ -114,7 +117,8 @@ class _Stub(interfaces.Stub): def __init__( self, breakdown, host, port, secure, root_certificates, private_key, - certificate_chain, metadata_transformer=None, server_host_override=None): + certificate_chain, metadata_transformer=None, server_host_override=None, + thread_pool_size=_DEFAULT_THREAD_POOL_SIZE): self._lock = threading.Lock() self._breakdown = breakdown self._host = host @@ -126,6 +130,7 @@ class _Stub(interfaces.Stub): self._metadata_transformer = metadata_transformer self._server_host_override = server_host_override + self._pool_size = thread_pool_size self._pool = None self._front = None self._rear_link = None @@ -134,7 +139,7 @@ class _Stub(interfaces.Stub): def __enter__(self): with self._lock: if self._pool is None: - self._pool = logging_pool.pool(_THREAD_POOL_SIZE) + self._pool = logging_pool.pool(self._pool_size) self._front = _base_implementations.front_link( self._pool, self._pool, self._pool) self._rear_link = _rear.RearLink( @@ -193,7 +198,7 @@ class _Stub(interfaces.Stub): def stub( service_name, methods, host, port, metadata_transformer=None, secure=False, root_certificates=None, private_key=None, certificate_chain=None, - server_host_override=None): + server_host_override=None, thread_pool_size=_DEFAULT_THREAD_POOL_SIZE): """Constructs an interfaces.Stub. Args: @@ -216,6 +221,8 @@ def stub( certificate chain should be used. server_host_override: (For testing only) the target name used for SSL host name checking. + thread_pool_size: The maximum number of threads to allow in the backing + thread pool. Returns: An interfaces.Stub affording RPC invocation. @@ -224,11 +231,13 @@ def stub( return _Stub( breakdown, host, port, secure, root_certificates, private_key, certificate_chain, server_host_override=server_host_override, - metadata_transformer=metadata_transformer) + metadata_transformer=metadata_transformer, + thread_pool_size=thread_pool_size) def server( - service_name, methods, port, private_key=None, certificate_chain=None): + service_name, methods, port, private_key=None, certificate_chain=None, + thread_pool_size=_DEFAULT_THREAD_POOL_SIZE): """Constructs an interfaces.Server. Args: @@ -242,9 +251,12 @@ def server( private_key: A pem-encoded private key, or None for an insecure server. certificate_chain: A pem-encoded certificate chain, or None for an insecure server. + thread_pool_size: The maximum number of threads to allow in the backing + thread pool. Returns: An interfaces.Server that will serve secure traffic. """ breakdown = _face_utilities.break_down_service(service_name, methods) - return _Server(breakdown, port, private_key, certificate_chain) + return _Server(breakdown, port, private_key, certificate_chain, + thread_pool_size=thread_pool_size) -- GitLab From b815fb234f0be81b73fb678f7dee8eaeb8448bcd Mon Sep 17 00:00:00 2001 From: Craig Tiller <craig.tiller@gmail.com> Date: Wed, 19 Aug 2015 08:02:38 -0700 Subject: [PATCH 084/178] Zero out reserved field in node --- src/node/ext/call.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/node/ext/call.cc b/src/node/ext/call.cc index 705c80ffc1..a79a47427f 100644 --- a/src/node/ext/call.cc +++ b/src/node/ext/call.cc @@ -581,6 +581,7 @@ NAN_METHOD(Call::StartBatch) { uint32_t type = keys->Get(i)->Uint32Value(); ops[i].op = static_cast<grpc_op_type>(type); ops[i].flags = 0; + ops[i].reserved = NULL; switch (type) { case GRPC_OP_SEND_INITIAL_METADATA: op.reset(new SendMetadataOp()); -- GitLab From 9374ce819bff3c933f08b9512ded5c513527fd1f Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Wed, 19 Aug 2015 10:15:44 -0700 Subject: [PATCH 085/178] Add comments, fix a subtle bug --- include/grpc++/server.h | 1 + src/cpp/server/server.cc | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/include/grpc++/server.h b/include/grpc++/server.h index 6a15dcb371..a2bc097c7f 100644 --- a/include/grpc++/server.h +++ b/include/grpc++/server.h @@ -69,6 +69,7 @@ class Server GRPC_FINAL : public GrpcLibrary, private CallHook { ShutdownInternal(TimePoint<T>(deadline).raw_time()); } + // Shutdown the server, waiting for all rpc processing to finish. void Shutdown() { ShutdownInternal(gpr_inf_future(GPR_CLOCK_MONOTONIC)); } // Block waiting for all work to complete (the server must either diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index b27aa32276..8b21337529 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -329,11 +329,15 @@ void Server::ShutdownInternal(gpr_timespec deadline) { shutdown_ = true; grpc_server_shutdown_and_notify(server_, cq_.cq(), new ShutdownRequest()); cq_.Shutdown(); + // Spin, eating requests until the completion queue is completely shutdown. + // If the deadline expires then cancel anything that's pending and keep + // spinning forever until the work is actually drained. SyncRequest* request; bool ok; while (SyncRequest::AsyncWait(&cq_, &request, &ok, deadline)) { if (request == NULL) { // deadline expired grpc_server_cancel_all_calls(server_); + deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC); } else if (ok) { SyncRequest::CallData call_data(this, request); } -- GitLab From 00a3dab83a7f8e08ba9e9b8349da2d76ea1e4731 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Wed, 19 Aug 2015 11:15:38 -0700 Subject: [PATCH 086/178] Short-circuit shutdown when it is already published (core) --- src/core/surface/server.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/core/surface/server.c b/src/core/surface/server.c index 4990e6583a..1c402418e8 100644 --- a/src/core/surface/server.c +++ b/src/core/surface/server.c @@ -975,6 +975,11 @@ void grpc_server_setup_transport(grpc_server *s, grpc_transport *transport, grpc_transport_perform_op(transport, &op); } +void done_published_shutdown(void *done_arg, grpc_cq_completion *storage) { + (void) done_arg; + gpr_free(storage); +} + void grpc_server_shutdown_and_notify(grpc_server *server, grpc_completion_queue *cq, void *tag) { listener *l; @@ -986,6 +991,12 @@ void grpc_server_shutdown_and_notify(grpc_server *server, /* lock, and gather up some stuff to do */ gpr_mu_lock(&server->mu_global); grpc_cq_begin_op(cq); + if (server->shutdown_published) { + grpc_cq_end_op(cq, tag, 1, done_published_shutdown, NULL, + gpr_malloc(sizeof(grpc_cq_completion))); + gpr_mu_unlock(&server->mu_global); + return; + } server->shutdown_tags = gpr_realloc(server->shutdown_tags, sizeof(shutdown_tag) * (server->num_shutdown_tags + 1)); -- GitLab From 681a291d12bb8fc7f8c238fdb674cd0f140294db Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Wed, 19 Aug 2015 11:31:25 -0700 Subject: [PATCH 087/178] Extend comment --- src/cpp/server/server.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index 8b21337529..e039c07374 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -332,6 +332,8 @@ void Server::ShutdownInternal(gpr_timespec deadline) { // Spin, eating requests until the completion queue is completely shutdown. // If the deadline expires then cancel anything that's pending and keep // spinning forever until the work is actually drained. + // Since nothing else needs to touch state guarded by mu_, holding it + // through this loop is fine. SyncRequest* request; bool ok; while (SyncRequest::AsyncWait(&cq_, &request, &ok, deadline)) { -- GitLab From c0c9ba9e429cb6aac2653f16cf171bf0c64920c8 Mon Sep 17 00:00:00 2001 From: Stanley Cheung <stanleycheung@google.com> Date: Tue, 18 Aug 2015 16:19:38 -0700 Subject: [PATCH 088/178] php: fix timeout interop test, use 1ms as timeout --- src/php/ext/grpc/call.c | 11 ++--------- src/php/tests/interop/interop_client.php | 2 +- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c index 4e40dc43ce..6009a8d2b8 100644 --- a/src/php/ext/grpc/call.c +++ b/src/php/ext/grpc/call.c @@ -273,7 +273,6 @@ PHP_METHOD(Call, startBatch) { grpc_byte_buffer *message; int cancelled; grpc_call_error error; - grpc_event event; zval *result; char *message_str; size_t message_len; @@ -409,14 +408,8 @@ PHP_METHOD(Call, startBatch) { (long)error TSRMLS_CC); goto cleanup; } - event = grpc_completion_queue_pluck(completion_queue, call->wrapped, - gpr_inf_future(GPR_CLOCK_REALTIME), NULL); - if (!event.success) { - zend_throw_exception(spl_ce_LogicException, - "The batch failed for some reason", - 1 TSRMLS_CC); - goto cleanup; - } + grpc_completion_queue_pluck(completion_queue, call->wrapped, + gpr_inf_future(GPR_CLOCK_REALTIME), NULL); for (int i = 0; i < op_num; i++) { switch(ops[i].op) { case GRPC_OP_SEND_INITIAL_METADATA: diff --git a/src/php/tests/interop/interop_client.php b/src/php/tests/interop/interop_client.php index 44e6242c29..376d306da0 100755 --- a/src/php/tests/interop/interop_client.php +++ b/src/php/tests/interop/interop_client.php @@ -271,7 +271,7 @@ function cancelAfterFirstResponse($stub) { } function timeoutOnSleepingServer($stub) { - $call = $stub->FullDuplexCall(array('timeout' => 500000)); + $call = $stub->FullDuplexCall(array('timeout' => 1000)); $request = new grpc\testing\StreamingOutputCallRequest(); $request->setResponseType(grpc\testing\PayloadType::COMPRESSABLE); $response_parameters = new grpc\testing\ResponseParameters(); -- GitLab From 711bbe6364d6b49a9959e454889fac5f6c5dc596 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Wed, 19 Aug 2015 12:35:16 -0700 Subject: [PATCH 089/178] Exclude qps_test from tsan runs The TSAN deadlock detector has some problems that prevents this test from running successfully. Issue #2994 has been filed to re-enable these in the future. --- build.json | 3 + templates/tools/run_tests/tests.json.template | 1 + tools/run_tests/run_tests.py | 21 +- tools/run_tests/tests.json | 805 ++++++++++++++++++ 4 files changed, 819 insertions(+), 11 deletions(-) diff --git a/build.json b/build.json index 85457dde86..1693c41019 100644 --- a/build.json +++ b/build.json @@ -2488,6 +2488,9 @@ "gpr", "grpc++_test_config" ], + "exclude_configs": [ + "tsan" + ], "platforms": [ "mac", "linux", diff --git a/templates/tools/run_tests/tests.json.template b/templates/tools/run_tests/tests.json.template index ffbf843235..63046731de 100644 --- a/templates/tools/run_tests/tests.json.template +++ b/templates/tools/run_tests/tests.json.template @@ -6,6 +6,7 @@ ${json.dumps([{"name": tgt.name, "language": tgt.language, "platforms": tgt.platforms, "ci_platforms": tgt.ci_platforms, + "exclude_configs": tgt.get("exclude_configs", []), "flaky": tgt.flaky} for tgt in targets if tgt.get('run', True) and tgt.build == 'test'], diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index eaba699ddf..beb43438e5 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -123,20 +123,19 @@ class CLanguage(object): def __init__(self, make_target, test_lang): self.make_target = make_target self.platform = platform_string() - with open('tools/run_tests/tests.json') as f: - js = json.load(f) - self.binaries = [tgt - for tgt in js - if tgt['language'] == test_lang and - platform_string() in tgt['platforms']] - self.ci_binaries = [tgt - for tgt in js - if tgt['language'] == test_lang and - platform_string() in tgt['ci_platforms']] + self.test_lang = test_lang def test_specs(self, config, travis): out = [] - for target in (self.ci_binaries if travis else self.binaries): + with open('tools/run_tests/tests.json') as f: + js = json.load(f) + platforms_str = 'ci_platforms' if travis else 'platforms' + binaries = [tgt + for tgt in js + if tgt['language'] == self.test_lang and + config.build_config not in tgt['exclude_configs'] and + platform_string() in tgt[platforms_str]] + for target in binaries: if travis and target['flaky']: continue if self.platform == 'windows': diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index c25c0f3d7d..0fa9f72792 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -8,6 +8,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "alarm_heap_test", @@ -25,6 +26,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "alarm_list_test", @@ -42,6 +44,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "alarm_test", @@ -59,6 +62,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "alpn_test", @@ -76,6 +80,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "bin_encoder_test", @@ -93,6 +98,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_status_conversion_test", @@ -110,6 +116,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_stream_encoder_test", @@ -127,6 +134,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_stream_map_test", @@ -144,6 +152,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "compression_test", @@ -160,6 +169,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "dualstack_socket_test", @@ -175,6 +185,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "fd_conservation_posix_test", @@ -190,6 +201,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "fd_posix_test", @@ -205,6 +217,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "fling_stream_test", @@ -220,6 +233,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "fling_test", @@ -236,6 +250,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_cmdline_test", @@ -253,6 +268,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_env_test", @@ -270,6 +286,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_file_test", @@ -287,6 +304,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_histogram_test", @@ -304,6 +322,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_host_port_test", @@ -321,6 +340,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_log_test", @@ -338,6 +358,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_slice_buffer_test", @@ -355,6 +376,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_slice_test", @@ -372,6 +394,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_stack_lockfree_test", @@ -389,6 +412,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_string_test", @@ -406,6 +430,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_sync_test", @@ -423,6 +448,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_thd_test", @@ -440,6 +466,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_time_test", @@ -457,6 +484,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_tls_test", @@ -474,6 +502,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "gpr_useful_test", @@ -491,6 +520,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "grpc_auth_context_test", @@ -508,6 +538,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "grpc_base64_test", @@ -525,6 +556,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "grpc_byte_buffer_reader_test", @@ -542,6 +574,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "grpc_channel_stack_test", @@ -559,6 +592,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "grpc_completion_queue_test", @@ -576,6 +610,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "grpc_credentials_test", @@ -593,6 +628,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "grpc_json_token_test", @@ -610,6 +646,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "grpc_jwt_verifier_test", @@ -627,6 +664,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "grpc_security_connector_test", @@ -644,6 +682,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "grpc_stream_op_test", @@ -661,6 +700,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "hpack_parser_test", @@ -678,6 +718,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "hpack_table_test", @@ -695,6 +736,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "httpcli_format_request_test", @@ -712,6 +754,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "httpcli_parser_test", @@ -728,6 +771,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "httpcli_test", @@ -744,6 +788,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "json_rewrite_test", @@ -761,6 +806,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "json_test", @@ -778,6 +824,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "lame_client_test", @@ -795,6 +842,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "message_compress_test", @@ -812,6 +860,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "multi_init_test", @@ -829,6 +878,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "multiple_server_queues_test", @@ -846,6 +896,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "murmur_hash_test", @@ -863,6 +914,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "no_server_test", @@ -880,6 +932,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "resolve_address_test", @@ -897,6 +950,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "secure_endpoint_test", @@ -914,6 +968,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "sockaddr_utils_test", @@ -930,6 +985,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "tcp_client_posix_test", @@ -945,6 +1001,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "tcp_posix_test", @@ -960,6 +1017,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "tcp_server_posix_test", @@ -976,6 +1034,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "time_averaged_stats_test", @@ -993,6 +1052,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "timeout_encoding_test", @@ -1010,6 +1070,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "timers_test", @@ -1027,6 +1088,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "transport_metadata_test", @@ -1044,6 +1106,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "transport_security_test", @@ -1058,6 +1121,7 @@ "ci_platforms": [ "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "udp_server_test", @@ -1072,6 +1136,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "uri_parser_test", @@ -1089,6 +1154,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "async_end2end_test", @@ -1105,6 +1171,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "async_streaming_ping_pong_test", @@ -1120,6 +1187,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "async_unary_ping_pong_test", @@ -1136,6 +1204,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "auth_property_iterator_test", @@ -1153,6 +1222,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "channel_arguments_test", @@ -1170,6 +1240,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "cli_call_test", @@ -1186,6 +1257,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "client_crash_test", @@ -1202,6 +1274,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "credentials_test", @@ -1219,6 +1292,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "cxx_byte_buffer_test", @@ -1236,6 +1310,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "cxx_slice_test", @@ -1253,6 +1328,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "cxx_time_test", @@ -1270,6 +1346,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "dynamic_thread_pool_test", @@ -1287,6 +1364,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "end2end_test", @@ -1304,6 +1382,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "fixed_size_thread_pool_test", @@ -1321,6 +1400,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "generic_end2end_test", @@ -1337,6 +1417,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "interop_test", @@ -1353,6 +1434,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "mock_test", @@ -1369,6 +1451,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "qps_openloop_test", @@ -1384,6 +1467,9 @@ "mac", "posix" ], + "exclude_configs": [ + "tsan" + ], "flaky": false, "language": "c++", "name": "qps_test", @@ -1400,6 +1486,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "secure_auth_context_test", @@ -1416,6 +1503,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "server_crash_test", @@ -1432,6 +1520,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "status_test", @@ -1448,6 +1537,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "sync_streaming_ping_pong_test", @@ -1463,6 +1553,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "sync_unary_ping_pong_test", @@ -1479,6 +1570,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "thread_stress_test", @@ -1496,6 +1588,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "zookeeper_test", @@ -1512,6 +1605,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_bad_hostname_test", @@ -1528,6 +1622,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_cancel_after_accept_test", @@ -1544,6 +1639,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_cancel_after_accept_and_writes_closed_test", @@ -1560,6 +1656,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_cancel_after_invoke_test", @@ -1576,6 +1673,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_cancel_before_invoke_test", @@ -1592,6 +1690,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_cancel_in_a_vacuum_test", @@ -1608,6 +1707,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_census_simple_request_test", @@ -1624,6 +1724,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_channel_connectivity_test", @@ -1640,6 +1741,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_default_host_test", @@ -1656,6 +1758,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_disappearing_server_test", @@ -1672,6 +1775,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test", @@ -1688,6 +1792,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_early_server_shutdown_finishes_tags_test", @@ -1704,6 +1809,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_empty_batch_test", @@ -1720,6 +1826,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_graceful_server_shutdown_test", @@ -1736,6 +1843,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_invoke_large_request_test", @@ -1752,6 +1860,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_max_concurrent_streams_test", @@ -1768,6 +1877,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_max_message_length_test", @@ -1784,6 +1894,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_no_op_test", @@ -1800,6 +1911,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_ping_pong_streaming_test", @@ -1816,6 +1928,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_registered_call_test", @@ -1832,6 +1945,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_response_with_binary_metadata_and_payload_test", @@ -1848,6 +1962,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_response_with_metadata_and_payload_test", @@ -1864,6 +1979,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_response_with_payload_test", @@ -1880,6 +1996,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_response_with_payload_and_call_creds_test", @@ -1896,6 +2013,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test", @@ -1912,6 +2030,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_with_compressed_payload_test", @@ -1928,6 +2047,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_with_flags_test", @@ -1944,6 +2064,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_with_large_metadata_test", @@ -1960,6 +2081,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_request_with_payload_test", @@ -1976,6 +2098,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_server_finishes_request_test", @@ -1992,6 +2115,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_simple_delayed_request_test", @@ -2008,6 +2132,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_simple_request_test", @@ -2024,6 +2149,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fake_security_simple_request_with_high_initial_sequence_number_test", @@ -2041,6 +2167,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_bad_hostname_test", @@ -2058,6 +2185,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_accept_test", @@ -2075,6 +2203,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_accept_and_writes_closed_test", @@ -2092,6 +2221,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_invoke_test", @@ -2109,6 +2239,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_before_invoke_test", @@ -2126,6 +2257,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_in_a_vacuum_test", @@ -2143,6 +2275,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_census_simple_request_test", @@ -2160,6 +2293,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_channel_connectivity_test", @@ -2177,6 +2311,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_default_host_test", @@ -2194,6 +2329,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_disappearing_server_test", @@ -2211,6 +2347,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test", @@ -2228,6 +2365,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_early_server_shutdown_finishes_tags_test", @@ -2245,6 +2383,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_empty_batch_test", @@ -2262,6 +2401,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_graceful_server_shutdown_test", @@ -2279,6 +2419,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_invoke_large_request_test", @@ -2296,6 +2437,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_max_concurrent_streams_test", @@ -2313,6 +2455,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_max_message_length_test", @@ -2330,6 +2473,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_no_op_test", @@ -2347,6 +2491,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_ping_pong_streaming_test", @@ -2364,6 +2509,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_registered_call_test", @@ -2381,6 +2527,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_binary_metadata_and_payload_test", @@ -2398,6 +2545,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_metadata_and_payload_test", @@ -2415,6 +2563,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_payload_test", @@ -2432,6 +2581,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_payload_and_call_creds_test", @@ -2449,6 +2599,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test", @@ -2466,6 +2617,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_compressed_payload_test", @@ -2483,6 +2635,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_flags_test", @@ -2500,6 +2653,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_large_metadata_test", @@ -2517,6 +2671,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_payload_test", @@ -2534,6 +2689,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_server_finishes_request_test", @@ -2551,6 +2707,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_delayed_request_test", @@ -2568,6 +2725,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_request_test", @@ -2585,6 +2743,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_request_with_high_initial_sequence_number_test", @@ -2602,6 +2761,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_bad_hostname_test", @@ -2619,6 +2779,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_accept_test", @@ -2636,6 +2797,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test", @@ -2653,6 +2815,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_invoke_test", @@ -2670,6 +2833,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_before_invoke_test", @@ -2687,6 +2851,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_in_a_vacuum_test", @@ -2704,6 +2869,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_census_simple_request_test", @@ -2721,6 +2887,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_channel_connectivity_test", @@ -2738,6 +2905,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_default_host_test", @@ -2755,6 +2923,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_disappearing_server_test", @@ -2772,6 +2941,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test", @@ -2789,6 +2959,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test", @@ -2806,6 +2977,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_empty_batch_test", @@ -2823,6 +2995,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_graceful_server_shutdown_test", @@ -2840,6 +3013,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_invoke_large_request_test", @@ -2857,6 +3031,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_max_concurrent_streams_test", @@ -2874,6 +3049,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_max_message_length_test", @@ -2891,6 +3067,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_no_op_test", @@ -2908,6 +3085,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_ping_pong_streaming_test", @@ -2925,6 +3103,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_registered_call_test", @@ -2942,6 +3121,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test", @@ -2959,6 +3139,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_metadata_and_payload_test", @@ -2976,6 +3157,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_payload_test", @@ -2993,6 +3175,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test", @@ -3010,6 +3193,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test", @@ -3027,6 +3211,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_compressed_payload_test", @@ -3044,6 +3229,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_flags_test", @@ -3061,6 +3247,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_large_metadata_test", @@ -3078,6 +3265,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_payload_test", @@ -3095,6 +3283,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_server_finishes_request_test", @@ -3112,6 +3301,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_delayed_request_test", @@ -3129,6 +3319,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_request_test", @@ -3146,6 +3337,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test", @@ -3162,6 +3354,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_bad_hostname_test", @@ -3177,6 +3370,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_accept_test", @@ -3192,6 +3386,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test", @@ -3207,6 +3402,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_invoke_test", @@ -3222,6 +3418,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_before_invoke_test", @@ -3237,6 +3434,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test", @@ -3252,6 +3450,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_census_simple_request_test", @@ -3267,6 +3466,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_channel_connectivity_test", @@ -3282,6 +3482,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_disappearing_server_test", @@ -3297,6 +3498,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test", @@ -3312,6 +3514,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test", @@ -3327,6 +3530,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_empty_batch_test", @@ -3342,6 +3546,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_graceful_server_shutdown_test", @@ -3357,6 +3562,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_invoke_large_request_test", @@ -3372,6 +3578,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_max_concurrent_streams_test", @@ -3387,6 +3594,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_max_message_length_test", @@ -3402,6 +3610,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_no_op_test", @@ -3417,6 +3626,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_ping_pong_streaming_test", @@ -3432,6 +3642,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_registered_call_test", @@ -3447,6 +3658,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test", @@ -3462,6 +3674,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test", @@ -3477,6 +3690,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_payload_test", @@ -3492,6 +3706,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test", @@ -3507,6 +3722,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test", @@ -3522,6 +3738,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_compressed_payload_test", @@ -3537,6 +3754,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_flags_test", @@ -3552,6 +3770,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_large_metadata_test", @@ -3567,6 +3786,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_payload_test", @@ -3582,6 +3802,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_server_finishes_request_test", @@ -3597,6 +3818,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_delayed_request_test", @@ -3612,6 +3834,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_request_test", @@ -3627,6 +3850,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test", @@ -3640,6 +3864,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_bad_hostname_test", @@ -3651,6 +3876,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_test", @@ -3662,6 +3888,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_test", @@ -3673,6 +3900,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_test", @@ -3684,6 +3912,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_test", @@ -3695,6 +3924,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_test", @@ -3706,6 +3936,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_census_simple_request_test", @@ -3717,6 +3948,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_channel_connectivity_test", @@ -3728,6 +3960,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_disappearing_server_test", @@ -3739,6 +3972,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_test", @@ -3750,6 +3984,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_test", @@ -3761,6 +3996,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_empty_batch_test", @@ -3772,6 +4008,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_test", @@ -3783,6 +4020,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_invoke_large_request_test", @@ -3794,6 +4032,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_test", @@ -3805,6 +4044,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_max_message_length_test", @@ -3816,6 +4056,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_no_op_test", @@ -3827,6 +4068,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_test", @@ -3838,6 +4080,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_registered_call_test", @@ -3849,6 +4092,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_test", @@ -3860,6 +4104,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_test", @@ -3871,6 +4116,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_test", @@ -3882,6 +4128,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_and_call_creds_test", @@ -3893,6 +4140,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_test", @@ -3904,6 +4152,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_test", @@ -3915,6 +4164,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_flags_test", @@ -3926,6 +4176,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_test", @@ -3937,6 +4188,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_payload_test", @@ -3948,6 +4200,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_server_finishes_request_test", @@ -3959,6 +4212,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_test", @@ -3970,6 +4224,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_request_test", @@ -3981,6 +4236,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_test", @@ -3992,6 +4248,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_bad_hostname_test", @@ -4003,6 +4260,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_accept_test", @@ -4014,6 +4272,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_test", @@ -4025,6 +4284,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_invoke_test", @@ -4036,6 +4296,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_before_invoke_test", @@ -4047,6 +4308,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_in_a_vacuum_test", @@ -4058,6 +4320,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_census_simple_request_test", @@ -4069,6 +4332,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_channel_connectivity_test", @@ -4080,6 +4344,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_default_host_test", @@ -4091,6 +4356,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_disappearing_server_test", @@ -4102,6 +4368,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test", @@ -4113,6 +4380,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_test", @@ -4124,6 +4392,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_empty_batch_test", @@ -4135,6 +4404,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_graceful_server_shutdown_test", @@ -4146,6 +4416,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_invoke_large_request_test", @@ -4157,6 +4428,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_max_concurrent_streams_test", @@ -4168,6 +4440,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_max_message_length_test", @@ -4179,6 +4452,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_no_op_test", @@ -4190,6 +4464,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_ping_pong_streaming_test", @@ -4201,6 +4476,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_registered_call_test", @@ -4212,6 +4488,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test", @@ -4223,6 +4500,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_test", @@ -4234,6 +4512,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_payload_test", @@ -4245,6 +4524,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_payload_and_call_creds_test", @@ -4256,6 +4536,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test", @@ -4267,6 +4548,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_compressed_payload_test", @@ -4278,6 +4560,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_flags_test", @@ -4289,6 +4572,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_large_metadata_test", @@ -4300,6 +4584,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_payload_test", @@ -4311,6 +4596,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_server_finishes_request_test", @@ -4322,6 +4608,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_delayed_request_test", @@ -4333,6 +4620,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_request_test", @@ -4344,6 +4632,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test", @@ -4357,6 +4646,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_bad_hostname_test", @@ -4373,6 +4663,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_accept_test", @@ -4389,6 +4680,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test", @@ -4405,6 +4697,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_invoke_test", @@ -4421,6 +4714,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_before_invoke_test", @@ -4437,6 +4731,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test", @@ -4453,6 +4748,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_census_simple_request_test", @@ -4469,6 +4765,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_default_host_test", @@ -4485,6 +4782,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_disappearing_server_test", @@ -4501,6 +4799,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test", @@ -4517,6 +4816,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test", @@ -4533,6 +4833,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_empty_batch_test", @@ -4549,6 +4850,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_graceful_server_shutdown_test", @@ -4565,6 +4867,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_invoke_large_request_test", @@ -4581,6 +4884,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_max_message_length_test", @@ -4597,6 +4901,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_no_op_test", @@ -4613,6 +4918,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_ping_pong_streaming_test", @@ -4629,6 +4935,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_registered_call_test", @@ -4645,6 +4952,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test", @@ -4661,6 +4969,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test", @@ -4677,6 +4986,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_payload_test", @@ -4693,6 +5003,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test", @@ -4709,6 +5020,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test", @@ -4725,6 +5037,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_with_large_metadata_test", @@ -4741,6 +5054,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_with_payload_test", @@ -4757,6 +5071,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_server_finishes_request_test", @@ -4773,6 +5088,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_delayed_request_test", @@ -4789,6 +5105,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_request_test", @@ -4805,6 +5122,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test", @@ -4822,6 +5140,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_bad_hostname_test", @@ -4839,6 +5158,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_cancel_after_accept_test", @@ -4856,6 +5176,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test", @@ -4873,6 +5194,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_cancel_after_invoke_test", @@ -4890,6 +5212,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_cancel_before_invoke_test", @@ -4907,6 +5230,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test", @@ -4924,6 +5248,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_census_simple_request_test", @@ -4941,6 +5266,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_channel_connectivity_test", @@ -4958,6 +5284,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_default_host_test", @@ -4975,6 +5302,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_disappearing_server_test", @@ -4992,6 +5320,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test", @@ -5009,6 +5338,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test", @@ -5026,6 +5356,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_empty_batch_test", @@ -5043,6 +5374,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_graceful_server_shutdown_test", @@ -5060,6 +5392,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_invoke_large_request_test", @@ -5077,6 +5410,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_max_concurrent_streams_test", @@ -5094,6 +5428,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_max_message_length_test", @@ -5111,6 +5446,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_no_op_test", @@ -5128,6 +5464,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_ping_pong_streaming_test", @@ -5145,6 +5482,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_registered_call_test", @@ -5162,6 +5500,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test", @@ -5179,6 +5518,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test", @@ -5196,6 +5536,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_response_with_payload_test", @@ -5213,6 +5554,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test", @@ -5230,6 +5572,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test", @@ -5247,6 +5590,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_with_compressed_payload_test", @@ -5264,6 +5608,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_with_flags_test", @@ -5281,6 +5626,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_with_large_metadata_test", @@ -5298,6 +5644,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_request_with_payload_test", @@ -5315,6 +5662,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_server_finishes_request_test", @@ -5332,6 +5680,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_simple_delayed_request_test", @@ -5349,6 +5698,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_simple_request_test", @@ -5366,6 +5716,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test", @@ -5380,6 +5731,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_bad_hostname_test", @@ -5391,6 +5743,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_test", @@ -5402,6 +5755,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_and_writes_closed_test", @@ -5413,6 +5767,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_cancel_after_invoke_test", @@ -5424,6 +5779,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_cancel_before_invoke_test", @@ -5435,6 +5791,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_cancel_in_a_vacuum_test", @@ -5446,6 +5803,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_census_simple_request_test", @@ -5457,6 +5815,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_channel_connectivity_test", @@ -5468,6 +5827,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_default_host_test", @@ -5479,6 +5839,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_disappearing_server_test", @@ -5490,6 +5851,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test", @@ -5501,6 +5863,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_tags_test", @@ -5512,6 +5875,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_empty_batch_test", @@ -5523,6 +5887,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_graceful_server_shutdown_test", @@ -5534,6 +5899,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_invoke_large_request_test", @@ -5545,6 +5911,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_max_concurrent_streams_test", @@ -5556,6 +5923,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_max_message_length_test", @@ -5567,6 +5935,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_no_op_test", @@ -5578,6 +5947,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_ping_pong_streaming_test", @@ -5589,6 +5959,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_registered_call_test", @@ -5600,6 +5971,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test", @@ -5611,6 +5983,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_metadata_and_payload_test", @@ -5622,6 +5995,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_test", @@ -5633,6 +6007,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_and_call_creds_test", @@ -5644,6 +6019,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test", @@ -5655,6 +6031,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_with_compressed_payload_test", @@ -5666,6 +6043,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_with_flags_test", @@ -5677,6 +6055,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_with_large_metadata_test", @@ -5688,6 +6067,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_request_with_payload_test", @@ -5699,6 +6079,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_server_finishes_request_test", @@ -5710,6 +6091,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_simple_delayed_request_test", @@ -5721,6 +6103,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_simple_request_test", @@ -5732,6 +6115,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test", @@ -5745,6 +6129,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test", @@ -5761,6 +6146,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test", @@ -5777,6 +6163,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test", @@ -5793,6 +6180,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test", @@ -5809,6 +6197,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test", @@ -5825,6 +6214,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test", @@ -5841,6 +6231,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test", @@ -5857,6 +6248,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_default_host_test", @@ -5873,6 +6265,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test", @@ -5889,6 +6282,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test", @@ -5905,6 +6299,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test", @@ -5921,6 +6316,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test", @@ -5937,6 +6333,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test", @@ -5953,6 +6350,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test", @@ -5969,6 +6367,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test", @@ -5985,6 +6384,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_no_op_test", @@ -6001,6 +6401,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test", @@ -6017,6 +6418,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_registered_call_test", @@ -6033,6 +6435,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test", @@ -6049,6 +6452,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test", @@ -6065,6 +6469,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test", @@ -6081,6 +6486,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test", @@ -6097,6 +6503,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test", @@ -6113,6 +6520,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test", @@ -6129,6 +6537,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test", @@ -6145,6 +6554,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test", @@ -6161,6 +6571,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test", @@ -6177,6 +6588,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_simple_request_test", @@ -6193,6 +6605,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test", @@ -6209,6 +6622,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test", @@ -6225,6 +6639,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test", @@ -6241,6 +6656,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test", @@ -6257,6 +6673,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test", @@ -6273,6 +6690,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test", @@ -6289,6 +6707,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test", @@ -6305,6 +6724,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test", @@ -6321,6 +6741,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test", @@ -6337,6 +6758,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_default_host_test", @@ -6353,6 +6775,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test", @@ -6369,6 +6792,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test", @@ -6385,6 +6809,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test", @@ -6401,6 +6826,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test", @@ -6417,6 +6843,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test", @@ -6433,6 +6860,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test", @@ -6449,6 +6877,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test", @@ -6465,6 +6894,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test", @@ -6481,6 +6911,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_no_op_test", @@ -6497,6 +6928,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test", @@ -6513,6 +6945,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test", @@ -6529,6 +6962,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test", @@ -6545,6 +6979,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test", @@ -6561,6 +6996,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test", @@ -6577,6 +7013,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test", @@ -6593,6 +7030,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test", @@ -6609,6 +7047,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test", @@ -6625,6 +7064,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test", @@ -6641,6 +7081,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test", @@ -6657,6 +7098,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test", @@ -6673,6 +7115,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test", @@ -6689,6 +7132,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test", @@ -6705,6 +7149,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test", @@ -6721,6 +7166,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test", @@ -6737,6 +7183,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_bad_hostname_test", @@ -6753,6 +7200,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_accept_test", @@ -6769,6 +7217,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_accept_and_writes_closed_test", @@ -6785,6 +7234,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_invoke_test", @@ -6801,6 +7251,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_before_invoke_test", @@ -6817,6 +7268,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_in_a_vacuum_test", @@ -6833,6 +7285,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_census_simple_request_test", @@ -6849,6 +7302,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test", @@ -6865,6 +7319,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_early_server_shutdown_finishes_tags_test", @@ -6881,6 +7336,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_empty_batch_test", @@ -6897,6 +7353,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_graceful_server_shutdown_test", @@ -6913,6 +7370,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_invoke_large_request_test", @@ -6929,6 +7387,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_max_concurrent_streams_test", @@ -6945,6 +7404,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_max_message_length_test", @@ -6961,6 +7421,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_no_op_test", @@ -6977,6 +7438,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_ping_pong_streaming_test", @@ -6993,6 +7455,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_registered_call_test", @@ -7009,6 +7472,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test", @@ -7025,6 +7489,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_metadata_and_payload_test", @@ -7041,6 +7506,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_payload_test", @@ -7057,6 +7523,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_payload_and_call_creds_test", @@ -7073,6 +7540,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test", @@ -7089,6 +7557,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_compressed_payload_test", @@ -7105,6 +7574,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_flags_test", @@ -7121,6 +7591,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_large_metadata_test", @@ -7137,6 +7608,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_payload_test", @@ -7153,6 +7625,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_server_finishes_request_test", @@ -7169,6 +7642,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_simple_request_test", @@ -7185,6 +7659,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test", @@ -7201,6 +7676,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test", @@ -7217,6 +7693,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test", @@ -7233,6 +7710,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test", @@ -7249,6 +7727,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test", @@ -7265,6 +7744,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test", @@ -7281,6 +7761,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test", @@ -7297,6 +7778,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test", @@ -7313,6 +7795,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test", @@ -7329,6 +7812,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test", @@ -7345,6 +7829,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_empty_batch_test", @@ -7361,6 +7846,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test", @@ -7377,6 +7863,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test", @@ -7393,6 +7880,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test", @@ -7409,6 +7897,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_max_message_length_test", @@ -7425,6 +7914,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_no_op_test", @@ -7441,6 +7931,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test", @@ -7457,6 +7948,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_registered_call_test", @@ -7473,6 +7965,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test", @@ -7489,6 +7982,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test", @@ -7505,6 +7999,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test", @@ -7521,6 +8016,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test", @@ -7537,6 +8033,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test", @@ -7553,6 +8050,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test", @@ -7569,6 +8067,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test", @@ -7585,6 +8084,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test", @@ -7601,6 +8101,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test", @@ -7617,6 +8118,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test", @@ -7633,6 +8135,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_test", @@ -7649,6 +8152,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test", @@ -7666,6 +8170,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_bad_hostname_test", @@ -7683,6 +8188,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test", @@ -7700,6 +8206,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test", @@ -7717,6 +8224,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test", @@ -7734,6 +8242,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test", @@ -7751,6 +8260,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test", @@ -7768,6 +8278,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_census_simple_request_test", @@ -7785,6 +8296,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test", @@ -7802,6 +8314,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test", @@ -7819,6 +8332,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_empty_batch_test", @@ -7836,6 +8350,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test", @@ -7853,6 +8368,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_invoke_large_request_test", @@ -7870,6 +8386,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test", @@ -7887,6 +8404,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_max_message_length_test", @@ -7904,6 +8422,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_no_op_test", @@ -7921,6 +8440,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test", @@ -7938,6 +8458,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_registered_call_test", @@ -7955,6 +8476,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test", @@ -7972,6 +8494,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test", @@ -7989,6 +8512,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test", @@ -8006,6 +8530,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test", @@ -8023,6 +8548,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test", @@ -8040,6 +8566,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test", @@ -8057,6 +8584,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_flags_test", @@ -8074,6 +8602,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test", @@ -8091,6 +8620,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_payload_test", @@ -8108,6 +8638,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_server_finishes_request_test", @@ -8125,6 +8656,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_simple_request_test", @@ -8142,6 +8674,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test", @@ -8159,6 +8692,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_bad_hostname_unsecure_test", @@ -8176,6 +8710,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_accept_unsecure_test", @@ -8193,6 +8728,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test", @@ -8210,6 +8746,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_after_invoke_unsecure_test", @@ -8227,6 +8764,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_before_invoke_unsecure_test", @@ -8244,6 +8782,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_cancel_in_a_vacuum_unsecure_test", @@ -8261,6 +8800,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_census_simple_request_unsecure_test", @@ -8278,6 +8818,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_channel_connectivity_unsecure_test", @@ -8295,6 +8836,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_default_host_unsecure_test", @@ -8312,6 +8854,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_disappearing_server_unsecure_test", @@ -8329,6 +8872,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -8346,6 +8890,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test", @@ -8363,6 +8908,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_empty_batch_unsecure_test", @@ -8380,6 +8926,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_graceful_server_shutdown_unsecure_test", @@ -8397,6 +8944,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_invoke_large_request_unsecure_test", @@ -8414,6 +8962,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_max_concurrent_streams_unsecure_test", @@ -8431,6 +8980,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_max_message_length_unsecure_test", @@ -8448,6 +8998,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_no_op_unsecure_test", @@ -8465,6 +9016,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_ping_pong_streaming_unsecure_test", @@ -8482,6 +9034,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_registered_call_unsecure_test", @@ -8499,6 +9052,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -8516,6 +9070,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test", @@ -8533,6 +9088,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_payload_unsecure_test", @@ -8550,6 +9106,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -8567,6 +9124,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_compressed_payload_unsecure_test", @@ -8584,6 +9142,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_flags_unsecure_test", @@ -8601,6 +9160,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_large_metadata_unsecure_test", @@ -8618,6 +9178,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_request_with_payload_unsecure_test", @@ -8635,6 +9196,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_server_finishes_request_unsecure_test", @@ -8652,6 +9214,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_delayed_request_unsecure_test", @@ -8669,6 +9232,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_request_unsecure_test", @@ -8686,6 +9250,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -8703,6 +9268,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_bad_hostname_unsecure_test", @@ -8720,6 +9286,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_accept_unsecure_test", @@ -8737,6 +9304,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test", @@ -8754,6 +9322,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_after_invoke_unsecure_test", @@ -8771,6 +9340,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_before_invoke_unsecure_test", @@ -8788,6 +9358,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test", @@ -8805,6 +9376,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_census_simple_request_unsecure_test", @@ -8822,6 +9394,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_channel_connectivity_unsecure_test", @@ -8839,6 +9412,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_default_host_unsecure_test", @@ -8856,6 +9430,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_disappearing_server_unsecure_test", @@ -8873,6 +9448,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -8890,6 +9466,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test", @@ -8907,6 +9484,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_empty_batch_unsecure_test", @@ -8924,6 +9502,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test", @@ -8941,6 +9520,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_invoke_large_request_unsecure_test", @@ -8958,6 +9538,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_max_concurrent_streams_unsecure_test", @@ -8975,6 +9556,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_max_message_length_unsecure_test", @@ -8992,6 +9574,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_no_op_unsecure_test", @@ -9009,6 +9592,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_ping_pong_streaming_unsecure_test", @@ -9026,6 +9610,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_registered_call_unsecure_test", @@ -9043,6 +9628,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -9060,6 +9646,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test", @@ -9077,6 +9664,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_payload_unsecure_test", @@ -9094,6 +9682,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -9111,6 +9700,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test", @@ -9128,6 +9718,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_flags_unsecure_test", @@ -9145,6 +9736,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_large_metadata_unsecure_test", @@ -9162,6 +9754,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_request_with_payload_unsecure_test", @@ -9179,6 +9772,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_server_finishes_request_unsecure_test", @@ -9196,6 +9790,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_delayed_request_unsecure_test", @@ -9213,6 +9808,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_request_unsecure_test", @@ -9230,6 +9826,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -9246,6 +9843,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_bad_hostname_unsecure_test", @@ -9261,6 +9859,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test", @@ -9276,6 +9875,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test", @@ -9291,6 +9891,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test", @@ -9306,6 +9907,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test", @@ -9321,6 +9923,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test", @@ -9336,6 +9939,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_census_simple_request_unsecure_test", @@ -9351,6 +9955,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_channel_connectivity_unsecure_test", @@ -9366,6 +9971,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_disappearing_server_unsecure_test", @@ -9381,6 +9987,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -9396,6 +10003,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test", @@ -9411,6 +10019,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_empty_batch_unsecure_test", @@ -9426,6 +10035,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test", @@ -9441,6 +10051,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test", @@ -9456,6 +10067,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test", @@ -9471,6 +10083,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_max_message_length_unsecure_test", @@ -9486,6 +10099,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_no_op_unsecure_test", @@ -9501,6 +10115,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test", @@ -9516,6 +10131,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_registered_call_unsecure_test", @@ -9531,6 +10147,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -9546,6 +10163,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test", @@ -9561,6 +10179,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test", @@ -9576,6 +10195,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -9591,6 +10211,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_compressed_payload_unsecure_test", @@ -9606,6 +10227,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_flags_unsecure_test", @@ -9621,6 +10243,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test", @@ -9636,6 +10259,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_request_with_payload_unsecure_test", @@ -9651,6 +10275,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_server_finishes_request_unsecure_test", @@ -9666,6 +10291,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test", @@ -9681,6 +10307,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_request_unsecure_test", @@ -9696,6 +10323,7 @@ "mac", "posix" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -9709,6 +10337,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_bad_hostname_unsecure_test", @@ -9720,6 +10349,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_unsecure_test", @@ -9731,6 +10361,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_unsecure_test", @@ -9742,6 +10373,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_unsecure_test", @@ -9753,6 +10385,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_unsecure_test", @@ -9764,6 +10397,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_unsecure_test", @@ -9775,6 +10409,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_census_simple_request_unsecure_test", @@ -9786,6 +10421,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_channel_connectivity_unsecure_test", @@ -9797,6 +10433,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_disappearing_server_unsecure_test", @@ -9808,6 +10445,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -9819,6 +10457,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_unsecure_test", @@ -9830,6 +10469,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_empty_batch_unsecure_test", @@ -9841,6 +10481,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_unsecure_test", @@ -9852,6 +10493,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_invoke_large_request_unsecure_test", @@ -9863,6 +10505,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_unsecure_test", @@ -9874,6 +10517,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_max_message_length_unsecure_test", @@ -9885,6 +10529,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_no_op_unsecure_test", @@ -9896,6 +10541,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_unsecure_test", @@ -9907,6 +10553,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_registered_call_unsecure_test", @@ -9918,6 +10565,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -9929,6 +10577,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_unsecure_test", @@ -9940,6 +10589,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_unsecure_test", @@ -9951,6 +10601,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -9962,6 +10613,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_unsecure_test", @@ -9973,6 +10625,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_flags_unsecure_test", @@ -9984,6 +10637,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_unsecure_test", @@ -9995,6 +10649,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_request_with_payload_unsecure_test", @@ -10006,6 +10661,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_server_finishes_request_unsecure_test", @@ -10017,6 +10673,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_unsecure_test", @@ -10028,6 +10685,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_request_unsecure_test", @@ -10039,6 +10697,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -10050,6 +10709,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_bad_hostname_unsecure_test", @@ -10061,6 +10721,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_accept_unsecure_test", @@ -10072,6 +10733,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_unsecure_test", @@ -10083,6 +10745,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_after_invoke_unsecure_test", @@ -10094,6 +10757,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_before_invoke_unsecure_test", @@ -10105,6 +10769,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_cancel_in_a_vacuum_unsecure_test", @@ -10116,6 +10781,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_census_simple_request_unsecure_test", @@ -10127,6 +10793,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_channel_connectivity_unsecure_test", @@ -10138,6 +10805,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_default_host_unsecure_test", @@ -10149,6 +10817,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_disappearing_server_unsecure_test", @@ -10160,6 +10829,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -10171,6 +10841,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_unsecure_test", @@ -10182,6 +10853,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_empty_batch_unsecure_test", @@ -10193,6 +10865,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_graceful_server_shutdown_unsecure_test", @@ -10204,6 +10877,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_invoke_large_request_unsecure_test", @@ -10215,6 +10889,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_max_concurrent_streams_unsecure_test", @@ -10226,6 +10901,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_max_message_length_unsecure_test", @@ -10237,6 +10913,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_no_op_unsecure_test", @@ -10248,6 +10925,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_ping_pong_streaming_unsecure_test", @@ -10259,6 +10937,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_registered_call_unsecure_test", @@ -10270,6 +10949,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -10281,6 +10961,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_unsecure_test", @@ -10292,6 +10973,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_payload_unsecure_test", @@ -10303,6 +10985,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -10314,6 +10997,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_compressed_payload_unsecure_test", @@ -10325,6 +11009,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_flags_unsecure_test", @@ -10336,6 +11021,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_large_metadata_unsecure_test", @@ -10347,6 +11033,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_request_with_payload_unsecure_test", @@ -10358,6 +11045,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_server_finishes_request_unsecure_test", @@ -10369,6 +11057,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_delayed_request_unsecure_test", @@ -10380,6 +11069,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_request_unsecure_test", @@ -10391,6 +11081,7 @@ "ci_platforms": [ "linux" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -10404,6 +11095,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_bad_hostname_unsecure_test", @@ -10420,6 +11112,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test", @@ -10436,6 +11129,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test", @@ -10452,6 +11146,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test", @@ -10468,6 +11163,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test", @@ -10484,6 +11180,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test", @@ -10500,6 +11197,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_census_simple_request_unsecure_test", @@ -10516,6 +11214,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_default_host_unsecure_test", @@ -10532,6 +11231,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_disappearing_server_unsecure_test", @@ -10548,6 +11248,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -10564,6 +11265,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test", @@ -10580,6 +11282,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_empty_batch_unsecure_test", @@ -10596,6 +11299,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test", @@ -10612,6 +11316,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test", @@ -10628,6 +11333,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_max_message_length_unsecure_test", @@ -10644,6 +11350,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_no_op_unsecure_test", @@ -10660,6 +11367,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test", @@ -10676,6 +11384,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_registered_call_unsecure_test", @@ -10692,6 +11401,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -10708,6 +11418,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test", @@ -10724,6 +11435,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test", @@ -10740,6 +11452,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -10756,6 +11469,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test", @@ -10772,6 +11486,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_request_with_payload_unsecure_test", @@ -10788,6 +11503,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test", @@ -10804,6 +11520,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test", @@ -10820,6 +11537,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_request_unsecure_test", @@ -10836,6 +11554,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -10852,6 +11571,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_bad_hostname_unsecure_test", @@ -10868,6 +11588,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_accept_unsecure_test", @@ -10884,6 +11605,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test", @@ -10900,6 +11622,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_after_invoke_unsecure_test", @@ -10916,6 +11639,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_before_invoke_unsecure_test", @@ -10932,6 +11656,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test", @@ -10948,6 +11673,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_census_simple_request_unsecure_test", @@ -10964,6 +11690,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -10980,6 +11707,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test", @@ -10996,6 +11724,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_empty_batch_unsecure_test", @@ -11012,6 +11741,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_graceful_server_shutdown_unsecure_test", @@ -11028,6 +11758,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_invoke_large_request_unsecure_test", @@ -11044,6 +11775,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_max_concurrent_streams_unsecure_test", @@ -11060,6 +11792,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_max_message_length_unsecure_test", @@ -11076,6 +11809,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_no_op_unsecure_test", @@ -11092,6 +11826,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_ping_pong_streaming_unsecure_test", @@ -11108,6 +11843,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_registered_call_unsecure_test", @@ -11124,6 +11860,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -11140,6 +11877,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test", @@ -11156,6 +11894,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_payload_unsecure_test", @@ -11172,6 +11911,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -11188,6 +11928,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_compressed_payload_unsecure_test", @@ -11204,6 +11945,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_flags_unsecure_test", @@ -11220,6 +11962,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_large_metadata_unsecure_test", @@ -11236,6 +11979,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_request_with_payload_unsecure_test", @@ -11252,6 +11996,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_server_finishes_request_unsecure_test", @@ -11268,6 +12013,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_simple_request_unsecure_test", @@ -11284,6 +12030,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -11300,6 +12047,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test", @@ -11316,6 +12064,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test", @@ -11332,6 +12081,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test", @@ -11348,6 +12098,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test", @@ -11364,6 +12115,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test", @@ -11380,6 +12132,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test", @@ -11396,6 +12149,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test", @@ -11412,6 +12166,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -11428,6 +12183,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test", @@ -11444,6 +12200,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test", @@ -11460,6 +12217,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test", @@ -11476,6 +12234,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test", @@ -11492,6 +12251,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test", @@ -11508,6 +12268,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test", @@ -11524,6 +12285,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test", @@ -11540,6 +12302,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test", @@ -11556,6 +12319,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test", @@ -11572,6 +12336,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -11588,6 +12353,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test", @@ -11604,6 +12370,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test", @@ -11620,6 +12387,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -11636,6 +12404,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test", @@ -11652,6 +12421,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test", @@ -11668,6 +12438,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test", @@ -11684,6 +12455,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test", @@ -11700,6 +12472,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test", @@ -11716,6 +12489,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test", @@ -11732,6 +12506,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -11749,6 +12524,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test", @@ -11766,6 +12542,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test", @@ -11783,6 +12560,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test", @@ -11800,6 +12578,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test", @@ -11817,6 +12596,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test", @@ -11834,6 +12614,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test", @@ -11851,6 +12632,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test", @@ -11868,6 +12650,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test", @@ -11885,6 +12668,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test", @@ -11902,6 +12686,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test", @@ -11919,6 +12704,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test", @@ -11936,6 +12722,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test", @@ -11953,6 +12740,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test", @@ -11970,6 +12758,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test", @@ -11987,6 +12776,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test", @@ -12004,6 +12794,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test", @@ -12021,6 +12812,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test", @@ -12038,6 +12830,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test", @@ -12055,6 +12848,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test", @@ -12072,6 +12866,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test", @@ -12089,6 +12884,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test", @@ -12106,6 +12902,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test", @@ -12123,6 +12920,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test", @@ -12140,6 +12938,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test", @@ -12157,6 +12956,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test", @@ -12174,6 +12974,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test", @@ -12191,6 +12992,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test", @@ -12208,6 +13010,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test", @@ -12225,6 +13028,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "connection_prefix_bad_client_test", @@ -12242,6 +13046,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c", "name": "initial_settings_frame_bad_client_test", -- GitLab From 86d31776a8f37d719ded99986bed80b912c3a9af Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Wed, 19 Aug 2015 12:52:50 -0700 Subject: [PATCH 090/178] Fix syncronous unimplemented methods --- src/cpp/server/server.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index dfc2b303bc..29db0b41c3 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -329,6 +329,15 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) { grpc_server_start(server_); if (!has_generic_service_) { + if (!sync_methods_->empty()) { + unknown_method_.reset(new RpcServiceMethod( + "unknown", RpcMethod::BIDI_STREAMING, new UnknownMethodHandler)); + // Use of emplace_back with just constructor arguments is not accepted + // here + // by gcc-4.4 because it can't match the anonymous nullptr with a proper + // constructor implicitly. Construct the object and use push_back. + sync_methods_->push_back(SyncRequest(unknown_method_.get(), nullptr)); + } for (size_t i = 0; i < num_cqs; i++) { new UnimplementedAsyncRequest(this, cqs[i]); } -- GitLab From f6edf879a6b449c00b59e43b378c81076e081179 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Wed, 19 Aug 2015 12:54:44 -0700 Subject: [PATCH 091/178] metadata polishing --- .../Grpc.Core.Tests/Grpc.Core.Tests.csproj | 1 + src/csharp/Grpc.Core.Tests/MetadataTest.cs | 112 ++++++++++++++++++ src/csharp/Grpc.Core/ClientBase.cs | 3 +- .../Grpc.Core/ContextPropagationToken.cs | 1 - .../Internal/MetadataArraySafeHandle.cs | 5 +- src/csharp/Grpc.Core/Metadata.cs | 112 +++++++++++++++--- .../Grpc.IntegrationTesting/InteropClient.cs | 4 +- 7 files changed, 219 insertions(+), 19 deletions(-) create mode 100644 src/csharp/Grpc.Core.Tests/MetadataTest.cs diff --git a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj index d6a8f52570..829effc9a2 100644 --- a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj +++ b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj @@ -82,6 +82,7 @@ <Compile Include="ResponseHeadersTest.cs" /> <Compile Include="CompressionTest.cs" /> <Compile Include="ContextPropagationTest.cs" /> + <Compile Include="MetadataTest.cs" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ItemGroup> diff --git a/src/csharp/Grpc.Core.Tests/MetadataTest.cs b/src/csharp/Grpc.Core.Tests/MetadataTest.cs new file mode 100644 index 0000000000..6f616cd316 --- /dev/null +++ b/src/csharp/Grpc.Core.Tests/MetadataTest.cs @@ -0,0 +1,112 @@ +#region Copyright notice and license + +// 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. + +#endregion + +using System; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Threading; +using System.Threading.Tasks; +using Grpc.Core; +using Grpc.Core.Internal; +using Grpc.Core.Utils; +using NUnit.Framework; + +namespace Grpc.Core.Tests +{ + public class MetadataTest + { + [Test] + public void AsciiEntry() + { + var entry = new Metadata.Entry("ABC", "XYZ"); + Assert.AreEqual("abc", entry.Key); // key is in lowercase. + Assert.AreEqual("XYZ", entry.Value); + CollectionAssert.AreEqual(new[] { (byte)'X', (byte)'Y', (byte)'Z' }, entry.ValueBytes); + + Assert.Throws(typeof(ArgumentException), () => new Metadata.Entry("abc-bin", "xyz")); + } + + [Test] + public void BinaryEntry() + { + var bytes = new byte[] { 1, 2, 3 }; + var entry = new Metadata.Entry("ABC-BIN", bytes); + Assert.AreEqual("abc-bin", entry.Key); // key is in lowercase. + Assert.Throws(typeof(InvalidOperationException), () => { var v = entry.Value; }); + CollectionAssert.AreEqual(bytes, entry.ValueBytes); + + Assert.Throws(typeof(ArgumentException), () => new Metadata.Entry("abc", bytes)); + } + + [Test] + public void Entry_ConstructionPreconditions() + { + Assert.Throws(typeof(ArgumentNullException), () => new Metadata.Entry(null, "xyz")); + Assert.Throws(typeof(ArgumentNullException), () => new Metadata.Entry("abc", (string)null)); + Assert.Throws(typeof(ArgumentNullException), () => new Metadata.Entry("abc-bin", (byte[])null)); + } + + [Test] + public void Entry_Immutable() + { + var origBytes = new byte[] { 1, 2, 3 }; + var bytes = new byte[] { 1, 2, 3 }; + var entry = new Metadata.Entry("ABC-BIN", bytes); + bytes[0] = 255; // changing the array passed to constructor should have any effect. + CollectionAssert.AreEqual(origBytes, entry.ValueBytes); + + entry.ValueBytes[0] = 255; + CollectionAssert.AreEqual(origBytes, entry.ValueBytes); + } + + [Test] + public void Entry_CreateUnsafe_Ascii() + { + var bytes = new byte[] { (byte)'X', (byte)'y' }; + var entry = Metadata.Entry.CreateUnsafe("abc", bytes); + Assert.AreEqual("abc", entry.Key); + Assert.AreEqual("Xy", entry.Value); + CollectionAssert.AreEqual(bytes, entry.ValueBytes); + } + + [Test] + public void Entry_CreateUnsafe_Binary() + { + var bytes = new byte[] { 1, 2, 3 }; + var entry = Metadata.Entry.CreateUnsafe("abc-bin", bytes); + Assert.AreEqual("abc-bin", entry.Key); + Assert.Throws(typeof(InvalidOperationException), () => { var v = entry.Value; }); + CollectionAssert.AreEqual(bytes, entry.ValueBytes); + } + } +} diff --git a/src/csharp/Grpc.Core/ClientBase.cs b/src/csharp/Grpc.Core/ClientBase.cs index 7bc100ca60..903449439b 100644 --- a/src/csharp/Grpc.Core/ClientBase.cs +++ b/src/csharp/Grpc.Core/ClientBase.cs @@ -119,7 +119,8 @@ namespace Grpc.Core internal static string GetAuthUriBase(string target) { var match = ChannelTargetPattern.Match(target); - if (!match.Success) { + if (!match.Success) + { return null; } return "https://" + match.Groups[2].Value + "/"; diff --git a/src/csharp/Grpc.Core/ContextPropagationToken.cs b/src/csharp/Grpc.Core/ContextPropagationToken.cs index 2e4bfc9e47..a5bf1b5a70 100644 --- a/src/csharp/Grpc.Core/ContextPropagationToken.cs +++ b/src/csharp/Grpc.Core/ContextPropagationToken.cs @@ -132,7 +132,6 @@ namespace Grpc.Core bool propagateDeadline; bool propagateCancellation; - /// <summary> /// Creates new context propagation options. /// </summary> diff --git a/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs b/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs index 427c16fac6..83994f6762 100644 --- a/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs @@ -70,7 +70,8 @@ namespace Grpc.Core.Internal var metadataArray = grpcsharp_metadata_array_create(new UIntPtr((ulong)metadata.Count)); for (int i = 0; i < metadata.Count; i++) { - grpcsharp_metadata_array_add(metadataArray, metadata[i].Key, metadata[i].ValueBytes, new UIntPtr((ulong)metadata[i].ValueBytes.Length)); + var valueBytes = metadata[i].GetSerializedValueUnsafe(); + grpcsharp_metadata_array_add(metadataArray, metadata[i].Key, valueBytes, new UIntPtr((ulong)valueBytes.Length)); } return metadataArray; } @@ -94,7 +95,7 @@ namespace Grpc.Core.Internal string key = Marshal.PtrToStringAnsi(grpcsharp_metadata_array_get_key(metadataArray, index)); var bytes = new byte[grpcsharp_metadata_array_get_value_length(metadataArray, index).ToUInt64()]; Marshal.Copy(grpcsharp_metadata_array_get_value(metadataArray, index), bytes, 0, bytes.Length); - metadata.Add(new Metadata.Entry(key, bytes)); + metadata.Add(Metadata.Entry.CreateUnsafe(key, bytes)); } return metadata; } diff --git a/src/csharp/Grpc.Core/Metadata.cs b/src/csharp/Grpc.Core/Metadata.cs index 9db2abf46e..a589b50caa 100644 --- a/src/csharp/Grpc.Core/Metadata.cs +++ b/src/csharp/Grpc.Core/Metadata.cs @@ -45,6 +45,11 @@ namespace Grpc.Core /// </summary> public sealed class Metadata : IList<Metadata.Entry> { + /// <summary> + /// All binary headers should have this suffix. + /// </summary> + public const string BinaryHeaderSuffix = "-bin"; + /// <summary> /// An read-only instance of metadata containing no entries. /// </summary> @@ -181,23 +186,49 @@ namespace Grpc.Core private static readonly Encoding Encoding = Encoding.ASCII; readonly string key; - string value; - byte[] valueBytes; + readonly string value; + readonly byte[] valueBytes; + + private Entry(string key, string value, byte[] valueBytes) + { + this.key = key; + this.value = value; + this.valueBytes = valueBytes; + } + /// <summary> + /// Initializes a new instance of the <see cref="Grpc.Core.Metadata+Entry"/> struct with a binary value. + /// </summary> + /// <param name="key">Metadata key, needs to have suffix indicating a binary valued metadata entry.</param> + /// <param name="valueBytes">Value bytes.</param> public Entry(string key, byte[] valueBytes) { - this.key = Preconditions.CheckNotNull(key, "key"); + this.key = NormalizeKey(key); + Preconditions.CheckArgument(this.key.EndsWith(BinaryHeaderSuffix), + "Key for binary valued metadata entry needs to have suffix indicating binary value."); this.value = null; - this.valueBytes = Preconditions.CheckNotNull(valueBytes, "valueBytes"); + Preconditions.CheckNotNull(valueBytes, "valueBytes"); + this.valueBytes = new byte[valueBytes.Length]; + Buffer.BlockCopy(valueBytes, 0, this.valueBytes, 0, valueBytes.Length); // defensive copy to guarantee immutability } + /// <summary> + /// Initializes a new instance of the <see cref="Grpc.Core.Metadata+Entry"/> struct holding an ASCII value. + /// </summary> + /// <param name="key">Metadata key, must not use suffix indicating a binary valued metadata entry.</param> + /// <param name="value">Value string. Only ASCII characters are allowed.</param> public Entry(string key, string value) { - this.key = Preconditions.CheckNotNull(key, "key"); + this.key = NormalizeKey(key); + Preconditions.CheckArgument(!this.key.EndsWith(BinaryHeaderSuffix), + "Key for ASCII valued metadata entry cannot have suffix indicating binary value."); this.value = Preconditions.CheckNotNull(value, "value"); this.valueBytes = null; } + /// <summary> + /// Gets the metadata entry key. + /// </summary> public string Key { get @@ -206,33 +237,86 @@ namespace Grpc.Core } } + /// <summary> + /// Gets the binary value of this metadata entry. + /// </summary> public byte[] ValueBytes { get { if (valueBytes == null) { - valueBytes = Encoding.GetBytes(value); + return Encoding.GetBytes(value); } - return valueBytes; + + // defensive copy to guarantee immutability + var bytes = new byte[valueBytes.Length]; + Buffer.BlockCopy(valueBytes, 0, bytes, 0, valueBytes.Length); + return bytes; } } + /// <summary> + /// Gets the string value of this metadata entry. + /// </summary> public string Value { get { - if (value == null) - { - value = Encoding.GetString(valueBytes); - } - return value; + Preconditions.CheckState(!IsBinary, "Cannot access string value of a binary metadata entry"); + return value ?? Encoding.GetString(valueBytes); } } - + + /// <summary> + /// Returns <c>true</c> if this entry is a binary-value entry. + /// </summary> + public bool IsBinary + { + get + { + return value == null; + } + } + + /// <summary> + /// Returns a <see cref="System.String"/> that represents the current <see cref="Grpc.Core.Metadata+Entry"/>. + /// </summary> public override string ToString() { - return string.Format("[Entry: key={0}, value={1}]", Key, Value); + if (IsBinary) + { + return string.Format("[Entry: key={0}, valueBytes={1}]", key, valueBytes); + } + + return string.Format("[Entry: key={0}, value={1}]", key, value); + } + + /// <summary> + /// Gets the serialized value for this entry. For binary metadata entries, this leaks + /// the internal <c>valueBytes</c> byte array and caller must not change contents of it. + /// </summary> + internal byte[] GetSerializedValueUnsafe() + { + return valueBytes ?? Encoding.GetBytes(value); + } + + /// <summary> + /// Creates a binary value or ascii value metadata entry from data received from the native layer. + /// We trust C core to give us well-formed data, so we don't perform any checks or defensive copying. + /// </summary> + internal static Entry CreateUnsafe(string key, byte[] valueBytes) + { + if (key.EndsWith(BinaryHeaderSuffix)) + { + return new Entry(key, null, valueBytes); + } + return new Entry(key, Encoding.GetString(valueBytes), null); + } + + private static string NormalizeKey(string key) + { + return Preconditions.CheckNotNull(key, "key").ToLower(); } } } diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs index f4b0a1028f..423da2801e 100644 --- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs +++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs @@ -37,13 +37,15 @@ using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; +using Google.Apis.Auth.OAuth2; using Google.ProtocolBuffers; + using grpc.testing; using Grpc.Auth; using Grpc.Core; using Grpc.Core.Utils; + using NUnit.Framework; -using Google.Apis.Auth.OAuth2; namespace Grpc.IntegrationTesting { -- GitLab From 249fc8048dddf7a7ee52ad777b6e3bc575ba0cc5 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Wed, 19 Aug 2015 14:16:16 -0700 Subject: [PATCH 092/178] improving the tests --- src/csharp/Grpc.Core.Tests/MetadataTest.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/csharp/Grpc.Core.Tests/MetadataTest.cs b/src/csharp/Grpc.Core.Tests/MetadataTest.cs index 6f616cd316..c00f945d6a 100644 --- a/src/csharp/Grpc.Core.Tests/MetadataTest.cs +++ b/src/csharp/Grpc.Core.Tests/MetadataTest.cs @@ -49,11 +49,14 @@ namespace Grpc.Core.Tests public void AsciiEntry() { var entry = new Metadata.Entry("ABC", "XYZ"); + Assert.IsFalse(entry.IsBinary); Assert.AreEqual("abc", entry.Key); // key is in lowercase. Assert.AreEqual("XYZ", entry.Value); CollectionAssert.AreEqual(new[] { (byte)'X', (byte)'Y', (byte)'Z' }, entry.ValueBytes); Assert.Throws(typeof(ArgumentException), () => new Metadata.Entry("abc-bin", "xyz")); + + Assert.AreEqual("[Entry: key=abc, value=XYZ]", entry.ToString()); } [Test] @@ -61,11 +64,14 @@ namespace Grpc.Core.Tests { var bytes = new byte[] { 1, 2, 3 }; var entry = new Metadata.Entry("ABC-BIN", bytes); + Assert.IsTrue(entry.IsBinary); Assert.AreEqual("abc-bin", entry.Key); // key is in lowercase. Assert.Throws(typeof(InvalidOperationException), () => { var v = entry.Value; }); CollectionAssert.AreEqual(bytes, entry.ValueBytes); Assert.Throws(typeof(ArgumentException), () => new Metadata.Entry("abc", bytes)); + + Assert.AreEqual("[Entry: key=abc-bin, valueBytes=System.Byte[]]", entry.ToString()); } [Test] @@ -94,6 +100,7 @@ namespace Grpc.Core.Tests { var bytes = new byte[] { (byte)'X', (byte)'y' }; var entry = Metadata.Entry.CreateUnsafe("abc", bytes); + Assert.IsFalse(entry.IsBinary); Assert.AreEqual("abc", entry.Key); Assert.AreEqual("Xy", entry.Value); CollectionAssert.AreEqual(bytes, entry.ValueBytes); @@ -104,6 +111,7 @@ namespace Grpc.Core.Tests { var bytes = new byte[] { 1, 2, 3 }; var entry = Metadata.Entry.CreateUnsafe("abc-bin", bytes); + Assert.IsTrue(entry.IsBinary); Assert.AreEqual("abc-bin", entry.Key); Assert.Throws(typeof(InvalidOperationException), () => { var v = entry.Value; }); CollectionAssert.AreEqual(bytes, entry.ValueBytes); -- GitLab From 478fb00a2cec11d7178ca6f1605f920e1c4142a1 Mon Sep 17 00:00:00 2001 From: Stanley Cheung <stanleycheung@google.com> Date: Wed, 19 Aug 2015 14:25:00 -0700 Subject: [PATCH 093/178] php: expose per-call host override option --- src/php/ext/grpc/call.c | 27 +++++++++++++------ src/php/ext/grpc/channel.c | 22 ++------------- .../tests/unit_tests/SecureEndToEndTest.php | 14 ++++++---- 3 files changed, 30 insertions(+), 33 deletions(-) diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c index 4e40dc43ce..5ca6a7d43c 100644 --- a/src/php/ext/grpc/call.c +++ b/src/php/ext/grpc/call.c @@ -216,13 +216,18 @@ PHP_METHOD(Call, __construct) { char *method; int method_len; zval *deadline_obj; - /* "OsO" == 1 Object, 1 string, 1 Object */ - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "OsO", &channel_obj, - grpc_ce_channel, &method, &method_len, - &deadline_obj, grpc_ce_timeval) == FAILURE) { + char *host_override = NULL; + int host_override_len = 0; + /* "OsO|s" == 1 Object, 1 string, 1 Object, 1 optional string */ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "OsO|s", + &channel_obj, grpc_ce_channel, + &method, &method_len, + &deadline_obj, grpc_ce_timeval, + &host_override, &host_override_len) + == FAILURE) { zend_throw_exception( spl_ce_InvalidArgumentException, - "Call expects a Channel, a String, and a Timeval", + "Call expects a Channel, a String, a Timeval and an optional String", 1 TSRMLS_CC); return; } @@ -239,9 +244,15 @@ PHP_METHOD(Call, __construct) { wrapped_grpc_timeval *deadline = (wrapped_grpc_timeval *)zend_object_store_get_object( deadline_obj TSRMLS_CC); - call->wrapped = grpc_channel_create_call( - channel->wrapped, NULL, GRPC_PROPAGATE_DEFAULTS, completion_queue, method, - channel->target, deadline->wrapped, NULL); + if (host_override != NULL) { + call->wrapped = grpc_channel_create_call( + channel->wrapped, NULL, GRPC_PROPAGATE_DEFAULTS, completion_queue, method, + host_override, deadline->wrapped, NULL); + } else { + call->wrapped = grpc_channel_create_call( + channel->wrapped, NULL, GRPC_PROPAGATE_DEFAULTS, completion_queue, method, + NULL, deadline->wrapped, NULL); + } } /** diff --git a/src/php/ext/grpc/channel.c b/src/php/ext/grpc/channel.c index f8ce04d902..138af0de22 100644 --- a/src/php/ext/grpc/channel.c +++ b/src/php/ext/grpc/channel.c @@ -141,9 +141,6 @@ PHP_METHOD(Channel, __construct) { HashTable *array_hash; zval **creds_obj = NULL; wrapped_grpc_credentials *creds = NULL; - zval **override_obj; - char *override; - int override_len; /* "s|a" == 1 string, 1 optional array */ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|a", &target, &target_length, &args_array) == FAILURE) { @@ -151,8 +148,6 @@ PHP_METHOD(Channel, __construct) { "Channel expects a string and an array", 1 TSRMLS_CC); return; } - override = target; - override_len = target_length; if (args_array == NULL) { channel->wrapped = grpc_insecure_channel_create(target, NULL, NULL); } else { @@ -169,19 +164,6 @@ PHP_METHOD(Channel, __construct) { *creds_obj TSRMLS_CC); zend_hash_del(array_hash, "credentials", 12); } - if (zend_hash_find(array_hash, GRPC_SSL_TARGET_NAME_OVERRIDE_ARG, - sizeof(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG), - (void **)&override_obj) == SUCCESS) { - if (Z_TYPE_PP(override_obj) != IS_STRING) { - zend_throw_exception(spl_ce_InvalidArgumentException, - GRPC_SSL_TARGET_NAME_OVERRIDE_ARG - " must be a string", - 1 TSRMLS_CC); - return; - } - override = Z_STRVAL_PP(override_obj); - override_len = Z_STRLEN_PP(override_obj); - } php_grpc_read_args_array(args_array, &args); if (creds == NULL) { channel->wrapped = grpc_insecure_channel_create(target, &args, NULL); @@ -192,8 +174,8 @@ PHP_METHOD(Channel, __construct) { } efree(args.args); } - channel->target = ecalloc(override_len + 1, sizeof(char)); - memcpy(channel->target, override, override_len); + channel->target = ecalloc(target_length + 1, sizeof(char)); + memcpy(channel->target, target, target_length); } /** diff --git a/src/php/tests/unit_tests/SecureEndToEndTest.php b/src/php/tests/unit_tests/SecureEndToEndTest.php index f91c006da5..60341b983d 100755 --- a/src/php/tests/unit_tests/SecureEndToEndTest.php +++ b/src/php/tests/unit_tests/SecureEndToEndTest.php @@ -40,13 +40,15 @@ class SecureEndToEndTest extends PHPUnit_Framework_TestCase{ file_get_contents(dirname(__FILE__) . '/../data/server1.key'), file_get_contents(dirname(__FILE__) . '/../data/server1.pem')); $this->server = new Grpc\Server(); - $port = $this->server->addSecureHttp2Port('0.0.0.0:0', + $this->port = $this->server->addSecureHttp2Port('0.0.0.0:0', $server_credentials); $this->server->start(); + $this->host_override = 'foo.test.google.fr'; $this->channel = new Grpc\Channel( - 'localhost:' . $port, + 'localhost:' . $this->port, [ - 'grpc.ssl_target_name_override' => 'foo.test.google.fr', + 'grpc.ssl_target_name_override' => $this->host_override, + 'grpc.default_authority' => $this->host_override, 'credentials' => $credentials ]); } @@ -61,7 +63,8 @@ class SecureEndToEndTest extends PHPUnit_Framework_TestCase{ $status_text = 'xyz'; $call = new Grpc\Call($this->channel, 'dummy_method', - $deadline); + $deadline, + $this->host_override); $event = $call->startBatch([ Grpc\OP_SEND_INITIAL_METADATA => [], @@ -112,7 +115,8 @@ class SecureEndToEndTest extends PHPUnit_Framework_TestCase{ $call = new Grpc\Call($this->channel, 'dummy_method', - $deadline); + $deadline, + $this->host_override); $event = $call->startBatch([ Grpc\OP_SEND_INITIAL_METADATA => [], -- GitLab From dbeb1cd90c8f4596b2682f6c6d0182b25287391f Mon Sep 17 00:00:00 2001 From: Stanley Cheung <stanleycheung@google.com> Date: Wed, 19 Aug 2015 08:20:06 -0700 Subject: [PATCH 094/178] update debian install instructions --- INSTALL | 16 ++++++++++--- src/node/README.md | 6 ++--- src/php/README.md | 46 +++++++++++++++++++++++++++++------- src/python/README.md | 6 ++--- src/python/grpcio/README.rst | 3 +-- src/ruby/README.md | 12 ++++------ 6 files changed, 60 insertions(+), 29 deletions(-) diff --git a/INSTALL b/INSTALL index 808166dfed..5c76de8fb4 100644 --- a/INSTALL +++ b/INSTALL @@ -15,19 +15,29 @@ wiki pages: $ make $ sudo make install +OR, on Linux (Debian): + + $ sudo apt-get install libgrpc-dev + + Note: you will need to add the Debian 'unstable' distribution to your source + file first. Example: Add the following line to your `/etc/apt/sources.list` + file. + + deb http://ftp.us.debian.org/debian unstable main contrib non-free + You don't need anything else than GNU Make, gcc and autotools. Under a Debian or Ubuntu system, this should boil down to the following packages: - $ apt-get install build-essential autoconf libtool + $ apt-get install build-essential autoconf libtool Building the python wrapper requires the following: - # apt-get install python-all-dev python-virtualenv + $ apt-get install python-all-dev python-virtualenv If you want to install in a different directory than the default /usr/lib, you can override it on the command line: - # make install prefix=/opt + $ make install prefix=/opt ******************************* diff --git a/src/node/README.md b/src/node/README.md index 7d3d8c7fa1..61f4a01edd 100644 --- a/src/node/README.md +++ b/src/node/README.md @@ -5,11 +5,10 @@ Alpha : Ready for early adopters ## PREREQUISITES - `node`: This requires `node` to be installed. If you instead have the `nodejs` executable on Debian, you should install the [`nodejs-legacy`](https://packages.debian.org/sid/nodejs-legacy) package. -- [homebrew][] on Mac OS X, [linuxbrew][] on Linux. These simplify the installation of the gRPC C core. +- [homebrew][] on Mac OS X. These simplify the installation of the gRPC C core. ## INSTALLATION -On Mac OS X, install [homebrew][]. On Linux, install [linuxbrew][]. -Run the following command to install gRPC Node.js. +On Mac OS X, install [homebrew][]. Run the following command to install gRPC Node.js. ```sh $ curl -fsSL https://goo.gl/getgrpc | bash -s nodejs ``` @@ -88,5 +87,4 @@ ServerCredentials An object with factory methods for creating credential objects for servers. [homebrew]:http://brew.sh -[linuxbrew]:https://github.com/Homebrew/linuxbrew#installation [gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install diff --git a/src/php/README.md b/src/php/README.md index 1804606e09..b40a0d4178 100644 --- a/src/php/README.md +++ b/src/php/README.md @@ -7,17 +7,17 @@ This directory contains source code for PHP implementation of gRPC layered on sh Alpha : Ready for early adopters -## ENVIRONMENT +## Environment Prerequisite: PHP 5.5 or later, `phpunit`, `pecl` -Linux: +**Linux:** ```sh $ sudo apt-get install php5 php5-dev phpunit php-pear ``` -OS X: +**Mac OS X:** ```sh $ curl https://phar.phpunit.de/phpunit.phar -o phpunit.phar @@ -28,10 +28,39 @@ $ curl -O http://pear.php.net/go-pear.phar $ sudo php -d detect_unicode=0 go-pear.phar ``` -## Build from Homebrew +## Quick Install -On Mac OS X, install [homebrew][]. On Linux, install [linuxbrew][]. Run the following command to -install gRPC. +**Linux (Debian):** + +Add [debian unstable][] (sid) to your `sources.list` file. Example: + +```sh +echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ +sudo tee -a /etc/apt/sources.list +``` + +Install the gRPC debian package + +```sh +sudo apt-get update +sudo apt-get install libgrpc-dev +``` + +Install the gRPC PHP extension + +```sh +sudo pecl install grpc-alpha +``` + +**Mac OS X:** + +Install [homebrew][]. Example: + +```sh +ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" +``` + +Install the gRPC core library and the PHP extension in one step ```sh $ curl -fsSL https://goo.gl/getgrpc | bash -s php @@ -39,6 +68,7 @@ $ curl -fsSL https://goo.gl/getgrpc | bash -s php This will download and run the [gRPC install script][] and compile the gRPC PHP extension. + ## Build from Source Clone this repository @@ -71,7 +101,7 @@ $ sudo make install Install the gRPC PHP extension ```sh -$ sudo pecl install grpc +$ sudo pecl install grpc-alpha ``` OR @@ -140,6 +170,6 @@ $ ./bin/run_gen_code_test.sh ``` [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/src/node/examples +[debian unstable]:https://www.debian.org/releases/sid/ diff --git a/src/python/README.md b/src/python/README.md index 2beb3a913a..2a8ae3c604 100644 --- a/src/python/README.md +++ b/src/python/README.md @@ -9,12 +9,11 @@ Alpha : Ready for early adopters PREREQUISITES ------------- - Python 2.7, virtualenv, pip -- [homebrew][] on Mac OS X, [linuxbrew][] on Linux. These simplify the installation of the gRPC C core. +- [homebrew][] on Mac OS X. These simplify the installation of the gRPC C core. INSTALLATION ------------- -On Mac OS X, install [homebrew][]. On Linux, install [linuxbrew][]. -Run the following command to install gRPC Python. +On Mac OS X, install [homebrew][]. Run the following command to install gRPC Python. ```sh $ curl -fsSL https://goo.gl/getgrpc | bash -s python ``` @@ -60,7 +59,6 @@ $ ../../tools/distrib/python/submit.py ``` [homebrew]:http://brew.sh -[linuxbrew]:https://github.com/Homebrew/linuxbrew#installation [gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install [Quick Start]:http://www.grpc.io/docs/tutorials/basic/python.html [detailed example]:http://www.grpc.io/docs/installation/python.html diff --git a/src/python/grpcio/README.rst b/src/python/grpcio/README.rst index 00bdecf56f..c7b5a3bde4 100644 --- a/src/python/grpcio/README.rst +++ b/src/python/grpcio/README.rst @@ -6,7 +6,7 @@ Package for GRPC Python. Dependencies ------------ -Ensure you have installed the gRPC core. On Mac OS X, install homebrew_. On Linux, install linuxbrew_. +Ensure you have installed the gRPC core. On Mac OS X, install homebrew_. Run the following command to install gRPC Python. :: @@ -19,5 +19,4 @@ Otherwise, `install from source`_ .. _`install from source`: https://github.com/grpc/grpc/blob/master/src/python/README.md#building-from-source .. _homebrew: http://brew.sh -.. _linuxbrew: https://github.com/Homebrew/linuxbrew#installation .. _`gRPC install script`: https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install diff --git a/src/ruby/README.md b/src/ruby/README.md index 4b657c0bd4..dd6671bb66 100644 --- a/src/ruby/README.md +++ b/src/ruby/README.md @@ -12,12 +12,11 @@ PREREQUISITES ------------- - Ruby 2.x. The gRPC API uses keyword args. -- [homebrew][] on Mac OS X, [linuxbrew][] on Linux. These simplify the installation of the gRPC C core. +- [homebrew][] on Mac OS X. These simplify the installation of the gRPC C core. INSTALLATION --------------- -On Mac OS X, install [homebrew][]. On Linux, install [linuxbrew][]. -Run the following command to install gRPC Ruby. +On Mac OS X, install [homebrew][]. Run the following command to install gRPC Ruby. ```sh $ curl -fsSL https://goo.gl/getgrpc | bash -s ruby ``` @@ -26,11 +25,9 @@ This will download and run the [gRPC install script][], then install the latest BUILD FROM SOURCE --------------------- - Clone this repository -- Build the gRPC C core -E.g, from the root of the gRPC [Git repository](https://github.com/google/grpc) +- Install the gRPC core library. Please refer to the [INSTALL](https://github.com/grpc/grpc/blob/master/INSTALL) file for more instructions. ```sh -$ cd ../.. -$ make && sudo make install +$ sudo apt-get install libgrpc-dev ``` - Install Ruby 2.x. Consider doing this with [RVM](http://rvm.io), it's a nice way of controlling @@ -77,7 +74,6 @@ Directory structure is the layout for [ruby extensions][] GRPC.logger.info("Answer: #{resp.inspect}") ``` [homebrew]:http://brew.sh -[linuxbrew]:https://github.com/Homebrew/linuxbrew#installation [gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install [ruby extensions]:http://guides.rubygems.org/gems-with-extensions/ [rubydoc]: http://www.rubydoc.info/gems/grpc -- GitLab From a79a896d4cc12d4ee594e37afee65fdb30f5d274 Mon Sep 17 00:00:00 2001 From: Stanley Cheung <stanleycheung@google.com> Date: Wed, 19 Aug 2015 10:43:28 -0700 Subject: [PATCH 095/178] update installation instructions, review feedback --- INSTALL | 24 ++++++++++++++---------- src/node/README.md | 22 +++++++++++++++++++++- src/python/README.md | 22 +++++++++++++++++++++- src/ruby/README.md | 26 +++++++++++++++++++++----- 4 files changed, 77 insertions(+), 17 deletions(-) diff --git a/INSTALL b/INSTALL index 5c76de8fb4..b4a53bbba1 100644 --- a/INSTALL +++ b/INSTALL @@ -9,21 +9,25 @@ wiki pages: * If you are in a hurry * ************************* - $ git clone https://github.com/grpc/grpc.git - $ cd grpc - $ git submodule update --init - $ make - $ sudo make install +On Linux (Debian): + + Note: you will need to add the Debian 'unstable' distribution to your source + file first. + + Add the following line to your `/etc/apt/sources.list` file: -OR, on Linux (Debian): + deb http://ftp.us.debian.org/debian unstable main contrib non-free + Install the gRPC library $ sudo apt-get install libgrpc-dev - Note: you will need to add the Debian 'unstable' distribution to your source - file first. Example: Add the following line to your `/etc/apt/sources.list` - file. +OR - deb http://ftp.us.debian.org/debian unstable main contrib non-free + $ git clone https://github.com/grpc/grpc.git + $ cd grpc + $ git submodule update --init + $ make + $ sudo make install You don't need anything else than GNU Make, gcc and autotools. Under a Debian or Ubuntu system, this should boil down to the following packages: diff --git a/src/node/README.md b/src/node/README.md index 61f4a01edd..08ccedf7d8 100644 --- a/src/node/README.md +++ b/src/node/README.md @@ -8,7 +8,26 @@ Alpha : Ready for early adopters - [homebrew][] on Mac OS X. These simplify the installation of the gRPC C core. ## INSTALLATION -On Mac OS X, install [homebrew][]. Run the following command to install gRPC Node.js. + +**Linux (Debian):** + +Add [debian unstable][] (sid) to your `sources.list` file. Example: + +```sh +echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ +sudo tee -a /etc/apt/sources.list +``` + +Install the gRPC debian package + +```sh +sudo apt-get update +sudo apt-get install libgrpc-dev +``` + +**Mac OS X** + +Install [homebrew][]. Run the following command to install gRPC Node.js. ```sh $ curl -fsSL https://goo.gl/getgrpc | bash -s nodejs ``` @@ -88,3 +107,4 @@ An object with factory methods for creating credential objects for servers. [homebrew]:http://brew.sh [gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install +[debian unstable]:https://www.debian.org/releases/sid/ diff --git a/src/python/README.md b/src/python/README.md index 2a8ae3c604..b3b2f303d4 100644 --- a/src/python/README.md +++ b/src/python/README.md @@ -13,7 +13,26 @@ PREREQUISITES INSTALLATION ------------- -On Mac OS X, install [homebrew][]. Run the following command to install gRPC Python. + +**Linux (Debian):** + +Add [debian unstable][] (sid) to your `sources.list` file. Example: + +```sh +echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ +sudo tee -a /etc/apt/sources.list +``` + +Install the gRPC debian package + +```sh +sudo apt-get update +sudo apt-get install libgrpc-dev +``` + +**Mac OS X** + +Install [homebrew][]. Run the following command to install gRPC Python. ```sh $ curl -fsSL https://goo.gl/getgrpc | bash -s python ``` @@ -62,3 +81,4 @@ $ ../../tools/distrib/python/submit.py [gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install [Quick Start]:http://www.grpc.io/docs/tutorials/basic/python.html [detailed example]:http://www.grpc.io/docs/installation/python.html +[debian unstable]:https://www.debian.org/releases/sid/ diff --git a/src/ruby/README.md b/src/ruby/README.md index dd6671bb66..979fb1a70b 100644 --- a/src/ruby/README.md +++ b/src/ruby/README.md @@ -16,7 +16,26 @@ PREREQUISITES INSTALLATION --------------- -On Mac OS X, install [homebrew][]. Run the following command to install gRPC Ruby. + +**Linux (Debian):** + +Add [debian unstable][] (sid) to your `sources.list` file. Example: + +```sh +echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ +sudo tee -a /etc/apt/sources.list +``` + +Install the gRPC debian package + +```sh +sudo apt-get update +sudo apt-get install libgrpc-dev +``` + +**Mac OS X** + +Install [homebrew][]. Run the following command to install gRPC Ruby. ```sh $ curl -fsSL https://goo.gl/getgrpc | bash -s ruby ``` @@ -25,10 +44,6 @@ This will download and run the [gRPC install script][], then install the latest BUILD FROM SOURCE --------------------- - Clone this repository -- Install the gRPC core library. Please refer to the [INSTALL](https://github.com/grpc/grpc/blob/master/INSTALL) file for more instructions. -```sh -$ sudo apt-get install libgrpc-dev -``` - Install Ruby 2.x. Consider doing this with [RVM](http://rvm.io), it's a nice way of controlling the exact ruby version that's used. @@ -78,3 +93,4 @@ Directory structure is the layout for [ruby extensions][] [ruby extensions]:http://guides.rubygems.org/gems-with-extensions/ [rubydoc]: http://www.rubydoc.info/gems/grpc [grpc.io]: http://www.grpc.io/docs/installation/ruby.html +[debian unstable]:https://www.debian.org/releases/sid/ -- GitLab From c2fdfcf0cdc47827f0ae4be80e5e2b5c77e0a508 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Wed, 19 Aug 2015 14:57:19 -0700 Subject: [PATCH 096/178] Modified server SSL certs to allow multiple pairs and force_client_auth flag --- src/node/ext/server_credentials.cc | 63 +++++++++++++++++++++++++----- src/node/interop/interop_server.js | 4 +- src/node/test/server_test.js | 4 +- 3 files changed, 58 insertions(+), 13 deletions(-) diff --git a/src/node/ext/server_credentials.cc b/src/node/ext/server_credentials.cc index 1b8e7b43fb..6e17197e16 100644 --- a/src/node/ext/server_credentials.cc +++ b/src/node/ext/server_credentials.cc @@ -41,6 +41,7 @@ namespace grpc { namespace node { +using v8::Array; using v8::Exception; using v8::External; using v8::Function; @@ -52,6 +53,7 @@ using v8::Local; using v8::Object; using v8::ObjectTemplate; using v8::Persistent; +using v8::String; using v8::Value; NanCallback *ServerCredentials::constructor; @@ -122,25 +124,66 @@ NAN_METHOD(ServerCredentials::CreateSsl) { // TODO: have the node API support multiple key/cert pairs. NanScope(); char *root_certs = NULL; - grpc_ssl_pem_key_cert_pair key_cert_pair; if (::node::Buffer::HasInstance(args[0])) { root_certs = ::node::Buffer::Data(args[0]); } else if (!(args[0]->IsNull() || args[0]->IsUndefined())) { return NanThrowTypeError( "createSSl's first argument must be a Buffer if provided"); } - if (!::node::Buffer::HasInstance(args[1])) { - return NanThrowTypeError("createSsl's second argument must be a Buffer"); + if (!args[1]->IsArray()) { + return NanThrowTypeError( + "createSsl's second argument must be a list of objects"); + } + int force_client_auth = 0; + if (args[2]->IsBoolean()) { + force_client_auth = (int)args[2]->BooleanValue(); + } else if (!(args[2]->IsUndefined() || args[2]->IsNull())) { + return NanThrowTypeError( + "createSsl's third argument must be a boolean if provided"); } - key_cert_pair.private_key = ::node::Buffer::Data(args[1]); - if (!::node::Buffer::HasInstance(args[2])) { - return NanThrowTypeError("createSsl's third argument must be a Buffer"); + Handle<Array> pair_list = Local<Array>::Cast(args[1]); + uint32_t key_cert_pair_count = pair_list->Length(); + grpc_ssl_pem_key_cert_pair *key_cert_pairs = new grpc_ssl_pem_key_cert_pair[ + key_cert_pair_count]; + + Handle<String> key_key = NanNew("private_key"); + Handle<String> cert_key = NanNew("cert_chain"); + + for(uint32_t i = 0; i < key_cert_pair_count; i++) { + if (!pair_list->Get(i)->IsObject()) { + delete key_cert_pairs; + return NanThrowTypeError("Key/cert pairs must be objects"); + } + Handle<Object> pair_obj = pair_list->Get(i)->ToObject(); + if (!pair_obj->HasOwnProperty(key_key)) { + delete key_cert_pairs; + return NanThrowTypeError( + "Key/cert pairs must have a private_key and a cert_chain"); + } + if (!pair_obj->HasOwnProperty(cert_key)) { + delete key_cert_pairs; + return NanThrowTypeError( + "Key/cert pairs must have a private_key and a cert_chain"); + } + if (!::node::Buffer::HasInstance(pair_obj->Get(key_key))) { + delete key_cert_pairs; + return NanThrowTypeError("private_key must be a Buffer"); + } + if (!::node::Buffer::HasInstance(pair_obj->Get(cert_key))) { + delete key_cert_pairs; + return NanThrowTypeError("cert_chain must be a Buffer"); + } + key_cert_pairs[i].private_key = ::node::Buffer::Data( + pair_obj->Get(key_key)); + key_cert_pairs[i].cert_chain = ::node::Buffer::Data( + pair_obj->Get(cert_key)); } - key_cert_pair.cert_chain = ::node::Buffer::Data(args[2]); - // TODO Add a force_client_auth parameter and pass it as the last parameter - // here. grpc_server_credentials *creds = - grpc_ssl_server_credentials_create(root_certs, &key_cert_pair, 1, 0); + grpc_ssl_server_credentials_create(root_certs, + key_cert_pairs, + key_cert_pair_count, + force_client_auth); + delete key_cert_pairs; if (creds == NULL) { NanReturnNull(); } diff --git a/src/node/interop/interop_server.js b/src/node/interop/interop_server.js index 1242a0f939..09d594d150 100644 --- a/src/node/interop/interop_server.js +++ b/src/node/interop/interop_server.js @@ -169,8 +169,8 @@ function getServer(port, tls) { var key_data = fs.readFileSync(key_path); var pem_data = fs.readFileSync(pem_path); server_creds = grpc.ServerCredentials.createSsl(null, - key_data, - pem_data); + {private_key: key_data, + cert_chain: pem_data}); } else { server_creds = grpc.ServerCredentials.createInsecure(); } diff --git a/src/node/test/server_test.js b/src/node/test/server_test.js index 20c9a07ffa..3d2f55041f 100644 --- a/src/node/test/server_test.js +++ b/src/node/test/server_test.js @@ -70,7 +70,9 @@ describe('server', function() { var pem_path = path.join(__dirname, '../test/data/server1.pem'); var key_data = fs.readFileSync(key_path); var pem_data = fs.readFileSync(pem_path); - var creds = grpc.ServerCredentials.createSsl(null, key_data, pem_data); + var creds = grpc.ServerCredentials.createSsl(null, + {private_key: key_data, + cert_chain: pem_data}); assert.doesNotThrow(function() { port = server.addHttp2Port('0.0.0.0:0', creds); }); -- GitLab From fa266cadeb2486c831c91f90ba9c27e987697af8 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Wed, 19 Aug 2015 14:59:11 -0700 Subject: [PATCH 097/178] Stop dereferencing an optional parameter without checking it --- src/node/src/client.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/node/src/client.js b/src/node/src/client.js index 48fe0dd3b7..7b7eae51d2 100644 --- a/src/node/src/client.js +++ b/src/node/src/client.js @@ -280,7 +280,9 @@ function makeUnaryRequestFunction(method, serialize, deserialize) { } var client_batch = {}; var message = serialize(argument); - message.grpcWriteFlags = options.flags; + if (options) { + message.grpcWriteFlags = options.flags; + } client_batch[grpc.opType.SEND_INITIAL_METADATA] = metadata; client_batch[grpc.opType.SEND_MESSAGE] = message; client_batch[grpc.opType.SEND_CLOSE_FROM_CLIENT] = true; @@ -416,7 +418,9 @@ function makeServerStreamRequestFunction(method, serialize, deserialize) { } var start_batch = {}; var message = serialize(argument); - message.grpcWriteFlags = options.flags; + if (options) { + message.grpcWriteFlags = options.flags; + } start_batch[grpc.opType.SEND_INITIAL_METADATA] = metadata; start_batch[grpc.opType.RECV_INITIAL_METADATA] = true; start_batch[grpc.opType.SEND_MESSAGE] = message; -- GitLab From 6b3737d4a7db49a6dc043bed11d915b1bb485dab Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Wed, 19 Aug 2015 15:02:15 -0700 Subject: [PATCH 098/178] Fixed tests --- src/node/interop/interop_server.js | 4 ++-- src/node/test/server_test.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/node/interop/interop_server.js b/src/node/interop/interop_server.js index 09d594d150..99155e9958 100644 --- a/src/node/interop/interop_server.js +++ b/src/node/interop/interop_server.js @@ -169,8 +169,8 @@ function getServer(port, tls) { var key_data = fs.readFileSync(key_path); var pem_data = fs.readFileSync(pem_path); server_creds = grpc.ServerCredentials.createSsl(null, - {private_key: key_data, - cert_chain: pem_data}); + [{private_key: key_data, + cert_chain: pem_data}]); } else { server_creds = grpc.ServerCredentials.createInsecure(); } diff --git a/src/node/test/server_test.js b/src/node/test/server_test.js index 3d2f55041f..78bac8da29 100644 --- a/src/node/test/server_test.js +++ b/src/node/test/server_test.js @@ -71,8 +71,8 @@ describe('server', function() { var key_data = fs.readFileSync(key_path); var pem_data = fs.readFileSync(pem_path); var creds = grpc.ServerCredentials.createSsl(null, - {private_key: key_data, - cert_chain: pem_data}); + [{private_key: key_data, + cert_chain: pem_data}]); assert.doesNotThrow(function() { port = server.addHttp2Port('0.0.0.0:0', creds); }); -- GitLab From ddb16a84360b8c1205897b8d954d013cc99c5b43 Mon Sep 17 00:00:00 2001 From: Stanley Cheung <stanleycheung@google.com> Date: Wed, 19 Aug 2015 15:11:51 -0700 Subject: [PATCH 099/178] php: expose per-call host override option, review feedback --- src/php/ext/grpc/call.c | 12 +++--------- src/php/ext/grpc/channel.c | 3 --- src/php/ext/grpc/channel.h | 1 - 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c index 5ca6a7d43c..684b9ed34a 100644 --- a/src/php/ext/grpc/call.c +++ b/src/php/ext/grpc/call.c @@ -244,15 +244,9 @@ PHP_METHOD(Call, __construct) { wrapped_grpc_timeval *deadline = (wrapped_grpc_timeval *)zend_object_store_get_object( deadline_obj TSRMLS_CC); - if (host_override != NULL) { - call->wrapped = grpc_channel_create_call( - channel->wrapped, NULL, GRPC_PROPAGATE_DEFAULTS, completion_queue, method, - host_override, deadline->wrapped, NULL); - } else { - call->wrapped = grpc_channel_create_call( - channel->wrapped, NULL, GRPC_PROPAGATE_DEFAULTS, completion_queue, method, - NULL, deadline->wrapped, NULL); - } + call->wrapped = grpc_channel_create_call( + channel->wrapped, NULL, GRPC_PROPAGATE_DEFAULTS, completion_queue, method, + host_override, deadline->wrapped, NULL); } /** diff --git a/src/php/ext/grpc/channel.c b/src/php/ext/grpc/channel.c index 138af0de22..7a981675de 100644 --- a/src/php/ext/grpc/channel.c +++ b/src/php/ext/grpc/channel.c @@ -64,7 +64,6 @@ void free_wrapped_grpc_channel(void *object TSRMLS_DC) { if (channel->wrapped != NULL) { grpc_channel_destroy(channel->wrapped); } - efree(channel->target); efree(channel); } @@ -174,8 +173,6 @@ PHP_METHOD(Channel, __construct) { } efree(args.args); } - channel->target = ecalloc(target_length + 1, sizeof(char)); - memcpy(channel->target, target, target_length); } /** diff --git a/src/php/ext/grpc/channel.h b/src/php/ext/grpc/channel.h index c13fa4c6d7..78a16ed0c9 100755 --- a/src/php/ext/grpc/channel.h +++ b/src/php/ext/grpc/channel.h @@ -53,7 +53,6 @@ typedef struct wrapped_grpc_channel { zend_object std; grpc_channel *wrapped; - char *target; } wrapped_grpc_channel; /* Initializes the Channel class */ -- GitLab From 2f543f205cdb42e7324974c8ab093e33055e4476 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Wed, 19 Aug 2015 15:14:17 -0700 Subject: [PATCH 100/178] Bug fix. Called c_str on a temp string --- src/cpp/client/channel.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cpp/client/channel.cc b/src/cpp/client/channel.cc index 9695a0f14b..17f31c22cb 100644 --- a/src/cpp/client/channel.cc +++ b/src/cpp/client/channel.cc @@ -71,7 +71,7 @@ Call Channel::CreateCall(const RpcMethod& method, ClientContext* context, } else { const char* host_str = NULL; if (!context->authority().empty()) { - host_str = context->authority().c_str(); + host_str = context->authority_.c_str(); } else if (!host_.empty()) { host_str = host_.c_str(); } -- GitLab From 5fd685556f485103aa7cbae2e6d8305d18f1a659 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 19 Aug 2015 15:59:38 -0700 Subject: [PATCH 101/178] Moved methods' impl to header for simplicity --- test/cpp/interop/client_helper.cc | 14 -------------- test/cpp/interop/client_helper.h | 14 +++++++++++--- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/test/cpp/interop/client_helper.cc b/test/cpp/interop/client_helper.cc index b8a222c54a..da5627de95 100644 --- a/test/cpp/interop/client_helper.cc +++ b/test/cpp/interop/client_helper.cc @@ -52,7 +52,6 @@ #include "test/core/security/oauth2_utils.h" #include "test/cpp/util/create_test_channel.h" -#include "src/core/surface/call.h" #include "src/cpp/client/secure_credentials.h" DECLARE_bool(enable_ssl); @@ -141,18 +140,5 @@ std::shared_ptr<ChannelInterface> CreateChannelForTestCase( } } -InteropClientContextInspector::InteropClientContextInspector( - const ::grpc::ClientContext& context) - : context_(context) {} - -grpc_compression_algorithm -InteropClientContextInspector::GetCallCompressionAlgorithm() const { - return grpc_call_get_compression_algorithm(context_.call_); -} - -gpr_uint32 InteropClientContextInspector::GetMessageFlags() const { - return grpc_call_get_message_flags(context_.call_); -} - } // namespace testing } // namespace grpc diff --git a/test/cpp/interop/client_helper.h b/test/cpp/interop/client_helper.h index 000374ae8e..edc69e90ac 100644 --- a/test/cpp/interop/client_helper.h +++ b/test/cpp/interop/client_helper.h @@ -39,6 +39,8 @@ #include <grpc++/config.h> #include <grpc++/channel_interface.h> +#include "src/core/surface/call.h" + namespace grpc { namespace testing { @@ -51,11 +53,17 @@ std::shared_ptr<ChannelInterface> CreateChannelForTestCase( class InteropClientContextInspector { public: - InteropClientContextInspector(const ::grpc::ClientContext& context); + InteropClientContextInspector(const ::grpc::ClientContext& context) + : context_(context) {} // Inspector methods, able to peek inside ClientContext, follow. - grpc_compression_algorithm GetCallCompressionAlgorithm() const; - gpr_uint32 GetMessageFlags() const; + grpc_compression_algorithm GetCallCompressionAlgorithm() const { + return grpc_call_get_compression_algorithm(context_.call_); + } + + gpr_uint32 GetMessageFlags() const { + return grpc_call_get_message_flags(context_.call_); + } private: const ::grpc::ClientContext& context_; -- GitLab From 5329e4bd3f7c5580b67a784c64a7aacbd5cb3549 Mon Sep 17 00:00:00 2001 From: Stanley Cheung <stanleycheung@google.com> Date: Wed, 19 Aug 2015 15:59:59 -0700 Subject: [PATCH 102/178] update installation instructions, review feedback --- INSTALL | 17 +++++++++-------- src/node/README.md | 4 ++-- src/php/README.md | 4 ++-- src/python/README.md | 14 +++++++------- src/ruby/README.md | 4 ++-- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/INSTALL b/INSTALL index b4a53bbba1..d183fceb9a 100644 --- a/INSTALL +++ b/INSTALL @@ -11,15 +11,16 @@ wiki pages: On Linux (Debian): - Note: you will need to add the Debian 'unstable' distribution to your source + Note: you will need to add the Debian 'unstable' distribution to your sources file first. Add the following line to your `/etc/apt/sources.list` file: - deb http://ftp.us.debian.org/debian unstable main contrib non-free + deb http://ftp.us.debian.org/debian unstable main contrib non-free - Install the gRPC library - $ sudo apt-get install libgrpc-dev + Install the gRPC library: + + $ [sudo] apt-get install libgrpc-dev OR @@ -27,21 +28,21 @@ OR $ cd grpc $ git submodule update --init $ make - $ sudo make install + $ [sudo] make install You don't need anything else than GNU Make, gcc and autotools. Under a Debian or Ubuntu system, this should boil down to the following packages: - $ apt-get install build-essential autoconf libtool + $ [sudo] apt-get install build-essential autoconf libtool Building the python wrapper requires the following: - $ apt-get install python-all-dev python-virtualenv + $ [sudo] apt-get install python-all-dev python-virtualenv If you want to install in a different directory than the default /usr/lib, you can override it on the command line: - $ make install prefix=/opt + $ [sudo] make install prefix=/opt ******************************* diff --git a/src/node/README.md b/src/node/README.md index 08ccedf7d8..a945295ff3 100644 --- a/src/node/README.md +++ b/src/node/README.md @@ -11,7 +11,7 @@ Alpha : Ready for early adopters **Linux (Debian):** -Add [debian unstable][] (sid) to your `sources.list` file. Example: +Add [Debian unstable][] to your `sources.list` file. Example: ```sh echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ @@ -107,4 +107,4 @@ An object with factory methods for creating credential objects for servers. [homebrew]:http://brew.sh [gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install -[debian unstable]:https://www.debian.org/releases/sid/ +[Debian unstable]:https://www.debian.org/releases/sid/ diff --git a/src/php/README.md b/src/php/README.md index b40a0d4178..01c4db61ae 100644 --- a/src/php/README.md +++ b/src/php/README.md @@ -32,7 +32,7 @@ $ sudo php -d detect_unicode=0 go-pear.phar **Linux (Debian):** -Add [debian unstable][] (sid) to your `sources.list` file. Example: +Add [Debian unstable][] to your `sources.list` file. Example: ```sh echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ @@ -172,4 +172,4 @@ $ ./bin/run_gen_code_test.sh [homebrew]:http://brew.sh [gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install [Node]:https://github.com/grpc/grpc/tree/master/src/node/examples -[debian unstable]:https://www.debian.org/releases/sid/ +[Debian unstable]:https://www.debian.org/releases/sid/ diff --git a/src/python/README.md b/src/python/README.md index b3b2f303d4..a7afd581b2 100644 --- a/src/python/README.md +++ b/src/python/README.md @@ -16,7 +16,7 @@ INSTALLATION **Linux (Debian):** -Add [debian unstable][] (sid) to your `sources.list` file. Example: +Add [Debian unstable][] to your `sources.list` file. Example: ```sh echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ @@ -30,6 +30,11 @@ sudo apt-get update sudo apt-get install libgrpc-dev ``` +Install the gRPC Python module +```sh +sudo pip install grpcio +``` + **Mac OS X** Install [homebrew][]. Run the following command to install gRPC Python. @@ -45,11 +50,6 @@ Please read our online documentation for a [Quick Start][] and a [detailed examp BUILDING FROM SOURCE --------------------- - Clone this repository -- Build the gRPC core from the root of the - [gRPC Git repository](https://github.com/grpc/grpc) -``` -$ make shared_c static_c -``` - Use build_python.sh to build the Python code and install it into a virtual environment ``` @@ -81,4 +81,4 @@ $ ../../tools/distrib/python/submit.py [gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install [Quick Start]:http://www.grpc.io/docs/tutorials/basic/python.html [detailed example]:http://www.grpc.io/docs/installation/python.html -[debian unstable]:https://www.debian.org/releases/sid/ +[Debian unstable]:https://www.debian.org/releases/sid/ diff --git a/src/ruby/README.md b/src/ruby/README.md index 979fb1a70b..71404a2671 100644 --- a/src/ruby/README.md +++ b/src/ruby/README.md @@ -19,7 +19,7 @@ INSTALLATION **Linux (Debian):** -Add [debian unstable][] (sid) to your `sources.list` file. Example: +Add [Debian unstable][] to your `sources.list` file. Example: ```sh echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ @@ -93,4 +93,4 @@ Directory structure is the layout for [ruby extensions][] [ruby extensions]:http://guides.rubygems.org/gems-with-extensions/ [rubydoc]: http://www.rubydoc.info/gems/grpc [grpc.io]: http://www.grpc.io/docs/installation/ruby.html -[debian unstable]:https://www.debian.org/releases/sid/ +[Debian unstable]:https://www.debian.org/releases/sid/ -- GitLab From 8c2be9f22807870585111d88f5168dd11da99ce1 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Wed, 19 Aug 2015 16:28:09 -0700 Subject: [PATCH 103/178] Remove ChannelInterface and replace it with Channel --- BUILD | 6 +- Makefile | 4 +- build.json | 3 +- examples/pubsub/main.cc | 4 +- examples/pubsub/publisher.cc | 2 +- examples/pubsub/publisher.h | 4 +- examples/pubsub/publisher_test.cc | 6 +- examples/pubsub/subscriber.cc | 2 +- examples/pubsub/subscriber.h | 4 +- examples/pubsub/subscriber_test.cc | 4 +- include/grpc++/async_unary_call.h | 4 +- .../grpc++/{channel_interface.h => channel.h} | 89 ++++++++++++++----- include/grpc++/client_context.h | 10 +-- include/grpc++/completion_queue.h | 5 +- include/grpc++/create_channel.h | 3 +- include/grpc++/credentials.h | 6 +- include/grpc++/generic_stub.h | 5 +- include/grpc++/impl/client_unary_call.h | 4 +- include/grpc++/impl/internal_stub.h | 9 +- include/grpc++/stream.h | 14 +-- src/compiler/cpp_generator.cc | 28 +++--- src/cpp/client/channel.cc | 2 +- src/cpp/client/channel.h | 80 ----------------- src/cpp/client/client_context.cc | 2 +- src/cpp/client/create_channel.cc | 7 +- src/cpp/client/insecure_credentials.cc | 6 +- src/cpp/client/secure_credentials.cc | 6 +- src/cpp/client/secure_credentials.h | 2 +- src/cpp/common/call.cc | 2 +- test/cpp/end2end/async_end2end_test.cc | 6 +- test/cpp/end2end/client_crash_test.cc | 2 +- test/cpp/end2end/end2end_test.cc | 8 +- test/cpp/end2end/generic_end2end_test.cc | 4 +- test/cpp/end2end/mock_test.cc | 4 +- test/cpp/end2end/server_crash_test.cc | 2 +- test/cpp/end2end/server_crash_test_client.cc | 2 +- test/cpp/end2end/thread_stress_test.cc | 4 +- test/cpp/end2end/zookeeper_test.cc | 4 +- test/cpp/interop/client.cc | 2 +- test/cpp/interop/client_helper.cc | 4 +- test/cpp/interop/client_helper.h | 4 +- test/cpp/interop/interop_client.cc | 4 +- test/cpp/interop/interop_client.h | 8 +- test/cpp/interop/reconnect_interop_client.cc | 6 +- test/cpp/qps/client.h | 4 +- test/cpp/qps/perf_db_client.h | 4 +- test/cpp/util/cli_call.cc | 4 +- test/cpp/util/cli_call.h | 4 +- test/cpp/util/cli_call_test.cc | 4 +- test/cpp/util/create_test_channel.cc | 8 +- test/cpp/util/create_test_channel.h | 10 +-- test/cpp/util/grpc_cli.cc | 4 +- tools/doxygen/Doxyfile.c++ | 2 +- tools/doxygen/Doxyfile.c++.internal | 3 +- tools/run_tests/sources_and_headers.json | 12 +-- vsprojects/grpc++/grpc++.vcxproj | 3 +- vsprojects/grpc++/grpc++.vcxproj.filters | 7 +- .../grpc++_unsecure/grpc++_unsecure.vcxproj | 3 +- .../grpc++_unsecure.vcxproj.filters | 7 +- 59 files changed, 203 insertions(+), 263 deletions(-) rename include/grpc++/{channel_interface.h => channel.h} (52%) delete mode 100644 src/cpp/client/channel.h diff --git a/BUILD b/BUILD index 7eb59797d4..adcc4cb413 100644 --- a/BUILD +++ b/BUILD @@ -675,7 +675,6 @@ cc_library( "src/cpp/client/secure_credentials.h", "src/cpp/common/secure_auth_context.h", "src/cpp/server/secure_server_credentials.h", - "src/cpp/client/channel.h", "src/cpp/common/create_auth_context.h", "src/cpp/client/secure_channel_arguments.cc", "src/cpp/client/secure_credentials.cc", @@ -714,8 +713,8 @@ cc_library( "include/grpc++/async_unary_call.h", "include/grpc++/auth_context.h", "include/grpc++/byte_buffer.h", + "include/grpc++/channel.h", "include/grpc++/channel_arguments.h", - "include/grpc++/channel_interface.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", "include/grpc++/config.h", @@ -767,7 +766,6 @@ cc_library( cc_library( name = "grpc++_unsecure", srcs = [ - "src/cpp/client/channel.h", "src/cpp/common/create_auth_context.h", "src/cpp/common/insecure_create_auth_context.cc", "src/cpp/client/channel.cc", @@ -801,8 +799,8 @@ cc_library( "include/grpc++/async_unary_call.h", "include/grpc++/auth_context.h", "include/grpc++/byte_buffer.h", + "include/grpc++/channel.h", "include/grpc++/channel_arguments.h", - "include/grpc++/channel_interface.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", "include/grpc++/config.h", diff --git a/Makefile b/Makefile index f3944eccbb..dba1a0457e 100644 --- a/Makefile +++ b/Makefile @@ -4630,8 +4630,8 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/async_unary_call.h \ include/grpc++/auth_context.h \ include/grpc++/byte_buffer.h \ + include/grpc++/channel.h \ include/grpc++/channel_arguments.h \ - include/grpc++/channel_interface.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ include/grpc++/config.h \ @@ -4873,8 +4873,8 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/async_unary_call.h \ include/grpc++/auth_context.h \ include/grpc++/byte_buffer.h \ + include/grpc++/channel.h \ include/grpc++/channel_arguments.h \ - include/grpc++/channel_interface.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ include/grpc++/config.h \ diff --git a/build.json b/build.json index 85457dde86..553e98db4b 100644 --- a/build.json +++ b/build.json @@ -34,8 +34,8 @@ "include/grpc++/async_unary_call.h", "include/grpc++/auth_context.h", "include/grpc++/byte_buffer.h", + "include/grpc++/channel.h", "include/grpc++/channel_arguments.h", - "include/grpc++/channel_interface.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", "include/grpc++/config.h", @@ -73,7 +73,6 @@ "include/grpc++/time.h" ], "headers": [ - "src/cpp/client/channel.h", "src/cpp/common/create_auth_context.h" ], "src": [ diff --git a/examples/pubsub/main.cc b/examples/pubsub/main.cc index b1898f18d9..fcee3b316b 100644 --- a/examples/pubsub/main.cc +++ b/examples/pubsub/main.cc @@ -41,7 +41,7 @@ #include <grpc/support/log.h> #include <gflags/gflags.h> #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> #include <grpc++/status.h> @@ -72,7 +72,7 @@ int main(int argc, char** argv) { ss << FLAGS_server_host << ":" << FLAGS_server_port; std::shared_ptr<grpc::Credentials> creds = grpc::GoogleDefaultCredentials(); - std::shared_ptr<grpc::ChannelInterface> channel = + std::shared_ptr<grpc::Channel> channel = grpc::CreateChannel(ss.str(), creds, grpc::ChannelArguments()); grpc::examples::pubsub::Publisher publisher(channel); diff --git a/examples/pubsub/publisher.cc b/examples/pubsub/publisher.cc index 458050af73..fd38ca92ed 100644 --- a/examples/pubsub/publisher.cc +++ b/examples/pubsub/publisher.cc @@ -50,7 +50,7 @@ namespace grpc { namespace examples { namespace pubsub { -Publisher::Publisher(std::shared_ptr<ChannelInterface> channel) +Publisher::Publisher(std::shared_ptr<Channel> channel) : stub_(PublisherService::NewStub(channel)) {} void Publisher::Shutdown() { stub_.reset(); } diff --git a/examples/pubsub/publisher.h b/examples/pubsub/publisher.h index 33bcf98df4..b98e6973dc 100644 --- a/examples/pubsub/publisher.h +++ b/examples/pubsub/publisher.h @@ -34,7 +34,7 @@ #ifndef GRPC_EXAMPLES_PUBSUB_PUBLISHER_H #define GRPC_EXAMPLES_PUBSUB_PUBLISHER_H -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/status.h> #include "examples/pubsub/pubsub.grpc.pb.h" @@ -45,7 +45,7 @@ namespace pubsub { class Publisher { public: - Publisher(std::shared_ptr<ChannelInterface> channel); + Publisher(std::shared_ptr<Channel> channel); void Shutdown(); Status CreateTopic(const grpc::string& topic); diff --git a/examples/pubsub/publisher_test.cc b/examples/pubsub/publisher_test.cc index 6b9dcacc49..972b426e64 100644 --- a/examples/pubsub/publisher_test.cc +++ b/examples/pubsub/publisher_test.cc @@ -32,7 +32,7 @@ */ #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/server.h> @@ -46,7 +46,7 @@ #include "test/core/util/port.h" #include "test/core/util/test_config.h" -using grpc::ChannelInterface; +using grpc::Channel; namespace grpc { namespace testing { @@ -124,7 +124,7 @@ class PublisherTest : public ::testing::Test { std::unique_ptr<Server> server_; PublisherServiceImpl service_; - std::shared_ptr<ChannelInterface> channel_; + std::shared_ptr<Channel> channel_; std::unique_ptr<grpc::examples::pubsub::Publisher> publisher_; }; diff --git a/examples/pubsub/subscriber.cc b/examples/pubsub/subscriber.cc index d9e0292ba0..0818f501db 100644 --- a/examples/pubsub/subscriber.cc +++ b/examples/pubsub/subscriber.cc @@ -48,7 +48,7 @@ namespace grpc { namespace examples { namespace pubsub { -Subscriber::Subscriber(std::shared_ptr<ChannelInterface> channel) +Subscriber::Subscriber(std::shared_ptr<Channel> channel) : stub_(SubscriberService::NewStub(channel)) {} void Subscriber::Shutdown() { stub_.reset(); } diff --git a/examples/pubsub/subscriber.h b/examples/pubsub/subscriber.h index 40ab45471d..87c833102c 100644 --- a/examples/pubsub/subscriber.h +++ b/examples/pubsub/subscriber.h @@ -34,7 +34,7 @@ #ifndef GRPC_EXAMPLES_PUBSUB_SUBSCRIBER_H #define GRPC_EXAMPLES_PUBSUB_SUBSCRIBER_H -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/status.h> #include "examples/pubsub/pubsub.grpc.pb.h" @@ -45,7 +45,7 @@ namespace pubsub { class Subscriber { public: - Subscriber(std::shared_ptr<ChannelInterface> channel); + Subscriber(std::shared_ptr<Channel> channel); void Shutdown(); Status CreateSubscription(const grpc::string& topic, diff --git a/examples/pubsub/subscriber_test.cc b/examples/pubsub/subscriber_test.cc index b0e7fc034b..7974ca88c2 100644 --- a/examples/pubsub/subscriber_test.cc +++ b/examples/pubsub/subscriber_test.cc @@ -32,7 +32,7 @@ */ #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/server.h> @@ -122,7 +122,7 @@ class SubscriberTest : public ::testing::Test { std::unique_ptr<Server> server_; SubscriberServiceImpl service_; - std::shared_ptr<ChannelInterface> channel_; + std::shared_ptr<Channel> channel_; std::unique_ptr<grpc::examples::pubsub::Subscriber> subscriber_; }; diff --git a/include/grpc++/async_unary_call.h b/include/grpc++/async_unary_call.h index 3d22df4b33..4e1dd15f32 100644 --- a/include/grpc++/async_unary_call.h +++ b/include/grpc++/async_unary_call.h @@ -34,7 +34,7 @@ #ifndef GRPCXX_ASYNC_UNARY_CALL_H #define GRPCXX_ASYNC_UNARY_CALL_H -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/completion_queue.h> #include <grpc++/server_context.h> @@ -58,7 +58,7 @@ class ClientAsyncResponseReader GRPC_FINAL : public ClientAsyncResponseReaderInterface<R> { public: template <class W> - ClientAsyncResponseReader(ChannelInterface* channel, CompletionQueue* cq, + ClientAsyncResponseReader(Channel* channel, CompletionQueue* cq, const RpcMethod& method, ClientContext* context, const W& request) : context_(context), call_(channel->CreateCall(method, context, cq)) { diff --git a/include/grpc++/channel_interface.h b/include/grpc++/channel.h similarity index 52% rename from include/grpc++/channel_interface.h rename to include/grpc++/channel.h index 4176cded7b..a4cef1b4d9 100644 --- a/include/grpc++/channel_interface.h +++ b/include/grpc++/channel.h @@ -31,36 +31,51 @@ * */ -#ifndef GRPCXX_CHANNEL_INTERFACE_H -#define GRPCXX_CHANNEL_INTERFACE_H +#ifndef GRPCXX_CHANNEL_H +#define GRPCXX_CHANNEL_H #include <memory> #include <grpc/grpc.h> -#include <grpc++/status.h> +#include <grpc++/config.h> #include <grpc++/impl/call.h> +#include <grpc++/impl/grpc_library.h> -struct grpc_call; +struct grpc_channel; namespace grpc { -class Call; -class CallOpBuffer; -class ClientContext; +class CallOpSetInterface; +class ChannelArguments; class CompletionQueue; -class RpcMethod; +class Credentials; +class SecureCredentials; -class ChannelInterface : public CallHook, - public std::enable_shared_from_this<ChannelInterface> { - public: - virtual ~ChannelInterface() {} +template <class R> +class ClientReader; +template <class W> +class ClientWriter; +template <class R, class W> +class ClientReaderWriter; +template <class R> +class ClientAsyncReader; +template <class W> +class ClientAsyncWriter; +template <class R, class W> +class ClientAsyncReaderWriter; +template <class R> +class ClientAsyncResponseReader; - virtual void* RegisterMethod(const char* method_name) = 0; - virtual Call CreateCall(const RpcMethod& method, ClientContext* context, - CompletionQueue* cq) = 0; +class Channel GRPC_FINAL : public GrpcLibrary, + public CallHook, + public std::enable_shared_from_this<Channel> { + public: + explicit Channel(grpc_channel* c_channel); + Channel(const grpc::string& host, grpc_channel* c_channel); + ~Channel(); // Get the current channel state. If the channel is in IDLE and try_to_connect // is set to true, try to connect. - virtual grpc_connectivity_state GetState(bool try_to_connect) = 0; + grpc_connectivity_state GetState(bool try_to_connect); // Return the tag on cq when the channel state is changed or deadline expires. // GetState needs to called to get the current state. @@ -79,14 +94,44 @@ class ChannelInterface : public CallHook, return WaitForStateChangeImpl(last_observed, deadline_tp.raw_time()); } + // Used by Stub only in generated code. + void* RegisterMethod(const char* method); + private: - virtual void NotifyOnStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline, - CompletionQueue* cq, void* tag) = 0; - virtual bool WaitForStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline) = 0; + template <class R> + friend class ::grpc::ClientReader; + template <class W> + friend class ::grpc::ClientWriter; + template <class R, class W> + friend class ::grpc::ClientReaderWriter; + template <class R> + friend class ::grpc::ClientAsyncReader; + template <class W> + friend class ::grpc::ClientAsyncWriter; + template <class R, class W> + friend class ::grpc::ClientAsyncReaderWriter; + template <class R> + friend class ::grpc::ClientAsyncResponseReader; + template <class InputMessage, class OutputMessage> + friend Status BlockingUnaryCall(Channel* channel, const RpcMethod& method, + ClientContext* context, + const InputMessage& request, + OutputMessage* result); + + Call CreateCall(const RpcMethod& method, ClientContext* context, + CompletionQueue* cq); + void PerformOpsOnCall(CallOpSetInterface* ops, Call* call); + + void NotifyOnStateChangeImpl(grpc_connectivity_state last_observed, + gpr_timespec deadline, CompletionQueue* cq, + void* tag); + bool WaitForStateChangeImpl(grpc_connectivity_state last_observed, + gpr_timespec deadline); + + const grpc::string host_; + grpc_channel* const c_channel_; // owned }; } // namespace grpc -#endif // GRPCXX_CHANNEL_INTERFACE_H +#endif // GRPCXX_CHANNEL_H diff --git a/include/grpc++/client_context.h b/include/grpc++/client_context.h index 8de2ba4877..55ed17506a 100644 --- a/include/grpc++/client_context.h +++ b/include/grpc++/client_context.h @@ -51,7 +51,7 @@ struct census_context; namespace grpc { -class ChannelInterface; +class Channel; class CompletionQueue; class Credentials; class RpcMethod; @@ -215,20 +215,18 @@ class ClientContext { template <class R> friend class ::grpc::ClientAsyncResponseReader; template <class InputMessage, class OutputMessage> - friend Status BlockingUnaryCall(ChannelInterface* channel, - const RpcMethod& method, + friend Status BlockingUnaryCall(Channel* channel, const RpcMethod& method, ClientContext* context, const InputMessage& request, OutputMessage* result); grpc_call* call() { return call_; } - void set_call(grpc_call* call, - const std::shared_ptr<ChannelInterface>& channel); + void set_call(grpc_call* call, const std::shared_ptr<Channel>& channel); grpc::string authority() { return authority_; } bool initial_metadata_received_; - std::shared_ptr<ChannelInterface> channel_; + std::shared_ptr<Channel> channel_; grpc_call* call_; gpr_timespec deadline_; grpc::string authority_; diff --git a/include/grpc++/completion_queue.h b/include/grpc++/completion_queue.h index 2f30211145..061f4874fa 100644 --- a/include/grpc++/completion_queue.h +++ b/include/grpc++/completion_queue.h @@ -65,7 +65,7 @@ template <class ServiceType, class RequestType, class ResponseType> class BidiStreamingHandler; class UnknownMethodHandler; -class ChannelInterface; +class Channel; class ClientContext; class CompletionQueue; class RpcMethod; @@ -143,8 +143,7 @@ class CompletionQueue : public GrpcLibrary { friend class ::grpc::Server; friend class ::grpc::ServerContext; template <class InputMessage, class OutputMessage> - friend Status BlockingUnaryCall(ChannelInterface* channel, - const RpcMethod& method, + friend Status BlockingUnaryCall(Channel* channel, const RpcMethod& method, ClientContext* context, const InputMessage& request, OutputMessage* result); diff --git a/include/grpc++/create_channel.h b/include/grpc++/create_channel.h index 424a93a64c..fe34452128 100644 --- a/include/grpc++/create_channel.h +++ b/include/grpc++/create_channel.h @@ -41,10 +41,9 @@ namespace grpc { class ChannelArguments; -class ChannelInterface; // If creds does not hold an object or is invalid, a lame channel is returned. -std::shared_ptr<ChannelInterface> CreateChannel( +std::shared_ptr<Channel> CreateChannel( const grpc::string& target, const std::shared_ptr<Credentials>& creds, const ChannelArguments& args); diff --git a/include/grpc++/credentials.h b/include/grpc++/credentials.h index a4f1e73118..306dc961c0 100644 --- a/include/grpc++/credentials.h +++ b/include/grpc++/credentials.h @@ -41,7 +41,7 @@ namespace grpc { class ChannelArguments; -class ChannelInterface; +class Channel; class SecureCredentials; class Credentials : public GrpcLibrary { @@ -57,11 +57,11 @@ class Credentials : public GrpcLibrary { virtual SecureCredentials* AsSecureCredentials() = 0; private: - friend std::shared_ptr<ChannelInterface> CreateChannel( + friend std::shared_ptr<Channel> CreateChannel( const grpc::string& target, const std::shared_ptr<Credentials>& creds, const ChannelArguments& args); - virtual std::shared_ptr<ChannelInterface> CreateChannel( + virtual std::shared_ptr<Channel> CreateChannel( const grpc::string& target, const ChannelArguments& args) = 0; }; diff --git a/include/grpc++/generic_stub.h b/include/grpc++/generic_stub.h index 172f10e45a..734440881e 100644 --- a/include/grpc++/generic_stub.h +++ b/include/grpc++/generic_stub.h @@ -47,8 +47,7 @@ typedef ClientAsyncReaderWriter<ByteBuffer, ByteBuffer> // by name. class GenericStub GRPC_FINAL { public: - explicit GenericStub(std::shared_ptr<ChannelInterface> channel) - : channel_(channel) {} + explicit GenericStub(std::shared_ptr<Channel> channel) : channel_(channel) {} // begin a call to a named method std::unique_ptr<GenericClientAsyncReaderWriter> Call( @@ -56,7 +55,7 @@ class GenericStub GRPC_FINAL { void* tag); private: - std::shared_ptr<ChannelInterface> channel_; + std::shared_ptr<Channel> channel_; }; } // namespace grpc diff --git a/include/grpc++/impl/client_unary_call.h b/include/grpc++/impl/client_unary_call.h index b77ce7d02c..4aae816cd7 100644 --- a/include/grpc++/impl/client_unary_call.h +++ b/include/grpc++/impl/client_unary_call.h @@ -41,14 +41,14 @@ namespace grpc { -class ChannelInterface; +class Channel; class ClientContext; class CompletionQueue; class RpcMethod; // Wrapper that performs a blocking unary call template <class InputMessage, class OutputMessage> -Status BlockingUnaryCall(ChannelInterface* channel, const RpcMethod& method, +Status BlockingUnaryCall(Channel* channel, const RpcMethod& method, ClientContext* context, const InputMessage& request, OutputMessage* result) { CompletionQueue cq; diff --git a/include/grpc++/impl/internal_stub.h b/include/grpc++/impl/internal_stub.h index 370a3b8ac5..60eb3fdd06 100644 --- a/include/grpc++/impl/internal_stub.h +++ b/include/grpc++/impl/internal_stub.h @@ -36,20 +36,19 @@ #include <memory> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> namespace grpc { class InternalStub { public: - InternalStub(const std::shared_ptr<ChannelInterface>& channel) - : channel_(channel) {} + InternalStub(const std::shared_ptr<Channel>& channel) : channel_(channel) {} virtual ~InternalStub() {} - ChannelInterface* channel() { return channel_.get(); } + Channel* channel() { return channel_.get(); } private: - const std::shared_ptr<ChannelInterface> channel_; + const std::shared_ptr<Channel> channel_; }; } // namespace grpc diff --git a/include/grpc++/stream.h b/include/grpc++/stream.h index 45dafcd282..577eb4e925 100644 --- a/include/grpc++/stream.h +++ b/include/grpc++/stream.h @@ -34,7 +34,7 @@ #ifndef GRPCXX_STREAM_H #define GRPCXX_STREAM_H -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/completion_queue.h> #include <grpc++/server_context.h> @@ -100,7 +100,7 @@ class ClientReader GRPC_FINAL : public ClientReaderInterface<R> { public: // Blocking create a stream and write the first request out. template <class W> - ClientReader(ChannelInterface* channel, const RpcMethod& method, + ClientReader(Channel* channel, const RpcMethod& method, ClientContext* context, const W& request) : context_(context), call_(channel->CreateCall(method, context, &cq_)) { CallOpSet<CallOpSendInitialMetadata, CallOpSendMessage, @@ -163,7 +163,7 @@ class ClientWriter : public ClientWriterInterface<W> { public: // Blocking create a stream. template <class R> - ClientWriter(ChannelInterface* channel, const RpcMethod& method, + ClientWriter(Channel* channel, const RpcMethod& method, ClientContext* context, R* response) : context_(context), call_(channel->CreateCall(method, context, &cq_)) { finish_ops_.RecvMessage(response); @@ -221,7 +221,7 @@ template <class W, class R> class ClientReaderWriter GRPC_FINAL : public ClientReaderWriterInterface<W, R> { public: // Blocking create a stream. - ClientReaderWriter(ChannelInterface* channel, const RpcMethod& method, + ClientReaderWriter(Channel* channel, const RpcMethod& method, ClientContext* context) : context_(context), call_(channel->CreateCall(method, context, &cq_)) { CallOpSet<CallOpSendInitialMetadata> ops; @@ -425,7 +425,7 @@ class ClientAsyncReader GRPC_FINAL : public ClientAsyncReaderInterface<R> { public: // Create a stream and write the first request out. template <class W> - ClientAsyncReader(ChannelInterface* channel, CompletionQueue* cq, + ClientAsyncReader(Channel* channel, CompletionQueue* cq, const RpcMethod& method, ClientContext* context, const W& request, void* tag) : context_(context), call_(channel->CreateCall(method, context, cq)) { @@ -484,7 +484,7 @@ template <class W> class ClientAsyncWriter GRPC_FINAL : public ClientAsyncWriterInterface<W> { public: template <class R> - ClientAsyncWriter(ChannelInterface* channel, CompletionQueue* cq, + ClientAsyncWriter(Channel* channel, CompletionQueue* cq, const RpcMethod& method, ClientContext* context, R* response, void* tag) : context_(context), call_(channel->CreateCall(method, context, cq)) { @@ -549,7 +549,7 @@ template <class W, class R> class ClientAsyncReaderWriter GRPC_FINAL : public ClientAsyncReaderWriterInterface<W, R> { public: - ClientAsyncReaderWriter(ChannelInterface* channel, CompletionQueue* cq, + ClientAsyncReaderWriter(Channel* channel, CompletionQueue* cq, const RpcMethod& method, ClientContext* context, void* tag) : context_(context), call_(channel->CreateCall(method, context, cq)) { diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc index ea487bcd89..731ba58fb1 100644 --- a/src/compiler/cpp_generator.cc +++ b/src/compiler/cpp_generator.cc @@ -123,7 +123,7 @@ grpc::string GetHeaderIncludes(const grpc::protobuf::FileDescriptor *file, "\n" "namespace grpc {\n" "class CompletionQueue;\n" - "class ChannelInterface;\n" + "class Channel;\n" "class RpcService;\n" "class ServerCompletionQueue;\n" "class ServerContext;\n" @@ -557,8 +557,7 @@ void PrintHeaderService(grpc::protobuf::io::Printer *printer, "class Stub GRPC_FINAL : public StubInterface," " public ::grpc::InternalStub {\n public:\n"); printer->Indent(); - printer->Print( - "Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);\n"); + printer->Print("Stub(const std::shared_ptr< ::grpc::Channel>& channel);\n"); for (int i = 0; i < service->method_count(); ++i) { PrintHeaderClientMethod(printer, service->method(i), vars, true); } @@ -575,7 +574,7 @@ void PrintHeaderService(grpc::protobuf::io::Printer *printer, printer->Print("};\n"); printer->Print( "static std::unique_ptr<Stub> NewStub(const std::shared_ptr< " - "::grpc::ChannelInterface>& channel, " + "::grpc::Channel>& channel, " "const ::grpc::StubOptions& options = ::grpc::StubOptions());\n"); printer->Print("\n"); @@ -703,7 +702,7 @@ grpc::string GetSourceIncludes(const grpc::protobuf::FileDescriptor *file, std::map<grpc::string, grpc::string> vars; printer.Print(vars, "#include <grpc++/async_unary_call.h>\n"); - printer.Print(vars, "#include <grpc++/channel_interface.h>\n"); + printer.Print(vars, "#include <grpc++/channel.h>\n"); printer.Print(vars, "#include <grpc++/impl/client_unary_call.h>\n"); printer.Print(vars, "#include <grpc++/impl/rpc_service_method.h>\n"); printer.Print(vars, "#include <grpc++/impl/service_type.h>\n"); @@ -964,18 +963,17 @@ void PrintSourceService(grpc::protobuf::io::Printer *printer, } printer->Print(*vars, "};\n\n"); - printer->Print( - *vars, - "std::unique_ptr< $ns$$Service$::Stub> $ns$$Service$::NewStub(" - "const std::shared_ptr< ::grpc::ChannelInterface>& channel, " - "const ::grpc::StubOptions& options) {\n" - " std::unique_ptr< $ns$$Service$::Stub> stub(new " - "$ns$$Service$::Stub(channel));\n" - " return stub;\n" - "}\n\n"); + printer->Print(*vars, + "std::unique_ptr< $ns$$Service$::Stub> $ns$$Service$::NewStub(" + "const std::shared_ptr< ::grpc::Channel>& channel, " + "const ::grpc::StubOptions& options) {\n" + " std::unique_ptr< $ns$$Service$::Stub> stub(new " + "$ns$$Service$::Stub(channel));\n" + " return stub;\n" + "}\n\n"); printer->Print(*vars, "$ns$$Service$::Stub::Stub(const std::shared_ptr< " - "::grpc::ChannelInterface>& channel)\n"); + "::grpc::Channel>& channel)\n"); printer->Indent(); printer->Print(": ::grpc::InternalStub(channel)"); for (int i = 0; i < service->method_count(); ++i) { diff --git a/src/cpp/client/channel.cc b/src/cpp/client/channel.cc index 9695a0f14b..d9ffdc30cd 100644 --- a/src/cpp/client/channel.cc +++ b/src/cpp/client/channel.cc @@ -31,7 +31,7 @@ * */ -#include "src/cpp/client/channel.h" +#include <grpc++/channel.h> #include <memory> diff --git a/src/cpp/client/channel.h b/src/cpp/client/channel.h deleted file mode 100644 index 7e406ad788..0000000000 --- a/src/cpp/client/channel.h +++ /dev/null @@ -1,80 +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. - * - */ - -#ifndef GRPC_INTERNAL_CPP_CLIENT_CHANNEL_H -#define GRPC_INTERNAL_CPP_CLIENT_CHANNEL_H - -#include <memory> - -#include <grpc++/channel_interface.h> -#include <grpc++/config.h> -#include <grpc++/impl/grpc_library.h> - -struct grpc_channel; - -namespace grpc { -class Call; -class CallOpSetInterface; -class ChannelArguments; -class CompletionQueue; -class Credentials; -class StreamContextInterface; - -class Channel GRPC_FINAL : public GrpcLibrary, public ChannelInterface { - public: - explicit Channel(grpc_channel* c_channel); - Channel(const grpc::string& host, grpc_channel* c_channel); - ~Channel() GRPC_OVERRIDE; - - void* RegisterMethod(const char* method) GRPC_OVERRIDE; - Call CreateCall(const RpcMethod& method, ClientContext* context, - CompletionQueue* cq) GRPC_OVERRIDE; - void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) GRPC_OVERRIDE; - - grpc_connectivity_state GetState(bool try_to_connect) GRPC_OVERRIDE; - - private: - void NotifyOnStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline, CompletionQueue* cq, - void* tag) GRPC_OVERRIDE; - - bool WaitForStateChangeImpl(grpc_connectivity_state last_observed, - gpr_timespec deadline) GRPC_OVERRIDE; - - const grpc::string host_; - grpc_channel* const c_channel_; // owned -}; - -} // namespace grpc - -#endif // GRPC_INTERNAL_CPP_CLIENT_CHANNEL_H diff --git a/src/cpp/client/client_context.cc b/src/cpp/client/client_context.cc index b8caa1eae4..a3906fc781 100644 --- a/src/cpp/client/client_context.cc +++ b/src/cpp/client/client_context.cc @@ -71,7 +71,7 @@ void ClientContext::AddMetadata(const grpc::string& meta_key, } void ClientContext::set_call(grpc_call* call, - const std::shared_ptr<ChannelInterface>& channel) { + const std::shared_ptr<Channel>& channel) { GPR_ASSERT(call_ == nullptr); call_ = call; channel_ = channel; diff --git a/src/cpp/client/create_channel.cc b/src/cpp/client/create_channel.cc index 5ae772f096..704470693e 100644 --- a/src/cpp/client/create_channel.cc +++ b/src/cpp/client/create_channel.cc @@ -34,15 +34,14 @@ #include <memory> #include <sstream> -#include "src/cpp/client/channel.h" -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/channel_arguments.h> #include <grpc++/create_channel.h> namespace grpc { class ChannelArguments; -std::shared_ptr<ChannelInterface> CreateChannel( +std::shared_ptr<Channel> CreateChannel( const grpc::string& target, const std::shared_ptr<Credentials>& creds, const ChannelArguments& args) { ChannelArguments cp_args = args; @@ -51,7 +50,7 @@ std::shared_ptr<ChannelInterface> CreateChannel( cp_args.SetString(GRPC_ARG_PRIMARY_USER_AGENT_STRING, user_agent_prefix.str()); return creds ? creds->CreateChannel(target, cp_args) - : std::shared_ptr<ChannelInterface>( + : std::shared_ptr<Channel>( new Channel(grpc_lame_client_channel_create( NULL, GRPC_STATUS_INVALID_ARGUMENT, "Invalid credentials."))); diff --git a/src/cpp/client/insecure_credentials.cc b/src/cpp/client/insecure_credentials.cc index 2f9357b568..70ce17dc6d 100644 --- a/src/cpp/client/insecure_credentials.cc +++ b/src/cpp/client/insecure_credentials.cc @@ -34,21 +34,21 @@ #include <grpc/grpc.h> #include <grpc/support/log.h> +#include <grpc++/channel.h> #include <grpc++/channel_arguments.h> #include <grpc++/config.h> #include <grpc++/credentials.h> -#include "src/cpp/client/channel.h" namespace grpc { namespace { class InsecureCredentialsImpl GRPC_FINAL : public Credentials { public: - std::shared_ptr<grpc::ChannelInterface> CreateChannel( + std::shared_ptr<grpc::Channel> CreateChannel( const string& target, const grpc::ChannelArguments& args) GRPC_OVERRIDE { grpc_channel_args channel_args; args.SetChannelArgs(&channel_args); - return std::shared_ptr<ChannelInterface>(new Channel( + return std::shared_ptr<Channel>(new Channel( grpc_insecure_channel_create(target.c_str(), &channel_args, nullptr))); } diff --git a/src/cpp/client/secure_credentials.cc b/src/cpp/client/secure_credentials.cc index 6cd6b77fcf..b32f783fa3 100644 --- a/src/cpp/client/secure_credentials.cc +++ b/src/cpp/client/secure_credentials.cc @@ -33,18 +33,18 @@ #include <grpc/support/log.h> +#include <grpc++/channel.h> #include <grpc++/channel_arguments.h> #include <grpc++/impl/grpc_library.h> -#include "src/cpp/client/channel.h" #include "src/cpp/client/secure_credentials.h" namespace grpc { -std::shared_ptr<grpc::ChannelInterface> SecureCredentials::CreateChannel( +std::shared_ptr<grpc::Channel> SecureCredentials::CreateChannel( const string& target, const grpc::ChannelArguments& args) { grpc_channel_args channel_args; args.SetChannelArgs(&channel_args); - return std::shared_ptr<ChannelInterface>(new Channel( + return std::shared_ptr<Channel>(new Channel( args.GetSslTargetNameOverride(), grpc_secure_channel_create(c_creds_, target.c_str(), &channel_args))); } diff --git a/src/cpp/client/secure_credentials.h b/src/cpp/client/secure_credentials.h index c2b8d43a15..974d83514d 100644 --- a/src/cpp/client/secure_credentials.h +++ b/src/cpp/client/secure_credentials.h @@ -48,7 +48,7 @@ class SecureCredentials GRPC_FINAL : public Credentials { grpc_credentials* GetRawCreds() { return c_creds_; } bool ApplyToCall(grpc_call* call) GRPC_OVERRIDE; - std::shared_ptr<grpc::ChannelInterface> CreateChannel( + std::shared_ptr<grpc::Channel> CreateChannel( const string& target, const grpc::ChannelArguments& args) GRPC_OVERRIDE; SecureCredentials* AsSecureCredentials() GRPC_OVERRIDE { return this; } diff --git a/src/cpp/common/call.cc b/src/cpp/common/call.cc index 0a5c976e01..479f14d42b 100644 --- a/src/cpp/common/call.cc +++ b/src/cpp/common/call.cc @@ -36,7 +36,7 @@ #include <grpc/support/alloc.h> #include <grpc++/byte_buffer.h> #include <grpc++/client_context.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include "src/core/profiling/timers.h" diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc index a30c841216..7006ebb83a 100644 --- a/test/cpp/end2end/async_end2end_test.cc +++ b/test/cpp/end2end/async_end2end_test.cc @@ -39,7 +39,7 @@ #include "test/cpp/util/echo.grpc.pb.h" #include <grpc++/async_unary_call.h> #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> @@ -136,7 +136,7 @@ class AsyncEnd2endTest : public ::testing::Test { } void ResetStub() { - std::shared_ptr<ChannelInterface> channel = CreateChannel( + std::shared_ptr<Channel> channel = CreateChannel( server_address_.str(), InsecureCredentials(), ChannelArguments()); stub_ = std::move(grpc::cpp::test::util::TestService::NewStub(channel)); } @@ -672,7 +672,7 @@ TEST_F(AsyncEnd2endTest, ServerCheckDone) { } TEST_F(AsyncEnd2endTest, UnimplementedRpc) { - std::shared_ptr<ChannelInterface> channel = CreateChannel( + std::shared_ptr<Channel> channel = CreateChannel( server_address_.str(), InsecureCredentials(), ChannelArguments()); std::unique_ptr<grpc::cpp::test::util::UnimplementedService::Stub> stub; stub = diff --git a/test/cpp/end2end/client_crash_test.cc b/test/cpp/end2end/client_crash_test.cc index 1c2a5c3a36..89708a2ef6 100644 --- a/test/cpp/end2end/client_crash_test.cc +++ b/test/cpp/end2end/client_crash_test.cc @@ -36,7 +36,7 @@ #include "test/cpp/util/echo_duplicate.grpc.pb.h" #include "test/cpp/util/echo.grpc.pb.h" #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc index 350b10726f..fc4e88c2a7 100644 --- a/test/cpp/end2end/end2end_test.cc +++ b/test/cpp/end2end/end2end_test.cc @@ -41,7 +41,7 @@ #include "test/cpp/util/echo_duplicate.grpc.pb.h" #include "test/cpp/util/echo.grpc.pb.h" #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> @@ -106,7 +106,7 @@ bool CheckIsLocalhost(const grpc::string& addr) { class Proxy : public ::grpc::cpp::test::util::TestService::Service { public: - Proxy(std::shared_ptr<ChannelInterface> channel) + Proxy(std::shared_ptr<Channel> channel) : stub_(grpc::cpp::test::util::TestService::NewStub(channel)) {} Status Echo(ServerContext* server_context, const EchoRequest* request, @@ -319,7 +319,7 @@ class End2endTest : public ::testing::TestWithParam<bool> { stub_ = std::move(grpc::cpp::test::util::TestService::NewStub(channel_)); } - std::shared_ptr<ChannelInterface> channel_; + std::shared_ptr<Channel> channel_; std::unique_ptr<grpc::cpp::test::util::TestService::Stub> stub_; std::unique_ptr<Server> server_; std::unique_ptr<Server> proxy_server_; @@ -571,7 +571,7 @@ TEST_F(End2endTest, DiffPackageServices) { TEST_F(End2endTest, BadCredentials) { std::shared_ptr<Credentials> bad_creds = ServiceAccountCredentials("", "", 1); EXPECT_EQ(static_cast<Credentials*>(nullptr), bad_creds.get()); - std::shared_ptr<ChannelInterface> channel = + std::shared_ptr<Channel> channel = CreateChannel(server_address_.str(), bad_creds, ChannelArguments()); std::unique_ptr<grpc::cpp::test::util::TestService::Stub> stub( grpc::cpp::test::util::TestService::NewStub(channel)); diff --git a/test/cpp/end2end/generic_end2end_test.cc b/test/cpp/end2end/generic_end2end_test.cc index 3120cec938..b817198fa7 100644 --- a/test/cpp/end2end/generic_end2end_test.cc +++ b/test/cpp/end2end/generic_end2end_test.cc @@ -41,7 +41,7 @@ #include <grpc++/async_unary_call.h> #include <grpc++/byte_buffer.h> #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> @@ -127,7 +127,7 @@ class GenericEnd2endTest : public ::testing::Test { } void ResetStub() { - std::shared_ptr<ChannelInterface> channel = CreateChannel( + std::shared_ptr<Channel> channel = CreateChannel( server_address_.str(), InsecureCredentials(), ChannelArguments()); generic_stub_.reset(new GenericStub(channel)); } diff --git a/test/cpp/end2end/mock_test.cc b/test/cpp/end2end/mock_test.cc index 32130e24e9..96b6ecbd6e 100644 --- a/test/cpp/end2end/mock_test.cc +++ b/test/cpp/end2end/mock_test.cc @@ -38,7 +38,7 @@ #include "test/cpp/util/echo_duplicate.grpc.pb.h" #include "test/cpp/util/echo.grpc.pb.h" #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> @@ -251,7 +251,7 @@ class MockTest : public ::testing::Test { void TearDown() GRPC_OVERRIDE { server_->Shutdown(); } void ResetStub() { - std::shared_ptr<ChannelInterface> channel = CreateChannel( + std::shared_ptr<Channel> channel = CreateChannel( server_address_.str(), InsecureCredentials(), ChannelArguments()); stub_ = std::move(grpc::cpp::test::util::TestService::NewStub(channel)); } diff --git a/test/cpp/end2end/server_crash_test.cc b/test/cpp/end2end/server_crash_test.cc index 5c7bb4e653..2688f2c4ea 100644 --- a/test/cpp/end2end/server_crash_test.cc +++ b/test/cpp/end2end/server_crash_test.cc @@ -36,7 +36,7 @@ #include "test/cpp/util/echo_duplicate.grpc.pb.h" #include "test/cpp/util/echo.grpc.pb.h" #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> diff --git a/test/cpp/end2end/server_crash_test_client.cc b/test/cpp/end2end/server_crash_test_client.cc index 1da4f05c8d..52dce8f28e 100644 --- a/test/cpp/end2end/server_crash_test_client.cc +++ b/test/cpp/end2end/server_crash_test_client.cc @@ -38,7 +38,7 @@ #include <gflags/gflags.h> #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> diff --git a/test/cpp/end2end/thread_stress_test.cc b/test/cpp/end2end/thread_stress_test.cc index ff9c945c7c..e59a77dc9e 100644 --- a/test/cpp/end2end/thread_stress_test.cc +++ b/test/cpp/end2end/thread_stress_test.cc @@ -39,7 +39,7 @@ #include "test/cpp/util/echo_duplicate.grpc.pb.h" #include "test/cpp/util/echo.grpc.pb.h" #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> @@ -197,7 +197,7 @@ class End2endTest : public ::testing::Test { void TearDown() GRPC_OVERRIDE { server_->Shutdown(); } void ResetStub() { - std::shared_ptr<ChannelInterface> channel = CreateChannel( + std::shared_ptr<Channel> channel = CreateChannel( server_address_.str(), InsecureCredentials(), ChannelArguments()); stub_ = std::move(grpc::cpp::test::util::TestService::NewStub(channel)); } diff --git a/test/cpp/end2end/zookeeper_test.cc b/test/cpp/end2end/zookeeper_test.cc index f5eba66cb2..d7fac3d07e 100644 --- a/test/cpp/end2end/zookeeper_test.cc +++ b/test/cpp/end2end/zookeeper_test.cc @@ -36,7 +36,7 @@ #include "test/cpp/util/echo.grpc.pb.h" #include "src/core/support/env.h" #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> @@ -170,7 +170,7 @@ class ZookeeperTest : public ::testing::Test { return strs.str(); } - std::shared_ptr<ChannelInterface> channel_; + std::shared_ptr<Channel> channel_; std::unique_ptr<grpc::cpp::test::util::TestService::Stub> stub_; std::unique_ptr<Server> server1_; std::unique_ptr<Server> server2_; diff --git a/test/cpp/interop/client.cc b/test/cpp/interop/client.cc index 48143b2e53..d9e4f1ba6a 100644 --- a/test/cpp/interop/client.cc +++ b/test/cpp/interop/client.cc @@ -38,7 +38,7 @@ #include <grpc/grpc.h> #include <grpc/support/log.h> #include <gflags/gflags.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/status.h> #include <grpc++/stream.h> diff --git a/test/cpp/interop/client_helper.cc b/test/cpp/interop/client_helper.cc index b8a222c54a..91c8dbc0c3 100644 --- a/test/cpp/interop/client_helper.cc +++ b/test/cpp/interop/client_helper.cc @@ -44,7 +44,7 @@ #include <grpc/support/log.h> #include <gflags/gflags.h> #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> #include <grpc++/stream.h> @@ -103,7 +103,7 @@ grpc::string GetOauth2AccessToken() { return access_token; } -std::shared_ptr<ChannelInterface> CreateChannelForTestCase( +std::shared_ptr<Channel> CreateChannelForTestCase( const grpc::string& test_case) { GPR_ASSERT(FLAGS_server_port); const int host_port_buf_size = 1024; diff --git a/test/cpp/interop/client_helper.h b/test/cpp/interop/client_helper.h index 000374ae8e..3b46d87016 100644 --- a/test/cpp/interop/client_helper.h +++ b/test/cpp/interop/client_helper.h @@ -37,7 +37,7 @@ #include <memory> #include <grpc++/config.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> namespace grpc { namespace testing { @@ -46,7 +46,7 @@ grpc::string GetServiceAccountJsonKey(); grpc::string GetOauth2AccessToken(); -std::shared_ptr<ChannelInterface> CreateChannelForTestCase( +std::shared_ptr<Channel> CreateChannelForTestCase( const grpc::string& test_case); class InteropClientContextInspector { diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index 5ed14d556a..c73505c670 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -42,7 +42,7 @@ #include <grpc/support/log.h> #include <grpc/support/string_util.h> #include <grpc/support/useful.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/credentials.h> #include <grpc++/status.h> @@ -84,7 +84,7 @@ CompressionType GetInteropCompressionTypeFromCompressionAlgorithm( } } // namespace -InteropClient::InteropClient(std::shared_ptr<ChannelInterface> channel) +InteropClient::InteropClient(std::shared_ptr<Channel> channel) : channel_(channel) {} void InteropClient::AssertOkOrPrintErrorStatus(const Status& s) { diff --git a/test/cpp/interop/interop_client.h b/test/cpp/interop/interop_client.h index d6fb9bff39..354c2c6195 100644 --- a/test/cpp/interop/interop_client.h +++ b/test/cpp/interop/interop_client.h @@ -36,7 +36,7 @@ #include <memory> #include <grpc/grpc.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/status.h> #include "test/proto/messages.grpc.pb.h" @@ -45,10 +45,10 @@ namespace testing { class InteropClient { public: - explicit InteropClient(std::shared_ptr<ChannelInterface> channel); + explicit InteropClient(std::shared_ptr<Channel> channel); ~InteropClient() {} - void Reset(std::shared_ptr<ChannelInterface> channel) { channel_ = channel; } + void Reset(std::shared_ptr<Channel> channel) { channel_ = channel; } void DoEmpty(); void DoLargeUnary(); @@ -82,7 +82,7 @@ class InteropClient { void PerformLargeUnary(SimpleRequest* request, SimpleResponse* response); void AssertOkOrPrintErrorStatus(const Status& s); - std::shared_ptr<ChannelInterface> channel_; + std::shared_ptr<Channel> channel_; }; } // namespace testing diff --git a/test/cpp/interop/reconnect_interop_client.cc b/test/cpp/interop/reconnect_interop_client.cc index 65f098050e..675c6ff073 100644 --- a/test/cpp/interop/reconnect_interop_client.cc +++ b/test/cpp/interop/reconnect_interop_client.cc @@ -37,7 +37,7 @@ #include <grpc/grpc.h> #include <grpc/support/log.h> #include <gflags/gflags.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/status.h> #include "test/cpp/util/create_test_channel.h" @@ -50,7 +50,7 @@ DEFINE_int32(server_control_port, 0, "Server port for control rpcs."); DEFINE_int32(server_retry_port, 0, "Server port for testing reconnection."); DEFINE_string(server_host, "127.0.0.1", "Server host to connect to"); -using grpc::ChannelInterface; +using grpc::Channel; using grpc::ClientContext; using grpc::CreateTestChannel; using grpc::Status; @@ -78,7 +78,7 @@ int main(int argc, char** argv) { gpr_log(GPR_INFO, "Starting connections with retries."); server_address.str(""); server_address << FLAGS_server_host << ':' << FLAGS_server_retry_port; - std::shared_ptr<ChannelInterface> retry_channel = + std::shared_ptr<Channel> retry_channel = CreateTestChannel(server_address.str(), true); // About 13 retries. const int kDeadlineSeconds = 540; diff --git a/test/cpp/qps/client.h b/test/cpp/qps/client.h index 1c4f46328f..5395d02e32 100644 --- a/test/cpp/qps/client.h +++ b/test/cpp/qps/client.h @@ -125,11 +125,11 @@ class Client { channel_ = CreateTestChannel(target, config.enable_ssl()); stub_ = TestService::NewStub(channel_); } - ChannelInterface* get_channel() { return channel_.get(); } + Channel* get_channel() { return channel_.get(); } TestService::Stub* get_stub() { return stub_.get(); } private: - std::shared_ptr<ChannelInterface> channel_; + std::shared_ptr<Channel> channel_; std::unique_ptr<TestService::Stub> stub_; }; std::vector<ClientChannelInfo> channels_; diff --git a/test/cpp/qps/perf_db_client.h b/test/cpp/qps/perf_db_client.h index 7a9d86d3a6..3433cd88d1 100644 --- a/test/cpp/qps/perf_db_client.h +++ b/test/cpp/qps/perf_db_client.h @@ -38,7 +38,7 @@ #include <grpc/grpc.h> #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> @@ -65,7 +65,7 @@ class PerfDbClient { client_user_time_ = DBL_MIN; } - void init(std::shared_ptr<ChannelInterface> channel) { + void init(std::shared_ptr<Channel> channel) { stub_ = PerfDbTransfer::NewStub(channel); } diff --git a/test/cpp/util/cli_call.cc b/test/cpp/util/cli_call.cc index ac88910a01..d0a300f511 100644 --- a/test/cpp/util/cli_call.cc +++ b/test/cpp/util/cli_call.cc @@ -36,7 +36,7 @@ #include <iostream> #include <grpc++/byte_buffer.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/generic_stub.h> #include <grpc++/status.h> @@ -52,7 +52,7 @@ namespace { void* tag(int i) { return (void*)(gpr_intptr)i; } } // namespace -Status CliCall::Call(std::shared_ptr<grpc::ChannelInterface> channel, +Status CliCall::Call(std::shared_ptr<grpc::Channel> channel, const grpc::string& method, const grpc::string& request, grpc::string* response, const MetadataContainer& metadata, MetadataContainer* server_initial_metadata, diff --git a/test/cpp/util/cli_call.h b/test/cpp/util/cli_call.h index 8d114c9cb5..46b5dd3e4f 100644 --- a/test/cpp/util/cli_call.h +++ b/test/cpp/util/cli_call.h @@ -36,7 +36,7 @@ #include <map> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/config.h> #include <grpc++/status.h> @@ -46,7 +46,7 @@ namespace testing { class CliCall GRPC_FINAL { public: typedef std::multimap<grpc::string, grpc::string> MetadataContainer; - static Status Call(std::shared_ptr<grpc::ChannelInterface> channel, + static Status Call(std::shared_ptr<grpc::Channel> channel, const grpc::string& method, const grpc::string& request, grpc::string* response, const MetadataContainer& metadata, MetadataContainer* server_initial_metadata, diff --git a/test/cpp/util/cli_call_test.cc b/test/cpp/util/cli_call_test.cc index 848a3aee57..146e96720f 100644 --- a/test/cpp/util/cli_call_test.cc +++ b/test/cpp/util/cli_call_test.cc @@ -35,7 +35,7 @@ #include "test/cpp/util/cli_call.h" #include "test/cpp/util/echo.grpc.pb.h" #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> @@ -97,7 +97,7 @@ class CliCallTest : public ::testing::Test { stub_ = std::move(grpc::cpp::test::util::TestService::NewStub(channel_)); } - std::shared_ptr<ChannelInterface> channel_; + std::shared_ptr<Channel> channel_; std::unique_ptr<grpc::cpp::test::util::TestService::Stub> stub_; std::unique_ptr<Server> server_; std::ostringstream server_address_; diff --git a/test/cpp/util/create_test_channel.cc b/test/cpp/util/create_test_channel.cc index dc48fa2d87..43e719ef6b 100644 --- a/test/cpp/util/create_test_channel.cc +++ b/test/cpp/util/create_test_channel.cc @@ -55,7 +55,7 @@ namespace grpc { // CreateTestChannel("test.google.com:443", "", true, true, creds); // same as above // CreateTestChannel("", "test.google.com:443", true, true, creds); -std::shared_ptr<ChannelInterface> CreateTestChannel( +std::shared_ptr<Channel> CreateTestChannel( const grpc::string& server, const grpc::string& override_hostname, bool enable_ssl, bool use_prod_roots, const std::shared_ptr<Credentials>& creds) { @@ -80,7 +80,7 @@ std::shared_ptr<ChannelInterface> CreateTestChannel( } } -std::shared_ptr<ChannelInterface> CreateTestChannel( +std::shared_ptr<Channel> CreateTestChannel( const grpc::string& server, const grpc::string& override_hostname, bool enable_ssl, bool use_prod_roots) { return CreateTestChannel(server, override_hostname, enable_ssl, @@ -88,8 +88,8 @@ std::shared_ptr<ChannelInterface> CreateTestChannel( } // Shortcut for end2end and interop tests. -std::shared_ptr<ChannelInterface> CreateTestChannel(const grpc::string& server, - bool enable_ssl) { +std::shared_ptr<Channel> CreateTestChannel(const grpc::string& server, + bool enable_ssl) { return CreateTestChannel(server, "foo.test.google.fr", enable_ssl, false); } diff --git a/test/cpp/util/create_test_channel.h b/test/cpp/util/create_test_channel.h index 5f2609ddd8..129cc746f9 100644 --- a/test/cpp/util/create_test_channel.h +++ b/test/cpp/util/create_test_channel.h @@ -40,16 +40,16 @@ #include <grpc++/credentials.h> namespace grpc { -class ChannelInterface; +class Channel; -std::shared_ptr<ChannelInterface> CreateTestChannel(const grpc::string& server, - bool enable_ssl); +std::shared_ptr<Channel> CreateTestChannel(const grpc::string& server, + bool enable_ssl); -std::shared_ptr<ChannelInterface> CreateTestChannel( +std::shared_ptr<Channel> CreateTestChannel( const grpc::string& server, const grpc::string& override_hostname, bool enable_ssl, bool use_prod_roots); -std::shared_ptr<ChannelInterface> CreateTestChannel( +std::shared_ptr<Channel> CreateTestChannel( const grpc::string& server, const grpc::string& override_hostname, bool enable_ssl, bool use_prod_roots, const std::shared_ptr<Credentials>& creds); diff --git a/test/cpp/util/grpc_cli.cc b/test/cpp/util/grpc_cli.cc index 3c3baeb769..15c56a352c 100644 --- a/test/cpp/util/grpc_cli.cc +++ b/test/cpp/util/grpc_cli.cc @@ -67,7 +67,7 @@ #include "test/cpp/util/cli_call.h" #include "test/cpp/util/test_config.h" #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> @@ -154,7 +154,7 @@ int main(int argc, char** argv) { creds = grpc::SslCredentials(grpc::SslCredentialsOptions()); } } - std::shared_ptr<grpc::ChannelInterface> channel = + std::shared_ptr<grpc::Channel> channel = grpc::CreateChannel(server_address, creds, grpc::ChannelArguments()); grpc::string response; diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++ index 790e637b72..366fc9962c 100644 --- a/tools/doxygen/Doxyfile.c++ +++ b/tools/doxygen/Doxyfile.c++ @@ -764,8 +764,8 @@ INPUT = include/grpc++/async_generic_service.h \ include/grpc++/async_unary_call.h \ include/grpc++/auth_context.h \ include/grpc++/byte_buffer.h \ +include/grpc++/channel.h \ include/grpc++/channel_arguments.h \ -include/grpc++/channel_interface.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ include/grpc++/config.h \ diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index cd1279e2a6..7137018910 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -764,8 +764,8 @@ INPUT = include/grpc++/async_generic_service.h \ include/grpc++/async_unary_call.h \ include/grpc++/auth_context.h \ include/grpc++/byte_buffer.h \ +include/grpc++/channel.h \ include/grpc++/channel_arguments.h \ -include/grpc++/channel_interface.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ include/grpc++/config.h \ @@ -804,7 +804,6 @@ include/grpc++/time.h \ src/cpp/client/secure_credentials.h \ src/cpp/common/secure_auth_context.h \ src/cpp/server/secure_server_credentials.h \ -src/cpp/client/channel.h \ src/cpp/common/create_auth_context.h \ src/cpp/client/secure_channel_arguments.cc \ src/cpp/client/secure_credentials.cc \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 72e6c41508..20eeabd288 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -13105,8 +13105,8 @@ "include/grpc++/async_unary_call.h", "include/grpc++/auth_context.h", "include/grpc++/byte_buffer.h", + "include/grpc++/channel.h", "include/grpc++/channel_arguments.h", - "include/grpc++/channel_interface.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", "include/grpc++/config.h", @@ -13142,7 +13142,6 @@ "include/grpc++/stub_options.h", "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", - "src/cpp/client/channel.h", "src/cpp/client/secure_credentials.h", "src/cpp/common/create_auth_context.h", "src/cpp/common/secure_auth_context.h", @@ -13155,8 +13154,8 @@ "include/grpc++/async_unary_call.h", "include/grpc++/auth_context.h", "include/grpc++/byte_buffer.h", + "include/grpc++/channel.h", "include/grpc++/channel_arguments.h", - "include/grpc++/channel_interface.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", "include/grpc++/config.h", @@ -13193,7 +13192,6 @@ "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", "src/cpp/client/channel.cc", - "src/cpp/client/channel.h", "src/cpp/client/channel_arguments.cc", "src/cpp/client/client_context.cc", "src/cpp/client/create_channel.cc", @@ -13279,8 +13277,8 @@ "include/grpc++/async_unary_call.h", "include/grpc++/auth_context.h", "include/grpc++/byte_buffer.h", + "include/grpc++/channel.h", "include/grpc++/channel_arguments.h", - "include/grpc++/channel_interface.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", "include/grpc++/config.h", @@ -13316,7 +13314,6 @@ "include/grpc++/stub_options.h", "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", - "src/cpp/client/channel.h", "src/cpp/common/create_auth_context.h" ], "language": "c++", @@ -13326,8 +13323,8 @@ "include/grpc++/async_unary_call.h", "include/grpc++/auth_context.h", "include/grpc++/byte_buffer.h", + "include/grpc++/channel.h", "include/grpc++/channel_arguments.h", - "include/grpc++/channel_interface.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", "include/grpc++/config.h", @@ -13364,7 +13361,6 @@ "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", "src/cpp/client/channel.cc", - "src/cpp/client/channel.h", "src/cpp/client/channel_arguments.cc", "src/cpp/client/client_context.cc", "src/cpp/client/create_channel.cc", diff --git a/vsprojects/grpc++/grpc++.vcxproj b/vsprojects/grpc++/grpc++.vcxproj index 929bc1500e..8ce96cc0e2 100644 --- a/vsprojects/grpc++/grpc++.vcxproj +++ b/vsprojects/grpc++/grpc++.vcxproj @@ -217,8 +217,8 @@ <ClInclude Include="..\..\include\grpc++\async_unary_call.h" /> <ClInclude Include="..\..\include\grpc++\auth_context.h" /> <ClInclude Include="..\..\include\grpc++\byte_buffer.h" /> + <ClInclude Include="..\..\include\grpc++\channel.h" /> <ClInclude Include="..\..\include\grpc++\channel_arguments.h" /> - <ClInclude Include="..\..\include\grpc++\channel_interface.h" /> <ClInclude Include="..\..\include\grpc++\client_context.h" /> <ClInclude Include="..\..\include\grpc++\completion_queue.h" /> <ClInclude Include="..\..\include\grpc++\config.h" /> @@ -259,7 +259,6 @@ <ClInclude Include="..\..\src\cpp\client\secure_credentials.h" /> <ClInclude Include="..\..\src\cpp\common\secure_auth_context.h" /> <ClInclude Include="..\..\src\cpp\server\secure_server_credentials.h" /> - <ClInclude Include="..\..\src\cpp\client\channel.h" /> <ClInclude Include="..\..\src\cpp\common\create_auth_context.h" /> </ItemGroup> <ItemGroup> diff --git a/vsprojects/grpc++/grpc++.vcxproj.filters b/vsprojects/grpc++/grpc++.vcxproj.filters index 0408fb46a5..924cbc4c73 100644 --- a/vsprojects/grpc++/grpc++.vcxproj.filters +++ b/vsprojects/grpc++/grpc++.vcxproj.filters @@ -108,10 +108,10 @@ <ClInclude Include="..\..\include\grpc++\byte_buffer.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\channel_arguments.h"> + <ClInclude Include="..\..\include\grpc++\channel.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\channel_interface.h"> + <ClInclude Include="..\..\include\grpc++\channel_arguments.h"> <Filter>include\grpc++</Filter> </ClInclude> <ClInclude Include="..\..\include\grpc++\client_context.h"> @@ -230,9 +230,6 @@ <ClInclude Include="..\..\src\cpp\server\secure_server_credentials.h"> <Filter>src\cpp\server</Filter> </ClInclude> - <ClInclude Include="..\..\src\cpp\client\channel.h"> - <Filter>src\cpp\client</Filter> - </ClInclude> <ClInclude Include="..\..\src\cpp\common\create_auth_context.h"> <Filter>src\cpp\common</Filter> </ClInclude> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj index 2ff252e04e..00667d38d7 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj @@ -217,8 +217,8 @@ <ClInclude Include="..\..\include\grpc++\async_unary_call.h" /> <ClInclude Include="..\..\include\grpc++\auth_context.h" /> <ClInclude Include="..\..\include\grpc++\byte_buffer.h" /> + <ClInclude Include="..\..\include\grpc++\channel.h" /> <ClInclude Include="..\..\include\grpc++\channel_arguments.h" /> - <ClInclude Include="..\..\include\grpc++\channel_interface.h" /> <ClInclude Include="..\..\include\grpc++\client_context.h" /> <ClInclude Include="..\..\include\grpc++\completion_queue.h" /> <ClInclude Include="..\..\include\grpc++\config.h" /> @@ -256,7 +256,6 @@ <ClInclude Include="..\..\include\grpc++\time.h" /> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\src\cpp\client\channel.h" /> <ClInclude Include="..\..\src\cpp\common\create_auth_context.h" /> </ItemGroup> <ItemGroup> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters index b4fae7741c..12d42f5e61 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters @@ -93,10 +93,10 @@ <ClInclude Include="..\..\include\grpc++\byte_buffer.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\channel_arguments.h"> + <ClInclude Include="..\..\include\grpc++\channel.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\channel_interface.h"> + <ClInclude Include="..\..\include\grpc++\channel_arguments.h"> <Filter>include\grpc++</Filter> </ClInclude> <ClInclude Include="..\..\include\grpc++\client_context.h"> @@ -206,9 +206,6 @@ </ClInclude> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\src\cpp\client\channel.h"> - <Filter>src\cpp\client</Filter> - </ClInclude> <ClInclude Include="..\..\src\cpp\common\create_auth_context.h"> <Filter>src\cpp\common</Filter> </ClInclude> -- GitLab From 1894f188bf062a86ed6ad1727792997ebb8cc5ec Mon Sep 17 00:00:00 2001 From: Stanley Cheung <stanleycheung@google.com> Date: Wed, 19 Aug 2015 16:32:39 -0700 Subject: [PATCH 104/178] update installation instructions, review feedback --- src/node/README.md | 8 +++++++- src/php/README.md | 2 +- src/python/README.md | 3 ++- src/ruby/README.md | 8 +++++++- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/node/README.md b/src/node/README.md index a945295ff3..b6411537c7 100644 --- a/src/node/README.md +++ b/src/node/README.md @@ -18,13 +18,19 @@ echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ sudo tee -a /etc/apt/sources.list ``` -Install the gRPC debian package +Install the gRPC Debian package ```sh sudo apt-get update sudo apt-get install libgrpc-dev ``` +Install the gRPC NPM package + +```sh +npm install grpc +``` + **Mac OS X** Install [homebrew][]. Run the following command to install gRPC Node.js. diff --git a/src/php/README.md b/src/php/README.md index 01c4db61ae..f432935fde 100644 --- a/src/php/README.md +++ b/src/php/README.md @@ -39,7 +39,7 @@ echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ sudo tee -a /etc/apt/sources.list ``` -Install the gRPC debian package +Install the gRPC Debian package ```sh sudo apt-get update diff --git a/src/python/README.md b/src/python/README.md index a7afd581b2..de0142db05 100644 --- a/src/python/README.md +++ b/src/python/README.md @@ -23,7 +23,7 @@ echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ sudo tee -a /etc/apt/sources.list ``` -Install the gRPC debian package +Install the gRPC Debian package ```sh sudo apt-get update @@ -31,6 +31,7 @@ sudo apt-get install libgrpc-dev ``` Install the gRPC Python module + ```sh sudo pip install grpcio ``` diff --git a/src/ruby/README.md b/src/ruby/README.md index 71404a2671..f8902e34c5 100644 --- a/src/ruby/README.md +++ b/src/ruby/README.md @@ -26,13 +26,19 @@ echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" | \ sudo tee -a /etc/apt/sources.list ``` -Install the gRPC debian package +Install the gRPC Debian package ```sh sudo apt-get update sudo apt-get install libgrpc-dev ``` +Install the gRPC Ruby package + +```sh +gem install grpc +``` + **Mac OS X** Install [homebrew][]. Run the following command to install gRPC Ruby. -- GitLab From fdc1dc744baa194f220a5d103ca73dde290c7d4b Mon Sep 17 00:00:00 2001 From: Hongyu Chen <hongyu@google.com> Date: Wed, 19 Aug 2015 16:58:12 -0700 Subject: [PATCH 105/178] Move census_filters from .../channel to .../census --- BUILD | 12 ++++++------ Makefile | 4 ++-- build.json | 4 ++-- gRPC.podspec | 6 +++--- src/core/{channel => census}/census_filter.c | 2 +- src/core/{channel => census}/census_filter.h | 0 src/core/surface/channel_create.c | 2 +- src/core/surface/secure_channel_create.c | 2 +- src/core/surface/server.c | 2 +- tools/doxygen/Doxyfile.core.internal | 4 ++-- tools/run_tests/sources_and_headers.json | 12 ++++++------ vsprojects/grpc/grpc.vcxproj | 6 +++--- vsprojects/grpc/grpc.vcxproj.filters | 10 +++++----- vsprojects/grpc_unsecure/grpc_unsecure.vcxproj | 6 +++--- .../grpc_unsecure/grpc_unsecure.vcxproj.filters | 10 +++++----- 15 files changed, 41 insertions(+), 41 deletions(-) rename src/core/{channel => census}/census_filter.c (99%) rename src/core/{channel => census}/census_filter.h (100%) diff --git a/BUILD b/BUILD index d38b9cee10..b24ba311e2 100644 --- a/BUILD +++ b/BUILD @@ -145,7 +145,7 @@ cc_library( "src/core/tsi/ssl_transport_security.h", "src/core/tsi/transport_security.h", "src/core/tsi/transport_security_interface.h", - "src/core/channel/census_filter.h", + "src/core/census/census_filter.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", "src/core/channel/client_channel.h", @@ -267,8 +267,8 @@ cc_library( "src/core/tsi/fake_transport_security.c", "src/core/tsi/ssl_transport_security.c", "src/core/tsi/transport_security.c", + "src/core/census/census_filter.c", "src/core/census/grpc_context.c", - "src/core/channel/census_filter.c", "src/core/channel/channel_args.c", "src/core/channel/channel_stack.c", "src/core/channel/client_channel.c", @@ -409,7 +409,7 @@ cc_library( cc_library( name = "grpc_unsecure", srcs = [ - "src/core/channel/census_filter.h", + "src/core/census/census_filter.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", "src/core/channel/client_channel.h", @@ -511,8 +511,8 @@ cc_library( "src/core/census/context.h", "src/core/census/rpc_stat_id.h", "src/core/surface/init_unsecure.c", + "src/core/census/census_filter.c", "src/core/census/grpc_context.c", - "src/core/channel/census_filter.c", "src/core/channel/channel_args.c", "src/core/channel/channel_stack.c", "src/core/channel/client_channel.c", @@ -997,8 +997,8 @@ objc_library( "src/core/tsi/fake_transport_security.c", "src/core/tsi/ssl_transport_security.c", "src/core/tsi/transport_security.c", + "src/core/census/census_filter.c", "src/core/census/grpc_context.c", - "src/core/channel/census_filter.c", "src/core/channel/channel_args.c", "src/core/channel/channel_stack.c", "src/core/channel/client_channel.c", @@ -1137,7 +1137,7 @@ objc_library( "src/core/tsi/ssl_transport_security.h", "src/core/tsi/transport_security.h", "src/core/tsi/transport_security_interface.h", - "src/core/channel/census_filter.h", + "src/core/census/census_filter.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", "src/core/channel/client_channel.h", diff --git a/Makefile b/Makefile index aabf1bbd04..995a4954e4 100644 --- a/Makefile +++ b/Makefile @@ -3976,8 +3976,8 @@ LIBGRPC_SRC = \ src/core/tsi/fake_transport_security.c \ src/core/tsi/ssl_transport_security.c \ src/core/tsi/transport_security.c \ + src/core/census/census_filter.c \ src/core/census/grpc_context.c \ - src/core/channel/census_filter.c \ src/core/channel/channel_args.c \ src/core/channel/channel_stack.c \ src/core/channel/client_channel.c \ @@ -4249,8 +4249,8 @@ endif LIBGRPC_UNSECURE_SRC = \ src/core/surface/init_unsecure.c \ + src/core/census/census_filter.c \ src/core/census/grpc_context.c \ - src/core/channel/census_filter.c \ src/core/channel/channel_args.c \ src/core/channel/channel_stack.c \ src/core/channel/client_channel.c \ diff --git a/build.json b/build.json index ab6a39a20f..3e3e71a684 100644 --- a/build.json +++ b/build.json @@ -114,7 +114,7 @@ "include/grpc/status.h" ], "headers": [ - "src/core/channel/census_filter.h", + "src/core/census/census_filter.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", "src/core/channel/client_channel.h", @@ -215,8 +215,8 @@ "src/core/transport/transport_impl.h" ], "src": [ + "src/core/census/census_filter.c", "src/core/census/grpc_context.c", - "src/core/channel/census_filter.c", "src/core/channel/channel_args.c", "src/core/channel/channel_stack.c", "src/core/channel/client_channel.c", diff --git a/gRPC.podspec b/gRPC.podspec index d1e95a1652..b57960a896 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -147,7 +147,7 @@ Pod::Spec.new do |s| 'src/core/tsi/ssl_transport_security.h', 'src/core/tsi/transport_security.h', 'src/core/tsi/transport_security_interface.h', - 'src/core/channel/census_filter.h', + 'src/core/census/census_filter.h', 'src/core/channel/channel_args.h', 'src/core/channel/channel_stack.h', 'src/core/channel/client_channel.h', @@ -276,8 +276,8 @@ Pod::Spec.new do |s| 'src/core/tsi/fake_transport_security.c', 'src/core/tsi/ssl_transport_security.c', 'src/core/tsi/transport_security.c', + 'src/core/census/census_filter.c', 'src/core/census/grpc_context.c', - 'src/core/channel/census_filter.c', 'src/core/channel/channel_args.c', 'src/core/channel/channel_stack.c', 'src/core/channel/client_channel.c', @@ -415,7 +415,7 @@ Pod::Spec.new do |s| 'src/core/tsi/ssl_transport_security.h', 'src/core/tsi/transport_security.h', 'src/core/tsi/transport_security_interface.h', - 'src/core/channel/census_filter.h', + 'src/core/census/census_filter.h', 'src/core/channel/channel_args.h', 'src/core/channel/channel_stack.h', 'src/core/channel/client_channel.h', diff --git a/src/core/channel/census_filter.c b/src/core/census/census_filter.c similarity index 99% rename from src/core/channel/census_filter.c rename to src/core/census/census_filter.c index 53d70be356..31db686cf3 100644 --- a/src/core/channel/census_filter.c +++ b/src/core/census/census_filter.c @@ -31,7 +31,7 @@ * */ -#include "src/core/channel/census_filter.h" +#include "src/core/census/census_filter.h" #include <stdio.h> #include <string.h> diff --git a/src/core/channel/census_filter.h b/src/core/census/census_filter.h similarity index 100% rename from src/core/channel/census_filter.h rename to src/core/census/census_filter.h diff --git a/src/core/surface/channel_create.c b/src/core/surface/channel_create.c index 4379b3d016..4d01be3d7d 100644 --- a/src/core/surface/channel_create.c +++ b/src/core/surface/channel_create.c @@ -38,7 +38,7 @@ #include <grpc/support/alloc.h> -#include "src/core/channel/census_filter.h" +#include "src/core/census/census_filter.h" #include "src/core/channel/channel_args.h" #include "src/core/channel/client_channel.h" #include "src/core/channel/compress_filter.h" diff --git a/src/core/surface/secure_channel_create.c b/src/core/surface/secure_channel_create.c index 93a372928f..943bddfc0c 100644 --- a/src/core/surface/secure_channel_create.c +++ b/src/core/surface/secure_channel_create.c @@ -38,7 +38,7 @@ #include <grpc/support/alloc.h> -#include "src/core/channel/census_filter.h" +#include "src/core/census/census_filter.h" #include "src/core/channel/channel_args.h" #include "src/core/channel/client_channel.h" #include "src/core/channel/compress_filter.h" diff --git a/src/core/surface/server.c b/src/core/surface/server.c index 27070836f3..22d399cf1f 100644 --- a/src/core/surface/server.c +++ b/src/core/surface/server.c @@ -41,7 +41,7 @@ #include <grpc/support/string_util.h> #include <grpc/support/useful.h> -#include "src/core/channel/census_filter.h" +#include "src/core/census/census_filter.h" #include "src/core/channel/channel_args.h" #include "src/core/channel/connected_channel.h" #include "src/core/iomgr/iomgr.h" diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index 0619f76e27..f5d5dc0f80 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -780,7 +780,7 @@ src/core/tsi/fake_transport_security.h \ src/core/tsi/ssl_transport_security.h \ src/core/tsi/transport_security.h \ src/core/tsi/transport_security_interface.h \ -src/core/channel/census_filter.h \ +src/core/census/census_filter.h \ src/core/channel/channel_args.h \ src/core/channel/channel_stack.h \ src/core/channel/client_channel.h \ @@ -902,8 +902,8 @@ 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/census_filter.c \ src/core/census/grpc_context.c \ -src/core/channel/census_filter.c \ src/core/channel/channel_args.c \ src/core/channel/channel_stack.c \ src/core/channel/client_channel.c \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 38bf532f44..cc74397cea 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -12222,9 +12222,9 @@ "include/grpc/grpc.h", "include/grpc/grpc_security.h", "include/grpc/status.h", + "src/core/census/census_filter.h", "src/core/census/context.h", "src/core/census/rpc_stat_id.h", - "src/core/channel/census_filter.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", "src/core/channel/client_channel.h", @@ -12347,14 +12347,14 @@ "include/grpc/grpc.h", "include/grpc/grpc_security.h", "include/grpc/status.h", + "src/core/census/census_filter.c", + "src/core/census/census_filter.h", "src/core/census/context.c", "src/core/census/context.h", "src/core/census/grpc_context.c", "src/core/census/initialize.c", "src/core/census/record_stat.c", "src/core/census/rpc_stat_id.h", - "src/core/channel/census_filter.c", - "src/core/channel/census_filter.h", "src/core/channel/channel_args.c", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.c", @@ -12694,9 +12694,9 @@ "include/grpc/compression.h", "include/grpc/grpc.h", "include/grpc/status.h", + "src/core/census/census_filter.h", "src/core/census/context.h", "src/core/census/rpc_stat_id.h", - "src/core/channel/census_filter.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", "src/core/channel/client_channel.h", @@ -12805,14 +12805,14 @@ "include/grpc/compression.h", "include/grpc/grpc.h", "include/grpc/status.h", + "src/core/census/census_filter.c", + "src/core/census/census_filter.h", "src/core/census/context.c", "src/core/census/context.h", "src/core/census/grpc_context.c", "src/core/census/initialize.c", "src/core/census/record_stat.c", "src/core/census/rpc_stat_id.h", - "src/core/channel/census_filter.c", - "src/core/channel/census_filter.h", "src/core/channel/channel_args.c", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.c", diff --git a/vsprojects/grpc/grpc.vcxproj b/vsprojects/grpc/grpc.vcxproj index a87ad29d49..950e385ee7 100644 --- a/vsprojects/grpc/grpc.vcxproj +++ b/vsprojects/grpc/grpc.vcxproj @@ -242,7 +242,7 @@ <ClInclude Include="..\..\src\core\tsi\ssl_transport_security.h" /> <ClInclude Include="..\..\src\core\tsi\transport_security.h" /> <ClInclude Include="..\..\src\core\tsi\transport_security_interface.h" /> - <ClInclude Include="..\..\src\core\channel\census_filter.h" /> + <ClInclude Include="..\..\src\core\census\census_filter.h" /> <ClInclude Include="..\..\src\core\channel\channel_args.h" /> <ClInclude Include="..\..\src\core\channel\channel_stack.h" /> <ClInclude Include="..\..\src\core\channel\client_channel.h" /> @@ -387,9 +387,9 @@ </ClCompile> <ClCompile Include="..\..\src\core\tsi\transport_security.c"> </ClCompile> - <ClCompile Include="..\..\src\core\census\grpc_context.c"> + <ClCompile Include="..\..\src\core\census\census_filter.c"> </ClCompile> - <ClCompile Include="..\..\src\core\channel\census_filter.c"> + <ClCompile Include="..\..\src\core\census\grpc_context.c"> </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> </ClCompile> diff --git a/vsprojects/grpc/grpc.vcxproj.filters b/vsprojects/grpc/grpc.vcxproj.filters index c8812faa85..d6ecdbba41 100644 --- a/vsprojects/grpc/grpc.vcxproj.filters +++ b/vsprojects/grpc/grpc.vcxproj.filters @@ -64,11 +64,11 @@ <ClCompile Include="..\..\src\core\tsi\transport_security.c"> <Filter>src\core\tsi</Filter> </ClCompile> - <ClCompile Include="..\..\src\core\census\grpc_context.c"> + <ClCompile Include="..\..\src\core\census\census_filter.c"> <Filter>src\core\census</Filter> </ClCompile> - <ClCompile Include="..\..\src\core\channel\census_filter.c"> - <Filter>src\core\channel</Filter> + <ClCompile Include="..\..\src\core\census\grpc_context.c"> + <Filter>src\core\census</Filter> </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> <Filter>src\core\channel</Filter> @@ -482,8 +482,8 @@ <ClInclude Include="..\..\src\core\tsi\transport_security_interface.h"> <Filter>src\core\tsi</Filter> </ClInclude> - <ClInclude Include="..\..\src\core\channel\census_filter.h"> - <Filter>src\core\channel</Filter> + <ClInclude Include="..\..\src\core\census\census_filter.h"> + <Filter>src\core\census</Filter> </ClInclude> <ClInclude Include="..\..\src\core\channel\channel_args.h"> <Filter>src\core\channel</Filter> diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj index 06da784323..acd83c6080 100644 --- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj +++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj @@ -225,7 +225,7 @@ <ClInclude Include="..\..\include\grpc\census.h" /> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\src\core\channel\census_filter.h" /> + <ClInclude Include="..\..\src\core\census\census_filter.h" /> <ClInclude Include="..\..\src\core\channel\channel_args.h" /> <ClInclude Include="..\..\src\core\channel\channel_stack.h" /> <ClInclude Include="..\..\src\core\channel\client_channel.h" /> @@ -330,9 +330,9 @@ <ItemGroup> <ClCompile Include="..\..\src\core\surface\init_unsecure.c"> </ClCompile> - <ClCompile Include="..\..\src\core\census\grpc_context.c"> + <ClCompile Include="..\..\src\core\census\census_filter.c"> </ClCompile> - <ClCompile Include="..\..\src\core\channel\census_filter.c"> + <ClCompile Include="..\..\src\core\census\grpc_context.c"> </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> </ClCompile> diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters index 2d10960a79..12da3fa1e3 100644 --- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters +++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters @@ -4,11 +4,11 @@ <ClCompile Include="..\..\src\core\surface\init_unsecure.c"> <Filter>src\core\surface</Filter> </ClCompile> - <ClCompile Include="..\..\src\core\census\grpc_context.c"> + <ClCompile Include="..\..\src\core\census\census_filter.c"> <Filter>src\core\census</Filter> </ClCompile> - <ClCompile Include="..\..\src\core\channel\census_filter.c"> - <Filter>src\core\channel</Filter> + <ClCompile Include="..\..\src\core\census\grpc_context.c"> + <Filter>src\core\census</Filter> </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> <Filter>src\core\channel</Filter> @@ -380,8 +380,8 @@ </ClInclude> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\src\core\channel\census_filter.h"> - <Filter>src\core\channel</Filter> + <ClInclude Include="..\..\src\core\census\census_filter.h"> + <Filter>src\core\census</Filter> </ClInclude> <ClInclude Include="..\..\src\core\channel\channel_args.h"> <Filter>src\core\channel</Filter> -- GitLab From bdfc7ad957e3856cf19274ee9e72a7e13ebd683a Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Wed, 19 Aug 2015 18:34:45 -0700 Subject: [PATCH 106/178] Fixed wrong creation of metadata in compression. --- include/grpc/compression.h | 4 +++- src/core/channel/compress_filter.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/grpc/compression.h b/include/grpc/compression.h index e35fb03eb2..9924baeca1 100644 --- a/include/grpc/compression.h +++ b/include/grpc/compression.h @@ -67,7 +67,9 @@ int grpc_compression_algorithm_parse(const char *name, size_t name_length, grpc_compression_algorithm *algorithm); /** Updates \a name with the encoding name corresponding to a valid \a - * algorithm. Returns 1 upon success, 0 otherwise. */ + * algorithm. Note that the string returned through \a name upon success is + * statically allocated and shouldn't be freed. Returns 1 upon success, 0 + * otherwise. */ int grpc_compression_algorithm_name(grpc_compression_algorithm algorithm, char **name); diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c index 20d723bbc1..762a4edc73 100644 --- a/src/core/channel/compress_filter.c +++ b/src/core/channel/compress_filter.c @@ -216,7 +216,7 @@ static void process_send_ops(grpc_call_element *elem, [calld->compression_algorithm])); /* convey supported compression algorithms */ - grpc_metadata_batch_add_head( + grpc_metadata_batch_add_tail( &(sop->data.metadata), &calld->accept_encoding_storage, GRPC_MDELEM_REF(channeld->mdelem_accept_encoding)); -- GitLab From ee3dbb00789b463119242ea74c6c7317b42bee48 Mon Sep 17 00:00:00 2001 From: Julien Boeuf <jboeuf@google.com> Date: Wed, 19 Aug 2015 22:17:03 -0700 Subject: [PATCH 107/178] Have a richer interface for auth metadata processors. --- include/grpc/grpc_security.h | 14 +++++++--- src/core/security/server_auth_filter.c | 28 +++++++++++++------ .../end2end/fixtures/chttp2_fake_security.c | 2 +- .../fixtures/chttp2_simple_ssl_fullstack.c | 2 +- .../chttp2_simple_ssl_fullstack_with_poll.c | 2 +- .../chttp2_simple_ssl_fullstack_with_proxy.c | 2 +- .../chttp2_simple_ssl_with_oauth2_fullstack.c | 4 +-- 7 files changed, 35 insertions(+), 19 deletions(-) diff --git a/include/grpc/grpc_security.h b/include/grpc/grpc_security.h index 640c1fda98..7f8f4d4a05 100644 --- a/include/grpc/grpc_security.h +++ b/include/grpc/grpc_security.h @@ -275,12 +275,18 @@ int grpc_auth_context_set_peer_identity_property_name(grpc_auth_context *ctx, /* --- Auth Metadata Processing --- */ /* Callback function that is called when the metadata processing is done. - success is 1 if processing succeeded, 0 otherwise. - Consumed metadata will be removed from the set of metadata available on the - call. */ + - Consumed metadata will be removed from the set of metadata available on the + call. consumed_md may be NULL if no metadata has been consumed. + - Response metadata will be set on the response. response_md may be NULL. + - status is GRPC_STATUS_OK for success or a specific status for an error. + Common error status for auth metadata processing is either + GRPC_STATUS_UNAUTHENTICATED in case of an authentication failure or + GRPC_STATUS PERMISSION_DENIED in case of an authorization failure. + - error_details gives details about the error. May be NULL. */ typedef void (*grpc_process_auth_metadata_done_cb)( void *user_data, const grpc_metadata *consumed_md, size_t num_consumed_md, - int success); + const grpc_metadata *response_md, size_t num_response_md, + grpc_status_code status, const char *error_details); /* Pluggable server-side metadata processor object. */ typedef struct { diff --git a/src/core/security/server_auth_filter.c b/src/core/security/server_auth_filter.c index 2f42f01f53..6e831431fa 100644 --- a/src/core/security/server_auth_filter.c +++ b/src/core/security/server_auth_filter.c @@ -104,24 +104,34 @@ static grpc_mdelem *remove_consumed_md(void *user_data, grpc_mdelem *md) { return md; } -static void on_md_processing_done(void *user_data, - const grpc_metadata *consumed_md, - size_t num_consumed_md, int success) { +static void on_md_processing_done( + void *user_data, const grpc_metadata *consumed_md, size_t num_consumed_md, + const grpc_metadata *response_md, size_t num_response_md, + grpc_status_code status, const char *error_details) { grpc_call_element *elem = user_data; call_data *calld = elem->call_data; - if (success) { + /* TODO(jboeuf): Implement support for response_md. */ + if (response_md != NULL && num_response_md > 0) { + gpr_log(GPR_INFO, + "response_md in auth metadata processing not supported for now. " + "Ignoring..."); + } + + if (status == GRPC_STATUS_OK) { calld->consumed_md = consumed_md; calld->num_consumed_md = num_consumed_md; grpc_metadata_batch_filter(&calld->md_op->data.metadata, remove_consumed_md, elem); - calld->on_done_recv->cb(calld->on_done_recv->cb_arg, success); + calld->on_done_recv->cb(calld->on_done_recv->cb_arg, 1); } else { - gpr_slice message = gpr_slice_from_copied_string( - "Authentication metadata processing failed."); + gpr_slice message; + error_details = error_details != NULL + ? error_details + : "Authentication metadata processing failed."; + message = gpr_slice_from_copied_string(error_details); grpc_sopb_reset(calld->recv_ops); - grpc_transport_stream_op_add_close(&calld->transport_op, - GRPC_STATUS_UNAUTHENTICATED, &message); + grpc_transport_stream_op_add_close(&calld->transport_op, status, &message); grpc_call_next_op(elem, &calld->transport_op); } } diff --git a/test/core/end2end/fixtures/chttp2_fake_security.c b/test/core/end2end/fixtures/chttp2_fake_security.c index 27531ecbc3..a0a67939a2 100644 --- a/test/core/end2end/fixtures/chttp2_fake_security.c +++ b/test/core/end2end/fixtures/chttp2_fake_security.c @@ -70,7 +70,7 @@ static void process_auth_failure(void *state, grpc_auth_context *ctx, grpc_process_auth_metadata_done_cb cb, void *user_data) { GPR_ASSERT(state == NULL); - cb(user_data, NULL, 0, 0); + cb(user_data, NULL, 0, NULL, 0, GRPC_STATUS_UNAUTHENTICATED, NULL); } static void chttp2_init_client_secure_fullstack(grpc_end2end_test_fixture *f, diff --git a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c index 491a293764..beae24136c 100644 --- a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c +++ b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c @@ -73,7 +73,7 @@ static void process_auth_failure(void *state, grpc_auth_context *ctx, grpc_process_auth_metadata_done_cb cb, void *user_data) { GPR_ASSERT(state == NULL); - cb(user_data, NULL, 0, 0); + cb(user_data, NULL, 0, NULL, 0, GRPC_STATUS_UNAUTHENTICATED, NULL); } static void chttp2_init_client_secure_fullstack(grpc_end2end_test_fixture *f, diff --git a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_poll.c b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_poll.c index f2736cc92f..c8971be596 100644 --- a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_poll.c +++ b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_poll.c @@ -73,7 +73,7 @@ static void process_auth_failure(void *state, grpc_auth_context *ctx, grpc_process_auth_metadata_done_cb cb, void *user_data) { GPR_ASSERT(state == NULL); - cb(user_data, NULL, 0, 0); + cb(user_data, NULL, 0, NULL, 0, GRPC_STATUS_UNAUTHENTICATED, NULL); } static void chttp2_init_client_secure_fullstack(grpc_end2end_test_fixture *f, diff --git a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_proxy.c b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_proxy.c index cc0b9dbbdd..a518a7da15 100644 --- a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_proxy.c +++ b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack_with_proxy.c @@ -101,7 +101,7 @@ static void process_auth_failure(void *state, grpc_auth_context *ctx, grpc_process_auth_metadata_done_cb cb, void *user_data) { GPR_ASSERT(state == NULL); - cb(user_data, NULL, 0, 0); + cb(user_data, NULL, 0, NULL, 0, GRPC_STATUS_UNAUTHENTICATED, NULL); } static void chttp2_init_client_secure_fullstack(grpc_end2end_test_fixture *f, diff --git a/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c b/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c index d82e623f22..7f11028cb5 100644 --- a/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c +++ b/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c @@ -79,7 +79,7 @@ static void process_oauth2_success(void *state, grpc_auth_context *ctx, client_identity); GPR_ASSERT(grpc_auth_context_set_peer_identity_property_name( ctx, client_identity_property_name) == 1); - cb(user_data, oauth2, 1, 1); + cb(user_data, oauth2, 1, NULL, 0, GRPC_STATUS_OK, NULL); } static void process_oauth2_failure(void *state, grpc_auth_context *ctx, @@ -90,7 +90,7 @@ static void process_oauth2_failure(void *state, grpc_auth_context *ctx, find_metadata(md, md_count, "Authorization", oauth2_md); GPR_ASSERT(state == NULL); GPR_ASSERT(oauth2 != NULL); - cb(user_data, oauth2, 1, 0); + cb(user_data, oauth2, 1, NULL, 0, GRPC_STATUS_UNAUTHENTICATED, NULL); } static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack( -- GitLab From 2670086806aace424d954be11123f3a5f9ef2115 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Thu, 20 Aug 2015 10:27:39 -0700 Subject: [PATCH 108/178] Assert http2 header ordering --- src/core/transport/chttp2/stream_encoder.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/core/transport/chttp2/stream_encoder.c b/src/core/transport/chttp2/stream_encoder.c index 0f04169741..e9acf2b916 100644 --- a/src/core/transport/chttp2/stream_encoder.c +++ b/src/core/transport/chttp2/stream_encoder.c @@ -66,6 +66,7 @@ typedef struct { size_t header_idx; /* was the last frame emitted a header? (if yes, we'll need a CONTINUATION */ gpr_uint8 last_was_header; + gpr_uint8 seen_regular_header; /* output stream id */ gpr_uint32 stream_id; gpr_slice_buffer *output; @@ -361,6 +362,16 @@ static grpc_mdelem *hpack_enc(grpc_chttp2_hpack_compressor *c, gpr_uint32 indices_key; int should_add_elem; + if (GPR_SLICE_LENGTH(elem->key->slice) > 0) { + if (GPR_SLICE_START_PTR(elem->key->slice)[0] != ':') { /* regular header */ + st->seen_regular_header = 1; + } else if (st->seen_regular_header != 0) { /* reserved header */ + gpr_log(GPR_ERROR, + "Reserved header (colon-prefixed) happening after regular ones."); + abort(); + } + } + inc_filter(HASH_FRAGMENT_1(elem_hash), &c->filter_elems_sum, c->filter_elems); /* is this elem currently in the decoders table? */ @@ -566,6 +577,7 @@ void grpc_chttp2_encode(grpc_stream_op *ops, size_t ops_count, int eof, st.cur_frame_type = NONE; st.last_was_header = 0; + st.seen_regular_header = 0; st.stream_id = stream_id; st.output = output; -- GitLab From 5bb30c764b91e54da27f4de0fcf258b320486c8c Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Thu, 20 Aug 2015 10:34:37 -0700 Subject: [PATCH 109/178] if to assert --- src/core/transport/chttp2/stream_encoder.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/core/transport/chttp2/stream_encoder.c b/src/core/transport/chttp2/stream_encoder.c index e9acf2b916..c6780e6156 100644 --- a/src/core/transport/chttp2/stream_encoder.c +++ b/src/core/transport/chttp2/stream_encoder.c @@ -362,14 +362,13 @@ static grpc_mdelem *hpack_enc(grpc_chttp2_hpack_compressor *c, gpr_uint32 indices_key; int should_add_elem; - if (GPR_SLICE_LENGTH(elem->key->slice) > 0) { - if (GPR_SLICE_START_PTR(elem->key->slice)[0] != ':') { /* regular header */ - st->seen_regular_header = 1; - } else if (st->seen_regular_header != 0) { /* reserved header */ - gpr_log(GPR_ERROR, - "Reserved header (colon-prefixed) happening after regular ones."); - abort(); - } + GPR_ASSERT (GPR_SLICE_LENGTH(elem->key->slice) > 0); + if (GPR_SLICE_START_PTR(elem->key->slice)[0] != ':') { /* regular header */ + st->seen_regular_header = 1; + } else if (st->seen_regular_header != 0) { /* reserved header */ + gpr_log(GPR_ERROR, + "Reserved header (colon-prefixed) happening after regular ones."); + abort(); } inc_filter(HASH_FRAGMENT_1(elem_hash), &c->filter_elems_sum, c->filter_elems); -- GitLab From a14ce859a6845dc787bb165f65fe9ebb6074b2ff Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Thu, 20 Aug 2015 10:36:24 -0700 Subject: [PATCH 110/178] comment --- src/core/transport/chttp2/stream_encoder.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/transport/chttp2/stream_encoder.c b/src/core/transport/chttp2/stream_encoder.c index c6780e6156..1ea697f71e 100644 --- a/src/core/transport/chttp2/stream_encoder.c +++ b/src/core/transport/chttp2/stream_encoder.c @@ -66,6 +66,7 @@ typedef struct { size_t header_idx; /* was the last frame emitted a header? (if yes, we'll need a CONTINUATION */ gpr_uint8 last_was_header; + /* have we seen a regular (non-colon-prefixed) header yet? */ gpr_uint8 seen_regular_header; /* output stream id */ gpr_uint32 stream_id; -- GitLab From 431f8c2b5feecf202c484f6d0d1d7a0cf6f4be73 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Thu, 20 Aug 2015 10:59:29 -0700 Subject: [PATCH 111/178] make registermethod private --- include/grpc++/channel.h | 5 ++--- include/grpc++/impl/rpc_method.h | 11 +++++++++-- src/compiler/cpp_generator.cc | 13 ++++++------- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/include/grpc++/channel.h b/include/grpc++/channel.h index a4cef1b4d9..ceb921eff8 100644 --- a/include/grpc++/channel.h +++ b/include/grpc++/channel.h @@ -94,9 +94,6 @@ class Channel GRPC_FINAL : public GrpcLibrary, return WaitForStateChangeImpl(last_observed, deadline_tp.raw_time()); } - // Used by Stub only in generated code. - void* RegisterMethod(const char* method); - private: template <class R> friend class ::grpc::ClientReader; @@ -117,10 +114,12 @@ class Channel GRPC_FINAL : public GrpcLibrary, ClientContext* context, const InputMessage& request, OutputMessage* result); + friend class ::grpc::RpcMethod; Call CreateCall(const RpcMethod& method, ClientContext* context, CompletionQueue* cq); void PerformOpsOnCall(CallOpSetInterface* ops, Call* call); + void* RegisterMethod(const char* method); void NotifyOnStateChangeImpl(grpc_connectivity_state last_observed, gpr_timespec deadline, CompletionQueue* cq, diff --git a/include/grpc++/impl/rpc_method.h b/include/grpc++/impl/rpc_method.h index 50a160b08c..912ffab21f 100644 --- a/include/grpc++/impl/rpc_method.h +++ b/include/grpc++/impl/rpc_method.h @@ -34,6 +34,10 @@ #ifndef GRPCXX_IMPL_RPC_METHOD_H #define GRPCXX_IMPL_RPC_METHOD_H +#include <memory> + +#include <grpc++/channel.h> + namespace grpc { class RpcMethod { @@ -45,8 +49,11 @@ class RpcMethod { BIDI_STREAMING }; - RpcMethod(const char* name, RpcType type, void* channel_tag) - : name_(name), method_type_(type), channel_tag_(channel_tag) {} + RpcMethod(const char* name, RpcType type, + const std::shared_ptr<Channel>& channel) + : name_(name), + method_type_(type), + channel_tag_(channel->RegisterMethod(name)) {} const char* name() const { return name_; } RpcType method_type() const { return method_type_; } diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc index 731ba58fb1..d0229d702d 100644 --- a/src/compiler/cpp_generator.cc +++ b/src/compiler/cpp_generator.cc @@ -989,13 +989,12 @@ void PrintSourceService(grpc::protobuf::io::Printer *printer, } else { (*vars)["StreamingType"] = "BIDI_STREAMING"; } - printer->Print( - *vars, - ", rpcmethod_$Method$_(" - "$prefix$$Service$_method_names[$Idx$], " - "::grpc::RpcMethod::$StreamingType$, " - "channel->RegisterMethod($prefix$$Service$_method_names[$Idx$])" - ")\n"); + printer->Print(*vars, + ", rpcmethod_$Method$_(" + "$prefix$$Service$_method_names[$Idx$], " + "::grpc::RpcMethod::$StreamingType$, " + "channel" + ")\n"); } printer->Print("{}\n\n"); printer->Outdent(); -- GitLab From c2bd8a6d1a957276875ebecc72498d36daa12833 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Thu, 20 Aug 2015 11:40:12 -0700 Subject: [PATCH 112/178] Fix server side and generic stub --- include/grpc++/impl/rpc_method.h | 3 +++ include/grpc++/impl/rpc_service_method.h | 2 +- src/cpp/client/generic_stub.cc | 3 +-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/grpc++/impl/rpc_method.h b/include/grpc++/impl/rpc_method.h index 912ffab21f..9800268062 100644 --- a/include/grpc++/impl/rpc_method.h +++ b/include/grpc++/impl/rpc_method.h @@ -49,6 +49,9 @@ class RpcMethod { BIDI_STREAMING }; + RpcMethod(const char* name, RpcType type) + : name_(name), method_type_(type), channel_tag_(NULL) {} + RpcMethod(const char* name, RpcType type, const std::shared_ptr<Channel>& channel) : name_(name), diff --git a/include/grpc++/impl/rpc_service_method.h b/include/grpc++/impl/rpc_service_method.h index 925801e1ce..078c8c491a 100644 --- a/include/grpc++/impl/rpc_service_method.h +++ b/include/grpc++/impl/rpc_service_method.h @@ -229,7 +229,7 @@ class RpcServiceMethod : public RpcMethod { // Takes ownership of the handler RpcServiceMethod(const char* name, RpcMethod::RpcType type, MethodHandler* handler) - : RpcMethod(name, type, nullptr), handler_(handler) {} + : RpcMethod(name, type), handler_(handler) {} MethodHandler* handler() { return handler_.get(); } diff --git a/src/cpp/client/generic_stub.cc b/src/cpp/client/generic_stub.cc index 0c90578ae5..ee89c02965 100644 --- a/src/cpp/client/generic_stub.cc +++ b/src/cpp/client/generic_stub.cc @@ -44,8 +44,7 @@ std::unique_ptr<GenericClientAsyncReaderWriter> GenericStub::Call( return std::unique_ptr<GenericClientAsyncReaderWriter>( new GenericClientAsyncReaderWriter( channel_.get(), cq, - RpcMethod(method.c_str(), RpcMethod::BIDI_STREAMING, nullptr), - context, tag)); + RpcMethod(method.c_str(), RpcMethod::BIDI_STREAMING), context, tag)); } } // namespace grpc -- GitLab From ef00308e391094212b5ba6aad0c6f7b90025f4e3 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Thu, 20 Aug 2015 11:40:51 -0700 Subject: [PATCH 113/178] remove internal_stub --- BUILD | 4 -- Makefile | 4 -- build.json | 2 - include/grpc++/impl/internal_stub.h | 56 ------------------- src/compiler/cpp_generator.cc | 24 ++++---- src/cpp/client/internal_stub.cc | 36 ------------ tools/doxygen/Doxyfile.c++ | 1 - tools/doxygen/Doxyfile.c++.internal | 2 - tools/run_tests/sources_and_headers.json | 6 -- vsprojects/grpc++/grpc++.vcxproj | 3 - vsprojects/grpc++/grpc++.vcxproj.filters | 6 -- .../grpc++_unsecure/grpc++_unsecure.vcxproj | 3 - .../grpc++_unsecure.vcxproj.filters | 6 -- 13 files changed, 12 insertions(+), 141 deletions(-) delete mode 100644 include/grpc++/impl/internal_stub.h delete mode 100644 src/cpp/client/internal_stub.cc diff --git a/BUILD b/BUILD index adcc4cb413..514b662101 100644 --- a/BUILD +++ b/BUILD @@ -689,7 +689,6 @@ cc_library( "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", - "src/cpp/client/internal_stub.cc", "src/cpp/common/call.cc", "src/cpp/common/completion_queue.cc", "src/cpp/common/rpc_method.cc", @@ -727,7 +726,6 @@ cc_library( "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", - "include/grpc++/impl/internal_stub.h", "include/grpc++/impl/proto_utils.h", "include/grpc++/impl/rpc_method.h", "include/grpc++/impl/rpc_service_method.h", @@ -775,7 +773,6 @@ cc_library( "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", - "src/cpp/client/internal_stub.cc", "src/cpp/common/call.cc", "src/cpp/common/completion_queue.cc", "src/cpp/common/rpc_method.cc", @@ -813,7 +810,6 @@ cc_library( "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", - "include/grpc++/impl/internal_stub.h", "include/grpc++/impl/proto_utils.h", "include/grpc++/impl/rpc_method.h", "include/grpc++/impl/rpc_service_method.h", diff --git a/Makefile b/Makefile index dba1a0457e..ce6406112e 100644 --- a/Makefile +++ b/Makefile @@ -4606,7 +4606,6 @@ LIBGRPC++_SRC = \ src/cpp/client/credentials.cc \ src/cpp/client/generic_stub.cc \ src/cpp/client/insecure_credentials.cc \ - src/cpp/client/internal_stub.cc \ src/cpp/common/call.cc \ src/cpp/common/completion_queue.cc \ src/cpp/common/rpc_method.cc \ @@ -4644,7 +4643,6 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ include/grpc++/impl/grpc_library.h \ - include/grpc++/impl/internal_stub.h \ include/grpc++/impl/proto_utils.h \ include/grpc++/impl/rpc_method.h \ include/grpc++/impl/rpc_service_method.h \ @@ -4849,7 +4847,6 @@ LIBGRPC++_UNSECURE_SRC = \ src/cpp/client/credentials.cc \ src/cpp/client/generic_stub.cc \ src/cpp/client/insecure_credentials.cc \ - src/cpp/client/internal_stub.cc \ src/cpp/common/call.cc \ src/cpp/common/completion_queue.cc \ src/cpp/common/rpc_method.cc \ @@ -4887,7 +4884,6 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ include/grpc++/impl/grpc_library.h \ - include/grpc++/impl/internal_stub.h \ include/grpc++/impl/proto_utils.h \ include/grpc++/impl/rpc_method.h \ include/grpc++/impl/rpc_service_method.h \ diff --git a/build.json b/build.json index 553e98db4b..d49b953d8a 100644 --- a/build.json +++ b/build.json @@ -48,7 +48,6 @@ "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", - "include/grpc++/impl/internal_stub.h", "include/grpc++/impl/proto_utils.h", "include/grpc++/impl/rpc_method.h", "include/grpc++/impl/rpc_service_method.h", @@ -83,7 +82,6 @@ "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", - "src/cpp/client/internal_stub.cc", "src/cpp/common/call.cc", "src/cpp/common/completion_queue.cc", "src/cpp/common/rpc_method.cc", diff --git a/include/grpc++/impl/internal_stub.h b/include/grpc++/impl/internal_stub.h deleted file mode 100644 index 60eb3fdd06..0000000000 --- a/include/grpc++/impl/internal_stub.h +++ /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. - * - */ - -#ifndef GRPCXX_IMPL_INTERNAL_STUB_H -#define GRPCXX_IMPL_INTERNAL_STUB_H - -#include <memory> - -#include <grpc++/channel.h> - -namespace grpc { - -class InternalStub { - public: - InternalStub(const std::shared_ptr<Channel>& channel) : channel_(channel) {} - virtual ~InternalStub() {} - - Channel* channel() { return channel_.get(); } - - private: - const std::shared_ptr<Channel> channel_; -}; - -} // namespace grpc - -#endif // GRPCXX_IMPL_INTERNAL_STUB_H diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc index d0229d702d..b04ac038ad 100644 --- a/src/compiler/cpp_generator.cc +++ b/src/compiler/cpp_generator.cc @@ -112,7 +112,6 @@ grpc::string GetHeaderPrologue(const grpc::protobuf::FileDescriptor *file, grpc::string GetHeaderIncludes(const grpc::protobuf::FileDescriptor *file, const Parameters ¶ms) { grpc::string temp = - "#include <grpc++/impl/internal_stub.h>\n" "#include <grpc++/impl/rpc_method.h>\n" "#include <grpc++/impl/proto_utils.h>\n" "#include <grpc++/impl/service_type.h>\n" @@ -554,8 +553,8 @@ void PrintHeaderService(grpc::protobuf::io::Printer *printer, printer->Outdent(); printer->Print("};\n"); printer->Print( - "class Stub GRPC_FINAL : public StubInterface," - " public ::grpc::InternalStub {\n public:\n"); + "class Stub GRPC_FINAL : public StubInterface" + " {\n public:\n"); printer->Indent(); printer->Print("Stub(const std::shared_ptr< ::grpc::Channel>& channel);\n"); for (int i = 0; i < service->method_count(); ++i) { @@ -564,6 +563,7 @@ void PrintHeaderService(grpc::protobuf::io::Printer *printer, printer->Outdent(); printer->Print("\n private:\n"); printer->Indent(); + printer->Print("std::shared_ptr< ::grpc::Channel> channel_;\n"); for (int i = 0; i < service->method_count(); ++i) { PrintHeaderClientMethod(printer, service->method(i), vars, false); } @@ -737,7 +737,7 @@ void PrintSourceClientMethod(grpc::protobuf::io::Printer *printer, "::grpc::ClientContext* context, " "const $Request$& request, $Response$* response) {\n"); printer->Print(*vars, - " return ::grpc::BlockingUnaryCall(channel(), " + " return ::grpc::BlockingUnaryCall(channel_.get(), " "rpcmethod_$Method$_, " "context, request, response);\n" "}\n\n"); @@ -750,7 +750,7 @@ void PrintSourceClientMethod(grpc::protobuf::io::Printer *printer, printer->Print(*vars, " return new " "::grpc::ClientAsyncResponseReader< $Response$>(" - "channel(), cq, " + "channel_.get(), cq, " "rpcmethod_$Method$_, " "context, request);\n" "}\n\n"); @@ -761,7 +761,7 @@ void PrintSourceClientMethod(grpc::protobuf::io::Printer *printer, "::grpc::ClientContext* context, $Response$* response) {\n"); printer->Print(*vars, " return new ::grpc::ClientWriter< $Request$>(" - "channel(), " + "channel_.get(), " "rpcmethod_$Method$_, " "context, response);\n" "}\n\n"); @@ -772,7 +772,7 @@ void PrintSourceClientMethod(grpc::protobuf::io::Printer *printer, "::grpc::CompletionQueue* cq, void* tag) {\n"); printer->Print(*vars, " return new ::grpc::ClientAsyncWriter< $Request$>(" - "channel(), cq, " + "channel_.get(), cq, " "rpcmethod_$Method$_, " "context, response, tag);\n" "}\n\n"); @@ -784,7 +784,7 @@ void PrintSourceClientMethod(grpc::protobuf::io::Printer *printer, "::grpc::ClientContext* context, const $Request$& request) {\n"); printer->Print(*vars, " return new ::grpc::ClientReader< $Response$>(" - "channel(), " + "channel_.get(), " "rpcmethod_$Method$_, " "context, request);\n" "}\n\n"); @@ -795,7 +795,7 @@ void PrintSourceClientMethod(grpc::protobuf::io::Printer *printer, "::grpc::CompletionQueue* cq, void* tag) {\n"); printer->Print(*vars, " return new ::grpc::ClientAsyncReader< $Response$>(" - "channel(), cq, " + "channel_.get(), cq, " "rpcmethod_$Method$_, " "context, request, tag);\n" "}\n\n"); @@ -807,7 +807,7 @@ void PrintSourceClientMethod(grpc::protobuf::io::Printer *printer, printer->Print(*vars, " return new ::grpc::ClientReaderWriter< " "$Request$, $Response$>(" - "channel(), " + "channel_.get(), " "rpcmethod_$Method$_, " "context);\n" "}\n\n"); @@ -819,7 +819,7 @@ void PrintSourceClientMethod(grpc::protobuf::io::Printer *printer, printer->Print(*vars, " return new " "::grpc::ClientAsyncReaderWriter< $Request$, $Response$>(" - "channel(), cq, " + "channel_.get(), cq, " "rpcmethod_$Method$_, " "context, tag);\n" "}\n\n"); @@ -975,7 +975,7 @@ void PrintSourceService(grpc::protobuf::io::Printer *printer, "$ns$$Service$::Stub::Stub(const std::shared_ptr< " "::grpc::Channel>& channel)\n"); printer->Indent(); - printer->Print(": ::grpc::InternalStub(channel)"); + printer->Print(": channel_(channel)"); for (int i = 0; i < service->method_count(); ++i) { const grpc::protobuf::MethodDescriptor *method = service->method(i); (*vars)["Method"] = method->name(); diff --git a/src/cpp/client/internal_stub.cc b/src/cpp/client/internal_stub.cc deleted file mode 100644 index 91724a4837..0000000000 --- a/src/cpp/client/internal_stub.cc +++ /dev/null @@ -1,36 +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. - * - */ - -#include <grpc++/impl/internal_stub.h> - -namespace grpc {} // namespace grpc diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++ index 366fc9962c..8daeb134f7 100644 --- a/tools/doxygen/Doxyfile.c++ +++ b/tools/doxygen/Doxyfile.c++ @@ -778,7 +778,6 @@ include/grpc++/generic_stub.h \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ include/grpc++/impl/grpc_library.h \ -include/grpc++/impl/internal_stub.h \ include/grpc++/impl/proto_utils.h \ include/grpc++/impl/rpc_method.h \ include/grpc++/impl/rpc_service_method.h \ diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index 7137018910..b8f04cbcd3 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -778,7 +778,6 @@ include/grpc++/generic_stub.h \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ include/grpc++/impl/grpc_library.h \ -include/grpc++/impl/internal_stub.h \ include/grpc++/impl/proto_utils.h \ include/grpc++/impl/rpc_method.h \ include/grpc++/impl/rpc_service_method.h \ @@ -818,7 +817,6 @@ src/cpp/client/create_channel.cc \ src/cpp/client/credentials.cc \ src/cpp/client/generic_stub.cc \ src/cpp/client/insecure_credentials.cc \ -src/cpp/client/internal_stub.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 20eeabd288..5c515d1ba4 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -13119,7 +13119,6 @@ "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", - "include/grpc++/impl/internal_stub.h", "include/grpc++/impl/proto_utils.h", "include/grpc++/impl/rpc_method.h", "include/grpc++/impl/rpc_service_method.h", @@ -13168,7 +13167,6 @@ "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", - "include/grpc++/impl/internal_stub.h", "include/grpc++/impl/proto_utils.h", "include/grpc++/impl/rpc_method.h", "include/grpc++/impl/rpc_service_method.h", @@ -13198,7 +13196,6 @@ "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", - "src/cpp/client/internal_stub.cc", "src/cpp/client/secure_channel_arguments.cc", "src/cpp/client/secure_credentials.cc", "src/cpp/client/secure_credentials.h", @@ -13291,7 +13288,6 @@ "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", - "include/grpc++/impl/internal_stub.h", "include/grpc++/impl/proto_utils.h", "include/grpc++/impl/rpc_method.h", "include/grpc++/impl/rpc_service_method.h", @@ -13337,7 +13333,6 @@ "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", - "include/grpc++/impl/internal_stub.h", "include/grpc++/impl/proto_utils.h", "include/grpc++/impl/rpc_method.h", "include/grpc++/impl/rpc_service_method.h", @@ -13367,7 +13362,6 @@ "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", - "src/cpp/client/internal_stub.cc", "src/cpp/common/call.cc", "src/cpp/common/completion_queue.cc", "src/cpp/common/create_auth_context.h", diff --git a/vsprojects/grpc++/grpc++.vcxproj b/vsprojects/grpc++/grpc++.vcxproj index 8ce96cc0e2..dbbb7c12cd 100644 --- a/vsprojects/grpc++/grpc++.vcxproj +++ b/vsprojects/grpc++/grpc++.vcxproj @@ -231,7 +231,6 @@ <ClInclude Include="..\..\include\grpc++\impl\call.h" /> <ClInclude Include="..\..\include\grpc++\impl\client_unary_call.h" /> <ClInclude Include="..\..\include\grpc++\impl\grpc_library.h" /> - <ClInclude Include="..\..\include\grpc++\impl\internal_stub.h" /> <ClInclude Include="..\..\include\grpc++\impl\proto_utils.h" /> <ClInclude Include="..\..\include\grpc++\impl\rpc_method.h" /> <ClInclude Include="..\..\include\grpc++\impl\rpc_service_method.h" /> @@ -288,8 +287,6 @@ </ClCompile> <ClCompile Include="..\..\src\cpp\client\insecure_credentials.cc"> </ClCompile> - <ClCompile Include="..\..\src\cpp\client\internal_stub.cc"> - </ClCompile> <ClCompile Include="..\..\src\cpp\common\call.cc"> </ClCompile> <ClCompile Include="..\..\src\cpp\common\completion_queue.cc"> diff --git a/vsprojects/grpc++/grpc++.vcxproj.filters b/vsprojects/grpc++/grpc++.vcxproj.filters index 924cbc4c73..7c982e910a 100644 --- a/vsprojects/grpc++/grpc++.vcxproj.filters +++ b/vsprojects/grpc++/grpc++.vcxproj.filters @@ -40,9 +40,6 @@ <ClCompile Include="..\..\src\cpp\client\insecure_credentials.cc"> <Filter>src\cpp\client</Filter> </ClCompile> - <ClCompile Include="..\..\src\cpp\client\internal_stub.cc"> - <Filter>src\cpp\client</Filter> - </ClCompile> <ClCompile Include="..\..\src\cpp\common\call.cc"> <Filter>src\cpp\common</Filter> </ClCompile> @@ -150,9 +147,6 @@ <ClInclude Include="..\..\include\grpc++\impl\grpc_library.h"> <Filter>include\grpc++\impl</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\impl\internal_stub.h"> - <Filter>include\grpc++\impl</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\impl\proto_utils.h"> <Filter>include\grpc++\impl</Filter> </ClInclude> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj index 00667d38d7..98d15cd98d 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj @@ -231,7 +231,6 @@ <ClInclude Include="..\..\include\grpc++\impl\call.h" /> <ClInclude Include="..\..\include\grpc++\impl\client_unary_call.h" /> <ClInclude Include="..\..\include\grpc++\impl\grpc_library.h" /> - <ClInclude Include="..\..\include\grpc++\impl\internal_stub.h" /> <ClInclude Include="..\..\include\grpc++\impl\proto_utils.h" /> <ClInclude Include="..\..\include\grpc++\impl\rpc_method.h" /> <ClInclude Include="..\..\include\grpc++\impl\rpc_service_method.h" /> @@ -275,8 +274,6 @@ </ClCompile> <ClCompile Include="..\..\src\cpp\client\insecure_credentials.cc"> </ClCompile> - <ClCompile Include="..\..\src\cpp\client\internal_stub.cc"> - </ClCompile> <ClCompile Include="..\..\src\cpp\common\call.cc"> </ClCompile> <ClCompile Include="..\..\src\cpp\common\completion_queue.cc"> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters index 12d42f5e61..99734c8953 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters @@ -25,9 +25,6 @@ <ClCompile Include="..\..\src\cpp\client\insecure_credentials.cc"> <Filter>src\cpp\client</Filter> </ClCompile> - <ClCompile Include="..\..\src\cpp\client\internal_stub.cc"> - <Filter>src\cpp\client</Filter> - </ClCompile> <ClCompile Include="..\..\src\cpp\common\call.cc"> <Filter>src\cpp\common</Filter> </ClCompile> @@ -135,9 +132,6 @@ <ClInclude Include="..\..\include\grpc++\impl\grpc_library.h"> <Filter>include\grpc++\impl</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\impl\internal_stub.h"> - <Filter>include\grpc++\impl</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\impl\proto_utils.h"> <Filter>include\grpc++\impl</Filter> </ClInclude> -- GitLab From 2bfd275b2b50b6202840d51e87357c7c2f8854f2 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Thu, 20 Aug 2015 11:42:29 -0700 Subject: [PATCH 114/178] sockaddr_resolver now supports comma-separated list of IPs --- .../resolvers/sockaddr_resolver.c | 59 +++++++++++++++---- test/core/end2end/dualstack_socket_test.c | 36 +++++++++-- 2 files changed, 80 insertions(+), 15 deletions(-) diff --git a/src/core/client_config/resolvers/sockaddr_resolver.c b/src/core/client_config/resolvers/sockaddr_resolver.c index 74584e7e2c..8419873908 100644 --- a/src/core/client_config/resolvers/sockaddr_resolver.c +++ b/src/core/client_config/resolvers/sockaddr_resolver.c @@ -60,9 +60,12 @@ typedef struct { grpc_lb_policy *(*lb_policy_factory)(grpc_subchannel **subchannels, size_t num_subchannels); - /** the address that we've 'resolved' */ - struct sockaddr_storage addr; - int addr_len; + /** the addresses that we've 'resolved' */ + struct sockaddr_storage *addrs; + /** the corresponding length of the addresses */ + int *addrs_len; + /** how many elements in \a addrs */ + size_t num_addrs; /** mutex guarding the rest of the state */ gpr_mu mu; @@ -119,17 +122,22 @@ static void sockaddr_next(grpc_resolver *resolver, static void sockaddr_maybe_finish_next_locked(sockaddr_resolver *r) { grpc_client_config *cfg; grpc_lb_policy *lb_policy; - grpc_subchannel *subchannel; + grpc_subchannel **subchannels; grpc_subchannel_args args; if (r->next_completion != NULL && !r->published) { + size_t i; cfg = grpc_client_config_create(); - memset(&args, 0, sizeof(args)); - args.addr = (struct sockaddr *)&r->addr; - args.addr_len = r->addr_len; - subchannel = - grpc_subchannel_factory_create_subchannel(r->subchannel_factory, &args); - lb_policy = r->lb_policy_factory(&subchannel, 1); + subchannels = gpr_malloc(sizeof(grpc_subchannel *) * r->num_addrs); + for (i = 0; i < r->num_addrs; i++) { + memset(&args, 0, sizeof(args)); + args.addr = (struct sockaddr *)&r->addrs[i]; + args.addr_len = r->addrs_len[i]; + subchannels[i] = grpc_subchannel_factory_create_subchannel( + r->subchannel_factory, &args); + } + lb_policy = r->lb_policy_factory(subchannels, r->num_addrs); + gpr_free(subchannels); grpc_client_config_set_lb_policy(cfg, lb_policy); GRPC_LB_POLICY_UNREF(lb_policy, "unix"); r->published = 1; @@ -143,6 +151,8 @@ static void sockaddr_destroy(grpc_resolver *gr) { sockaddr_resolver *r = (sockaddr_resolver *)gr; gpr_mu_destroy(&r->mu); grpc_subchannel_factory_unref(r->subchannel_factory); + gpr_free(r->addrs); + gpr_free(r->addrs_len); gpr_free(r); } @@ -238,13 +248,18 @@ done: return result; } +static void do_nothing(void *ignored) {} static grpc_resolver *sockaddr_create( grpc_uri *uri, grpc_lb_policy *(*lb_policy_factory)(grpc_subchannel **subchannels, size_t num_subchannels), grpc_subchannel_factory *subchannel_factory, int parse(grpc_uri *uri, struct sockaddr_storage *dst, int *len)) { + size_t i; + int errors_found = 0; /* GPR_FALSE */ sockaddr_resolver *r; + gpr_slice path_slice; + gpr_slice_buffer path_parts; if (0 != strcmp(uri->authority, "")) { gpr_log(GPR_ERROR, "authority based uri's not supported"); @@ -253,7 +268,29 @@ static grpc_resolver *sockaddr_create( r = gpr_malloc(sizeof(sockaddr_resolver)); memset(r, 0, sizeof(*r)); - if (!parse(uri, &r->addr, &r->addr_len)) { + + path_slice = gpr_slice_new(uri->path, strlen(uri->path), do_nothing); + gpr_slice_buffer_init(&path_parts); + + gpr_slice_split(path_slice, ",", &path_parts); + r->num_addrs = path_parts.count; + r->addrs = gpr_malloc(sizeof(struct sockaddr_storage) * r->num_addrs); + r->addrs_len = gpr_malloc(sizeof(int) * r->num_addrs); + + for(i = 0; i < r->num_addrs; i++) { + grpc_uri ith_uri = *uri; + char* part_str = gpr_dump_slice(path_parts.slices[i], GPR_DUMP_ASCII); + ith_uri.path = part_str; + if (!parse(&ith_uri, &r->addrs[i], &r->addrs_len[i])) { + errors_found = 1; /* GPR_TRUE */ + } + gpr_free(part_str); + if (errors_found) break; + } + + gpr_slice_buffer_destroy(&path_parts); + gpr_slice_unref(path_slice); + if (errors_found) { gpr_free(r); return NULL; } diff --git a/test/core/end2end/dualstack_socket_test.c b/test/core/end2end/dualstack_socket_test.c index 1f64062bf7..fcc12952bf 100644 --- a/test/core/end2end/dualstack_socket_test.c +++ b/test/core/end2end/dualstack_socket_test.c @@ -32,12 +32,16 @@ */ #include <string.h> -#include "src/core/iomgr/socket_utils_posix.h" + #include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/host_port.h> #include <grpc/support/log.h> #include <grpc/support/string_util.h> + +#include "src/core/support/string.h" +#include "src/core/iomgr/socket_utils_posix.h" + #include "test/core/end2end/cq_verifier.h" #include "test/core/util/port.h" #include "test/core/util/test_config.h" @@ -57,6 +61,7 @@ static void drain_cq(grpc_completion_queue *cq) { } while (ev.type != GRPC_QUEUE_SHUTDOWN); } +static void do_nothing(void *ignored) {} void test_connect(const char *server_host, const char *client_host, int port, int expect_ok) { char *client_hostport; @@ -109,8 +114,30 @@ void test_connect(const char *server_host, const char *client_host, int port, /* Create client. */ if (client_host[0] == 'i') { - /* for ipv4:/ipv6: addresses, just concatenate the port */ - gpr_asprintf(&client_hostport, "%s:%d", client_host, port); + /* for ipv4:/ipv6: addresses, concatenate the port to each of the parts */ + size_t i; + gpr_slice uri_slice; + gpr_slice_buffer uri_parts; + char **hosts_with_port; + + uri_slice = + gpr_slice_new((char *)client_host, strlen(client_host), do_nothing); + gpr_slice_buffer_init(&uri_parts); + gpr_slice_split(uri_slice, ",", &uri_parts); + hosts_with_port = gpr_malloc(sizeof(char*) * uri_parts.count); + for (i = 0; i < uri_parts.count; i++) { + char *uri_part_str = gpr_dump_slice(uri_parts.slices[i], GPR_DUMP_ASCII); + gpr_asprintf(&hosts_with_port[i], "%s:%d", uri_part_str, port); + gpr_free(uri_part_str); + } + client_hostport = gpr_strjoin_sep((const char **)hosts_with_port, + uri_parts.count, ",", NULL); + for (i = 0; i < uri_parts.count; i++) { + gpr_free(hosts_with_port[i]); + } + gpr_free(hosts_with_port); + gpr_slice_buffer_destroy(&uri_parts); + gpr_slice_unref(uri_slice); } else { gpr_join_host_port(&client_hostport, client_host, port); } @@ -260,7 +287,8 @@ int main(int argc, char **argv) { test_connect("0.0.0.0", "127.0.0.1", 0, 1); test_connect("0.0.0.0", "::ffff:127.0.0.1", 0, 1); test_connect("0.0.0.0", "ipv4:127.0.0.1", 0, 1); - test_connect("0.0.0.0", "ipv6:[::ffff:127.0.0.1]", 0, 1); + test_connect("0.0.0.0", "ipv4:127.0.0.1,127.0.0.2,127.0.0.3", 0, 1); + test_connect("0.0.0.0", "ipv6:[::ffff:127.0.0.1],[::ffff:127.0.0.2]", 0, 1); test_connect("0.0.0.0", "localhost", 0, 1); if (do_ipv6) { test_connect("::", "::1", 0, 1); -- GitLab From c317f07b5668d6e081a54ad9f6636555f35e0994 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Thu, 20 Aug 2015 12:18:08 -0700 Subject: [PATCH 115/178] Make Channel ctor private --- BUILD | 4 ++ Makefile | 2 + build.json | 2 + include/grpc++/channel.h | 6 ++- src/cpp/client/channel.cc | 2 - src/cpp/client/create_channel.cc | 12 +++-- src/cpp/client/create_channel_internal.cc | 46 +++++++++++++++++ src/cpp/client/create_channel_internal.h | 51 +++++++++++++++++++ src/cpp/client/insecure_credentials.cc | 6 ++- src/cpp/client/secure_credentials.cc | 6 +-- tools/doxygen/Doxyfile.c++.internal | 2 + tools/run_tests/sources_and_headers.json | 6 +++ vsprojects/grpc++/grpc++.vcxproj | 3 ++ vsprojects/grpc++/grpc++.vcxproj.filters | 6 +++ .../grpc++_unsecure/grpc++_unsecure.vcxproj | 3 ++ .../grpc++_unsecure.vcxproj.filters | 6 +++ 16 files changed, 149 insertions(+), 14 deletions(-) create mode 100644 src/cpp/client/create_channel_internal.cc create mode 100644 src/cpp/client/create_channel_internal.h diff --git a/BUILD b/BUILD index 514b662101..d712053a3d 100644 --- a/BUILD +++ b/BUILD @@ -675,6 +675,7 @@ cc_library( "src/cpp/client/secure_credentials.h", "src/cpp/common/secure_auth_context.h", "src/cpp/server/secure_server_credentials.h", + "src/cpp/client/create_channel_internal.h", "src/cpp/common/create_auth_context.h", "src/cpp/client/secure_channel_arguments.cc", "src/cpp/client/secure_credentials.cc", @@ -686,6 +687,7 @@ cc_library( "src/cpp/client/channel_arguments.cc", "src/cpp/client/client_context.cc", "src/cpp/client/create_channel.cc", + "src/cpp/client/create_channel_internal.cc", "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", @@ -764,12 +766,14 @@ cc_library( cc_library( name = "grpc++_unsecure", srcs = [ + "src/cpp/client/create_channel_internal.h", "src/cpp/common/create_auth_context.h", "src/cpp/common/insecure_create_auth_context.cc", "src/cpp/client/channel.cc", "src/cpp/client/channel_arguments.cc", "src/cpp/client/client_context.cc", "src/cpp/client/create_channel.cc", + "src/cpp/client/create_channel_internal.cc", "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", diff --git a/Makefile b/Makefile index ce6406112e..c74c720b7b 100644 --- a/Makefile +++ b/Makefile @@ -4603,6 +4603,7 @@ LIBGRPC++_SRC = \ src/cpp/client/channel_arguments.cc \ src/cpp/client/client_context.cc \ src/cpp/client/create_channel.cc \ + src/cpp/client/create_channel_internal.cc \ src/cpp/client/credentials.cc \ src/cpp/client/generic_stub.cc \ src/cpp/client/insecure_credentials.cc \ @@ -4844,6 +4845,7 @@ LIBGRPC++_UNSECURE_SRC = \ src/cpp/client/channel_arguments.cc \ src/cpp/client/client_context.cc \ src/cpp/client/create_channel.cc \ + src/cpp/client/create_channel_internal.cc \ src/cpp/client/credentials.cc \ src/cpp/client/generic_stub.cc \ src/cpp/client/insecure_credentials.cc \ diff --git a/build.json b/build.json index d49b953d8a..64558a6028 100644 --- a/build.json +++ b/build.json @@ -72,6 +72,7 @@ "include/grpc++/time.h" ], "headers": [ + "src/cpp/client/create_channel_internal.h", "src/cpp/common/create_auth_context.h" ], "src": [ @@ -79,6 +80,7 @@ "src/cpp/client/channel_arguments.cc", "src/cpp/client/client_context.cc", "src/cpp/client/create_channel.cc", + "src/cpp/client/create_channel_internal.cc", "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", diff --git a/include/grpc++/channel.h b/include/grpc++/channel.h index ceb921eff8..7d6216e9c4 100644 --- a/include/grpc++/channel.h +++ b/include/grpc++/channel.h @@ -69,8 +69,6 @@ class Channel GRPC_FINAL : public GrpcLibrary, public CallHook, public std::enable_shared_from_this<Channel> { public: - explicit Channel(grpc_channel* c_channel); - Channel(const grpc::string& host, grpc_channel* c_channel); ~Channel(); // Get the current channel state. If the channel is in IDLE and try_to_connect @@ -115,6 +113,10 @@ class Channel GRPC_FINAL : public GrpcLibrary, const InputMessage& request, OutputMessage* result); friend class ::grpc::RpcMethod; + friend std::shared_ptr<Channel> CreateChannelInternal( + const grpc::string& host, grpc_channel* c_channel); + + Channel(const grpc::string& host, grpc_channel* c_channel); Call CreateCall(const RpcMethod& method, ClientContext* context, CompletionQueue* cq); diff --git a/src/cpp/client/channel.cc b/src/cpp/client/channel.cc index d9ffdc30cd..90fc776d4a 100644 --- a/src/cpp/client/channel.cc +++ b/src/cpp/client/channel.cc @@ -52,8 +52,6 @@ namespace grpc { -Channel::Channel(grpc_channel* channel) : c_channel_(channel) {} - Channel::Channel(const grpc::string& host, grpc_channel* channel) : host_(host), c_channel_(channel) {} diff --git a/src/cpp/client/create_channel.cc b/src/cpp/client/create_channel.cc index 704470693e..70ea7e0e27 100644 --- a/src/cpp/client/create_channel.cc +++ b/src/cpp/client/create_channel.cc @@ -38,6 +38,8 @@ #include <grpc++/channel_arguments.h> #include <grpc++/create_channel.h> +#include "src/cpp/client/create_channel_internal.h" + namespace grpc { class ChannelArguments; @@ -49,10 +51,10 @@ std::shared_ptr<Channel> CreateChannel( user_agent_prefix << "grpc-c++/" << grpc_version_string(); cp_args.SetString(GRPC_ARG_PRIMARY_USER_AGENT_STRING, user_agent_prefix.str()); - return creds ? creds->CreateChannel(target, cp_args) - : std::shared_ptr<Channel>( - new Channel(grpc_lame_client_channel_create( - NULL, GRPC_STATUS_INVALID_ARGUMENT, - "Invalid credentials."))); + return creds + ? creds->CreateChannel(target, cp_args) + : CreateChannelInternal("", grpc_lame_client_channel_create( + NULL, GRPC_STATUS_INVALID_ARGUMENT, + "Invalid credentials.")); } } // namespace grpc diff --git a/src/cpp/client/create_channel_internal.cc b/src/cpp/client/create_channel_internal.cc new file mode 100644 index 0000000000..9c5ab038cf --- /dev/null +++ b/src/cpp/client/create_channel_internal.cc @@ -0,0 +1,46 @@ +/* + * + * 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 <memory> + +#include <grpc++/channel.h> + +struct grpc_channel; + +namespace grpc { + +std::shared_ptr<Channel> CreateChannelInternal(const grpc::string& host, + grpc_channel* c_channel) { + return std::shared_ptr<Channel>(new Channel(host, c_channel)); +} +} // namespace grpc diff --git a/src/cpp/client/create_channel_internal.h b/src/cpp/client/create_channel_internal.h new file mode 100644 index 0000000000..1692471990 --- /dev/null +++ b/src/cpp/client/create_channel_internal.h @@ -0,0 +1,51 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef GRPC_INTERNAL_CPP_CLIENT_CREATE_CHANNEL_INTERNAL_H +#define GRPC_INTERNAL_CPP_CLIENT_CREATE_CHANNEL_INTERNAL_H + +#include <memory> + +#include <grpc++/config.h> + +struct grpc_channel; + +namespace grpc { +class Channel; + +std::shared_ptr<Channel> CreateChannelInternal(const grpc::string& host, + grpc_channel* c_channel); + +} // namespace grpc + +#endif // GRPC_INTERNAL_CPP_CLIENT_CREATE_CHANNEL_INTERNAL_H diff --git a/src/cpp/client/insecure_credentials.cc b/src/cpp/client/insecure_credentials.cc index 70ce17dc6d..97931406af 100644 --- a/src/cpp/client/insecure_credentials.cc +++ b/src/cpp/client/insecure_credentials.cc @@ -38,6 +38,7 @@ #include <grpc++/channel_arguments.h> #include <grpc++/config.h> #include <grpc++/credentials.h> +#include "src/cpp/client/create_channel_internal.h" namespace grpc { @@ -48,8 +49,9 @@ class InsecureCredentialsImpl GRPC_FINAL : public Credentials { const string& target, const grpc::ChannelArguments& args) GRPC_OVERRIDE { grpc_channel_args channel_args; args.SetChannelArgs(&channel_args); - return std::shared_ptr<Channel>(new Channel( - grpc_insecure_channel_create(target.c_str(), &channel_args, nullptr))); + return CreateChannelInternal( + "", + grpc_insecure_channel_create(target.c_str(), &channel_args, nullptr)); } // InsecureCredentials should not be applied to a call. diff --git a/src/cpp/client/secure_credentials.cc b/src/cpp/client/secure_credentials.cc index b32f783fa3..1e912c6beb 100644 --- a/src/cpp/client/secure_credentials.cc +++ b/src/cpp/client/secure_credentials.cc @@ -32,10 +32,10 @@ */ #include <grpc/support/log.h> - #include <grpc++/channel.h> #include <grpc++/channel_arguments.h> #include <grpc++/impl/grpc_library.h> +#include "src/cpp/client/create_channel_internal.h" #include "src/cpp/client/secure_credentials.h" namespace grpc { @@ -44,9 +44,9 @@ std::shared_ptr<grpc::Channel> SecureCredentials::CreateChannel( const string& target, const grpc::ChannelArguments& args) { grpc_channel_args channel_args; args.SetChannelArgs(&channel_args); - return std::shared_ptr<Channel>(new Channel( + return CreateChannelInternal( args.GetSslTargetNameOverride(), - grpc_secure_channel_create(c_creds_, target.c_str(), &channel_args))); + grpc_secure_channel_create(c_creds_, target.c_str(), &channel_args)); } bool SecureCredentials::ApplyToCall(grpc_call* call) { diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index b8f04cbcd3..23ff05fb86 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -803,6 +803,7 @@ include/grpc++/time.h \ src/cpp/client/secure_credentials.h \ src/cpp/common/secure_auth_context.h \ src/cpp/server/secure_server_credentials.h \ +src/cpp/client/create_channel_internal.h \ src/cpp/common/create_auth_context.h \ src/cpp/client/secure_channel_arguments.cc \ src/cpp/client/secure_credentials.cc \ @@ -814,6 +815,7 @@ src/cpp/client/channel.cc \ src/cpp/client/channel_arguments.cc \ src/cpp/client/client_context.cc \ src/cpp/client/create_channel.cc \ +src/cpp/client/create_channel_internal.cc \ src/cpp/client/credentials.cc \ src/cpp/client/generic_stub.cc \ src/cpp/client/insecure_credentials.cc \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 5c515d1ba4..863c9f802e 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -13141,6 +13141,7 @@ "include/grpc++/stub_options.h", "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", + "src/cpp/client/create_channel_internal.h", "src/cpp/client/secure_credentials.h", "src/cpp/common/create_auth_context.h", "src/cpp/common/secure_auth_context.h", @@ -13193,6 +13194,8 @@ "src/cpp/client/channel_arguments.cc", "src/cpp/client/client_context.cc", "src/cpp/client/create_channel.cc", + "src/cpp/client/create_channel_internal.cc", + "src/cpp/client/create_channel_internal.h", "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", @@ -13310,6 +13313,7 @@ "include/grpc++/stub_options.h", "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", + "src/cpp/client/create_channel_internal.h", "src/cpp/common/create_auth_context.h" ], "language": "c++", @@ -13359,6 +13363,8 @@ "src/cpp/client/channel_arguments.cc", "src/cpp/client/client_context.cc", "src/cpp/client/create_channel.cc", + "src/cpp/client/create_channel_internal.cc", + "src/cpp/client/create_channel_internal.h", "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", diff --git a/vsprojects/grpc++/grpc++.vcxproj b/vsprojects/grpc++/grpc++.vcxproj index dbbb7c12cd..e2e17d4177 100644 --- a/vsprojects/grpc++/grpc++.vcxproj +++ b/vsprojects/grpc++/grpc++.vcxproj @@ -258,6 +258,7 @@ <ClInclude Include="..\..\src\cpp\client\secure_credentials.h" /> <ClInclude Include="..\..\src\cpp\common\secure_auth_context.h" /> <ClInclude Include="..\..\src\cpp\server\secure_server_credentials.h" /> + <ClInclude Include="..\..\src\cpp\client\create_channel_internal.h" /> <ClInclude Include="..\..\src\cpp\common\create_auth_context.h" /> </ItemGroup> <ItemGroup> @@ -281,6 +282,8 @@ </ClCompile> <ClCompile Include="..\..\src\cpp\client\create_channel.cc"> </ClCompile> + <ClCompile Include="..\..\src\cpp\client\create_channel_internal.cc"> + </ClCompile> <ClCompile Include="..\..\src\cpp\client\credentials.cc"> </ClCompile> <ClCompile Include="..\..\src\cpp\client\generic_stub.cc"> diff --git a/vsprojects/grpc++/grpc++.vcxproj.filters b/vsprojects/grpc++/grpc++.vcxproj.filters index 7c982e910a..6f308d1d02 100644 --- a/vsprojects/grpc++/grpc++.vcxproj.filters +++ b/vsprojects/grpc++/grpc++.vcxproj.filters @@ -31,6 +31,9 @@ <ClCompile Include="..\..\src\cpp\client\create_channel.cc"> <Filter>src\cpp\client</Filter> </ClCompile> + <ClCompile Include="..\..\src\cpp\client\create_channel_internal.cc"> + <Filter>src\cpp\client</Filter> + </ClCompile> <ClCompile Include="..\..\src\cpp\client\credentials.cc"> <Filter>src\cpp\client</Filter> </ClCompile> @@ -224,6 +227,9 @@ <ClInclude Include="..\..\src\cpp\server\secure_server_credentials.h"> <Filter>src\cpp\server</Filter> </ClInclude> + <ClInclude Include="..\..\src\cpp\client\create_channel_internal.h"> + <Filter>src\cpp\client</Filter> + </ClInclude> <ClInclude Include="..\..\src\cpp\common\create_auth_context.h"> <Filter>src\cpp\common</Filter> </ClInclude> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj index 98d15cd98d..4be468cb62 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj @@ -255,6 +255,7 @@ <ClInclude Include="..\..\include\grpc++\time.h" /> </ItemGroup> <ItemGroup> + <ClInclude Include="..\..\src\cpp\client\create_channel_internal.h" /> <ClInclude Include="..\..\src\cpp\common\create_auth_context.h" /> </ItemGroup> <ItemGroup> @@ -268,6 +269,8 @@ </ClCompile> <ClCompile Include="..\..\src\cpp\client\create_channel.cc"> </ClCompile> + <ClCompile Include="..\..\src\cpp\client\create_channel_internal.cc"> + </ClCompile> <ClCompile Include="..\..\src\cpp\client\credentials.cc"> </ClCompile> <ClCompile Include="..\..\src\cpp\client\generic_stub.cc"> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters index 99734c8953..bd51d1fa0b 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters @@ -16,6 +16,9 @@ <ClCompile Include="..\..\src\cpp\client\create_channel.cc"> <Filter>src\cpp\client</Filter> </ClCompile> + <ClCompile Include="..\..\src\cpp\client\create_channel_internal.cc"> + <Filter>src\cpp\client</Filter> + </ClCompile> <ClCompile Include="..\..\src\cpp\client\credentials.cc"> <Filter>src\cpp\client</Filter> </ClCompile> @@ -200,6 +203,9 @@ </ClInclude> </ItemGroup> <ItemGroup> + <ClInclude Include="..\..\src\cpp\client\create_channel_internal.h"> + <Filter>src\cpp\client</Filter> + </ClInclude> <ClInclude Include="..\..\src\cpp\common\create_auth_context.h"> <Filter>src\cpp\common</Filter> </ClInclude> -- GitLab From 11e3028e65dbdcd3fb081e041654b06ac59445f6 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Thu, 20 Aug 2015 12:40:49 -0700 Subject: [PATCH 116/178] regenerate projects --- tools/run_tests/tests.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 6c06d74834..127b1dfc40 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -1538,6 +1538,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "status_test", -- GitLab From 7840a5573678880ce71398fdab5948128992bfc7 Mon Sep 17 00:00:00 2001 From: Tim Emiola <temiola@google.com> Date: Thu, 20 Aug 2015 13:12:33 -0700 Subject: [PATCH 117/178] Adds support for per message compression --- src/ruby/ext/grpc/rb_call.c | 57 +++++++++++++++++++++-- src/ruby/lib/grpc/generic/active_call.rb | 5 +- src/ruby/spec/call_spec.rb | 8 ++++ src/ruby/spec/generic/active_call_spec.rb | 28 ++++++++++- 4 files changed, 92 insertions(+), 6 deletions(-) diff --git a/src/ruby/ext/grpc/rb_call.c b/src/ruby/ext/grpc/rb_call.c index 36c6818a7e..6b5beb6f5d 100644 --- a/src/ruby/ext/grpc/rb_call.c +++ b/src/ruby/ext/grpc/rb_call.c @@ -82,6 +82,10 @@ static ID id_metadata; * received by the call and subsequently saved on it. */ static ID id_status; +/* id_write_flag is name of the attribute used to access the write_flag + * saved on the call. */ +static ID id_write_flag; + /* sym_* are the symbol for attributes of grpc_rb_sBatchResult. */ static VALUE sym_send_message; static VALUE sym_send_metadata; @@ -240,6 +244,30 @@ static VALUE grpc_rb_call_set_metadata(VALUE self, VALUE metadata) { return rb_ivar_set(self, id_metadata, metadata); } +/* + call-seq: + write_flag = call.write_flag + + Gets the write_flag value saved the call. */ +static VALUE grpc_rb_call_get_write_flag(VALUE self) { + return rb_ivar_get(self, id_write_flag); +} + +/* + call-seq: + call.write_flag = write_flag + + Saves the write_flag on the call. */ +static VALUE grpc_rb_call_set_write_flag(VALUE self, VALUE write_flag) { + if (!NIL_P(write_flag) && TYPE(write_flag) != T_FIXNUM) { + rb_raise(rb_eTypeError, "bad write_flag: got:<%s> want: <Fixnum>", + rb_obj_classname(write_flag)); + return Qnil; + } + + return rb_ivar_set(self, id_write_flag, write_flag); +} + /* grpc_rb_md_ary_fill_hash_cb is the hash iteration callback used to fill grpc_metadata_array. @@ -437,17 +465,19 @@ typedef struct run_batch_stack { grpc_status_code recv_status; char *recv_status_details; size_t recv_status_details_capacity; + uint write_flag; } run_batch_stack; /* grpc_run_batch_stack_init ensures the run_batch_stack is properly * initialized */ -static void grpc_run_batch_stack_init(run_batch_stack *st) { +static void grpc_run_batch_stack_init(run_batch_stack *st, uint write_flag) { MEMZERO(st, run_batch_stack, 1); grpc_metadata_array_init(&st->send_metadata); grpc_metadata_array_init(&st->send_trailing_metadata); grpc_metadata_array_init(&st->recv_metadata); grpc_metadata_array_init(&st->recv_trailing_metadata); st->op_num = 0; + st->write_flag = write_flag; } /* grpc_run_batch_stack_cleanup ensures the run_batch_stack is properly @@ -477,6 +507,7 @@ static void grpc_run_batch_stack_fill_ops(run_batch_stack *st, VALUE ops_hash) { for (i = 0; i < (size_t)RARRAY_LEN(ops_ary); i++) { this_op = rb_ary_entry(ops_ary, i); this_value = rb_hash_aref(ops_hash, this_op); + st->ops[st->op_num].flags = 0; switch (NUM2INT(this_op)) { case GRPC_OP_SEND_INITIAL_METADATA: /* N.B. later there is no need to explicitly delete the metadata keys @@ -490,6 +521,7 @@ static void grpc_run_batch_stack_fill_ops(run_batch_stack *st, VALUE ops_hash) { case GRPC_OP_SEND_MESSAGE: st->ops[st->op_num].data.send_message = grpc_rb_s_to_byte_buffer( RSTRING_PTR(this_value), RSTRING_LEN(this_value)); + st->ops[st->op_num].flags = st->write_flag; break; case GRPC_OP_SEND_CLOSE_FROM_CLIENT: break; @@ -525,7 +557,6 @@ static void grpc_run_batch_stack_fill_ops(run_batch_stack *st, VALUE ops_hash) { NUM2INT(this_op)); }; st->ops[st->op_num].op = (grpc_op_type)NUM2INT(this_op); - st->ops[st->op_num].flags = 0; st->ops[st->op_num].reserved = NULL; st->op_num++; } @@ -604,6 +635,8 @@ static VALUE grpc_rb_call_run_batch(VALUE self, VALUE cqueue, VALUE tag, grpc_event ev; grpc_call_error err; VALUE result = Qnil; + VALUE rb_write_flag = rb_ivar_get(self, id_write_flag); + uint write_flag = 0; TypedData_Get_Struct(self, grpc_call, &grpc_call_data_type, call); /* Validate the ops args, adding them to a ruby array */ @@ -611,7 +644,10 @@ static VALUE grpc_rb_call_run_batch(VALUE self, VALUE cqueue, VALUE tag, rb_raise(rb_eTypeError, "call#run_batch: ops hash should be a hash"); return Qnil; } - grpc_run_batch_stack_init(&st); + if (rb_write_flag != Qnil) { + write_flag = NUM2UINT(rb_write_flag); + } + grpc_run_batch_stack_init(&st, write_flag); grpc_run_batch_stack_fill_ops(&st, ops_hash); /* call grpc_call_start_batch, then wait for it to complete using @@ -638,6 +674,16 @@ static VALUE grpc_rb_call_run_batch(VALUE self, VALUE cqueue, VALUE tag, return result; } +static void Init_grpc_write_flags() { + /* Constants representing the write flags in grpc.h */ + VALUE grpc_rb_mWriteFlags = + rb_define_module_under(grpc_rb_mGrpcCore, "WriteFlags"); + rb_define_const(grpc_rb_mWriteFlags, "BUFFER_HINT", + UINT2NUM(GRPC_WRITE_BUFFER_HINT)); + rb_define_const(grpc_rb_mWriteFlags, "NO_COMPRESS", + UINT2NUM(GRPC_WRITE_NO_COMPRESS)); +} + static void Init_grpc_error_codes() { /* Constants representing the error codes of grpc_call_error in grpc.h */ VALUE grpc_rb_mRpcErrors = @@ -735,10 +781,14 @@ void Init_grpc_call() { rb_define_method(grpc_rb_cCall, "status=", grpc_rb_call_set_status, 1); rb_define_method(grpc_rb_cCall, "metadata", grpc_rb_call_get_metadata, 0); rb_define_method(grpc_rb_cCall, "metadata=", grpc_rb_call_set_metadata, 1); + rb_define_method(grpc_rb_cCall, "write_flag", grpc_rb_call_get_write_flag, 0); + rb_define_method(grpc_rb_cCall, "write_flag=", grpc_rb_call_set_write_flag, + 1); /* Ids used to support call attributes */ id_metadata = rb_intern("metadata"); id_status = rb_intern("status"); + id_write_flag = rb_intern("write_flag"); /* Ids used by the c wrapping internals. */ id_cq = rb_intern("__cq"); @@ -766,6 +816,7 @@ void Init_grpc_call() { Init_grpc_error_codes(); Init_grpc_op_codes(); + Init_grpc_write_flags(); } /* Gets the call from the ruby object */ diff --git a/src/ruby/lib/grpc/generic/active_call.rb b/src/ruby/lib/grpc/generic/active_call.rb index 17da401c6b..d9cb924735 100644 --- a/src/ruby/lib/grpc/generic/active_call.rb +++ b/src/ruby/lib/grpc/generic/active_call.rb @@ -59,7 +59,7 @@ module GRPC include Core::CallOps extend Forwardable attr_reader(:deadline) - def_delegators :@call, :cancel, :metadata + def_delegators :@call, :cancel, :metadata, :write_flag, :write_flag= # client_invoke begins a client invocation. # @@ -484,6 +484,7 @@ module GRPC # Operation limits access to an ActiveCall's methods for use as # a Operation on the client. Operation = view_class(:cancel, :cancelled, :deadline, :execute, - :metadata, :status, :start_call, :wait) + :metadata, :status, :start_call, :wait, :write_flag, + :write_flag=) end end diff --git a/src/ruby/spec/call_spec.rb b/src/ruby/spec/call_spec.rb index 3c5d33ffcd..dd3c45f754 100644 --- a/src/ruby/spec/call_spec.rb +++ b/src/ruby/spec/call_spec.rb @@ -31,6 +31,14 @@ require 'grpc' include GRPC::Core::StatusCodes +describe GRPC::Core::WriteFlags do + it 'should define the known write flag values' do + m = GRPC::Core::WriteFlags + expect(m.const_get(:BUFFER_HINT)).to_not be_nil + expect(m.const_get(:NO_COMPRESS)).to_not be_nil + end +end + describe GRPC::Core::RpcErrors do before(:each) do @known_types = { diff --git a/src/ruby/spec/generic/active_call_spec.rb b/src/ruby/spec/generic/active_call_spec.rb index 26208b714a..fcd7bd082f 100644 --- a/src/ruby/spec/generic/active_call_spec.rb +++ b/src/ruby/spec/generic/active_call_spec.rb @@ -35,6 +35,7 @@ describe GRPC::ActiveCall do ActiveCall = GRPC::ActiveCall Call = GRPC::Core::Call CallOps = GRPC::Core::CallOps + WriteFlags = GRPC::Core::WriteFlags before(:each) do @pass_through = proc { |x| x } @@ -129,6 +130,31 @@ describe GRPC::ActiveCall do @pass_through, deadline) expect(server_call.remote_read).to eq('marshalled:' + msg) end + + TEST_WRITE_FLAGS = [WriteFlags::BUFFER_HINT, WriteFlags::NO_COMPRESS] + TEST_WRITE_FLAGS.each do |f| + it "successfully makes calls with write_flag set to #{f}" do + call = make_test_call + ActiveCall.client_invoke(call, @client_queue) + marshal = proc { |x| 'marshalled:' + x } + client_call = ActiveCall.new(call, @client_queue, marshal, + @pass_through, deadline) + msg = 'message is a string' + client_call.write_flag = f + client_call.remote_send(msg) + + # confirm that the message was marshalled + recvd_rpc = @server.request_call(@server_queue, @server_tag, deadline) + recvd_call = recvd_rpc.call + server_ops = { + CallOps::SEND_INITIAL_METADATA => nil + } + recvd_call.run_batch(@server_queue, @server_tag, deadline, server_ops) + server_call = ActiveCall.new(recvd_call, @server_queue, @pass_through, + @pass_through, deadline) + expect(server_call.remote_read).to eq('marshalled:' + msg) + end + end end describe '#client_invoke' do @@ -261,7 +287,7 @@ describe GRPC::ActiveCall do client_call.writes_done(false) server_call = expect_server_to_receive(msg) e = client_call.each_remote_read - n = 3 # arbitrary value > 1 + n = 3 # arbitrary value > 1 n.times do server_call.remote_send(reply) expect(e.next).to eq(reply) -- GitLab From d392fa04c5866387c981f4cd83392d1a2e3da7a8 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Thu, 20 Aug 2015 13:55:29 -0700 Subject: [PATCH 118/178] fix shutdown_test --- test/cpp/end2end/shutdown_test.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cpp/end2end/shutdown_test.cc b/test/cpp/end2end/shutdown_test.cc index fccbb13030..dc5fb5af9b 100644 --- a/test/cpp/end2end/shutdown_test.cc +++ b/test/cpp/end2end/shutdown_test.cc @@ -39,7 +39,7 @@ #include "test/cpp/util/echo.grpc.pb.h" #include "src/core/support/env.h" #include <grpc++/channel_arguments.h> -#include <grpc++/channel_interface.h> +#include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> @@ -118,7 +118,7 @@ class ShutdownTest : public ::testing::Test { } protected: - std::shared_ptr<ChannelInterface> channel_; + std::shared_ptr<Channel> channel_; std::unique_ptr<grpc::cpp::test::util::TestService::Stub> stub_; std::unique_ptr<Server> server_; bool shutdown_; -- GitLab From 025632a138d20a03323f24b728869e77d6a966b3 Mon Sep 17 00:00:00 2001 From: "David G. Quintas" <dgq@google.com> Date: Thu, 20 Aug 2015 14:16:42 -0700 Subject: [PATCH 119/178] Expanded grpc_server_request_call's docstring --- include/grpc/grpc.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h index 7869e9272e..2f43199f5a 100644 --- a/include/grpc/grpc.h +++ b/include/grpc/grpc.h @@ -589,9 +589,13 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call *call, THREAD SAFETY: grpc_call_destroy is thread-compatible */ void grpc_call_destroy(grpc_call *call); -/** Request notification of a new call. 'cq_for_notification' must - have been registered to the server via - grpc_server_register_completion_queue. */ +/** Request notification of a new call. + Once a call with the given \a tag_new (or NULL for any tag) is received in + \a cq_bound_to_call, a notification is added to \a cq_for_notification and + \a call, \a details and \a request_metadata are updated with the appropriate + call information. + Note that \a cq_for_notification must have been registered to the server via + \a grpc_server_register_completion_queue. */ grpc_call_error grpc_server_request_call( grpc_server *server, grpc_call **call, grpc_call_details *details, grpc_metadata_array *request_metadata, -- GitLab From 2e405d4123665f4b305e8cd022489fef8db098a1 Mon Sep 17 00:00:00 2001 From: Stanley Cheung <stanleycheung@google.com> Date: Thu, 20 Aug 2015 14:39:54 -0700 Subject: [PATCH 120/178] php: update codegen, client now extends basestub --- src/php/tests/generated_code/GeneratedCodeTest.php | 4 ++-- .../tests/generated_code/GeneratedCodeWithCallbackTest.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/php/tests/generated_code/GeneratedCodeTest.php b/src/php/tests/generated_code/GeneratedCodeTest.php index 1e4742fc80..a1a2ce81db 100755 --- a/src/php/tests/generated_code/GeneratedCodeTest.php +++ b/src/php/tests/generated_code/GeneratedCodeTest.php @@ -35,7 +35,7 @@ require 'AbstractGeneratedCodeTest.php'; class GeneratedCodeTest extends AbstractGeneratedCodeTest { public static function setUpBeforeClass() { - self::$client = new math\MathClient(new Grpc\BaseStub( - getenv('GRPC_TEST_HOST'), [])); + self::$client = new math\MathClient( + getenv('GRPC_TEST_HOST'), []); } } diff --git a/src/php/tests/generated_code/GeneratedCodeWithCallbackTest.php b/src/php/tests/generated_code/GeneratedCodeWithCallbackTest.php index f8ec1e7da8..68f57d34ad 100644 --- a/src/php/tests/generated_code/GeneratedCodeWithCallbackTest.php +++ b/src/php/tests/generated_code/GeneratedCodeWithCallbackTest.php @@ -35,13 +35,13 @@ require 'AbstractGeneratedCodeTest.php'; class GeneratedCodeWithCallbackTest extends AbstractGeneratedCodeTest { public static function setUpBeforeClass() { - self::$client = new math\MathClient(new Grpc\BaseStub( + self::$client = new math\MathClient( getenv('GRPC_TEST_HOST'), ['update_metadata' => function($a_hash, $client = array()) { $a_copy = $a_hash; $a_copy['foo'] = ['bar']; return $a_copy; - }])); + }]); } } -- GitLab From b2a1c599a75cf326f3efe9c278f8977250844c82 Mon Sep 17 00:00:00 2001 From: "David G. Quintas" <dgq@google.com> Date: Thu, 20 Aug 2015 14:44:27 -0700 Subject: [PATCH 121/178] Update grpc.h --- include/grpc/grpc.h | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h index 2f43199f5a..860048711f 100644 --- a/include/grpc/grpc.h +++ b/include/grpc/grpc.h @@ -589,13 +589,12 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call *call, THREAD SAFETY: grpc_call_destroy is thread-compatible */ void grpc_call_destroy(grpc_call *call); -/** Request notification of a new call. - Once a call with the given \a tag_new (or NULL for any tag) is received in - \a cq_bound_to_call, a notification is added to \a cq_for_notification and - \a call, \a details and \a request_metadata are updated with the appropriate - call information. - Note that \a cq_for_notification must have been registered to the server via - \a grpc_server_register_completion_queue. */ +/** Request notification of a new call. + Once a call is received in \a cq_bound_to_call, a notification tagged with + \a tag_new is added to \a cq_for_notification. \a call, \a details and \a + request_metadata are updated with the appropriate call information. + Note that \a cq_for_notification must have been registered to the server via + \a grpc_server_register_completion_queue. */ grpc_call_error grpc_server_request_call( grpc_server *server, grpc_call **call, grpc_call_details *details, grpc_metadata_array *request_metadata, -- GitLab From 4c0fcda20c33b78d77fddee18cf7a07b6da65fe7 Mon Sep 17 00:00:00 2001 From: Stanley Cheung <stanleycheung@google.com> Date: Thu, 20 Aug 2015 14:54:34 -0700 Subject: [PATCH 122/178] php: add tests for waitForReady --- .../tests/generated_code/AbstractGeneratedCodeTest.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/php/tests/generated_code/AbstractGeneratedCodeTest.php b/src/php/tests/generated_code/AbstractGeneratedCodeTest.php index 8b7e67f57c..287621d930 100644 --- a/src/php/tests/generated_code/AbstractGeneratedCodeTest.php +++ b/src/php/tests/generated_code/AbstractGeneratedCodeTest.php @@ -39,6 +39,14 @@ abstract class AbstractGeneratedCodeTest extends PHPUnit_Framework_TestCase { protected static $client; protected static $timeout; + public function testWaitForNotReady() { + $this->assertFalse(self::$client->waitForReady(1)); + } + + public function testWaitForReady() { + $this->assertTrue(self::$client->waitForReady(250000)); + } + public function testSimpleRequest() { $div_arg = new math\DivArgs(); $div_arg->setDividend(7); -- GitLab From 41a166f97b7c686c9a859a7ce378f8fdf68d6245 Mon Sep 17 00:00:00 2001 From: Masood Malekghassemi <soltanmm@users.noreply.github.com> Date: Mon, 17 Aug 2015 19:27:35 -0700 Subject: [PATCH 123/178] Add cancel_all_calls to Python server Also format _low_test.py to fit within the 80 character fill-limit and re-style test assertions. --- src/python/grpcio/grpc/_adapter/_c/types.h | 2 + .../grpcio/grpc/_adapter/_c/types/server.c | 16 ++ src/python/grpcio/grpc/_adapter/_low.py | 3 + .../grpc_test/_adapter/_low_test.py | 199 +++++++++++++----- 4 files changed, 169 insertions(+), 51 deletions(-) diff --git a/src/python/grpcio/grpc/_adapter/_c/types.h b/src/python/grpcio/grpc/_adapter/_c/types.h index f646465c63..f6ff957baa 100644 --- a/src/python/grpcio/grpc/_adapter/_c/types.h +++ b/src/python/grpcio/grpc/_adapter/_c/types.h @@ -146,6 +146,7 @@ typedef struct Server { PyObject_HEAD grpc_server *c_serv; CompletionQueue *cq; + int shutdown_called; } Server; Server *pygrpc_Server_new(PyTypeObject *type, PyObject *args, PyObject *kwargs); void pygrpc_Server_dealloc(Server *self); @@ -156,6 +157,7 @@ PyObject *pygrpc_Server_add_http2_port( PyObject *pygrpc_Server_start(Server *self, PyObject *ignored); PyObject *pygrpc_Server_shutdown( Server *self, PyObject *args, PyObject *kwargs); +PyObject *pygrpc_Server_cancel_all_calls(Server *self, PyObject *unused); extern PyTypeObject pygrpc_Server_type; /*=========*/ diff --git a/src/python/grpcio/grpc/_adapter/_c/types/server.c b/src/python/grpcio/grpc/_adapter/_c/types/server.c index 15c98f28eb..8feab8aab1 100644 --- a/src/python/grpcio/grpc/_adapter/_c/types/server.c +++ b/src/python/grpcio/grpc/_adapter/_c/types/server.c @@ -45,6 +45,8 @@ PyMethodDef pygrpc_Server_methods[] = { METH_KEYWORDS, ""}, {"start", (PyCFunction)pygrpc_Server_start, METH_NOARGS, ""}, {"shutdown", (PyCFunction)pygrpc_Server_shutdown, METH_KEYWORDS, ""}, + {"cancel_all_calls", (PyCFunction)pygrpc_Server_cancel_all_calls, + METH_NOARGS, ""}, {NULL} }; const char pygrpc_Server_doc[] = "See grpc._adapter._types.Server."; @@ -109,6 +111,7 @@ Server *pygrpc_Server_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) pygrpc_discard_channel_args(c_args); self->cq = cq; Py_INCREF(self->cq); + self->shutdown_called = 0; return self; } @@ -163,6 +166,7 @@ PyObject *pygrpc_Server_add_http2_port( PyObject *pygrpc_Server_start(Server *self, PyObject *ignored) { grpc_server_start(self->c_serv); + self->shutdown_called = 0; Py_RETURN_NONE; } @@ -176,5 +180,17 @@ PyObject *pygrpc_Server_shutdown( } tag = pygrpc_produce_server_shutdown_tag(user_tag); grpc_server_shutdown_and_notify(self->c_serv, self->cq->c_cq, tag); + self->shutdown_called = 1; + Py_RETURN_NONE; +} + +PyObject *pygrpc_Server_cancel_all_calls(Server *self, PyObject *unused) { + if (!self->shutdown_called) { + PyErr_SetString( + PyExc_RuntimeError, + "shutdown must have been called prior to calling cancel_all_calls!"); + return NULL; + } + grpc_server_cancel_all_calls(self->c_serv); Py_RETURN_NONE; } diff --git a/src/python/grpcio/grpc/_adapter/_low.py b/src/python/grpcio/grpc/_adapter/_low.py index 147086e725..3859ebb0e2 100644 --- a/src/python/grpcio/grpc/_adapter/_low.py +++ b/src/python/grpcio/grpc/_adapter/_low.py @@ -124,3 +124,6 @@ class Server(_types.Server): def request_call(self, completion_queue, tag): return self.server.request_call(completion_queue.completion_queue, tag) + + def cancel_all_calls(self): + return self.server.cancel_all_calls() diff --git a/src/python/grpcio_test/grpc_test/_adapter/_low_test.py b/src/python/grpcio_test/grpc_test/_adapter/_low_test.py index 44fe760fbc..70149127da 100644 --- a/src/python/grpcio_test/grpc_test/_adapter/_low_test.py +++ b/src/python/grpcio_test/grpc_test/_adapter/_low_test.py @@ -52,7 +52,6 @@ def wait_for_events(completion_queues, deadline): def set_ith_result(i, completion_queue): result = completion_queue.next(deadline) with lock: - print i, completion_queue, result, time.time() - deadline results[i] = result for i, completion_queue in enumerate(completion_queues): thread = threading.Thread(target=set_ith_result, @@ -80,10 +79,12 @@ class InsecureServerInsecureClient(unittest.TestCase): del self.client_channel self.client_completion_queue.shutdown() - while self.client_completion_queue.next().type != _types.EventType.QUEUE_SHUTDOWN: + while (self.client_completion_queue.next().type != + _types.EventType.QUEUE_SHUTDOWN): pass self.server_completion_queue.shutdown() - while self.server_completion_queue.next().type != _types.EventType.QUEUE_SHUTDOWN: + while (self.server_completion_queue.next().type != + _types.EventType.QUEUE_SHUTDOWN): pass del self.client_completion_queue @@ -91,58 +92,68 @@ class InsecureServerInsecureClient(unittest.TestCase): del self.server def testEcho(self): - DEADLINE = time.time()+5 - DEADLINE_TOLERANCE = 0.25 - CLIENT_METADATA_ASCII_KEY = 'key' - CLIENT_METADATA_ASCII_VALUE = 'val' - CLIENT_METADATA_BIN_KEY = 'key-bin' - CLIENT_METADATA_BIN_VALUE = b'\0'*1000 - SERVER_INITIAL_METADATA_KEY = 'init_me_me_me' - SERVER_INITIAL_METADATA_VALUE = 'whodawha?' - SERVER_TRAILING_METADATA_KEY = 'california_is_in_a_drought' - SERVER_TRAILING_METADATA_VALUE = 'zomg it is' - SERVER_STATUS_CODE = _types.StatusCode.OK - SERVER_STATUS_DETAILS = 'our work is never over' - REQUEST = 'in death a member of project mayhem has a name' - RESPONSE = 'his name is robert paulson' - METHOD = 'twinkies' - HOST = 'hostess' + deadline = time.time() + 5 + event_time_tolerance = 2 + deadline_tolerance = 0.25 + client_metadata_ascii_key = 'key' + client_metadata_ascii_value = 'val' + client_metadata_bin_key = 'key-bin' + client_metadata_bin_value = b'\0'*1000 + server_initial_metadata_key = 'init_me_me_me' + server_initial_metadata_value = 'whodawha?' + server_trailing_metadata_key = 'california_is_in_a_drought' + server_trailing_metadata_value = 'zomg it is' + server_status_code = _types.StatusCode.OK + server_status_details = 'our work is never over' + request = 'blarghaflargh' + response = 'his name is robert paulson' + method = 'twinkies' + host = 'hostess' server_request_tag = object() - request_call_result = self.server.request_call(self.server_completion_queue, server_request_tag) + request_call_result = self.server.request_call(self.server_completion_queue, + server_request_tag) - self.assertEquals(_types.CallError.OK, request_call_result) + self.assertEqual(_types.CallError.OK, request_call_result) client_call_tag = object() - client_call = self.client_channel.create_call(self.client_completion_queue, METHOD, HOST, DEADLINE) - client_initial_metadata = [(CLIENT_METADATA_ASCII_KEY, CLIENT_METADATA_ASCII_VALUE), (CLIENT_METADATA_BIN_KEY, CLIENT_METADATA_BIN_VALUE)] + client_call = self.client_channel.create_call( + self.client_completion_queue, method, host, deadline) + client_initial_metadata = [ + (client_metadata_ascii_key, client_metadata_ascii_value), + (client_metadata_bin_key, client_metadata_bin_value) + ] client_start_batch_result = client_call.start_batch([ _types.OpArgs.send_initial_metadata(client_initial_metadata), - _types.OpArgs.send_message(REQUEST, 0), + _types.OpArgs.send_message(request, 0), _types.OpArgs.send_close_from_client(), _types.OpArgs.recv_initial_metadata(), _types.OpArgs.recv_message(), _types.OpArgs.recv_status_on_client() ], client_call_tag) - self.assertEquals(_types.CallError.OK, client_start_batch_result) + self.assertEqual(_types.CallError.OK, client_start_batch_result) - client_no_event, request_event, = wait_for_events([self.client_completion_queue, self.server_completion_queue], time.time() + 2) - self.assertEquals(client_no_event, None) - self.assertEquals(_types.EventType.OP_COMPLETE, request_event.type) + client_no_event, request_event, = wait_for_events( + [self.client_completion_queue, self.server_completion_queue], + time.time() + event_time_tolerance) + self.assertEqual(client_no_event, None) + self.assertEqual(_types.EventType.OP_COMPLETE, request_event.type) self.assertIsInstance(request_event.call, _low.Call) self.assertIs(server_request_tag, request_event.tag) - self.assertEquals(1, len(request_event.results)) + self.assertEqual(1, len(request_event.results)) received_initial_metadata = dict(request_event.results[0].initial_metadata) # Check that our metadata were transmitted - self.assertEquals( + self.assertEqual( dict(client_initial_metadata), - dict((x, received_initial_metadata[x]) for x in zip(*client_initial_metadata)[0])) + dict((x, received_initial_metadata[x]) + for x in zip(*client_initial_metadata)[0])) # Check that Python's user agent string is a part of the full user agent # string self.assertIn('Python-gRPC-{}'.format(_grpcio_metadata.__version__), received_initial_metadata['user-agent']) - self.assertEquals(METHOD, request_event.call_details.method) - self.assertEquals(HOST, request_event.call_details.host) - self.assertLess(abs(DEADLINE - request_event.call_details.deadline), DEADLINE_TOLERANCE) + self.assertEqual(method, request_event.call_details.method) + self.assertEqual(host, request_event.call_details.host) + self.assertLess(abs(deadline - request_event.call_details.deadline), + deadline_tolerance) # Check that the channel is connected, and that both it and the call have # the proper target and peer; do this after the first flurry of messages to @@ -155,33 +166,43 @@ class InsecureServerInsecureClient(unittest.TestCase): server_call_tag = object() server_call = request_event.call - server_initial_metadata = [(SERVER_INITIAL_METADATA_KEY, SERVER_INITIAL_METADATA_VALUE)] - server_trailing_metadata = [(SERVER_TRAILING_METADATA_KEY, SERVER_TRAILING_METADATA_VALUE)] + server_initial_metadata = [ + (server_initial_metadata_key, server_initial_metadata_value) + ] + server_trailing_metadata = [ + (server_trailing_metadata_key, server_trailing_metadata_value) + ] server_start_batch_result = server_call.start_batch([ _types.OpArgs.send_initial_metadata(server_initial_metadata), _types.OpArgs.recv_message(), - _types.OpArgs.send_message(RESPONSE, 0), + _types.OpArgs.send_message(response, 0), _types.OpArgs.recv_close_on_server(), - _types.OpArgs.send_status_from_server(server_trailing_metadata, SERVER_STATUS_CODE, SERVER_STATUS_DETAILS) + _types.OpArgs.send_status_from_server( + server_trailing_metadata, server_status_code, server_status_details) ], server_call_tag) - self.assertEquals(_types.CallError.OK, server_start_batch_result) + self.assertEqual(_types.CallError.OK, server_start_batch_result) - client_event, server_event, = wait_for_events([self.client_completion_queue, self.server_completion_queue], time.time() + 1) + client_event, server_event, = wait_for_events( + [self.client_completion_queue, self.server_completion_queue], + time.time() + event_time_tolerance) - self.assertEquals(6, len(client_event.results)) + self.assertEqual(6, len(client_event.results)) found_client_op_types = set() for client_result in client_event.results: - self.assertNotIn(client_result.type, found_client_op_types) # we expect each op type to be unique + # we expect each op type to be unique + self.assertNotIn(client_result.type, found_client_op_types) found_client_op_types.add(client_result.type) if client_result.type == _types.OpType.RECV_INITIAL_METADATA: - self.assertEquals(dict(server_initial_metadata), dict(client_result.initial_metadata)) + self.assertEqual(dict(server_initial_metadata), + dict(client_result.initial_metadata)) elif client_result.type == _types.OpType.RECV_MESSAGE: - self.assertEquals(RESPONSE, client_result.message) + self.assertEqual(response, client_result.message) elif client_result.type == _types.OpType.RECV_STATUS_ON_CLIENT: - self.assertEquals(dict(server_trailing_metadata), dict(client_result.trailing_metadata)) - self.assertEquals(SERVER_STATUS_DETAILS, client_result.status.details) - self.assertEquals(SERVER_STATUS_CODE, client_result.status.code) - self.assertEquals(set([ + self.assertEqual(dict(server_trailing_metadata), + dict(client_result.trailing_metadata)) + self.assertEqual(server_status_details, client_result.status.details) + self.assertEqual(server_status_code, client_result.status.code) + self.assertEqual(set([ _types.OpType.SEND_INITIAL_METADATA, _types.OpType.SEND_MESSAGE, _types.OpType.SEND_CLOSE_FROM_CLIENT, @@ -190,16 +211,16 @@ class InsecureServerInsecureClient(unittest.TestCase): _types.OpType.RECV_STATUS_ON_CLIENT ]), found_client_op_types) - self.assertEquals(5, len(server_event.results)) + self.assertEqual(5, len(server_event.results)) found_server_op_types = set() for server_result in server_event.results: self.assertNotIn(client_result.type, found_server_op_types) found_server_op_types.add(server_result.type) if server_result.type == _types.OpType.RECV_MESSAGE: - self.assertEquals(REQUEST, server_result.message) + self.assertEqual(request, server_result.message) elif server_result.type == _types.OpType.RECV_CLOSE_ON_SERVER: self.assertFalse(server_result.cancelled) - self.assertEquals(set([ + self.assertEqual(set([ _types.OpType.SEND_INITIAL_METADATA, _types.OpType.RECV_MESSAGE, _types.OpType.SEND_MESSAGE, @@ -211,5 +232,81 @@ class InsecureServerInsecureClient(unittest.TestCase): del server_call +class HangingServerShutdown(unittest.TestCase): + + def setUp(self): + self.server_completion_queue = _low.CompletionQueue() + self.server = _low.Server(self.server_completion_queue, []) + self.port = self.server.add_http2_port('[::]:0') + self.client_completion_queue = _low.CompletionQueue() + self.client_channel = _low.Channel('localhost:%d'%self.port, []) + + self.server.start() + + def tearDown(self): + self.server.shutdown() + del self.client_channel + + self.client_completion_queue.shutdown() + self.server_completion_queue.shutdown() + while True: + client_event, server_event = wait_for_events( + [self.client_completion_queue, self.server_completion_queue], + float("+inf")) + if (client_event.type == _types.EventType.QUEUE_SHUTDOWN and + server_event.type == _types.EventType.QUEUE_SHUTDOWN): + break + + del self.client_completion_queue + del self.server_completion_queue + del self.server + + def testHangingServerCall(self): + deadline = time.time() + 5 + deadline_tolerance = 0.25 + event_time_tolerance = 2 + cancel_all_calls_time_tolerance = 0.5 + request = 'blarghaflargh' + method = 'twinkies' + host = 'hostess' + server_request_tag = object() + request_call_result = self.server.request_call(self.server_completion_queue, + server_request_tag) + + client_call_tag = object() + client_call = self.client_channel.create_call(self.client_completion_queue, + method, host, deadline) + client_start_batch_result = client_call.start_batch([ + _types.OpArgs.send_initial_metadata([]), + _types.OpArgs.send_message(request, 0), + _types.OpArgs.send_close_from_client(), + _types.OpArgs.recv_initial_metadata(), + _types.OpArgs.recv_message(), + _types.OpArgs.recv_status_on_client() + ], client_call_tag) + + client_no_event, request_event, = wait_for_events( + [self.client_completion_queue, self.server_completion_queue], + time.time() + event_time_tolerance) + + # Now try to shutdown the server and expect that we see server shutdown + # almost immediately after calling cancel_all_calls. + with self.assertRaises(RuntimeError): + self.server.cancel_all_calls() + shutdown_tag = object() + self.server.shutdown(shutdown_tag) + pre_cancel_timestamp = time.time() + self.server.cancel_all_calls() + finish_shutdown_timestamp = None + client_call_event, server_shutdown_event = wait_for_events( + [self.client_completion_queue, self.server_completion_queue], + time.time() + event_time_tolerance) + self.assertIs(shutdown_tag, server_shutdown_event.tag) + self.assertGreater(pre_cancel_timestamp + cancel_all_calls_time_tolerance, + time.time()) + + del client_call + + if __name__ == '__main__': unittest.main(verbosity=2) -- GitLab From 2b3579541b2500ac5b09766920c8cba3a996a73a Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Thu, 20 Aug 2015 14:54:33 -0700 Subject: [PATCH 124/178] get rid of explicit GrpcEnvironment.Shutdown() --- src/csharp/Grpc.Core.Tests/ChannelTest.cs | 33 +++----- .../Grpc.Core.Tests/ClientServerTest.cs | 15 +--- src/csharp/Grpc.Core.Tests/CompressionTest.cs | 8 +- .../Grpc.Core.Tests/ContextPropagationTest.cs | 8 +- .../Grpc.Core.Tests/Grpc.Core.Tests.csproj | 1 + .../Grpc.Core.Tests/GrpcEnvironmentTest.cs | 26 ++++--- .../Grpc.Core.Tests/ResponseHeadersTest.cs | 8 +- src/csharp/Grpc.Core.Tests/ServerTest.cs | 5 +- src/csharp/Grpc.Core.Tests/ShutdownTest.cs | 77 +++++++++++++++++++ src/csharp/Grpc.Core.Tests/TimeoutsTest.cs | 8 +- src/csharp/Grpc.Core/Channel.cs | 50 +++++++++--- src/csharp/Grpc.Core/GrpcEnvironment.cs | 37 +++++---- src/csharp/Grpc.Core/Internal/AsyncCall.cs | 8 +- .../Grpc.Core/Internal/AsyncCallBase.cs | 6 +- .../Grpc.Core/Internal/AsyncCallServer.cs | 17 +++- .../Internal/BatchContextSafeHandle.cs | 16 +++- .../Grpc.Core/Internal/ChannelSafeHandle.cs | 7 ++ src/csharp/Grpc.Core/Internal/DebugStats.cs | 14 ---- .../Grpc.Core/Internal/GrpcThreadPool.cs | 3 - .../Grpc.Core/Internal/ServerCallHandler.cs | 10 +-- .../Grpc.Core/Internal/ServerSafeHandle.cs | 4 + src/csharp/Grpc.Core/Logging/ConsoleLogger.cs | 14 +++- src/csharp/Grpc.Core/Server.cs | 57 ++++++++++---- .../Grpc.Examples.MathClient/MathClient.cs | 20 +++-- .../Grpc.Examples.MathServer/MathServer.cs | 1 - .../MathClientServerTests.cs | 3 +- .../HealthClientServerTest.cs | 3 +- .../Grpc.IntegrationTesting/InteropClient.cs | 10 +-- .../InteropClientServerTest.cs | 3 +- .../Grpc.IntegrationTesting/InteropServer.cs | 2 - .../SslCredentialsTest.cs | 3 +- 31 files changed, 297 insertions(+), 180 deletions(-) create mode 100644 src/csharp/Grpc.Core.Tests/ShutdownTest.cs diff --git a/src/csharp/Grpc.Core.Tests/ChannelTest.cs b/src/csharp/Grpc.Core.Tests/ChannelTest.cs index 2787572924..dfbd92879e 100644 --- a/src/csharp/Grpc.Core.Tests/ChannelTest.cs +++ b/src/csharp/Grpc.Core.Tests/ChannelTest.cs @@ -41,12 +41,6 @@ namespace Grpc.Core.Tests { public class ChannelTest { - [TestFixtureTearDown] - public void CleanupClass() - { - GrpcEnvironment.Shutdown(); - } - [Test] public void Constructor_RejectsInvalidParams() { @@ -56,36 +50,33 @@ namespace Grpc.Core.Tests [Test] public void State_IdleAfterCreation() { - using (var channel = new Channel("localhost", Credentials.Insecure)) - { - Assert.AreEqual(ChannelState.Idle, channel.State); - } + var channel = new Channel("localhost", Credentials.Insecure); + Assert.AreEqual(ChannelState.Idle, channel.State); + channel.ShutdownAsync().Wait(); } [Test] public void WaitForStateChangedAsync_InvalidArgument() { - using (var channel = new Channel("localhost", Credentials.Insecure)) - { - Assert.Throws(typeof(ArgumentException), () => channel.WaitForStateChangedAsync(ChannelState.FatalFailure)); - } + var channel = new Channel("localhost", Credentials.Insecure); + Assert.Throws(typeof(ArgumentException), () => channel.WaitForStateChangedAsync(ChannelState.FatalFailure)); + channel.ShutdownAsync().Wait(); } [Test] public void ResolvedTarget() { - using (var channel = new Channel("127.0.0.1", Credentials.Insecure)) - { - Assert.IsTrue(channel.ResolvedTarget.Contains("127.0.0.1")); - } + var channel = new Channel("127.0.0.1", Credentials.Insecure); + Assert.IsTrue(channel.ResolvedTarget.Contains("127.0.0.1")); + channel.ShutdownAsync().Wait(); } [Test] - public void Dispose_IsIdempotent() + public void Shutdown_AllowedOnlyOnce() { var channel = new Channel("localhost", Credentials.Insecure); - channel.Dispose(); - channel.Dispose(); + channel.ShutdownAsync().Wait(); + Assert.Throws(typeof(InvalidOperationException), () => channel.ShutdownAsync().GetAwaiter().GetResult()); } } } diff --git a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs index e49fdb5268..68279a2007 100644 --- a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs +++ b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs @@ -63,16 +63,10 @@ namespace Grpc.Core.Tests [TearDown] public void Cleanup() { - channel.Dispose(); + channel.ShutdownAsync().Wait(); server.ShutdownAsync().Wait(); } - [TestFixtureTearDown] - public void CleanupClass() - { - GrpcEnvironment.Shutdown(); - } - [Test] public async Task UnaryCall() { @@ -207,13 +201,6 @@ namespace Grpc.Core.Tests CollectionAssert.AreEqual(headers[1].ValueBytes, trailers[1].ValueBytes); } - [Test] - public void UnaryCall_DisposedChannel() - { - channel.Dispose(); - Assert.Throws(typeof(ObjectDisposedException), () => Calls.BlockingUnaryCall(helper.CreateUnaryCall(), "ABC")); - } - [Test] public void UnaryCallPerformance() { diff --git a/src/csharp/Grpc.Core.Tests/CompressionTest.cs b/src/csharp/Grpc.Core.Tests/CompressionTest.cs index 9547683f60..378c81851c 100644 --- a/src/csharp/Grpc.Core.Tests/CompressionTest.cs +++ b/src/csharp/Grpc.Core.Tests/CompressionTest.cs @@ -62,16 +62,10 @@ namespace Grpc.Core.Tests [TearDown] public void Cleanup() { - channel.Dispose(); + channel.ShutdownAsync().Wait(); server.ShutdownAsync().Wait(); } - [TestFixtureTearDown] - public void CleanupClass() - { - GrpcEnvironment.Shutdown(); - } - [Test] public void WriteOptions_Unary() { diff --git a/src/csharp/Grpc.Core.Tests/ContextPropagationTest.cs b/src/csharp/Grpc.Core.Tests/ContextPropagationTest.cs index db5f953b0e..2db3f286f7 100644 --- a/src/csharp/Grpc.Core.Tests/ContextPropagationTest.cs +++ b/src/csharp/Grpc.Core.Tests/ContextPropagationTest.cs @@ -62,16 +62,10 @@ namespace Grpc.Core.Tests [TearDown] public void Cleanup() { - channel.Dispose(); + channel.ShutdownAsync().Wait(); server.ShutdownAsync().Wait(); } - [TestFixtureTearDown] - public void CleanupClass() - { - GrpcEnvironment.Shutdown(); - } - [Test] public async Task PropagateCancellation() { diff --git a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj index 829effc9a2..ad4e94a695 100644 --- a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj +++ b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj @@ -64,6 +64,7 @@ <Link>Version.cs</Link> </Compile> <Compile Include="ClientBaseTest.cs" /> + <Compile Include="ShutdownTest.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="ClientServerTest.cs" /> <Compile Include="ServerTest.cs" /> diff --git a/src/csharp/Grpc.Core.Tests/GrpcEnvironmentTest.cs b/src/csharp/Grpc.Core.Tests/GrpcEnvironmentTest.cs index 4ed93c7eca..4fdfab5a99 100644 --- a/src/csharp/Grpc.Core.Tests/GrpcEnvironmentTest.cs +++ b/src/csharp/Grpc.Core.Tests/GrpcEnvironmentTest.cs @@ -43,33 +43,39 @@ namespace Grpc.Core.Tests [Test] public void InitializeAndShutdownGrpcEnvironment() { - var env = GrpcEnvironment.GetInstance(); + var env = GrpcEnvironment.AddRef(); Assert.IsNotNull(env.CompletionQueue); - GrpcEnvironment.Shutdown(); + GrpcEnvironment.Release(); } [Test] public void SubsequentInvocations() { - var env1 = GrpcEnvironment.GetInstance(); - var env2 = GrpcEnvironment.GetInstance(); + var env1 = GrpcEnvironment.AddRef(); + var env2 = GrpcEnvironment.AddRef(); Assert.IsTrue(object.ReferenceEquals(env1, env2)); - GrpcEnvironment.Shutdown(); - GrpcEnvironment.Shutdown(); + GrpcEnvironment.Release(); + GrpcEnvironment.Release(); } [Test] public void InitializeAfterShutdown() { - var env1 = GrpcEnvironment.GetInstance(); - GrpcEnvironment.Shutdown(); + var env1 = GrpcEnvironment.AddRef(); + GrpcEnvironment.Release(); - var env2 = GrpcEnvironment.GetInstance(); - GrpcEnvironment.Shutdown(); + var env2 = GrpcEnvironment.AddRef(); + GrpcEnvironment.Release(); Assert.IsFalse(object.ReferenceEquals(env1, env2)); } + [Test] + public void ReleaseWithoutAddRef() + { + Assert.Throws(typeof(InvalidOperationException), () => GrpcEnvironment.Release()); + } + [Test] public void GetCoreVersionString() { diff --git a/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs b/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs index 981b8ea3c8..706006702e 100644 --- a/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs +++ b/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs @@ -69,16 +69,10 @@ namespace Grpc.Core.Tests [TearDown] public void Cleanup() { - channel.Dispose(); + channel.ShutdownAsync().Wait(); server.ShutdownAsync().Wait(); } - [TestFixtureTearDown] - public void CleanupClass() - { - GrpcEnvironment.Shutdown(); - } - [Test] public void WriteResponseHeaders_NullNotAllowed() { diff --git a/src/csharp/Grpc.Core.Tests/ServerTest.cs b/src/csharp/Grpc.Core.Tests/ServerTest.cs index 485006ebac..e7193c843b 100644 --- a/src/csharp/Grpc.Core.Tests/ServerTest.cs +++ b/src/csharp/Grpc.Core.Tests/ServerTest.cs @@ -51,7 +51,6 @@ namespace Grpc.Core.Tests }; server.Start(); server.ShutdownAsync().Wait(); - GrpcEnvironment.Shutdown(); } [Test] @@ -67,8 +66,7 @@ namespace Grpc.Core.Tests Assert.Greater(boundPort.BoundPort, 0); server.Start(); - server.ShutdownAsync(); - GrpcEnvironment.Shutdown(); + server.ShutdownAsync().Wait(); } [Test] @@ -83,7 +81,6 @@ namespace Grpc.Core.Tests Assert.Throws(typeof(InvalidOperationException), () => server.Services.Add(ServerServiceDefinition.CreateBuilder("serviceName").Build())); server.ShutdownAsync().Wait(); - GrpcEnvironment.Shutdown(); } } } diff --git a/src/csharp/Grpc.Core.Tests/ShutdownTest.cs b/src/csharp/Grpc.Core.Tests/ShutdownTest.cs new file mode 100644 index 0000000000..a2be7ddd5e --- /dev/null +++ b/src/csharp/Grpc.Core.Tests/ShutdownTest.cs @@ -0,0 +1,77 @@ +#region Copyright notice and license + +// 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. + +#endregion + +using System; +using System.Diagnostics; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Grpc.Core; +using Grpc.Core.Internal; +using Grpc.Core.Utils; +using NUnit.Framework; + +namespace Grpc.Core.Tests +{ + public class ShutdownTest + { + const string Host = "127.0.0.1"; + + MockServiceHelper helper; + Server server; + Channel channel; + + [SetUp] + public void Init() + { + helper = new MockServiceHelper(Host); + server = helper.GetServer(); + server.Start(); + channel = helper.GetChannel(); + } + + [Test] + public async Task AbandonedCall() + { + helper.DuplexStreamingHandler = new DuplexStreamingServerMethod<string, string>(async (requestStream, responseStream, context) => + { + await requestStream.ToListAsync(); + }); + + var call = Calls.AsyncDuplexStreamingCall(helper.CreateDuplexStreamingCall(new CallOptions(deadline: DateTime.UtcNow.AddMilliseconds(1)))); + + channel.ShutdownAsync().Wait(); + server.ShutdownAsync().Wait(); + } + } +} diff --git a/src/csharp/Grpc.Core.Tests/TimeoutsTest.cs b/src/csharp/Grpc.Core.Tests/TimeoutsTest.cs index d875d601b9..41f661f62d 100644 --- a/src/csharp/Grpc.Core.Tests/TimeoutsTest.cs +++ b/src/csharp/Grpc.Core.Tests/TimeoutsTest.cs @@ -65,16 +65,10 @@ namespace Grpc.Core.Tests [TearDown] public void Cleanup() { - channel.Dispose(); + channel.ShutdownAsync().Wait(); server.ShutdownAsync().Wait(); } - [TestFixtureTearDown] - public void CleanupClass() - { - GrpcEnvironment.Shutdown(); - } - [Test] public void InfiniteDeadline() { diff --git a/src/csharp/Grpc.Core/Channel.cs b/src/csharp/Grpc.Core/Channel.cs index 64c6adf2bf..2f8519dfa3 100644 --- a/src/csharp/Grpc.Core/Channel.cs +++ b/src/csharp/Grpc.Core/Channel.cs @@ -45,14 +45,19 @@ namespace Grpc.Core /// <summary> /// gRPC Channel /// </summary> - public class Channel : IDisposable + public class Channel { static readonly ILogger Logger = GrpcEnvironment.Logger.ForType<Channel>(); + readonly object myLock = new object(); + readonly AtomicCounter activeCallCounter = new AtomicCounter(); + readonly string target; readonly GrpcEnvironment environment; readonly ChannelSafeHandle handle; readonly List<ChannelOption> options; + + bool shutdownRequested; bool disposed; /// <summary> @@ -65,7 +70,7 @@ namespace Grpc.Core public Channel(string target, Credentials credentials, IEnumerable<ChannelOption> options = null) { this.target = Preconditions.CheckNotNull(target, "target"); - this.environment = GrpcEnvironment.GetInstance(); + this.environment = GrpcEnvironment.AddRef(); this.options = options != null ? new List<ChannelOption>(options) : new List<ChannelOption>(); EnsureUserAgentChannelOption(this.options); @@ -172,12 +177,26 @@ namespace Grpc.Core } /// <summary> - /// Destroys the underlying channel. + /// Waits until there are no more active calls for this channel and then cleans up + /// resources used by this channel. /// </summary> - public void Dispose() + public async Task ShutdownAsync() { - Dispose(true); - GC.SuppressFinalize(this); + lock (myLock) + { + Preconditions.CheckState(!shutdownRequested); + shutdownRequested = true; + } + + var activeCallCount = activeCallCounter.Count; + if (activeCallCount > 0) + { + Logger.Warning("Channel shutdown was called but there are still {0} active calls for that channel.", activeCallCount); + } + + handle.Dispose(); + + await Task.Run(() => GrpcEnvironment.Release()); } internal ChannelSafeHandle Handle @@ -196,13 +215,20 @@ namespace Grpc.Core } } - protected virtual void Dispose(bool disposing) + internal void AddCallReference(object call) { - if (disposing && handle != null && !disposed) - { - disposed = true; - handle.Dispose(); - } + activeCallCounter.Increment(); + + bool success = false; + handle.DangerousAddRef(ref success); + Preconditions.CheckState(success); + } + + internal void RemoveCallReference(object call) + { + handle.DangerousRelease(); + + activeCallCounter.Decrement(); } private static void EnsureUserAgentChannelOption(List<ChannelOption> options) diff --git a/src/csharp/Grpc.Core/GrpcEnvironment.cs b/src/csharp/Grpc.Core/GrpcEnvironment.cs index 30d8c80235..0a44eead74 100644 --- a/src/csharp/Grpc.Core/GrpcEnvironment.cs +++ b/src/csharp/Grpc.Core/GrpcEnvironment.cs @@ -58,6 +58,7 @@ namespace Grpc.Core static object staticLock = new object(); static GrpcEnvironment instance; + static int refCount; static ILogger logger = new ConsoleLogger(); @@ -67,13 +68,14 @@ namespace Grpc.Core bool isClosed; /// <summary> - /// Returns an instance of initialized gRPC environment. - /// Subsequent invocations return the same instance unless Shutdown has been called first. + /// Returns a reference-counted instance of initialized gRPC environment. + /// Subsequent invocations return the same instance unless reference count has dropped to zero previously. /// </summary> - internal static GrpcEnvironment GetInstance() + internal static GrpcEnvironment AddRef() { lock (staticLock) { + refCount++; if (instance == null) { instance = new GrpcEnvironment(); @@ -83,14 +85,16 @@ namespace Grpc.Core } /// <summary> - /// Shuts down the gRPC environment if it was initialized before. - /// Blocks until the environment has been fully shutdown. + /// Decrements the reference count for currently active environment and shuts down the gRPC environment if reference count drops to zero. + /// (and blocks until the environment has been fully shutdown). /// </summary> - public static void Shutdown() + internal static void Release() { lock (staticLock) { - if (instance != null) + Preconditions.CheckState(refCount > 0); + refCount--; + if (refCount == 0) { instance.Close(); instance = null; @@ -125,12 +129,10 @@ namespace Grpc.Core private GrpcEnvironment() { NativeLogRedirector.Redirect(); - grpcsharp_init(); + GrpcNativeInit(); completionRegistry = new CompletionRegistry(this); threadPool = new GrpcThreadPool(this, THREAD_POOL_SIZE); threadPool.Start(); - // TODO: use proper logging here - Logger.Info("gRPC initialized."); } /// <summary> @@ -175,6 +177,17 @@ namespace Grpc.Core return Marshal.PtrToStringAnsi(ptr); } + + internal static void GrpcNativeInit() + { + grpcsharp_init(); + } + + internal static void GrpcNativeShutdown() + { + grpcsharp_shutdown(); + } + /// <summary> /// Shuts down this environment. /// </summary> @@ -185,12 +198,10 @@ namespace Grpc.Core throw new InvalidOperationException("Close has already been called"); } threadPool.Stop(); - grpcsharp_shutdown(); + GrpcNativeShutdown(); isClosed = true; debugStats.CheckOK(); - - Logger.Info("gRPC shutdown."); } } } diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs index 2c3e3d75ea..bb9ba5b8dd 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs @@ -311,9 +311,9 @@ namespace Grpc.Core.Internal } } - protected override void OnReleaseResources() + protected override void OnAfterReleaseResources() { - details.Channel.Environment.DebugStats.ActiveClientCalls.Decrement(); + details.Channel.RemoveCallReference(this); } private void Initialize(CompletionQueueSafeHandle cq) @@ -323,7 +323,9 @@ namespace Grpc.Core.Internal var call = details.Channel.Handle.CreateCall(details.Channel.Environment.CompletionRegistry, parentCall, ContextPropagationToken.DefaultMask, cq, details.Method, details.Host, Timespec.FromDateTime(details.Options.Deadline.Value)); - details.Channel.Environment.DebugStats.ActiveClientCalls.Increment(); + + details.Channel.AddCallReference(this); + InitializeInternal(call); RegisterCancellationCallback(); } diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs index 6ca4bbdafc..1808294f43 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs @@ -189,15 +189,15 @@ namespace Grpc.Core.Internal private void ReleaseResources() { - OnReleaseResources(); if (call != null) { call.Dispose(); } disposed = true; + OnAfterReleaseResources(); } - protected virtual void OnReleaseResources() + protected virtual void OnAfterReleaseResources() { } @@ -212,7 +212,7 @@ namespace Grpc.Core.Internal Preconditions.CheckState(sendCompletionDelegate == null, "Only one write can be pending at a time"); } - protected void CheckReadingAllowed() + protected virtual void CheckReadingAllowed() { Preconditions.CheckState(started); Preconditions.CheckState(!disposed); diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs index 3710a65d6b..6278c0191e 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs @@ -50,16 +50,19 @@ namespace Grpc.Core.Internal readonly TaskCompletionSource<object> finishedServersideTcs = new TaskCompletionSource<object>(); readonly CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); readonly GrpcEnvironment environment; + readonly Server server; - public AsyncCallServer(Func<TResponse, byte[]> serializer, Func<byte[], TRequest> deserializer, GrpcEnvironment environment) : base(serializer, deserializer) + public AsyncCallServer(Func<TResponse, byte[]> serializer, Func<byte[], TRequest> deserializer, GrpcEnvironment environment, Server server) : base(serializer, deserializer) { this.environment = Preconditions.CheckNotNull(environment); + this.server = Preconditions.CheckNotNull(server); } public void Initialize(CallSafeHandle call) { call.SetCompletionRegistry(environment.CompletionRegistry); - environment.DebugStats.ActiveServerCalls.Increment(); + + server.AddCallReference(this); InitializeInternal(call); } @@ -168,9 +171,15 @@ namespace Grpc.Core.Internal } } - protected override void OnReleaseResources() + protected override void CheckReadingAllowed() + { + base.CheckReadingAllowed(); + Preconditions.CheckArgument(!cancelRequested); + } + + protected override void OnAfterReleaseResources() { - environment.DebugStats.ActiveServerCalls.Decrement(); + server.RemoveCallReference(this); } /// <summary> diff --git a/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs b/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs index 6a2add54db..3a96414bea 100644 --- a/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/BatchContextSafeHandle.cs @@ -134,7 +134,7 @@ namespace Grpc.Core.Internal } // Gets data of server_rpc_new completion. - public ServerRpcNew GetServerRpcNew() + public ServerRpcNew GetServerRpcNew(Server server) { var call = grpcsharp_batch_context_server_rpc_new_call(this); @@ -145,7 +145,7 @@ namespace Grpc.Core.Internal IntPtr metadataArrayPtr = grpcsharp_batch_context_server_rpc_new_request_metadata(this); var metadata = MetadataArraySafeHandle.ReadMetadataFromPtrUnsafe(metadataArrayPtr); - return new ServerRpcNew(call, method, host, deadline, metadata); + return new ServerRpcNew(server, call, method, host, deadline, metadata); } // Gets data of receive_close_on_server completion. @@ -198,14 +198,16 @@ namespace Grpc.Core.Internal /// </summary> internal struct ServerRpcNew { + readonly Server server; readonly CallSafeHandle call; readonly string method; readonly string host; readonly Timespec deadline; readonly Metadata requestMetadata; - public ServerRpcNew(CallSafeHandle call, string method, string host, Timespec deadline, Metadata requestMetadata) + public ServerRpcNew(Server server, CallSafeHandle call, string method, string host, Timespec deadline, Metadata requestMetadata) { + this.server = server; this.call = call; this.method = method; this.host = host; @@ -213,6 +215,14 @@ namespace Grpc.Core.Internal this.requestMetadata = requestMetadata; } + public Server Server + { + get + { + return this.server; + } + } + public CallSafeHandle Call { get diff --git a/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs index 7f03bf4ea5..8cef566c14 100644 --- a/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs @@ -68,11 +68,17 @@ namespace Grpc.Core.Internal public static ChannelSafeHandle CreateInsecure(string target, ChannelArgsSafeHandle channelArgs) { + // Increment reference count for the native gRPC environment to make sure we don't do grpc_shutdown() before destroying the server handle. + // Doing so would make object finalizer crash if we end up abandoning the handle. + GrpcEnvironment.GrpcNativeInit(); return grpcsharp_insecure_channel_create(target, channelArgs); } public static ChannelSafeHandle CreateSecure(CredentialsSafeHandle credentials, string target, ChannelArgsSafeHandle channelArgs) { + // Increment reference count for the native gRPC environment to make sure we don't do grpc_shutdown() before destroying the server handle. + // Doing so would make object finalizer crash if we end up abandoning the handle. + GrpcEnvironment.GrpcNativeInit(); return grpcsharp_secure_channel_create(credentials, target, channelArgs); } @@ -107,6 +113,7 @@ namespace Grpc.Core.Internal protected override bool ReleaseHandle() { grpcsharp_channel_destroy(handle); + GrpcEnvironment.GrpcNativeShutdown(); return true; } } diff --git a/src/csharp/Grpc.Core/Internal/DebugStats.cs b/src/csharp/Grpc.Core/Internal/DebugStats.cs index 8793450ff3..1bea1adf9e 100644 --- a/src/csharp/Grpc.Core/Internal/DebugStats.cs +++ b/src/csharp/Grpc.Core/Internal/DebugStats.cs @@ -38,10 +38,6 @@ namespace Grpc.Core.Internal { internal class DebugStats { - public readonly AtomicCounter ActiveClientCalls = new AtomicCounter(); - - public readonly AtomicCounter ActiveServerCalls = new AtomicCounter(); - public readonly AtomicCounter PendingBatchCompletions = new AtomicCounter(); /// <summary> @@ -49,16 +45,6 @@ namespace Grpc.Core.Internal /// </summary> public void CheckOK() { - var remainingClientCalls = ActiveClientCalls.Count; - if (remainingClientCalls != 0) - { - DebugWarning(string.Format("Detected {0} client calls that weren't disposed properly.", remainingClientCalls)); - } - var remainingServerCalls = ActiveServerCalls.Count; - if (remainingServerCalls != 0) - { - DebugWarning(string.Format("Detected {0} server calls that weren't disposed properly.", remainingServerCalls)); - } var pendingBatchCompletions = PendingBatchCompletions.Count; if (pendingBatchCompletions != 0) { diff --git a/src/csharp/Grpc.Core/Internal/GrpcThreadPool.cs b/src/csharp/Grpc.Core/Internal/GrpcThreadPool.cs index cb4c7c821e..4b7124ee74 100644 --- a/src/csharp/Grpc.Core/Internal/GrpcThreadPool.cs +++ b/src/csharp/Grpc.Core/Internal/GrpcThreadPool.cs @@ -83,8 +83,6 @@ namespace Grpc.Core.Internal lock (myLock) { cq.Shutdown(); - - Logger.Info("Waiting for GRPC threads to finish."); foreach (var thread in threads) { thread.Join(); @@ -136,7 +134,6 @@ namespace Grpc.Core.Internal } } while (ev.type != GRPCCompletionType.Shutdown); - Logger.Info("Completion queue has shutdown successfully, thread {0} exiting.", Thread.CurrentThread.Name); } } } diff --git a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs index 688f9f6fec..59f4c5727c 100644 --- a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs +++ b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs @@ -67,7 +67,7 @@ namespace Grpc.Core.Internal var asyncCall = new AsyncCallServer<TRequest, TResponse>( method.ResponseMarshaller.Serializer, method.RequestMarshaller.Deserializer, - environment); + environment, newRpc.Server); asyncCall.Initialize(newRpc.Call); var finishedTask = asyncCall.ServerSideCallAsync(); @@ -123,7 +123,7 @@ namespace Grpc.Core.Internal var asyncCall = new AsyncCallServer<TRequest, TResponse>( method.ResponseMarshaller.Serializer, method.RequestMarshaller.Deserializer, - environment); + environment, newRpc.Server); asyncCall.Initialize(newRpc.Call); var finishedTask = asyncCall.ServerSideCallAsync(); @@ -179,7 +179,7 @@ namespace Grpc.Core.Internal var asyncCall = new AsyncCallServer<TRequest, TResponse>( method.ResponseMarshaller.Serializer, method.RequestMarshaller.Deserializer, - environment); + environment, newRpc.Server); asyncCall.Initialize(newRpc.Call); var finishedTask = asyncCall.ServerSideCallAsync(); @@ -239,7 +239,7 @@ namespace Grpc.Core.Internal var asyncCall = new AsyncCallServer<TRequest, TResponse>( method.ResponseMarshaller.Serializer, method.RequestMarshaller.Deserializer, - environment); + environment, newRpc.Server); asyncCall.Initialize(newRpc.Call); var finishedTask = asyncCall.ServerSideCallAsync(); @@ -278,7 +278,7 @@ namespace Grpc.Core.Internal { // We don't care about the payload type here. var asyncCall = new AsyncCallServer<byte[], byte[]>( - (payload) => payload, (payload) => payload, environment); + (payload) => payload, (payload) => payload, environment, newRpc.Server); asyncCall.Initialize(newRpc.Call); var finishedTask = asyncCall.ServerSideCallAsync(); diff --git a/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs index f9b44b1acf..5ee7ac14e8 100644 --- a/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ServerSafeHandle.cs @@ -74,6 +74,9 @@ namespace Grpc.Core.Internal public static ServerSafeHandle NewServer(CompletionQueueSafeHandle cq, ChannelArgsSafeHandle args) { + // Increment reference count for the native gRPC environment to make sure we don't do grpc_shutdown() before destroying the server handle. + // Doing so would make object finalizer crash if we end up abandoning the handle. + GrpcEnvironment.GrpcNativeInit(); return grpcsharp_server_create(cq, args); } @@ -109,6 +112,7 @@ namespace Grpc.Core.Internal protected override bool ReleaseHandle() { grpcsharp_server_destroy(handle); + GrpcEnvironment.GrpcNativeShutdown(); return true; } diff --git a/src/csharp/Grpc.Core/Logging/ConsoleLogger.cs b/src/csharp/Grpc.Core/Logging/ConsoleLogger.cs index 382481d871..35561d25d8 100644 --- a/src/csharp/Grpc.Core/Logging/ConsoleLogger.cs +++ b/src/csharp/Grpc.Core/Logging/ConsoleLogger.cs @@ -51,7 +51,19 @@ namespace Grpc.Core.Logging private ConsoleLogger(Type forType) { this.forType = forType; - this.forTypeString = forType != null ? forType.FullName + " " : ""; + if (forType != null) + { + var namespaceStr = forType.Namespace ?? ""; + if (namespaceStr.Length > 0) + { + namespaceStr += "."; + } + this.forTypeString = namespaceStr + forType.Name + " "; + } + else + { + this.forTypeString = ""; + } } /// <summary> diff --git a/src/csharp/Grpc.Core/Server.cs b/src/csharp/Grpc.Core/Server.cs index c76f126026..28f1686e20 100644 --- a/src/csharp/Grpc.Core/Server.cs +++ b/src/csharp/Grpc.Core/Server.cs @@ -50,6 +50,8 @@ namespace Grpc.Core { static readonly ILogger Logger = GrpcEnvironment.Logger.ForType<Server>(); + readonly AtomicCounter activeCallCounter = new AtomicCounter(); + readonly ServiceDefinitionCollection serviceDefinitions; readonly ServerPortCollection ports; readonly GrpcEnvironment environment; @@ -73,7 +75,7 @@ namespace Grpc.Core { this.serviceDefinitions = new ServiceDefinitionCollection(this); this.ports = new ServerPortCollection(this); - this.environment = GrpcEnvironment.GetInstance(); + this.environment = GrpcEnvironment.AddRef(); this.options = options != null ? new List<ChannelOption>(options) : new List<ChannelOption>(); using (var channelArgs = ChannelOptions.CreateChannelArgs(this.options)) { @@ -105,6 +107,17 @@ namespace Grpc.Core } } + /// <summary> + /// To allow awaiting termination of the server. + /// </summary> + public Task ShutdownTask + { + get + { + return shutdownTcs.Task; + } + } + /// <summary> /// Starts the server. /// </summary> @@ -136,18 +149,9 @@ namespace Grpc.Core handle.ShutdownAndNotify(HandleServerShutdown, environment); await shutdownTcs.Task; - handle.Dispose(); - } + DisposeHandle(); - /// <summary> - /// To allow awaiting termination of the server. - /// </summary> - public Task ShutdownTask - { - get - { - return shutdownTcs.Task; - } + await Task.Run(() => GrpcEnvironment.Release()); } /// <summary> @@ -166,7 +170,22 @@ namespace Grpc.Core handle.ShutdownAndNotify(HandleServerShutdown, environment); handle.CancelAllCalls(); await shutdownTcs.Task; - handle.Dispose(); + DisposeHandle(); + } + + internal void AddCallReference(object call) + { + activeCallCounter.Increment(); + + bool success = false; + handle.DangerousAddRef(ref success); + Preconditions.CheckState(success); + } + + internal void RemoveCallReference(object call) + { + handle.DangerousRelease(); + activeCallCounter.Decrement(); } /// <summary> @@ -227,6 +246,16 @@ namespace Grpc.Core } } + private void DisposeHandle() + { + var activeCallCount = activeCallCounter.Count; + if (activeCallCount > 0) + { + Logger.Warning("Server shutdown has finished but there are still {0} active calls for that server.", activeCallCount); + } + handle.Dispose(); + } + /// <summary> /// Selects corresponding handler for given call and handles the call. /// </summary> @@ -254,7 +283,7 @@ namespace Grpc.Core { if (success) { - ServerRpcNew newRpc = ctx.GetServerRpcNew(); + ServerRpcNew newRpc = ctx.GetServerRpcNew(this); // after server shutdown, the callback returns with null call if (!newRpc.Call.IsInvalid) diff --git a/src/csharp/Grpc.Examples.MathClient/MathClient.cs b/src/csharp/Grpc.Examples.MathClient/MathClient.cs index f9839d99f1..abd95cb905 100644 --- a/src/csharp/Grpc.Examples.MathClient/MathClient.cs +++ b/src/csharp/Grpc.Examples.MathClient/MathClient.cs @@ -39,23 +39,21 @@ namespace math { public static void Main(string[] args) { - using (Channel channel = new Channel("127.0.0.1", 23456, Credentials.Insecure)) - { - Math.IMathClient client = new Math.MathClient(channel); - MathExamples.DivExample(client); + var channel = new Channel("127.0.0.1", 23456, Credentials.Insecure); + Math.IMathClient client = new Math.MathClient(channel); + MathExamples.DivExample(client); - MathExamples.DivAsyncExample(client).Wait(); + MathExamples.DivAsyncExample(client).Wait(); - MathExamples.FibExample(client).Wait(); + MathExamples.FibExample(client).Wait(); - MathExamples.SumExample(client).Wait(); + MathExamples.SumExample(client).Wait(); - MathExamples.DivManyExample(client).Wait(); + MathExamples.DivManyExample(client).Wait(); - MathExamples.DependendRequestsExample(client).Wait(); - } + MathExamples.DependendRequestsExample(client).Wait(); - GrpcEnvironment.Shutdown(); + channel.ShutdownAsync().Wait(); } } } diff --git a/src/csharp/Grpc.Examples.MathServer/MathServer.cs b/src/csharp/Grpc.Examples.MathServer/MathServer.cs index 5f7e717b0c..26bef646ec 100644 --- a/src/csharp/Grpc.Examples.MathServer/MathServer.cs +++ b/src/csharp/Grpc.Examples.MathServer/MathServer.cs @@ -56,7 +56,6 @@ namespace math Console.ReadKey(); server.ShutdownAsync().Wait(); - GrpcEnvironment.Shutdown(); } } } diff --git a/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs b/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs index fdef950f09..36c1c947bd 100644 --- a/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs +++ b/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs @@ -68,9 +68,8 @@ namespace math.Tests [TestFixtureTearDown] public void Cleanup() { - channel.Dispose(); + channel.ShutdownAsync().Wait(); server.ShutdownAsync().Wait(); - GrpcEnvironment.Shutdown(); } [Test] diff --git a/src/csharp/Grpc.HealthCheck.Tests/HealthClientServerTest.cs b/src/csharp/Grpc.HealthCheck.Tests/HealthClientServerTest.cs index 024377e216..80c35fb197 100644 --- a/src/csharp/Grpc.HealthCheck.Tests/HealthClientServerTest.cs +++ b/src/csharp/Grpc.HealthCheck.Tests/HealthClientServerTest.cs @@ -71,10 +71,9 @@ namespace Grpc.HealthCheck.Tests [TestFixtureTearDown] public void Cleanup() { - channel.Dispose(); + channel.ShutdownAsync().Wait(); server.ShutdownAsync().Wait(); - GrpcEnvironment.Shutdown(); } [Test] diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs index 423da2801e..d2df24b4e9 100644 --- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs +++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs @@ -120,12 +120,10 @@ namespace Grpc.IntegrationTesting }; } - using (Channel channel = new Channel(options.serverHost, options.serverPort.Value, credentials, channelOptions)) - { - TestService.TestServiceClient client = new TestService.TestServiceClient(channel); - await RunTestCaseAsync(options.testCase, client); - } - GrpcEnvironment.Shutdown(); + var channel = new Channel(options.serverHost, options.serverPort.Value, credentials, channelOptions); + TestService.TestServiceClient client = new TestService.TestServiceClient(channel); + await RunTestCaseAsync(options.testCase, client); + channel.ShutdownAsync().Wait(); } private async Task RunTestCaseAsync(string testCase, TestService.TestServiceClient client) diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs b/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs index 6fa721bc1c..a7c7027ee9 100644 --- a/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs +++ b/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs @@ -75,9 +75,8 @@ namespace Grpc.IntegrationTesting [TestFixtureTearDown] public void Cleanup() { - channel.Dispose(); + channel.ShutdownAsync().Wait(); server.ShutdownAsync().Wait(); - GrpcEnvironment.Shutdown(); } [Test] diff --git a/src/csharp/Grpc.IntegrationTesting/InteropServer.cs b/src/csharp/Grpc.IntegrationTesting/InteropServer.cs index 504fd11857..0cc8b2cde1 100644 --- a/src/csharp/Grpc.IntegrationTesting/InteropServer.cs +++ b/src/csharp/Grpc.IntegrationTesting/InteropServer.cs @@ -107,8 +107,6 @@ namespace Grpc.IntegrationTesting server.Start(); server.ShutdownTask.Wait(); - - GrpcEnvironment.Shutdown(); } private static ServerOptions ParseArguments(string[] args) diff --git a/src/csharp/Grpc.IntegrationTesting/SslCredentialsTest.cs b/src/csharp/Grpc.IntegrationTesting/SslCredentialsTest.cs index 1c398eb84e..842795374f 100644 --- a/src/csharp/Grpc.IntegrationTesting/SslCredentialsTest.cs +++ b/src/csharp/Grpc.IntegrationTesting/SslCredentialsTest.cs @@ -85,9 +85,8 @@ namespace Grpc.IntegrationTesting [TestFixtureTearDown] public void Cleanup() { - channel.Dispose(); + channel.ShutdownAsync().Wait(); server.ShutdownAsync().Wait(); - GrpcEnvironment.Shutdown(); } [Test] -- GitLab From e4134ddf6c64bbd4bdb6084b7295eedcf9fffcef Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Wed, 12 Aug 2015 14:54:40 -0700 Subject: [PATCH 125/178] implement timeout_on_sleeping_server interop test --- .../Grpc.IntegrationTesting/InteropClient.cs | 26 +++++++++++++++++++ .../InteropClientServerTest.cs | 6 +++++ 2 files changed, 32 insertions(+) diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs index d2df24b4e9..24c22273fb 100644 --- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs +++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs @@ -169,6 +169,9 @@ namespace Grpc.IntegrationTesting case "cancel_after_first_response": await RunCancelAfterFirstResponseAsync(client); break; + case "timeout_on_sleeping_server": + await RunTimeoutOnSleepingServerAsync(client); + break; case "benchmark_empty_unary": RunBenchmarkEmptyUnary(client); break; @@ -458,6 +461,29 @@ namespace Grpc.IntegrationTesting Console.WriteLine("Passed!"); } + public static async Task RunTimeoutOnSleepingServerAsync(TestService.ITestServiceClient client) + { + Console.WriteLine("running timeout_on_sleeping_server"); + + var deadline = DateTime.UtcNow.AddMilliseconds(1); + using (var call = client.FullDuplexCall(deadline: deadline)) + { + try + { + await call.RequestStream.WriteAsync(StreamingOutputCallRequest.CreateBuilder() + .SetPayload(CreateZerosPayload(27182)).Build()); + } + catch (InvalidOperationException) + { + // Deadline was reached before write has started. Eat the exception and continue. + } + + var ex = Assert.Throws<RpcException>(async () => await call.ResponseStream.MoveNext()); + Assert.AreEqual(StatusCode.DeadlineExceeded, ex.Status.StatusCode); + } + Console.WriteLine("Passed!"); + } + // This is not an official interop test, but it's useful. public static void RunBenchmarkEmptyUnary(TestService.ITestServiceClient client) { diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs b/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs index a7c7027ee9..f3158aeb45 100644 --- a/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs +++ b/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs @@ -126,5 +126,11 @@ namespace Grpc.IntegrationTesting { await InteropClient.RunCancelAfterFirstResponseAsync(client); } + + [Test] + public async Task TimeoutOnSleepingServerAsync() + { + await InteropClient.RunTimeoutOnSleepingServerAsync(client); + } } } -- GitLab From a4c4f02a63eb70fcd21a102cde9aa536dcd17f67 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Fri, 21 Aug 2015 00:05:42 -0700 Subject: [PATCH 126/178] Added C API functions for compression args handling (w/ tests) --- Makefile | 34 +++++- build.json | 14 +++ include/grpc/compression.h | 26 ++++- src/core/channel/channel_args.c | 62 +++++++++++ src/core/channel/channel_args.h | 17 +++ test/core/channel/channel_args_test.c | 136 +++++++++++++++++++++++ tools/run_tests/sources_and_headers.json | 14 +++ tools/run_tests/tests.json | 19 ++++ vsprojects/Grpc.mak | 10 +- 9 files changed, 327 insertions(+), 5 deletions(-) create mode 100644 test/core/channel/channel_args_test.c diff --git a/Makefile b/Makefile index 31628b4412..ab39c4bd56 100644 --- a/Makefile +++ b/Makefile @@ -811,6 +811,7 @@ gpr_useful_test: $(BINDIR)/$(CONFIG)/gpr_useful_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 +grpc_channel_args_test: $(BINDIR)/$(CONFIG)/grpc_channel_args_test grpc_channel_stack_test: $(BINDIR)/$(CONFIG)/grpc_channel_stack_test grpc_completion_queue_test: $(BINDIR)/$(CONFIG)/grpc_completion_queue_test grpc_create_jwt: $(BINDIR)/$(CONFIG)/grpc_create_jwt @@ -1731,7 +1732,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)/alarm_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)/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_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)/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)/chttp2_fake_security_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/connection_prefix_bad_client_test $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test +buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONFIG)/alarm_list_test $(BINDIR)/$(CONFIG)/alarm_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)/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)/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)/chttp2_fake_security_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_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_time_test $(BINDIR)/$(CONFIG)/dynamic_thread_pool_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/fixed_size_thread_pool_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)/status_test $(BINDIR)/$(CONFIG)/sync_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/sync_unary_ping_pong_test $(BINDIR)/$(CONFIG)/thread_stress_test @@ -1811,6 +1812,8 @@ test_c: buildtests_c $(Q) $(BINDIR)/$(CONFIG)/grpc_base64_test || ( echo test grpc_base64_test failed ; exit 1 ) $(E) "[RUN] Testing grpc_byte_buffer_reader_test" $(Q) $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test || ( echo test grpc_byte_buffer_reader_test failed ; exit 1 ) + $(E) "[RUN] Testing grpc_channel_args_test" + $(Q) $(BINDIR)/$(CONFIG)/grpc_channel_args_test || ( echo test grpc_channel_args_test failed ; exit 1 ) $(E) "[RUN] Testing grpc_channel_stack_test" $(Q) $(BINDIR)/$(CONFIG)/grpc_channel_stack_test || ( echo test grpc_channel_stack_test failed ; exit 1 ) $(E) "[RUN] Testing grpc_completion_queue_test" @@ -7644,6 +7647,35 @@ endif endif +GRPC_CHANNEL_ARGS_TEST_SRC = \ + test/core/channel/channel_args_test.c \ + +GRPC_CHANNEL_ARGS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_CHANNEL_ARGS_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/grpc_channel_args_test: openssl_dep_error + +else + +$(BINDIR)/$(CONFIG)/grpc_channel_args_test: $(GRPC_CHANNEL_ARGS_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_CHANNEL_ARGS_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_channel_args_test + +endif + +$(OBJDIR)/$(CONFIG)/test/core/channel/channel_args_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +deps_grpc_channel_args_test: $(GRPC_CHANNEL_ARGS_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(GRPC_CHANNEL_ARGS_TEST_OBJS:.o=.dep) +endif +endif + + GRPC_CHANNEL_STACK_TEST_SRC = \ test/core/channel/channel_stack_test.c \ diff --git a/build.json b/build.json index bd707d2e34..2377567c35 100644 --- a/build.json +++ b/build.json @@ -1365,6 +1365,20 @@ "gpr" ] }, + { + "name": "grpc_channel_args_test", + "build": "test", + "language": "c", + "src": [ + "test/core/channel/channel_args_test.c" + ], + "deps": [ + "grpc_test_util", + "grpc", + "gpr_test_util", + "gpr" + ] + }, { "name": "grpc_channel_stack_test", "build": "test", diff --git a/include/grpc/compression.h b/include/grpc/compression.h index 9924baeca1..82e326fe0e 100644 --- a/include/grpc/compression.h +++ b/include/grpc/compression.h @@ -36,12 +36,15 @@ #include <stdlib.h> +#include <grpc/support/port_platform.h> + #ifdef __cplusplus extern "C" { #endif /** To be used in channel arguments */ #define GRPC_COMPRESSION_ALGORITHM_ARG "grpc.compression_algorithm" +#define GRPC_COMPRESSION_ALGORITHM_STATE_ARG "grpc.compression_algorithm_state" /* The various compression algorithms supported by GRPC */ typedef enum { @@ -60,6 +63,11 @@ typedef enum { GRPC_COMPRESS_LEVEL_COUNT } grpc_compression_level; +typedef struct grpc_compression_options { + gpr_uint32 enabled_algorithms_bitset; /**< All algs are enabled by default */ + grpc_compression_algorithm default_compression_algorithm; /**< for channel */ +} grpc_compression_options; + /** Parses the first \a name_length bytes of \a name as a * grpc_compression_algorithm instance, updating \a algorithm. Returns 1 upon * success, 0 otherwise. */ @@ -67,9 +75,7 @@ int grpc_compression_algorithm_parse(const char *name, size_t name_length, grpc_compression_algorithm *algorithm); /** Updates \a name with the encoding name corresponding to a valid \a - * algorithm. Note that the string returned through \a name upon success is - * statically allocated and shouldn't be freed. Returns 1 upon success, 0 - * otherwise. */ + * algorithm. Returns 1 upon success, 0 otherwise. */ int grpc_compression_algorithm_name(grpc_compression_algorithm algorithm, char **name); @@ -85,6 +91,20 @@ grpc_compression_level grpc_compression_level_for_algorithm( grpc_compression_algorithm grpc_compression_algorithm_for_level( grpc_compression_level level); +void grpc_compression_options_init(grpc_compression_options *opts); + +/** Mark \a algorithm as enabled in \a opts. */ +void grpc_compression_options_enable_algorithm( + grpc_compression_options *opts, grpc_compression_algorithm algorithm); + +/** Mark \a algorithm as disabled in \a opts. */ +void grpc_compression_options_disable_algorithm( + grpc_compression_options *opts, grpc_compression_algorithm algorithm); + +/** Returns true if \a algorithm is marked as enabled in \a opts. */ +int grpc_compression_options_is_algorithm_enabled( + const grpc_compression_options *opts, grpc_compression_algorithm algorithm); + #ifdef __cplusplus } #endif diff --git a/src/core/channel/channel_args.c b/src/core/channel/channel_args.c index c430b56fa2..dc66de7dd6 100644 --- a/src/core/channel/channel_args.c +++ b/src/core/channel/channel_args.c @@ -37,6 +37,7 @@ #include <grpc/support/alloc.h> #include <grpc/support/string_util.h> +#include <grpc/support/useful.h> #include <string.h> @@ -146,3 +147,64 @@ grpc_channel_args *grpc_channel_args_set_compression_algorithm( tmp.value.integer = algorithm; return grpc_channel_args_copy_and_add(a, &tmp, 1); } + +/** Returns 1 if the argument for compression algorithm's enabled states bitset + * was found in \a a, returning the arg's value in \a states. Otherwise, returns + * 0. */ +static int find_compression_algorithm_states_bitset( + const grpc_channel_args *a, int **states_arg) { + if (a != NULL) { + size_t i; + for (i = 0; i < a->num_args; ++i) { + if (a->args[i].type == GRPC_ARG_INTEGER && + !strcmp(GRPC_COMPRESSION_ALGORITHM_STATE_ARG, a->args[i].key)) { + *states_arg = &a->args[i].value.integer; + return 1; /* GPR_TRUE */ + } + } + } + return 0; /* GPR_FALSE */ +} + +grpc_channel_args *grpc_channel_args_compression_algorithm_set_state( + grpc_channel_args *a, + grpc_compression_algorithm algorithm, + int state) { + int *states_arg; + grpc_channel_args *result = a; + const int states_arg_found = + find_compression_algorithm_states_bitset(a, &states_arg); + + if (states_arg_found) { + if (state != 0) { + GPR_BITSET(states_arg, algorithm); + } else { + GPR_BITCLEAR(states_arg, algorithm); + } + } else { + /* create a new arg */ + grpc_arg tmp; + tmp.type = GRPC_ARG_INTEGER; + tmp.key = GRPC_COMPRESSION_ALGORITHM_STATE_ARG; + /* all enabled by default */ + tmp.value.integer = (1u << GRPC_COMPRESS_ALGORITHMS_COUNT) - 1; + if (state != 0) { + GPR_BITSET(&tmp.value.integer, algorithm); + } else { + GPR_BITCLEAR(&tmp.value.integer, algorithm); + } + result = grpc_channel_args_copy_and_add(a, &tmp, 1); + grpc_channel_args_destroy(a); + } + return result; +} + +int grpc_channel_args_compression_algorithm_get_states( + const grpc_channel_args *a) { + int *states_arg; + if (find_compression_algorithm_states_bitset(a, &states_arg)) { + return *states_arg; + } else { + return (1u << GRPC_COMPRESS_ALGORITHMS_COUNT) - 1; /* All algs. enabled */ + } +} diff --git a/src/core/channel/channel_args.h b/src/core/channel/channel_args.h index 7e6ddd3997..e557f9a9d9 100644 --- a/src/core/channel/channel_args.h +++ b/src/core/channel/channel_args.h @@ -67,4 +67,21 @@ grpc_compression_algorithm grpc_channel_args_get_compression_algorithm( grpc_channel_args *grpc_channel_args_set_compression_algorithm( grpc_channel_args *a, grpc_compression_algorithm algorithm); +/** Sets the support for the given compression algorithm. By default, all + * compression algorithms are enabled. It's an error to disable an algorithm set + * by grpc_channel_args_set_compression_algorithm. + * */ +grpc_channel_args *grpc_channel_args_compression_algorithm_set_state( + grpc_channel_args *a, + grpc_compression_algorithm algorithm, + int enabled); + +/** Returns the bitset representing the support state (true for enabled, false + * for disabled) for compression algorithms. + * + * The i-th bit of the returned bitset corresponds to the i-th entry in the + * grpc_compression_algorithm enum. */ +int grpc_channel_args_compression_algorithm_get_states( + const grpc_channel_args *a); + #endif /* GRPC_INTERNAL_CORE_CHANNEL_CHANNEL_ARGS_H */ diff --git a/test/core/channel/channel_args_test.c b/test/core/channel/channel_args_test.c new file mode 100644 index 0000000000..227cc1f415 --- /dev/null +++ b/test/core/channel/channel_args_test.c @@ -0,0 +1,136 @@ +/* + * + * 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 <string.h> + +#include <grpc/support/log.h> +#include <grpc/support/useful.h> + +#include "src/core/channel/channel_args.h" + +#include "test/core/util/test_config.h" + +static void test_create(void) { + grpc_arg arg_int; + grpc_arg arg_string; + grpc_arg to_add[2]; + grpc_channel_args *ch_args; + + arg_int.key = "int_arg"; + arg_int.type = GRPC_ARG_INTEGER; + arg_int.value.integer = 123; + + arg_string.key = "str key"; + arg_string.type = GRPC_ARG_STRING; + arg_string.value.string = "str value"; + + to_add[0] = arg_int; + to_add[1] = arg_string; + ch_args = grpc_channel_args_copy_and_add(NULL, to_add, 2); + + GPR_ASSERT(ch_args->num_args == 2); + GPR_ASSERT(strcmp(ch_args->args[0].key, arg_int.key) == 0); + GPR_ASSERT(ch_args->args[0].type == arg_int.type); + GPR_ASSERT(ch_args->args[0].value.integer == arg_int.value.integer); + + GPR_ASSERT(strcmp(ch_args->args[1].key, arg_string.key) == 0); + GPR_ASSERT(ch_args->args[1].type == arg_string.type); + GPR_ASSERT(strcmp(ch_args->args[1].value.string, arg_string.value.string) == + 0); + + grpc_channel_args_destroy(ch_args); +} + +static void test_set_compression_algorithm(void) { + grpc_channel_args *ch_args; + + ch_args = + grpc_channel_args_set_compression_algorithm(NULL, GRPC_COMPRESS_GZIP); + GPR_ASSERT(ch_args->num_args == 1); + GPR_ASSERT(strcmp(ch_args->args[0].key, GRPC_COMPRESSION_ALGORITHM_ARG) == 0); + GPR_ASSERT(ch_args->args[0].type == GRPC_ARG_INTEGER); + + grpc_channel_args_destroy(ch_args); +} + +static void test_compression_algorithm_states(void) { + grpc_channel_args *ch_args; + int states_bitset; + size_t i; + + ch_args = grpc_channel_args_copy_and_add(NULL, NULL, 0); + /* by default, all enabled */ + states_bitset = grpc_channel_args_compression_algorithm_get_states(ch_args); + + for (i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) { + GPR_ASSERT(GPR_BITGET(states_bitset, i)); + } + + /* disable gzip and deflate */ + ch_args = grpc_channel_args_compression_algorithm_set_state( + ch_args, GRPC_COMPRESS_GZIP, 0); + ch_args = grpc_channel_args_compression_algorithm_set_state( + ch_args, GRPC_COMPRESS_DEFLATE, 0); + + states_bitset = grpc_channel_args_compression_algorithm_get_states(ch_args); + for (i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) { + if (i == GRPC_COMPRESS_GZIP || i == GRPC_COMPRESS_DEFLATE) { + GPR_ASSERT(GPR_BITGET(states_bitset, i) == 0); + } else { + GPR_ASSERT(GPR_BITGET(states_bitset, i) != 0); + } + } + + /* re-enabled gzip only */ + ch_args = grpc_channel_args_compression_algorithm_set_state( + ch_args, GRPC_COMPRESS_GZIP, 1); + + states_bitset = grpc_channel_args_compression_algorithm_get_states(ch_args); + for (i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) { + if (i == GRPC_COMPRESS_DEFLATE) { + GPR_ASSERT(GPR_BITGET(states_bitset, i) == 0); + } else { + GPR_ASSERT(GPR_BITGET(states_bitset, i) != 0); + } + } + + grpc_channel_args_destroy(ch_args); +} + +int main(int argc, char **argv) { + grpc_test_init(argc, argv); + test_create(); + test_set_compression_algorithm(); + test_compression_algorithm_states(); + return 0; +} diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 50f078586d..a9b40897f2 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -459,6 +459,20 @@ "test/core/surface/byte_buffer_reader_test.c" ] }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "grpc_channel_args_test", + "src": [ + "test/core/channel/channel_args_test.c" + ] + }, { "deps": [ "gpr", diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 6c06d74834..c20e202d14 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -567,6 +567,24 @@ "windows" ] }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", + "name": "grpc_channel_args_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, { "ci_platforms": [ "linux", @@ -1538,6 +1556,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "status_test", diff --git a/vsprojects/Grpc.mak b/vsprojects/Grpc.mak index 662de784f7..597d4d3054 100644 --- a/vsprojects/Grpc.mak +++ b/vsprojects/Grpc.mak @@ -80,7 +80,7 @@ $(OUT_DIR): build_libs: build_gpr build_gpr_test_util build_grpc build_grpc_test_util build_grpc_test_util_unsecure build_grpc_unsecure Debug\grpc_zookeeper.lib Debug\reconnect_server.lib build_grpc++ Debug\grpc++_test_config.lib Debug\grpc++_test_util.lib build_grpc++_unsecure Debug\interop_client_helper.lib Debug\interop_client_main.lib Debug\interop_server_helper.lib Debug\interop_server_main.lib Debug\qps.lib Debug\end2end_fixture_chttp2_fake_security.lib Debug\end2end_fixture_chttp2_fullstack.lib Debug\end2end_fixture_chttp2_fullstack_compression.lib Debug\end2end_fixture_chttp2_fullstack_with_proxy.lib Debug\end2end_fixture_chttp2_simple_ssl_fullstack.lib Debug\end2end_fixture_chttp2_simple_ssl_fullstack_with_proxy.lib Debug\end2end_fixture_chttp2_simple_ssl_with_oauth2_fullstack.lib Debug\end2end_fixture_chttp2_socket_pair.lib Debug\end2end_fixture_chttp2_socket_pair_one_byte_at_a_time.lib Debug\end2end_fixture_chttp2_socket_pair_with_grpc_trace.lib Debug\end2end_test_bad_hostname.lib Debug\end2end_test_cancel_after_accept.lib Debug\end2end_test_cancel_after_accept_and_writes_closed.lib Debug\end2end_test_cancel_after_invoke.lib Debug\end2end_test_cancel_before_invoke.lib Debug\end2end_test_cancel_in_a_vacuum.lib Debug\end2end_test_census_simple_request.lib Debug\end2end_test_channel_connectivity.lib Debug\end2end_test_default_host.lib Debug\end2end_test_disappearing_server.lib Debug\end2end_test_early_server_shutdown_finishes_inflight_calls.lib Debug\end2end_test_early_server_shutdown_finishes_tags.lib Debug\end2end_test_empty_batch.lib Debug\end2end_test_graceful_server_shutdown.lib Debug\end2end_test_invoke_large_request.lib Debug\end2end_test_max_concurrent_streams.lib Debug\end2end_test_max_message_length.lib Debug\end2end_test_no_op.lib Debug\end2end_test_ping_pong_streaming.lib Debug\end2end_test_registered_call.lib Debug\end2end_test_request_response_with_binary_metadata_and_payload.lib Debug\end2end_test_request_response_with_metadata_and_payload.lib Debug\end2end_test_request_response_with_payload.lib Debug\end2end_test_request_response_with_payload_and_call_creds.lib Debug\end2end_test_request_response_with_trailing_metadata_and_payload.lib Debug\end2end_test_request_with_compressed_payload.lib Debug\end2end_test_request_with_flags.lib Debug\end2end_test_request_with_large_metadata.lib Debug\end2end_test_request_with_payload.lib Debug\end2end_test_server_finishes_request.lib Debug\end2end_test_simple_delayed_request.lib Debug\end2end_test_simple_request.lib Debug\end2end_test_simple_request_with_high_initial_sequence_number.lib Debug\end2end_certs.lib Debug\bad_client_test.lib buildtests: buildtests_c buildtests_cxx -buildtests_c: alarm_heap_test.exe alarm_list_test.exe alarm_test.exe alpn_test.exe bin_encoder_test.exe chttp2_status_conversion_test.exe chttp2_stream_encoder_test.exe chttp2_stream_map_test.exe compression_test.exe fling_client.exe fling_server.exe gpr_cmdline_test.exe gpr_env_test.exe gpr_file_test.exe gpr_histogram_test.exe gpr_host_port_test.exe gpr_log_test.exe gpr_slice_buffer_test.exe gpr_slice_test.exe gpr_stack_lockfree_test.exe gpr_string_test.exe gpr_sync_test.exe gpr_thd_test.exe gpr_time_test.exe gpr_tls_test.exe gpr_useful_test.exe grpc_auth_context_test.exe grpc_base64_test.exe grpc_byte_buffer_reader_test.exe grpc_channel_stack_test.exe grpc_completion_queue_test.exe grpc_credentials_test.exe grpc_json_token_test.exe grpc_jwt_verifier_test.exe grpc_security_connector_test.exe grpc_stream_op_test.exe hpack_parser_test.exe hpack_table_test.exe httpcli_format_request_test.exe httpcli_parser_test.exe json_rewrite.exe json_rewrite_test.exe json_test.exe lame_client_test.exe message_compress_test.exe multi_init_test.exe multiple_server_queues_test.exe murmur_hash_test.exe no_server_test.exe resolve_address_test.exe secure_endpoint_test.exe sockaddr_utils_test.exe time_averaged_stats_test.exe timeout_encoding_test.exe timers_test.exe transport_metadata_test.exe transport_security_test.exe uri_parser_test.exe chttp2_fake_security_bad_hostname_test.exe chttp2_fake_security_cancel_after_accept_test.exe chttp2_fake_security_cancel_after_accept_and_writes_closed_test.exe chttp2_fake_security_cancel_after_invoke_test.exe chttp2_fake_security_cancel_before_invoke_test.exe chttp2_fake_security_cancel_in_a_vacuum_test.exe chttp2_fake_security_census_simple_request_test.exe chttp2_fake_security_channel_connectivity_test.exe chttp2_fake_security_default_host_test.exe chttp2_fake_security_disappearing_server_test.exe chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fake_security_early_server_shutdown_finishes_tags_test.exe chttp2_fake_security_empty_batch_test.exe chttp2_fake_security_graceful_server_shutdown_test.exe chttp2_fake_security_invoke_large_request_test.exe chttp2_fake_security_max_concurrent_streams_test.exe chttp2_fake_security_max_message_length_test.exe chttp2_fake_security_no_op_test.exe chttp2_fake_security_ping_pong_streaming_test.exe chttp2_fake_security_registered_call_test.exe chttp2_fake_security_request_response_with_binary_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_payload_test.exe chttp2_fake_security_request_response_with_payload_and_call_creds_test.exe chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fake_security_request_with_compressed_payload_test.exe chttp2_fake_security_request_with_flags_test.exe chttp2_fake_security_request_with_large_metadata_test.exe chttp2_fake_security_request_with_payload_test.exe chttp2_fake_security_server_finishes_request_test.exe chttp2_fake_security_simple_delayed_request_test.exe chttp2_fake_security_simple_request_test.exe chttp2_fake_security_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_test.exe chttp2_fullstack_cancel_after_accept_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_cancel_after_invoke_test.exe chttp2_fullstack_cancel_before_invoke_test.exe chttp2_fullstack_cancel_in_a_vacuum_test.exe chttp2_fullstack_census_simple_request_test.exe chttp2_fullstack_channel_connectivity_test.exe chttp2_fullstack_default_host_test.exe chttp2_fullstack_disappearing_server_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_empty_batch_test.exe chttp2_fullstack_graceful_server_shutdown_test.exe chttp2_fullstack_invoke_large_request_test.exe chttp2_fullstack_max_concurrent_streams_test.exe chttp2_fullstack_max_message_length_test.exe chttp2_fullstack_no_op_test.exe chttp2_fullstack_ping_pong_streaming_test.exe chttp2_fullstack_registered_call_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_payload_test.exe chttp2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_request_with_compressed_payload_test.exe chttp2_fullstack_request_with_flags_test.exe chttp2_fullstack_request_with_large_metadata_test.exe chttp2_fullstack_request_with_payload_test.exe chttp2_fullstack_server_finishes_request_test.exe chttp2_fullstack_simple_delayed_request_test.exe chttp2_fullstack_simple_request_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_compression_bad_hostname_test.exe chttp2_fullstack_compression_cancel_after_accept_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_compression_cancel_after_invoke_test.exe chttp2_fullstack_compression_cancel_before_invoke_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_test.exe chttp2_fullstack_compression_census_simple_request_test.exe chttp2_fullstack_compression_channel_connectivity_test.exe chttp2_fullstack_compression_default_host_test.exe chttp2_fullstack_compression_disappearing_server_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_compression_empty_batch_test.exe chttp2_fullstack_compression_graceful_server_shutdown_test.exe chttp2_fullstack_compression_invoke_large_request_test.exe chttp2_fullstack_compression_max_concurrent_streams_test.exe chttp2_fullstack_compression_max_message_length_test.exe chttp2_fullstack_compression_no_op_test.exe chttp2_fullstack_compression_ping_pong_streaming_test.exe chttp2_fullstack_compression_registered_call_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_compression_request_with_compressed_payload_test.exe chttp2_fullstack_compression_request_with_flags_test.exe chttp2_fullstack_compression_request_with_large_metadata_test.exe chttp2_fullstack_compression_request_with_payload_test.exe chttp2_fullstack_compression_server_finishes_request_test.exe chttp2_fullstack_compression_simple_delayed_request_test.exe chttp2_fullstack_compression_simple_request_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_with_proxy_bad_hostname_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_with_proxy_cancel_after_invoke_test.exe chttp2_fullstack_with_proxy_cancel_before_invoke_test.exe chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test.exe chttp2_fullstack_with_proxy_census_simple_request_test.exe chttp2_fullstack_with_proxy_default_host_test.exe chttp2_fullstack_with_proxy_disappearing_server_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_with_proxy_empty_batch_test.exe chttp2_fullstack_with_proxy_graceful_server_shutdown_test.exe chttp2_fullstack_with_proxy_invoke_large_request_test.exe chttp2_fullstack_with_proxy_max_message_length_test.exe chttp2_fullstack_with_proxy_no_op_test.exe chttp2_fullstack_with_proxy_ping_pong_streaming_test.exe chttp2_fullstack_with_proxy_registered_call_test.exe chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_with_large_metadata_test.exe chttp2_fullstack_with_proxy_request_with_payload_test.exe chttp2_fullstack_with_proxy_server_finishes_request_test.exe chttp2_fullstack_with_proxy_simple_delayed_request_test.exe chttp2_fullstack_with_proxy_simple_request_test.exe chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_bad_hostname_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_census_simple_request_test.exe chttp2_simple_ssl_fullstack_channel_connectivity_test.exe chttp2_simple_ssl_fullstack_default_host_test.exe chttp2_simple_ssl_fullstack_disappearing_server_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_empty_batch_test.exe chttp2_simple_ssl_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_fullstack_max_message_length_test.exe chttp2_simple_ssl_fullstack_no_op_test.exe chttp2_simple_ssl_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_registered_call_test.exe chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_fullstack_request_with_flags_test.exe chttp2_simple_ssl_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_request_with_payload_test.exe chttp2_simple_ssl_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_simple_request_test.exe chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_default_host_test.exe chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test.exe chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test.exe chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test.exe chttp2_simple_ssl_fullstack_with_proxy_no_op_test.exe chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_with_proxy_registered_call_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test.exe chttp2_simple_ssl_with_oauth2_fullstack_default_host_test.exe chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test.exe chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test.exe chttp2_simple_ssl_with_oauth2_fullstack_no_op_test.exe chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_bad_hostname_test.exe chttp2_socket_pair_cancel_after_accept_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_cancel_after_invoke_test.exe chttp2_socket_pair_cancel_before_invoke_test.exe chttp2_socket_pair_cancel_in_a_vacuum_test.exe chttp2_socket_pair_census_simple_request_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_empty_batch_test.exe chttp2_socket_pair_graceful_server_shutdown_test.exe chttp2_socket_pair_invoke_large_request_test.exe chttp2_socket_pair_max_concurrent_streams_test.exe chttp2_socket_pair_max_message_length_test.exe chttp2_socket_pair_no_op_test.exe chttp2_socket_pair_ping_pong_streaming_test.exe chttp2_socket_pair_registered_call_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_payload_test.exe chttp2_socket_pair_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_request_with_compressed_payload_test.exe chttp2_socket_pair_request_with_flags_test.exe chttp2_socket_pair_request_with_large_metadata_test.exe chttp2_socket_pair_request_with_payload_test.exe chttp2_socket_pair_server_finishes_request_test.exe chttp2_socket_pair_simple_request_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe chttp2_socket_pair_with_grpc_trace_no_op_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_unsecure_test.exe chttp2_fullstack_cancel_after_accept_unsecure_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_census_simple_request_unsecure_test.exe chttp2_fullstack_channel_connectivity_unsecure_test.exe chttp2_fullstack_default_host_unsecure_test.exe chttp2_fullstack_disappearing_server_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_empty_batch_unsecure_test.exe chttp2_fullstack_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_invoke_large_request_unsecure_test.exe chttp2_fullstack_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_max_message_length_unsecure_test.exe chttp2_fullstack_no_op_unsecure_test.exe chttp2_fullstack_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_registered_call_unsecure_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_payload_unsecure_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_request_with_flags_unsecure_test.exe chttp2_fullstack_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_request_with_payload_unsecure_test.exe chttp2_fullstack_server_finishes_request_unsecure_test.exe chttp2_fullstack_simple_delayed_request_unsecure_test.exe chttp2_fullstack_simple_request_unsecure_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_compression_bad_hostname_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_compression_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_compression_census_simple_request_unsecure_test.exe chttp2_fullstack_compression_channel_connectivity_unsecure_test.exe chttp2_fullstack_compression_default_host_unsecure_test.exe chttp2_fullstack_compression_disappearing_server_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_compression_empty_batch_unsecure_test.exe chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_compression_invoke_large_request_unsecure_test.exe chttp2_fullstack_compression_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_compression_max_message_length_unsecure_test.exe chttp2_fullstack_compression_no_op_unsecure_test.exe chttp2_fullstack_compression_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_compression_registered_call_unsecure_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_flags_unsecure_test.exe chttp2_fullstack_compression_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_compression_request_with_payload_unsecure_test.exe chttp2_fullstack_compression_server_finishes_request_unsecure_test.exe chttp2_fullstack_compression_simple_delayed_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_with_proxy_bad_hostname_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_with_proxy_census_simple_request_unsecure_test.exe chttp2_fullstack_with_proxy_default_host_unsecure_test.exe chttp2_fullstack_with_proxy_disappearing_server_unsecure_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_with_proxy_empty_batch_unsecure_test.exe chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test.exe chttp2_fullstack_with_proxy_max_message_length_unsecure_test.exe chttp2_fullstack_with_proxy_no_op_unsecure_test.exe chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_with_proxy_registered_call_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_with_proxy_request_with_payload_unsecure_test.exe chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_bad_hostname_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_census_simple_request_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_empty_batch_unsecure_test.exe chttp2_socket_pair_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_invoke_large_request_unsecure_test.exe chttp2_socket_pair_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_max_message_length_unsecure_test.exe chttp2_socket_pair_no_op_unsecure_test.exe chttp2_socket_pair_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_registered_call_unsecure_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_request_with_flags_unsecure_test.exe chttp2_socket_pair_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_request_with_payload_unsecure_test.exe chttp2_socket_pair_server_finishes_request_unsecure_test.exe chttp2_socket_pair_simple_request_unsecure_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe connection_prefix_bad_client_test.exe initial_settings_frame_bad_client_test.exe +buildtests_c: alarm_heap_test.exe alarm_list_test.exe alarm_test.exe alpn_test.exe bin_encoder_test.exe chttp2_status_conversion_test.exe chttp2_stream_encoder_test.exe chttp2_stream_map_test.exe compression_test.exe fling_client.exe fling_server.exe gpr_cmdline_test.exe gpr_env_test.exe gpr_file_test.exe gpr_histogram_test.exe gpr_host_port_test.exe gpr_log_test.exe gpr_slice_buffer_test.exe gpr_slice_test.exe gpr_stack_lockfree_test.exe gpr_string_test.exe gpr_sync_test.exe gpr_thd_test.exe gpr_time_test.exe gpr_tls_test.exe gpr_useful_test.exe grpc_auth_context_test.exe grpc_base64_test.exe grpc_byte_buffer_reader_test.exe grpc_channel_args_test.exe grpc_channel_stack_test.exe grpc_completion_queue_test.exe grpc_credentials_test.exe grpc_json_token_test.exe grpc_jwt_verifier_test.exe grpc_security_connector_test.exe grpc_stream_op_test.exe hpack_parser_test.exe hpack_table_test.exe httpcli_format_request_test.exe httpcli_parser_test.exe json_rewrite.exe json_rewrite_test.exe json_test.exe lame_client_test.exe message_compress_test.exe multi_init_test.exe multiple_server_queues_test.exe murmur_hash_test.exe no_server_test.exe resolve_address_test.exe secure_endpoint_test.exe sockaddr_utils_test.exe time_averaged_stats_test.exe timeout_encoding_test.exe timers_test.exe transport_metadata_test.exe transport_security_test.exe uri_parser_test.exe chttp2_fake_security_bad_hostname_test.exe chttp2_fake_security_cancel_after_accept_test.exe chttp2_fake_security_cancel_after_accept_and_writes_closed_test.exe chttp2_fake_security_cancel_after_invoke_test.exe chttp2_fake_security_cancel_before_invoke_test.exe chttp2_fake_security_cancel_in_a_vacuum_test.exe chttp2_fake_security_census_simple_request_test.exe chttp2_fake_security_channel_connectivity_test.exe chttp2_fake_security_default_host_test.exe chttp2_fake_security_disappearing_server_test.exe chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fake_security_early_server_shutdown_finishes_tags_test.exe chttp2_fake_security_empty_batch_test.exe chttp2_fake_security_graceful_server_shutdown_test.exe chttp2_fake_security_invoke_large_request_test.exe chttp2_fake_security_max_concurrent_streams_test.exe chttp2_fake_security_max_message_length_test.exe chttp2_fake_security_no_op_test.exe chttp2_fake_security_ping_pong_streaming_test.exe chttp2_fake_security_registered_call_test.exe chttp2_fake_security_request_response_with_binary_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_payload_test.exe chttp2_fake_security_request_response_with_payload_and_call_creds_test.exe chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fake_security_request_with_compressed_payload_test.exe chttp2_fake_security_request_with_flags_test.exe chttp2_fake_security_request_with_large_metadata_test.exe chttp2_fake_security_request_with_payload_test.exe chttp2_fake_security_server_finishes_request_test.exe chttp2_fake_security_simple_delayed_request_test.exe chttp2_fake_security_simple_request_test.exe chttp2_fake_security_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_test.exe chttp2_fullstack_cancel_after_accept_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_cancel_after_invoke_test.exe chttp2_fullstack_cancel_before_invoke_test.exe chttp2_fullstack_cancel_in_a_vacuum_test.exe chttp2_fullstack_census_simple_request_test.exe chttp2_fullstack_channel_connectivity_test.exe chttp2_fullstack_default_host_test.exe chttp2_fullstack_disappearing_server_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_empty_batch_test.exe chttp2_fullstack_graceful_server_shutdown_test.exe chttp2_fullstack_invoke_large_request_test.exe chttp2_fullstack_max_concurrent_streams_test.exe chttp2_fullstack_max_message_length_test.exe chttp2_fullstack_no_op_test.exe chttp2_fullstack_ping_pong_streaming_test.exe chttp2_fullstack_registered_call_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_payload_test.exe chttp2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_request_with_compressed_payload_test.exe chttp2_fullstack_request_with_flags_test.exe chttp2_fullstack_request_with_large_metadata_test.exe chttp2_fullstack_request_with_payload_test.exe chttp2_fullstack_server_finishes_request_test.exe chttp2_fullstack_simple_delayed_request_test.exe chttp2_fullstack_simple_request_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_compression_bad_hostname_test.exe chttp2_fullstack_compression_cancel_after_accept_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_compression_cancel_after_invoke_test.exe chttp2_fullstack_compression_cancel_before_invoke_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_test.exe chttp2_fullstack_compression_census_simple_request_test.exe chttp2_fullstack_compression_channel_connectivity_test.exe chttp2_fullstack_compression_default_host_test.exe chttp2_fullstack_compression_disappearing_server_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_compression_empty_batch_test.exe chttp2_fullstack_compression_graceful_server_shutdown_test.exe chttp2_fullstack_compression_invoke_large_request_test.exe chttp2_fullstack_compression_max_concurrent_streams_test.exe chttp2_fullstack_compression_max_message_length_test.exe chttp2_fullstack_compression_no_op_test.exe chttp2_fullstack_compression_ping_pong_streaming_test.exe chttp2_fullstack_compression_registered_call_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_compression_request_with_compressed_payload_test.exe chttp2_fullstack_compression_request_with_flags_test.exe chttp2_fullstack_compression_request_with_large_metadata_test.exe chttp2_fullstack_compression_request_with_payload_test.exe chttp2_fullstack_compression_server_finishes_request_test.exe chttp2_fullstack_compression_simple_delayed_request_test.exe chttp2_fullstack_compression_simple_request_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_with_proxy_bad_hostname_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_with_proxy_cancel_after_invoke_test.exe chttp2_fullstack_with_proxy_cancel_before_invoke_test.exe chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test.exe chttp2_fullstack_with_proxy_census_simple_request_test.exe chttp2_fullstack_with_proxy_default_host_test.exe chttp2_fullstack_with_proxy_disappearing_server_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_with_proxy_empty_batch_test.exe chttp2_fullstack_with_proxy_graceful_server_shutdown_test.exe chttp2_fullstack_with_proxy_invoke_large_request_test.exe chttp2_fullstack_with_proxy_max_message_length_test.exe chttp2_fullstack_with_proxy_no_op_test.exe chttp2_fullstack_with_proxy_ping_pong_streaming_test.exe chttp2_fullstack_with_proxy_registered_call_test.exe chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_with_large_metadata_test.exe chttp2_fullstack_with_proxy_request_with_payload_test.exe chttp2_fullstack_with_proxy_server_finishes_request_test.exe chttp2_fullstack_with_proxy_simple_delayed_request_test.exe chttp2_fullstack_with_proxy_simple_request_test.exe chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_bad_hostname_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_census_simple_request_test.exe chttp2_simple_ssl_fullstack_channel_connectivity_test.exe chttp2_simple_ssl_fullstack_default_host_test.exe chttp2_simple_ssl_fullstack_disappearing_server_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_empty_batch_test.exe chttp2_simple_ssl_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_fullstack_max_message_length_test.exe chttp2_simple_ssl_fullstack_no_op_test.exe chttp2_simple_ssl_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_registered_call_test.exe chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_fullstack_request_with_flags_test.exe chttp2_simple_ssl_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_request_with_payload_test.exe chttp2_simple_ssl_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_simple_request_test.exe chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_default_host_test.exe chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test.exe chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test.exe chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test.exe chttp2_simple_ssl_fullstack_with_proxy_no_op_test.exe chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_with_proxy_registered_call_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test.exe chttp2_simple_ssl_with_oauth2_fullstack_default_host_test.exe chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test.exe chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test.exe chttp2_simple_ssl_with_oauth2_fullstack_no_op_test.exe chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_bad_hostname_test.exe chttp2_socket_pair_cancel_after_accept_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_cancel_after_invoke_test.exe chttp2_socket_pair_cancel_before_invoke_test.exe chttp2_socket_pair_cancel_in_a_vacuum_test.exe chttp2_socket_pair_census_simple_request_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_empty_batch_test.exe chttp2_socket_pair_graceful_server_shutdown_test.exe chttp2_socket_pair_invoke_large_request_test.exe chttp2_socket_pair_max_concurrent_streams_test.exe chttp2_socket_pair_max_message_length_test.exe chttp2_socket_pair_no_op_test.exe chttp2_socket_pair_ping_pong_streaming_test.exe chttp2_socket_pair_registered_call_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_payload_test.exe chttp2_socket_pair_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_request_with_compressed_payload_test.exe chttp2_socket_pair_request_with_flags_test.exe chttp2_socket_pair_request_with_large_metadata_test.exe chttp2_socket_pair_request_with_payload_test.exe chttp2_socket_pair_server_finishes_request_test.exe chttp2_socket_pair_simple_request_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe chttp2_socket_pair_with_grpc_trace_no_op_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_unsecure_test.exe chttp2_fullstack_cancel_after_accept_unsecure_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_census_simple_request_unsecure_test.exe chttp2_fullstack_channel_connectivity_unsecure_test.exe chttp2_fullstack_default_host_unsecure_test.exe chttp2_fullstack_disappearing_server_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_empty_batch_unsecure_test.exe chttp2_fullstack_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_invoke_large_request_unsecure_test.exe chttp2_fullstack_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_max_message_length_unsecure_test.exe chttp2_fullstack_no_op_unsecure_test.exe chttp2_fullstack_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_registered_call_unsecure_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_payload_unsecure_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_request_with_flags_unsecure_test.exe chttp2_fullstack_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_request_with_payload_unsecure_test.exe chttp2_fullstack_server_finishes_request_unsecure_test.exe chttp2_fullstack_simple_delayed_request_unsecure_test.exe chttp2_fullstack_simple_request_unsecure_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_compression_bad_hostname_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_compression_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_compression_census_simple_request_unsecure_test.exe chttp2_fullstack_compression_channel_connectivity_unsecure_test.exe chttp2_fullstack_compression_default_host_unsecure_test.exe chttp2_fullstack_compression_disappearing_server_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_compression_empty_batch_unsecure_test.exe chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_compression_invoke_large_request_unsecure_test.exe chttp2_fullstack_compression_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_compression_max_message_length_unsecure_test.exe chttp2_fullstack_compression_no_op_unsecure_test.exe chttp2_fullstack_compression_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_compression_registered_call_unsecure_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_flags_unsecure_test.exe chttp2_fullstack_compression_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_compression_request_with_payload_unsecure_test.exe chttp2_fullstack_compression_server_finishes_request_unsecure_test.exe chttp2_fullstack_compression_simple_delayed_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_with_proxy_bad_hostname_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_with_proxy_census_simple_request_unsecure_test.exe chttp2_fullstack_with_proxy_default_host_unsecure_test.exe chttp2_fullstack_with_proxy_disappearing_server_unsecure_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_with_proxy_empty_batch_unsecure_test.exe chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test.exe chttp2_fullstack_with_proxy_max_message_length_unsecure_test.exe chttp2_fullstack_with_proxy_no_op_unsecure_test.exe chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_with_proxy_registered_call_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_with_proxy_request_with_payload_unsecure_test.exe chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_bad_hostname_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_census_simple_request_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_empty_batch_unsecure_test.exe chttp2_socket_pair_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_invoke_large_request_unsecure_test.exe chttp2_socket_pair_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_max_message_length_unsecure_test.exe chttp2_socket_pair_no_op_unsecure_test.exe chttp2_socket_pair_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_registered_call_unsecure_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_request_with_flags_unsecure_test.exe chttp2_socket_pair_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_request_with_payload_unsecure_test.exe chttp2_socket_pair_server_finishes_request_unsecure_test.exe chttp2_socket_pair_simple_request_unsecure_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe connection_prefix_bad_client_test.exe initial_settings_frame_bad_client_test.exe echo All C tests built. buildtests_cxx: async_end2end_test.exe auth_property_iterator_test.exe channel_arguments_test.exe cli_call_test.exe client_crash_test_server.exe credentials_test.exe cxx_byte_buffer_test.exe cxx_slice_test.exe cxx_time_test.exe dynamic_thread_pool_test.exe end2end_test.exe fixed_size_thread_pool_test.exe generic_end2end_test.exe grpc_cli.exe mock_test.exe reconnect_interop_client.exe reconnect_interop_server.exe secure_auth_context_test.exe server_crash_test_client.exe shutdown_test.exe status_test.exe thread_stress_test.exe zookeeper_test.exe @@ -327,6 +327,14 @@ grpc_byte_buffer_reader_test: grpc_byte_buffer_reader_test.exe echo Running grpc_byte_buffer_reader_test $(OUT_DIR)\grpc_byte_buffer_reader_test.exe +grpc_channel_args_test.exe: build_grpc_test_util build_grpc build_gpr_test_util build_gpr $(OUT_DIR) + echo Building grpc_channel_args_test + $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\core\channel\channel_args_test.c + $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\grpc_channel_args_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\channel_args_test.obj +grpc_channel_args_test: grpc_channel_args_test.exe + echo Running grpc_channel_args_test + $(OUT_DIR)\grpc_channel_args_test.exe + grpc_channel_stack_test.exe: build_grpc_test_util build_grpc build_gpr_test_util build_gpr $(OUT_DIR) echo Building grpc_channel_stack_test $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\core\channel\channel_stack_test.c -- GitLab From 49772e00eb9606c3192b88f348d9cbcb22eb93c2 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Fri, 21 Aug 2015 08:08:37 -0700 Subject: [PATCH 127/178] Outlaw illegal metadata characters --- Makefile | 32 +++++++- build.json | 10 +++ src/core/channel/compress_filter.h | 2 +- src/core/surface/call.c | 5 +- src/core/transport/metadata.c | 26 ++++++- src/core/transport/metadata.h | 1 + .../core/gen_legal_metadata_characters.c | 73 +++++++++++++++++++ tools/run_tests/sources_and_headers.json | 12 +++ tools/run_tests/tests.json | 1 + vsprojects/Grpc.mak | 8 ++ 10 files changed, 163 insertions(+), 7 deletions(-) create mode 100644 tools/codegen/core/gen_legal_metadata_characters.c diff --git a/Makefile b/Makefile index 31628b4412..f7ace3186a 100644 --- a/Makefile +++ b/Makefile @@ -793,6 +793,7 @@ fling_server: $(BINDIR)/$(CONFIG)/fling_server fling_stream_test: $(BINDIR)/$(CONFIG)/fling_stream_test fling_test: $(BINDIR)/$(CONFIG)/fling_test gen_hpack_tables: $(BINDIR)/$(CONFIG)/gen_hpack_tables +gen_legal_metadata_characters: $(BINDIR)/$(CONFIG)/gen_legal_metadata_characters gpr_cmdline_test: $(BINDIR)/$(CONFIG)/gpr_cmdline_test gpr_env_test: $(BINDIR)/$(CONFIG)/gpr_env_test gpr_file_test: $(BINDIR)/$(CONFIG)/gpr_file_test @@ -3386,7 +3387,7 @@ test_python: static_c tools: tools_c tools_cxx -tools_c: privatelibs_c $(BINDIR)/$(CONFIG)/gen_hpack_tables $(BINDIR)/$(CONFIG)/grpc_create_jwt $(BINDIR)/$(CONFIG)/grpc_fetch_oauth2 $(BINDIR)/$(CONFIG)/grpc_print_google_default_creds_token $(BINDIR)/$(CONFIG)/grpc_verify_jwt +tools_c: privatelibs_c $(BINDIR)/$(CONFIG)/gen_hpack_tables $(BINDIR)/$(CONFIG)/gen_legal_metadata_characters $(BINDIR)/$(CONFIG)/grpc_create_jwt $(BINDIR)/$(CONFIG)/grpc_fetch_oauth2 $(BINDIR)/$(CONFIG)/grpc_print_google_default_creds_token $(BINDIR)/$(CONFIG)/grpc_verify_jwt tools_cxx: privatelibs_cxx @@ -7122,6 +7123,35 @@ endif endif +GEN_LEGAL_METADATA_CHARACTERS_SRC = \ + tools/codegen/core/gen_legal_metadata_characters.c \ + +GEN_LEGAL_METADATA_CHARACTERS_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GEN_LEGAL_METADATA_CHARACTERS_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/gen_legal_metadata_characters: openssl_dep_error + +else + +$(BINDIR)/$(CONFIG)/gen_legal_metadata_characters: $(GEN_LEGAL_METADATA_CHARACTERS_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a + $(E) "[LD] Linking $@" + $(Q) mkdir -p `dirname $@` + $(Q) $(LD) $(LDFLAGS) $(GEN_LEGAL_METADATA_CHARACTERS_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/gen_legal_metadata_characters + +endif + +$(OBJDIR)/$(CONFIG)/tools/codegen/core/gen_legal_metadata_characters.o: $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a +deps_gen_legal_metadata_characters: $(GEN_LEGAL_METADATA_CHARACTERS_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(GEN_LEGAL_METADATA_CHARACTERS_OBJS:.o=.dep) +endif +endif + + GPR_CMDLINE_TEST_SRC = \ test/core/support/cmdline_test.c \ diff --git a/build.json b/build.json index bd707d2e34..c6a670970b 100644 --- a/build.json +++ b/build.json @@ -1143,6 +1143,16 @@ "grpc" ] }, + { + "name": "gen_legal_metadata_characters", + "build": "tool", + "language": "c", + "src": [ + "tools/codegen/core/gen_legal_metadata_characters.c" + ], + "deps": [ + ] + }, { "name": "gpr_cmdline_test", "build": "test", diff --git a/src/core/channel/compress_filter.h b/src/core/channel/compress_filter.h index 0917e81ca4..415459bca6 100644 --- a/src/core/channel/compress_filter.h +++ b/src/core/channel/compress_filter.h @@ -36,7 +36,7 @@ #include "src/core/channel/channel_stack.h" -#define GRPC_COMPRESS_REQUEST_ALGORITHM_KEY "internal:grpc-encoding-request" +#define GRPC_COMPRESS_REQUEST_ALGORITHM_KEY "grpc-internal-encoding-request" /** Compression filter for outgoing data. * diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 33f277da46..4426bbbce9 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -1046,10 +1046,11 @@ static int prepare_application_metadata(grpc_call *call, size_t count, (const gpr_uint8 *)md->value, md->value_length, 1); if (!grpc_mdstr_is_legal_header(l->md->key)) { - gpr_log(GPR_ERROR, "attempt to send invalid metadata key"); + gpr_log(GPR_ERROR, "attempt to send invalid metadata key: %s", + grpc_mdstr_as_c_string(l->md->key)); return 0; } else if (!grpc_mdstr_is_bin_suffixed(l->md->key) && - !grpc_mdstr_is_legal_header(l->md->value)) { + !grpc_mdstr_is_legal_nonbin_header(l->md->value)) { gpr_log(GPR_ERROR, "attempt to send invalid metadata value"); return 0; } diff --git a/src/core/transport/metadata.c b/src/core/transport/metadata.c index f92e87e9dd..d758351feb 100644 --- a/src/core/transport/metadata.c +++ b/src/core/transport/metadata.c @@ -681,16 +681,36 @@ void grpc_mdctx_locked_mdelem_unref(grpc_mdctx *ctx, void grpc_mdctx_unlock(grpc_mdctx *ctx) { unlock(ctx); } -int grpc_mdstr_is_legal_header(grpc_mdstr *s) { - /* TODO(ctiller): consider caching this, or computing it on construction */ +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); for (; p != e; p++) { - if (*p < 32 || *p > 126) return 0; + int idx = *p; + int byte = idx / 8; + int bit = idx % 8; + if ((legal_bits[byte] & (1 << bit)) == 0) return 0; } return 1; } +int grpc_mdstr_is_legal_header(grpc_mdstr *s) { + static const gpr_uint8 legal_header_bits[256 / 8] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0x03, 0xfe, 0xff, 0xff, + 0x07, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + + /* TODO(ctiller): consider caching this, or computing it on construction */ + return conforms_to(s, legal_header_bits); +} + +int grpc_mdstr_is_legal_nonbin_header(grpc_mdstr *s) { + static const gpr_uint8 legal_header_bits[256 / 8] = { + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + return conforms_to(s, legal_header_bits); +} + int grpc_mdstr_is_bin_suffixed(grpc_mdstr *s) { /* TODO(ctiller): consider caching this */ return grpc_is_binary_header((const char *)GPR_SLICE_START_PTR(s->slice), diff --git a/src/core/transport/metadata.h b/src/core/transport/metadata.h index a7af49ba55..eb17747be7 100644 --- a/src/core/transport/metadata.h +++ b/src/core/transport/metadata.h @@ -154,6 +154,7 @@ void grpc_mdelem_unref(grpc_mdelem *md); const char *grpc_mdstr_as_c_string(grpc_mdstr *s); 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. diff --git a/tools/codegen/core/gen_legal_metadata_characters.c b/tools/codegen/core/gen_legal_metadata_characters.c new file mode 100644 index 0000000000..5e32d91d50 --- /dev/null +++ b/tools/codegen/core/gen_legal_metadata_characters.c @@ -0,0 +1,73 @@ +/* + * + * 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. + * + */ + +/* generates constant table for metadata.c */ + +#include <stdio.h> +#include <string.h> + +static unsigned char legal_bits[256 / 8]; + +static void legal(int x) { + int byte = x / 8; + int bit = x % 8; + legal_bits[byte] |= 1 << bit; +} + +static void dump(void) { + int i; + + printf("static const gpr_uint8 legal_header_bits[256/8] = "); + for (i = 0; i < 256 / 8; i++) + printf("%c 0x%02x", i ? ',' : '{', legal_bits[i]); + printf(" };\n"); +} + +static void clear(void) { memset(legal_bits, 0, sizeof(legal_bits)); } + +int main(void) { + int i; + + clear(); + for (i = 'a'; i <= 'z'; i++) legal(i); + for (i = 'A'; i <= 'Z'; i++) legal(i); + for (i = '0'; i <= '9'; i++) legal(i); + legal('-'); + dump(); + + clear(); + for (i = 32; i <= 126; i++) legal(i); + dump(); + + return 0; +} diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 50f078586d..142c84901d 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -237,6 +237,18 @@ "tools/codegen/core/gen_hpack_tables.c" ] }, + { + "deps": [ + "gpr", + "grpc" + ], + "headers": [], + "language": "c", + "name": "gen_legal_metadata_characters", + "src": [ + "tools/codegen/core/gen_legal_metadata_characters.c" + ] + }, { "deps": [ "gpr", diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 6c06d74834..127b1dfc40 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -1538,6 +1538,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "status_test", diff --git a/vsprojects/Grpc.mak b/vsprojects/Grpc.mak index 662de784f7..3d853d9c76 100644 --- a/vsprojects/Grpc.mak +++ b/vsprojects/Grpc.mak @@ -183,6 +183,14 @@ gen_hpack_tables: gen_hpack_tables.exe echo Running gen_hpack_tables $(OUT_DIR)\gen_hpack_tables.exe +gen_legal_metadata_characters.exe: build_gpr build_grpc $(OUT_DIR) + echo Building gen_legal_metadata_characters + $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\tools\codegen\core\gen_legal_metadata_characters.c + $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gen_legal_metadata_characters.exe" Debug\gpr.lib Debug\grpc.lib $(LIBS) $(OUT_DIR)\gen_legal_metadata_characters.obj +gen_legal_metadata_characters: gen_legal_metadata_characters.exe + echo Running gen_legal_metadata_characters + $(OUT_DIR)\gen_legal_metadata_characters.exe + gpr_cmdline_test.exe: build_gpr_test_util build_gpr $(OUT_DIR) echo Building gpr_cmdline_test $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\core\support\cmdline_test.c -- GitLab From 80aa28013fb3290f69c0452116ab3dd0b95566cc Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Fri, 21 Aug 2015 08:50:51 -0700 Subject: [PATCH 128/178] Fix character classes to updated spec --- src/core/transport/metadata.c | 6 ++---- tools/codegen/core/gen_legal_metadata_characters.c | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/core/transport/metadata.c b/src/core/transport/metadata.c index d758351feb..3fd21a2f5d 100644 --- a/src/core/transport/metadata.c +++ b/src/core/transport/metadata.c @@ -695,11 +695,9 @@ static int conforms_to(grpc_mdstr *s, const gpr_uint8 *legal_bits) { int grpc_mdstr_is_legal_header(grpc_mdstr *s) { static const gpr_uint8 legal_header_bits[256 / 8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0x03, 0xfe, 0xff, 0xff, - 0x07, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0x03, 0x00, 0x00, 0x00, + 0x80, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - /* TODO(ctiller): consider caching this, or computing it on construction */ return conforms_to(s, legal_header_bits); } diff --git a/tools/codegen/core/gen_legal_metadata_characters.c b/tools/codegen/core/gen_legal_metadata_characters.c index 5e32d91d50..5c290f2923 100644 --- a/tools/codegen/core/gen_legal_metadata_characters.c +++ b/tools/codegen/core/gen_legal_metadata_characters.c @@ -60,9 +60,9 @@ int main(void) { clear(); for (i = 'a'; i <= 'z'; i++) legal(i); - for (i = 'A'; i <= 'Z'; i++) legal(i); for (i = '0'; i <= '9'; i++) legal(i); legal('-'); + legal('_'); dump(); clear(); -- GitLab From 3cb49e054b5ee92adc60ccc6f79bdd2a5b604bd8 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Fri, 21 Aug 2015 10:43:02 -0700 Subject: [PATCH 129/178] Update node health check service --- src/node/health_check/health.js | 10 +++------- src/node/health_check/health.proto | 5 ++--- src/node/test/health_test.js | 24 ++++++------------------ 3 files changed, 11 insertions(+), 28 deletions(-) diff --git a/src/node/health_check/health.js b/src/node/health_check/health.js index 87e00197fe..84d7e0568e 100644 --- a/src/node/health_check/health.js +++ b/src/node/health_check/health.js @@ -45,17 +45,13 @@ function HealthImplementation(statusMap) { this.statusMap = _.clone(statusMap); } -HealthImplementation.prototype.setStatus = function(host, service, status) { - if (!this.statusMap[host]) { - this.statusMap[host] = {}; - } - this.statusMap[host][service] = status; +HealthImplementation.prototype.setStatus = function(service, status) { + this.statusMap[service] = status; }; HealthImplementation.prototype.check = function(call, callback){ - var host = call.request.host; var service = call.request.service; - var status = _.get(this.statusMap, [host, service], null); + var status = _.get(this.statusMap, service, null); if (status === null) { callback({code:grpc.status.NOT_FOUND}); } else { diff --git a/src/node/health_check/health.proto b/src/node/health_check/health.proto index d31df1e0a7..57f4aaa9c0 100644 --- a/src/node/health_check/health.proto +++ b/src/node/health_check/health.proto @@ -32,8 +32,7 @@ syntax = "proto3"; package grpc.health.v1alpha; message HealthCheckRequest { - string host = 1; - string service = 2; + string service = 1; } message HealthCheckResponse { @@ -47,4 +46,4 @@ message HealthCheckResponse { service Health { rpc Check(HealthCheckRequest) returns (HealthCheckResponse); -} \ No newline at end of file +} diff --git a/src/node/test/health_test.js b/src/node/test/health_test.js index be4ef1d251..04959f5f55 100644 --- a/src/node/test/health_test.js +++ b/src/node/test/health_test.js @@ -41,13 +41,9 @@ var grpc = require('../'); describe('Health Checking', function() { var statusMap = { - '': { - '': 'SERVING', - 'grpc.test.TestService': 'NOT_SERVING', - }, - virtual_host: { - 'grpc.test.TestService': 'SERVING' - } + '': 'SERVING', + 'grpc.test.TestServiceNotServing': 'NOT_SERVING', + 'grpc.test.TestServiceServing': 'SERVING' }; var healthServer = new grpc.Server(); healthServer.addProtoService(health.service, @@ -71,15 +67,15 @@ describe('Health Checking', function() { }); }); it('should say that a disabled service is NOT_SERVING', function(done) { - healthClient.check({service: 'grpc.test.TestService'}, + healthClient.check({service: 'grpc.test.TestServiceNotServing'}, function(err, response) { assert.ifError(err); assert.strictEqual(response.status, 'NOT_SERVING'); done(); }); }); - it('should say that a service on another host is SERVING', function(done) { - healthClient.check({host: 'virtual_host', service: 'grpc.test.TestService'}, + it('should say that an enabled service is SERVING', function(done) { + healthClient.check({service: 'grpc.test.TestServiceServing'}, function(err, response) { assert.ifError(err); assert.strictEqual(response.status, 'SERVING'); @@ -93,12 +89,4 @@ describe('Health Checking', function() { done(); }); }); - it('should get NOT_FOUND if the host is not registered', function(done) { - healthClient.check({host: 'wrong_host', service: 'grpc.test.TestService'}, - function(err, response) { - assert(err); - assert.strictEqual(err.code, grpc.status.NOT_FOUND); - done(); - }); - }); }); -- GitLab From 2f5ea5f244871f79855ecb7fdb100a2ae36473c2 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Fri, 21 Aug 2015 10:57:39 -0700 Subject: [PATCH 130/178] regenerate projects --- tools/run_tests/tests.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 6c06d74834..127b1dfc40 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -1538,6 +1538,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "status_test", -- GitLab From e09dc78e74f481dd06bf2f9ea643026f5e94bb5b Mon Sep 17 00:00:00 2001 From: Hongyu Chen <hongyu@google.com> Date: Fri, 21 Aug 2015 11:28:33 -0700 Subject: [PATCH 131/178] rename census_filter.{c,h} to grpc_filter.{c,h} --- BUILD | 12 ++++++------ Makefile | 4 ++-- build.json | 4 ++-- gRPC.podspec | 6 +++--- src/core/census/{census_filter.c => grpc_filter.c} | 2 +- src/core/census/{census_filter.h => grpc_filter.h} | 0 src/core/surface/channel_create.c | 2 +- src/core/surface/secure_channel_create.c | 2 +- src/core/surface/server.c | 2 +- tools/doxygen/Doxyfile.core.internal | 4 ++-- tools/run_tests/sources_and_headers.json | 12 ++++++------ vsprojects/grpc/grpc.vcxproj | 6 +++--- vsprojects/grpc/grpc.vcxproj.filters | 6 +++--- vsprojects/grpc_unsecure/grpc_unsecure.vcxproj | 6 +++--- .../grpc_unsecure/grpc_unsecure.vcxproj.filters | 6 +++--- 15 files changed, 37 insertions(+), 37 deletions(-) rename src/core/census/{census_filter.c => grpc_filter.c} (99%) rename src/core/census/{census_filter.h => grpc_filter.h} (100%) diff --git a/BUILD b/BUILD index ae98fe02ae..043d38e1fc 100644 --- a/BUILD +++ b/BUILD @@ -143,7 +143,7 @@ cc_library( "src/core/tsi/ssl_transport_security.h", "src/core/tsi/transport_security.h", "src/core/tsi/transport_security_interface.h", - "src/core/census/census_filter.h", + "src/core/census/grpc_filter.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", "src/core/channel/client_channel.h", @@ -266,8 +266,8 @@ cc_library( "src/core/tsi/fake_transport_security.c", "src/core/tsi/ssl_transport_security.c", "src/core/tsi/transport_security.c", - "src/core/census/census_filter.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", @@ -410,7 +410,7 @@ cc_library( cc_library( name = "grpc_unsecure", srcs = [ - "src/core/census/census_filter.h", + "src/core/census/grpc_filter.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", "src/core/channel/client_channel.h", @@ -513,8 +513,8 @@ cc_library( "src/core/census/context.h", "src/core/census/rpc_stat_id.h", "src/core/surface/init_unsecure.c", - "src/core/census/census_filter.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", @@ -1018,8 +1018,8 @@ objc_library( "src/core/tsi/fake_transport_security.c", "src/core/tsi/ssl_transport_security.c", "src/core/tsi/transport_security.c", - "src/core/census/census_filter.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", @@ -1159,7 +1159,7 @@ objc_library( "src/core/tsi/ssl_transport_security.h", "src/core/tsi/transport_security.h", "src/core/tsi/transport_security_interface.h", - "src/core/census/census_filter.h", + "src/core/census/grpc_filter.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", "src/core/channel/client_channel.h", diff --git a/Makefile b/Makefile index 934c2c4863..8bcdc79fde 100644 --- a/Makefile +++ b/Makefile @@ -4080,8 +4080,8 @@ LIBGRPC_SRC = \ src/core/tsi/fake_transport_security.c \ src/core/tsi/ssl_transport_security.c \ src/core/tsi/transport_security.c \ - src/core/census/census_filter.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 \ @@ -4354,8 +4354,8 @@ endif LIBGRPC_UNSECURE_SRC = \ src/core/surface/init_unsecure.c \ - src/core/census/census_filter.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 \ diff --git a/build.json b/build.json index a0c9c8dfd8..70dec998ec 100644 --- a/build.json +++ b/build.json @@ -114,7 +114,7 @@ "include/grpc/status.h" ], "headers": [ - "src/core/census/census_filter.h", + "src/core/census/grpc_filter.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", "src/core/channel/client_channel.h", @@ -216,8 +216,8 @@ "src/core/transport/transport_impl.h" ], "src": [ - "src/core/census/census_filter.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", diff --git a/gRPC.podspec b/gRPC.podspec index 6878f5937b..0e826b5ba2 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -145,7 +145,7 @@ Pod::Spec.new do |s| 'src/core/tsi/ssl_transport_security.h', 'src/core/tsi/transport_security.h', 'src/core/tsi/transport_security_interface.h', - 'src/core/census/census_filter.h', + 'src/core/census/grpc_filter.h', 'src/core/channel/channel_args.h', 'src/core/channel/channel_stack.h', 'src/core/channel/client_channel.h', @@ -275,8 +275,8 @@ Pod::Spec.new do |s| 'src/core/tsi/fake_transport_security.c', 'src/core/tsi/ssl_transport_security.c', 'src/core/tsi/transport_security.c', - 'src/core/census/census_filter.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', @@ -415,7 +415,7 @@ Pod::Spec.new do |s| 'src/core/tsi/ssl_transport_security.h', 'src/core/tsi/transport_security.h', 'src/core/tsi/transport_security_interface.h', - 'src/core/census/census_filter.h', + 'src/core/census/grpc_filter.h', 'src/core/channel/channel_args.h', 'src/core/channel/channel_stack.h', 'src/core/channel/client_channel.h', diff --git a/src/core/census/census_filter.c b/src/core/census/grpc_filter.c similarity index 99% rename from src/core/census/census_filter.c rename to src/core/census/grpc_filter.c index 31db686cf3..fbedb35661 100644 --- a/src/core/census/census_filter.c +++ b/src/core/census/grpc_filter.c @@ -31,7 +31,7 @@ * */ -#include "src/core/census/census_filter.h" +#include "src/core/census/grpc_filter.h" #include <stdio.h> #include <string.h> diff --git a/src/core/census/census_filter.h b/src/core/census/grpc_filter.h similarity index 100% rename from src/core/census/census_filter.h rename to src/core/census/grpc_filter.h diff --git a/src/core/surface/channel_create.c b/src/core/surface/channel_create.c index 1b3707a091..707251da89 100644 --- a/src/core/surface/channel_create.c +++ b/src/core/surface/channel_create.c @@ -38,7 +38,7 @@ #include <grpc/support/alloc.h> -#include "src/core/census/census_filter.h" +#include "src/core/census/grpc_filter.h" #include "src/core/channel/channel_args.h" #include "src/core/channel/client_channel.h" #include "src/core/channel/compress_filter.h" diff --git a/src/core/surface/secure_channel_create.c b/src/core/surface/secure_channel_create.c index cf204e112b..eccee24698 100644 --- a/src/core/surface/secure_channel_create.c +++ b/src/core/surface/secure_channel_create.c @@ -38,7 +38,7 @@ #include <grpc/support/alloc.h> -#include "src/core/census/census_filter.h" +#include "src/core/census/grpc_filter.h" #include "src/core/channel/channel_args.h" #include "src/core/channel/client_channel.h" #include "src/core/channel/compress_filter.h" diff --git a/src/core/surface/server.c b/src/core/surface/server.c index 145fa6ee1a..292bf6fab8 100644 --- a/src/core/surface/server.c +++ b/src/core/surface/server.c @@ -41,7 +41,7 @@ #include <grpc/support/string_util.h> #include <grpc/support/useful.h> -#include "src/core/census/census_filter.h" +#include "src/core/census/grpc_filter.h" #include "src/core/channel/channel_args.h" #include "src/core/channel/connected_channel.h" #include "src/core/iomgr/iomgr.h" diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index 5b0abc571b..d27c5d9246 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -780,7 +780,7 @@ src/core/tsi/fake_transport_security.h \ src/core/tsi/ssl_transport_security.h \ src/core/tsi/transport_security.h \ src/core/tsi/transport_security_interface.h \ -src/core/census/census_filter.h \ +src/core/census/grpc_filter.h \ src/core/channel/channel_args.h \ src/core/channel/channel_stack.h \ src/core/channel/client_channel.h \ @@ -903,8 +903,8 @@ 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/census_filter.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 \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index c7e5af6e71..97659c11a6 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -12269,8 +12269,8 @@ "include/grpc/grpc.h", "include/grpc/grpc_security.h", "include/grpc/status.h", - "src/core/census/census_filter.h", "src/core/census/context.h", + "src/core/census/grpc_filter.h", "src/core/census/rpc_stat_id.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", @@ -12395,11 +12395,11 @@ "include/grpc/grpc.h", "include/grpc/grpc_security.h", "include/grpc/status.h", - "src/core/census/census_filter.c", - "src/core/census/census_filter.h", "src/core/census/context.c", "src/core/census/context.h", "src/core/census/grpc_context.c", + "src/core/census/grpc_filter.c", + "src/core/census/grpc_filter.h", "src/core/census/initialize.c", "src/core/census/record_stat.c", "src/core/census/rpc_stat_id.h", @@ -12744,8 +12744,8 @@ "include/grpc/compression.h", "include/grpc/grpc.h", "include/grpc/status.h", - "src/core/census/census_filter.h", "src/core/census/context.h", + "src/core/census/grpc_filter.h", "src/core/census/rpc_stat_id.h", "src/core/channel/channel_args.h", "src/core/channel/channel_stack.h", @@ -12856,11 +12856,11 @@ "include/grpc/compression.h", "include/grpc/grpc.h", "include/grpc/status.h", - "src/core/census/census_filter.c", - "src/core/census/census_filter.h", "src/core/census/context.c", "src/core/census/context.h", "src/core/census/grpc_context.c", + "src/core/census/grpc_filter.c", + "src/core/census/grpc_filter.h", "src/core/census/initialize.c", "src/core/census/record_stat.c", "src/core/census/rpc_stat_id.h", diff --git a/vsprojects/grpc/grpc.vcxproj b/vsprojects/grpc/grpc.vcxproj index aacf42d373..500cf9feb5 100644 --- a/vsprojects/grpc/grpc.vcxproj +++ b/vsprojects/grpc/grpc.vcxproj @@ -242,7 +242,7 @@ <ClInclude Include="..\..\src\core\tsi\ssl_transport_security.h" /> <ClInclude Include="..\..\src\core\tsi\transport_security.h" /> <ClInclude Include="..\..\src\core\tsi\transport_security_interface.h" /> - <ClInclude Include="..\..\src\core\census\census_filter.h" /> + <ClInclude Include="..\..\src\core\census\grpc_filter.h" /> <ClInclude Include="..\..\src\core\channel\channel_args.h" /> <ClInclude Include="..\..\src\core\channel\channel_stack.h" /> <ClInclude Include="..\..\src\core\channel\client_channel.h" /> @@ -388,10 +388,10 @@ </ClCompile> <ClCompile Include="..\..\src\core\tsi\transport_security.c"> </ClCompile> - <ClCompile Include="..\..\src\core\census\census_filter.c"> - </ClCompile> <ClCompile Include="..\..\src\core\census\grpc_context.c"> </ClCompile> + <ClCompile Include="..\..\src\core\census\grpc_filter.c"> + </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_stack.c"> diff --git a/vsprojects/grpc/grpc.vcxproj.filters b/vsprojects/grpc/grpc.vcxproj.filters index 40551bf3e7..02060b7830 100644 --- a/vsprojects/grpc/grpc.vcxproj.filters +++ b/vsprojects/grpc/grpc.vcxproj.filters @@ -64,10 +64,10 @@ <ClCompile Include="..\..\src\core\tsi\transport_security.c"> <Filter>src\core\tsi</Filter> </ClCompile> - <ClCompile Include="..\..\src\core\census\census_filter.c"> + <ClCompile Include="..\..\src\core\census\grpc_context.c"> <Filter>src\core\census</Filter> </ClCompile> - <ClCompile Include="..\..\src\core\census\grpc_context.c"> + <ClCompile Include="..\..\src\core\census\grpc_filter.c"> <Filter>src\core\census</Filter> </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> @@ -485,7 +485,7 @@ <ClInclude Include="..\..\src\core\tsi\transport_security_interface.h"> <Filter>src\core\tsi</Filter> </ClInclude> - <ClInclude Include="..\..\src\core\census\census_filter.h"> + <ClInclude Include="..\..\src\core\census\grpc_filter.h"> <Filter>src\core\census</Filter> </ClInclude> <ClInclude Include="..\..\src\core\channel\channel_args.h"> diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj index 004565b6da..13c018c020 100644 --- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj +++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj @@ -225,7 +225,7 @@ <ClInclude Include="..\..\include\grpc\census.h" /> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\src\core\census\census_filter.h" /> + <ClInclude Include="..\..\src\core\census\grpc_filter.h" /> <ClInclude Include="..\..\src\core\channel\channel_args.h" /> <ClInclude Include="..\..\src\core\channel\channel_stack.h" /> <ClInclude Include="..\..\src\core\channel\client_channel.h" /> @@ -331,10 +331,10 @@ <ItemGroup> <ClCompile Include="..\..\src\core\surface\init_unsecure.c"> </ClCompile> - <ClCompile Include="..\..\src\core\census\census_filter.c"> - </ClCompile> <ClCompile Include="..\..\src\core\census\grpc_context.c"> </ClCompile> + <ClCompile Include="..\..\src\core\census\grpc_filter.c"> + </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_stack.c"> diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters index f2fa433881..5adcdd6092 100644 --- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters +++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters @@ -4,10 +4,10 @@ <ClCompile Include="..\..\src\core\surface\init_unsecure.c"> <Filter>src\core\surface</Filter> </ClCompile> - <ClCompile Include="..\..\src\core\census\census_filter.c"> + <ClCompile Include="..\..\src\core\census\grpc_context.c"> <Filter>src\core\census</Filter> </ClCompile> - <ClCompile Include="..\..\src\core\census\grpc_context.c"> + <ClCompile Include="..\..\src\core\census\grpc_filter.c"> <Filter>src\core\census</Filter> </ClCompile> <ClCompile Include="..\..\src\core\channel\channel_args.c"> @@ -383,7 +383,7 @@ </ClInclude> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\src\core\census\census_filter.h"> + <ClInclude Include="..\..\src\core\census\grpc_filter.h"> <Filter>src\core\census</Filter> </ClInclude> <ClInclude Include="..\..\src\core\channel\channel_args.h"> -- GitLab From f36e1b74b5b20f80439b6204389f8d2a9e8d761c Mon Sep 17 00:00:00 2001 From: Nathaniel Manista <nathaniel@google.com> Date: Tue, 18 Aug 2015 01:30:29 +0000 Subject: [PATCH 132/178] The RPC Framework core package. This is the second generation of the old base package (framework.base) and implements the translation between the new links and base interfaces. --- .../grpcio/grpc/framework/core/__init__.py | 30 ++ .../grpcio/grpc/framework/core/_constants.py | 59 +++ .../grpcio/grpc/framework/core/_context.py | 92 ++++ .../grpcio/grpc/framework/core/_emission.py | 97 +++++ src/python/grpcio/grpc/framework/core/_end.py | 251 +++++++++++ .../grpcio/grpc/framework/core/_expiration.py | 152 +++++++ .../grpcio/grpc/framework/core/_ingestion.py | 410 ++++++++++++++++++ .../grpcio/grpc/framework/core/_interfaces.py | 308 +++++++++++++ .../grpcio/grpc/framework/core/_operation.py | 192 ++++++++ .../grpcio/grpc/framework/core/_reception.py | 137 ++++++ .../grpc/framework/core/_termination.py | 212 +++++++++ .../grpc/framework/core/_transmission.py | 294 +++++++++++++ .../grpcio/grpc/framework/core/_utilities.py | 46 ++ .../grpc/framework/core/implementations.py | 62 +++ .../grpc/framework/interfaces/base/base.py | 39 +- .../grpc/framework/interfaces/links/links.py | 2 +- .../_core_over_links_base_interface_test.py | 165 +++++++ .../grpc_test/framework/core/__init__.py | 30 ++ .../framework/core/_base_interface_test.py | 96 ++++ .../framework/interfaces/base/test_cases.py | 6 +- .../interfaces/links/test_utilities.py | 101 +++++ 21 files changed, 2767 insertions(+), 14 deletions(-) create mode 100644 src/python/grpcio/grpc/framework/core/__init__.py create mode 100644 src/python/grpcio/grpc/framework/core/_constants.py create mode 100644 src/python/grpcio/grpc/framework/core/_context.py create mode 100644 src/python/grpcio/grpc/framework/core/_emission.py create mode 100644 src/python/grpcio/grpc/framework/core/_end.py create mode 100644 src/python/grpcio/grpc/framework/core/_expiration.py create mode 100644 src/python/grpcio/grpc/framework/core/_ingestion.py create mode 100644 src/python/grpcio/grpc/framework/core/_interfaces.py create mode 100644 src/python/grpcio/grpc/framework/core/_operation.py create mode 100644 src/python/grpcio/grpc/framework/core/_reception.py create mode 100644 src/python/grpcio/grpc/framework/core/_termination.py create mode 100644 src/python/grpcio/grpc/framework/core/_transmission.py create mode 100644 src/python/grpcio/grpc/framework/core/_utilities.py create mode 100644 src/python/grpcio/grpc/framework/core/implementations.py create mode 100644 src/python/grpcio_test/grpc_test/_core_over_links_base_interface_test.py create mode 100644 src/python/grpcio_test/grpc_test/framework/core/__init__.py create mode 100644 src/python/grpcio_test/grpc_test/framework/core/_base_interface_test.py diff --git a/src/python/grpcio/grpc/framework/core/__init__.py b/src/python/grpcio/grpc/framework/core/__init__.py new file mode 100644 index 0000000000..7086519106 --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/__init__.py @@ -0,0 +1,30 @@ +# 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. + + diff --git a/src/python/grpcio/grpc/framework/core/_constants.py b/src/python/grpcio/grpc/framework/core/_constants.py new file mode 100644 index 0000000000..d3be3a4c4a --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_constants.py @@ -0,0 +1,59 @@ +# 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. + +"""Private constants for the package.""" + +from grpc.framework.interfaces.base import base +from grpc.framework.interfaces.links import links + +TICKET_SUBSCRIPTION_FOR_BASE_SUBSCRIPTION_KIND = { + base.Subscription.Kind.NONE: links.Ticket.Subscription.NONE, + base.Subscription.Kind.TERMINATION_ONLY: + links.Ticket.Subscription.TERMINATION, + base.Subscription.Kind.FULL: links.Ticket.Subscription.FULL, + } + +# Mapping from abortive operation outcome to ticket termination to be +# sent to the other side of the operation, or None to indicate that no +# ticket should be sent to the other side in the event of such an +# outcome. +ABORTION_OUTCOME_TO_TICKET_TERMINATION = { + base.Outcome.CANCELLED: links.Ticket.Termination.CANCELLATION, + base.Outcome.EXPIRED: links.Ticket.Termination.EXPIRATION, + base.Outcome.LOCAL_SHUTDOWN: links.Ticket.Termination.SHUTDOWN, + base.Outcome.REMOTE_SHUTDOWN: None, + base.Outcome.RECEPTION_FAILURE: links.Ticket.Termination.RECEPTION_FAILURE, + base.Outcome.TRANSMISSION_FAILURE: None, + base.Outcome.LOCAL_FAILURE: links.Ticket.Termination.LOCAL_FAILURE, + base.Outcome.REMOTE_FAILURE: links.Ticket.Termination.REMOTE_FAILURE, +} + +INTERNAL_ERROR_LOG_MESSAGE = ':-( RPC Framework (Core) internal error! )-:' +TERMINATION_CALLBACK_EXCEPTION_LOG_MESSAGE = ( + 'Exception calling termination callback!') diff --git a/src/python/grpcio/grpc/framework/core/_context.py b/src/python/grpcio/grpc/framework/core/_context.py new file mode 100644 index 0000000000..24a12b612e --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_context.py @@ -0,0 +1,92 @@ +# 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. + +"""State and behavior for operation context.""" + +import time + +# _interfaces is referenced from specification in this module. +from grpc.framework.core import _interfaces # pylint: disable=unused-import +from grpc.framework.interfaces.base import base + + +class OperationContext(base.OperationContext): + """An implementation of interfaces.OperationContext.""" + + def __init__( + self, lock, termination_manager, transmission_manager, + expiration_manager): + """Constructor. + + Args: + lock: The operation-wide lock. + termination_manager: The _interfaces.TerminationManager for the operation. + transmission_manager: The _interfaces.TransmissionManager for the + operation. + expiration_manager: The _interfaces.ExpirationManager for the operation. + """ + self._lock = lock + self._termination_manager = termination_manager + self._transmission_manager = transmission_manager + self._expiration_manager = expiration_manager + + def _abort(self, outcome): + with self._lock: + if self._termination_manager.outcome is None: + self._termination_manager.abort(outcome) + self._transmission_manager.abort(outcome) + self._expiration_manager.terminate() + + def outcome(self): + """See base.OperationContext.outcome for specification.""" + with self._lock: + return self._termination_manager.outcome + + def add_termination_callback(self, callback): + """See base.OperationContext.add_termination_callback.""" + with self._lock: + if self._termination_manager.outcome is None: + self._termination_manager.add_callback(callback) + return None + else: + return self._termination_manager.outcome + + def time_remaining(self): + """See base.OperationContext.time_remaining for specification.""" + with self._lock: + deadline = self._expiration_manager.deadline() + return max(0.0, deadline - time.time()) + + def cancel(self): + """See base.OperationContext.cancel for specification.""" + self._abort(base.Outcome.CANCELLED) + + def fail(self, exception): + """See base.OperationContext.fail for specification.""" + self._abort(base.Outcome.LOCAL_FAILURE) diff --git a/src/python/grpcio/grpc/framework/core/_emission.py b/src/python/grpcio/grpc/framework/core/_emission.py new file mode 100644 index 0000000000..7c702ab2ce --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_emission.py @@ -0,0 +1,97 @@ +# 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. + +"""State and behavior for handling emitted values.""" + +from grpc.framework.core import _interfaces +from grpc.framework.interfaces.base import base + + +class EmissionManager(_interfaces.EmissionManager): + """An EmissionManager implementation.""" + + def __init__( + self, lock, termination_manager, transmission_manager, + expiration_manager): + """Constructor. + + Args: + lock: The operation-wide lock. + termination_manager: The _interfaces.TerminationManager for the operation. + transmission_manager: The _interfaces.TransmissionManager for the + operation. + expiration_manager: The _interfaces.ExpirationManager for the operation. + """ + self._lock = lock + self._termination_manager = termination_manager + self._transmission_manager = transmission_manager + self._expiration_manager = expiration_manager + self._ingestion_manager = None + + self._initial_metadata_seen = False + self._payload_seen = False + self._completion_seen = False + + def set_ingestion_manager(self, ingestion_manager): + """Sets the ingestion manager with which this manager will cooperate. + + Args: + ingestion_manager: The _interfaces.IngestionManager for the operation. + """ + self._ingestion_manager = ingestion_manager + + def advance( + self, initial_metadata=None, payload=None, completion=None, + allowance=None): + initial_metadata_present = initial_metadata is not None + payload_present = payload is not None + completion_present = completion is not None + allowance_present = allowance is not None + with self._lock: + if self._termination_manager.outcome is None: + if (initial_metadata_present and ( + self._initial_metadata_seen or self._payload_seen or + self._completion_seen) or + payload_present and self._completion_seen or + completion_present and self._completion_seen or + allowance_present and allowance <= 0): + self._termination_manager.abort(base.Outcome.LOCAL_FAILURE) + self._transmission_manager.abort(base.Outcome.LOCAL_FAILURE) + self._expiration_manager.terminate() + else: + self._initial_metadata_seen |= initial_metadata_present + self._payload_seen |= payload_present + self._completion_seen |= completion_present + if completion_present: + self._termination_manager.emission_complete() + self._ingestion_manager.local_emissions_done() + self._transmission_manager.advance( + initial_metadata, payload, completion, allowance) + if allowance_present: + self._ingestion_manager.add_local_allowance(allowance) diff --git a/src/python/grpcio/grpc/framework/core/_end.py b/src/python/grpcio/grpc/framework/core/_end.py new file mode 100644 index 0000000000..fb2c532df6 --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_end.py @@ -0,0 +1,251 @@ +# 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. + +"""Implementation of base.End.""" + +import abc +import enum +import threading +import uuid + +from grpc.framework.core import _operation +from grpc.framework.core import _utilities +from grpc.framework.foundation import callable_util +from grpc.framework.foundation import later +from grpc.framework.foundation import logging_pool +from grpc.framework.interfaces.base import base +from grpc.framework.interfaces.links import links +from grpc.framework.interfaces.links import utilities + +_IDLE_ACTION_EXCEPTION_LOG_MESSAGE = 'Exception calling idle action!' + + +class End(base.End, links.Link): + """A bridge between base.End and links.Link. + + Implementations of this interface translate arriving tickets into + calls on application objects implementing base interfaces and + translate calls from application objects implementing base interfaces + into tickets sent to a joined link. + """ + __metaclass__ = abc.ABCMeta + + +class _Cycle(object): + """State for a single start-stop End lifecycle.""" + + def __init__(self, pool): + self.pool = pool + self.grace = False + self.futures = [] + self.operations = {} + self.idle_actions = [] + + +def _abort(operations): + for operation in operations: + operation.abort(base.Outcome.LOCAL_SHUTDOWN) + + +def _cancel_futures(futures): + for future in futures: + futures.cancel() + + +def _future_shutdown(lock, cycle, event): + def in_future(): + with lock: + _abort(cycle.operations.values()) + _cancel_futures(cycle.futures) + pool = cycle.pool + cycle.pool.shutdown(wait=True) + return in_future + + +def _termination_action(lock, stats, operation_id, cycle): + """Constructs the termination action for a single operation. + + Args: + lock: A lock to hold during the termination action. + states: A mapping from base.Outcome values to integers to increment with + the outcome given to the termination action. + operation_id: The operation ID for the termination action. + cycle: A _Cycle value to be updated during the termination action. + + Returns: + A callable that takes an operation outcome as its sole parameter and that + should be used as the termination action for the operation associated + with the given operation ID. + """ + def termination_action(outcome): + with lock: + stats[outcome] += 1 + cycle.operations.pop(operation_id, None) + if not cycle.operations: + for action in cycle.idle_actions: + cycle.pool.submit(action) + cycle.idle_actions = [] + if cycle.grace: + _cancel_futures(cycle.futures) + return termination_action + + +class _End(End): + """An End implementation.""" + + def __init__(self, servicer_package): + """Constructor. + + Args: + servicer_package: A _ServicerPackage for servicing operations or None if + this end will not be used to service operations. + """ + self._lock = threading.Condition() + self._servicer_package = servicer_package + + self._stats = {outcome: 0 for outcome in base.Outcome} + + self._mate = None + + self._cycle = None + + def start(self): + """See base.End.start for specification.""" + with self._lock: + if self._cycle is not None: + raise ValueError('Tried to start a not-stopped End!') + else: + self._cycle = _Cycle(logging_pool.pool(1)) + + def stop(self, grace): + """See base.End.stop for specification.""" + with self._lock: + if self._cycle is None: + event = threading.Event() + event.set() + return event + elif not self._cycle.operations: + event = threading.Event() + self._cycle.pool.submit(event.set) + self._cycle.pool.shutdown(wait=False) + self._cycle = None + return event + else: + self._cycle.grace = True + event = threading.Event() + self._cycle.idle_actions.append(event.set) + if 0 < grace: + future = later.later( + grace, _future_shutdown(self._lock, self._cycle, event)) + self._cycle.futures.append(future) + else: + _abort(self._cycle.operations.values()) + return event + + def operate( + self, group, method, subscription, timeout, initial_metadata=None, + payload=None, completion=None): + """See base.End.operate for specification.""" + operation_id = uuid.uuid4() + with self._lock: + if self._cycle is None or self._cycle.grace: + raise ValueError('Can\'t operate on stopped or stopping End!') + termination_action = _termination_action( + self._lock, self._stats, operation_id, self._cycle) + operation = _operation.invocation_operate( + operation_id, group, method, subscription, timeout, initial_metadata, + payload, completion, self._mate.accept_ticket, termination_action, + self._cycle.pool) + self._cycle.operations[operation_id] = operation + return operation.context, operation.operator + + def operation_stats(self): + """See base.End.operation_stats for specification.""" + with self._lock: + return dict(self._stats) + + def add_idle_action(self, action): + """See base.End.add_idle_action for specification.""" + with self._lock: + if self._cycle is None: + raise ValueError('Can\'t add idle action to stopped End!') + action_with_exceptions_logged = callable_util.with_exceptions_logged( + action, _IDLE_ACTION_EXCEPTION_LOG_MESSAGE) + if self._cycle.operations: + self._cycle.idle_actions.append(action_with_exceptions_logged) + else: + self._cycle.pool.submit(action_with_exceptions_logged) + + def accept_ticket(self, ticket): + """See links.Link.accept_ticket for specification.""" + with self._lock: + if self._cycle is not None and not self._cycle.grace: + operation = self._cycle.operations.get(ticket.operation_id) + if operation is not None: + operation.handle_ticket(ticket) + elif self._servicer_package is not None: + termination_action = _termination_action( + self._lock, self._stats, ticket.operation_id, self._cycle) + operation = _operation.service_operate( + self._servicer_package, ticket, self._mate.accept_ticket, + termination_action, self._cycle.pool) + if operation is not None: + self._cycle.operations[ticket.operation_id] = operation + + def join_link(self, link): + """See links.Link.join_link for specification.""" + with self._lock: + self._mate = utilities.NULL_LINK if link is None else link + + +def serviceless_end_link(): + """Constructs an End usable only for invoking operations. + + Returns: + An End usable for translating operations into ticket exchange. + """ + return _End(None) + + +def serviceful_end_link(servicer, default_timeout, maximum_timeout): + """Constructs an End capable of servicing operations. + + Args: + servicer: An interfaces.Servicer for servicing operations. + default_timeout: A length of time in seconds to be used as the default + time alloted for a single operation. + maximum_timeout: A length of time in seconds to be used as the maximum + time alloted for a single operation. + + Returns: + An End capable of servicing the operations requested of it through ticket + exchange. + """ + return _End( + _utilities.ServicerPackage(servicer, default_timeout, maximum_timeout)) diff --git a/src/python/grpcio/grpc/framework/core/_expiration.py b/src/python/grpcio/grpc/framework/core/_expiration.py new file mode 100644 index 0000000000..d94bdf2d2b --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_expiration.py @@ -0,0 +1,152 @@ +# 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. + +"""State and behavior for operation expiration.""" + +import time + +from grpc.framework.core import _interfaces +from grpc.framework.foundation import later +from grpc.framework.interfaces.base import base + + +class _ExpirationManager(_interfaces.ExpirationManager): + """An implementation of _interfaces.ExpirationManager.""" + + def __init__( + self, commencement, timeout, maximum_timeout, lock, termination_manager, + transmission_manager): + """Constructor. + + Args: + commencement: The time in seconds since the epoch at which the operation + began. + timeout: A length of time in seconds to allow for the operation to run. + maximum_timeout: The maximum length of time in seconds to allow for the + operation to run despite what is requested via this object's + change_timout method. + lock: The operation-wide lock. + termination_manager: The _interfaces.TerminationManager for the operation. + transmission_manager: The _interfaces.TransmissionManager for the + operation. + """ + self._lock = lock + self._termination_manager = termination_manager + self._transmission_manager = transmission_manager + self._commencement = commencement + self._maximum_timeout = maximum_timeout + + self._timeout = timeout + self._deadline = commencement + timeout + self._index = None + self._future = None + + def _expire(self, index): + def expire(): + with self._lock: + if self._future is not None and index == self._index: + self._future = None + self._termination_manager.expire() + self._transmission_manager.abort(base.Outcome.EXPIRED) + return expire + + def start(self): + self._index = 0 + self._future = later.later(self._timeout, self._expire(0)) + + def change_timeout(self, timeout): + if self._future is not None and timeout != self._timeout: + self._future.cancel() + new_timeout = min(timeout, self._maximum_timeout) + new_index = self._index + 1 + self._timeout = new_timeout + self._deadline = self._commencement + new_timeout + self._index = new_index + delay = self._deadline - time.time() + self._future = later.later(delay, self._expire(new_index)) + if new_timeout != timeout: + self._transmission_manager.timeout(new_timeout) + + def deadline(self): + return self._deadline + + def terminate(self): + if self._future: + self._future.cancel() + self._future = None + self._deadline_index = None + + +def invocation_expiration_manager( + timeout, lock, termination_manager, transmission_manager): + """Creates an _interfaces.ExpirationManager appropriate for front-side use. + + Args: + timeout: A length of time in seconds to allow for the operation to run. + lock: The operation-wide lock. + termination_manager: The _interfaces.TerminationManager for the operation. + transmission_manager: The _interfaces.TransmissionManager for the + operation. + + Returns: + An _interfaces.ExpirationManager appropriate for invocation-side use. + """ + expiration_manager = _ExpirationManager( + time.time(), timeout, timeout, lock, termination_manager, + transmission_manager) + expiration_manager.start() + return expiration_manager + + +def service_expiration_manager( + timeout, default_timeout, maximum_timeout, lock, termination_manager, + transmission_manager): + """Creates an _interfaces.ExpirationManager appropriate for back-side use. + + Args: + timeout: A length of time in seconds to allow for the operation to run. May + be None in which case default_timeout will be used. + default_timeout: The default length of time in seconds to allow for the + operation to run if the front-side customer has not specified such a value + (or if the value they specified is not yet known). + maximum_timeout: The maximum length of time in seconds to allow for the + operation to run. + lock: The operation-wide lock. + termination_manager: The _interfaces.TerminationManager for the operation. + transmission_manager: The _interfaces.TransmissionManager for the + operation. + + Returns: + An _interfaces.ExpirationManager appropriate for service-side use. + """ + expiration_manager = _ExpirationManager( + time.time(), default_timeout if timeout is None else timeout, + maximum_timeout, lock, termination_manager, transmission_manager) + expiration_manager.start() + return expiration_manager diff --git a/src/python/grpcio/grpc/framework/core/_ingestion.py b/src/python/grpcio/grpc/framework/core/_ingestion.py new file mode 100644 index 0000000000..59f7f8adc8 --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_ingestion.py @@ -0,0 +1,410 @@ +# 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. + +"""State and behavior for ingestion during an operation.""" + +import abc +import collections + +from grpc.framework.core import _constants +from grpc.framework.core import _interfaces +from grpc.framework.foundation import abandonment +from grpc.framework.foundation import callable_util +from grpc.framework.interfaces.base import base + +_CREATE_SUBSCRIPTION_EXCEPTION_LOG_MESSAGE = 'Exception initializing ingestion!' +_INGESTION_EXCEPTION_LOG_MESSAGE = 'Exception during ingestion!' + + +class _SubscriptionCreation(collections.namedtuple( + '_SubscriptionCreation', ('subscription', 'remote_error', 'abandoned'))): + """A sum type for the outcome of ingestion initialization. + + Either subscription will be non-None, remote_error will be True, or abandoned + will be True. + + Attributes: + subscription: A base.Subscription describing the customer's interest in + operation values from the other side. + remote_error: A boolean indicating that the subscription could not be + created due to an error on the remote side of the operation. + abandoned: A boolean indicating that subscription creation was abandoned. + """ + + +class _SubscriptionCreator(object): + """Common specification of subscription-creating behavior.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def create(self, group, method): + """Creates the base.Subscription of the local customer. + + Any exceptions raised by this method should be attributed to and treated as + defects in the customer code called by this method. + + Args: + group: The group identifier of the operation. + method: The method identifier of the operation. + + Returns: + A _SubscriptionCreation describing the result of subscription creation. + """ + raise NotImplementedError() + + +class _ServiceSubscriptionCreator(_SubscriptionCreator): + """A _SubscriptionCreator appropriate for service-side use.""" + + def __init__(self, servicer, operation_context, output_operator): + """Constructor. + + Args: + servicer: The base.Servicer that will service the operation. + operation_context: A base.OperationContext for the operation to be passed + to the customer. + output_operator: A base.Operator for the operation to be passed to the + customer and to be called by the customer to accept operation data + emitted by the customer. + """ + self._servicer = servicer + self._operation_context = operation_context + self._output_operator = output_operator + + def create(self, group, method): + try: + subscription = self._servicer.service( + group, method, self._operation_context, self._output_operator) + except base.NoSuchMethodError: + return _SubscriptionCreation(None, True, False) + except abandonment.Abandoned: + return _SubscriptionCreation(None, False, True) + else: + return _SubscriptionCreation(subscription, False, False) + + +def _wrap(behavior): + def wrapped(*args, **kwargs): + try: + behavior(*args, **kwargs) + except abandonment.Abandoned: + return False + else: + return True + return wrapped + + +class _IngestionManager(_interfaces.IngestionManager): + """An implementation of _interfaces.IngestionManager.""" + + def __init__( + self, lock, pool, subscription, subscription_creator, termination_manager, + transmission_manager, expiration_manager): + """Constructor. + + Args: + lock: The operation-wide lock. + pool: A thread pool in which to execute customer code. + subscription: A base.Subscription describing the customer's interest in + operation values from the other side. May be None if + subscription_creator is not None. + subscription_creator: A _SubscriptionCreator wrapping the portion of + customer code that when called returns the base.Subscription describing + the customer's interest in operation values from the other side. May be + None if subscription is not None. + termination_manager: The _interfaces.TerminationManager for the operation. + transmission_manager: The _interfaces.TransmissionManager for the + operation. + expiration_manager: The _interfaces.ExpirationManager for the operation. + """ + self._lock = lock + self._pool = pool + self._termination_manager = termination_manager + self._transmission_manager = transmission_manager + self._expiration_manager = expiration_manager + + if subscription is None: + self._subscription_creator = subscription_creator + self._wrapped_operator = None + elif subscription.kind is base.Subscription.Kind.FULL: + self._subscription_creator = None + self._wrapped_operator = _wrap(subscription.operator.advance) + else: + # TODO(nathaniel): Support other subscriptions. + raise ValueError('Unsupported subscription "%s"!' % subscription.kind) + self._pending_initial_metadata = None + self._pending_payloads = [] + self._pending_completion = None + self._local_allowance = 1 + # A nonnegative integer or None, with None indicating that the local + # customer is done emitting anyway so there's no need to bother it by + # informing it that the remote customer has granted it further permission to + # emit. + self._remote_allowance = 0 + self._processing = False + + def _abort_internal_only(self): + self._subscription_creator = None + self._wrapped_operator = None + self._pending_initial_metadata = None + self._pending_payloads = None + self._pending_completion = None + + def _abort_and_notify(self, outcome): + self._abort_internal_only() + self._termination_manager.abort(outcome) + self._transmission_manager.abort(outcome) + self._expiration_manager.terminate() + + def _operator_next(self): + """Computes the next step for full-subscription ingestion. + + Returns: + An initial_metadata, payload, completion, allowance, continue quintet + indicating what operation values (if any) are available to pass into + customer code and whether or not there is anything immediately + actionable to call customer code to do. + """ + if self._wrapped_operator is None: + return None, None, None, None, False + else: + initial_metadata, payload, completion, allowance, action = [None] * 5 + if self._pending_initial_metadata is not None: + initial_metadata = self._pending_initial_metadata + self._pending_initial_metadata = None + action = True + if self._pending_payloads and 0 < self._local_allowance: + payload = self._pending_payloads.pop(0) + self._local_allowance -= 1 + action = True + if not self._pending_payloads and self._pending_completion is not None: + completion = self._pending_completion + self._pending_completion = None + action = True + if self._remote_allowance is not None and 0 < self._remote_allowance: + allowance = self._remote_allowance + self._remote_allowance = 0 + action = True + return initial_metadata, payload, completion, allowance, bool(action) + + def _operator_process( + self, wrapped_operator, initial_metadata, payload, + completion, allowance): + while True: + advance_outcome = callable_util.call_logging_exceptions( + wrapped_operator, _INGESTION_EXCEPTION_LOG_MESSAGE, + initial_metadata=initial_metadata, payload=payload, + completion=completion, allowance=allowance) + if advance_outcome.exception is None: + if advance_outcome.return_value: + with self._lock: + if self._termination_manager.outcome is not None: + return + if completion is not None: + self._termination_manager.ingestion_complete() + initial_metadata, payload, completion, allowance, moar = ( + self._operator_next()) + if not moar: + self._processing = False + return + else: + with self._lock: + if self._termination_manager.outcome is None: + self._abort_and_notify(base.Outcome.LOCAL_FAILURE) + return + else: + with self._lock: + if self._termination_manager.outcome is None: + self._abort_and_notify(base.Outcome.LOCAL_FAILURE) + return + + def _operator_post_create(self, subscription): + wrapped_operator = _wrap(subscription.operator.advance) + with self._lock: + if self._termination_manager.outcome is not None: + return + self._wrapped_operator = wrapped_operator + self._subscription_creator = None + metadata, payload, completion, allowance, moar = self._operator_next() + if not moar: + self._processing = False + return + self._operator_process( + wrapped_operator, metadata, payload, completion, allowance) + + def _create(self, subscription_creator, group, name): + outcome = callable_util.call_logging_exceptions( + subscription_creator.create, _CREATE_SUBSCRIPTION_EXCEPTION_LOG_MESSAGE, + group, name) + if outcome.return_value is None: + with self._lock: + if self._termination_manager.outcome is None: + self._abort_and_notify(base.Outcome.LOCAL_FAILURE) + elif outcome.return_value.abandoned: + with self._lock: + if self._termination_manager.outcome is None: + self._abort_and_notify(base.Outcome.LOCAL_FAILURE) + elif outcome.return_value.remote_error: + with self._lock: + if self._termination_manager.outcome is None: + self._abort_and_notify(base.Outcome.REMOTE_FAILURE) + elif outcome.return_value.subscription.kind is base.Subscription.Kind.FULL: + self._operator_post_create(outcome.return_value.subscription) + else: + # TODO(nathaniel): Support other subscriptions. + raise ValueError( + 'Unsupported "%s"!' % outcome.return_value.subscription.kind) + + def _store_advance(self, initial_metadata, payload, completion, allowance): + if initial_metadata is not None: + self._pending_initial_metadata = initial_metadata + if payload is not None: + self._pending_payloads.append(payload) + if completion is not None: + self._pending_completion = completion + if allowance is not None and self._remote_allowance is not None: + self._remote_allowance += allowance + + def _operator_advance(self, initial_metadata, payload, completion, allowance): + if self._processing: + self._store_advance(initial_metadata, payload, completion, allowance) + else: + action = False + if initial_metadata is not None: + action = True + if payload is not None: + if 0 < self._local_allowance: + self._local_allowance -= 1 + action = True + else: + self._pending_payloads.append(payload) + payload = False + if completion is not None: + if self._pending_payloads: + self._pending_completion = completion + else: + action = True + if allowance is not None and self._remote_allowance is not None: + allowance += self._remote_allowance + self._remote_allowance = 0 + action = True + if action: + self._pool.submit( + callable_util.with_exceptions_logged( + self._operator_process, _constants.INTERNAL_ERROR_LOG_MESSAGE), + self._wrapped_operator, initial_metadata, payload, completion, + allowance) + + def set_group_and_method(self, group, method): + """See _interfaces.IngestionManager.set_group_and_method for spec.""" + if self._subscription_creator is not None and not self._processing: + self._pool.submit( + callable_util.with_exceptions_logged( + self._create, _constants.INTERNAL_ERROR_LOG_MESSAGE), + self._subscription_creator, group, method) + self._processing = True + + def add_local_allowance(self, allowance): + """See _interfaces.IngestionManager.add_local_allowance for spec.""" + if any((self._subscription_creator, self._wrapped_operator,)): + self._local_allowance += allowance + if not self._processing: + initial_metadata, payload, completion, allowance, moar = ( + self._operator_next()) + if moar: + self._pool.submit( + callable_util.with_exceptions_logged( + self._operator_process, + _constants.INTERNAL_ERROR_LOG_MESSAGE), + initial_metadata, payload, completion, allowance) + + def local_emissions_done(self): + self._remote_allowance = None + + def advance(self, initial_metadata, payload, completion, allowance): + """See _interfaces.IngestionManager.advance for specification.""" + if self._subscription_creator is not None: + self._store_advance(initial_metadata, payload, completion, allowance) + elif self._wrapped_operator is not None: + self._operator_advance(initial_metadata, payload, completion, allowance) + + +def invocation_ingestion_manager( + subscription, lock, pool, termination_manager, transmission_manager, + expiration_manager): + """Creates an IngestionManager appropriate for invocation-side use. + + Args: + subscription: A base.Subscription indicating the customer's interest in the + data and results from the service-side of the operation. + lock: The operation-wide lock. + pool: A thread pool in which to execute customer code. + termination_manager: The _interfaces.TerminationManager for the operation. + transmission_manager: The _interfaces.TransmissionManager for the + operation. + expiration_manager: The _interfaces.ExpirationManager for the operation. + + Returns: + An IngestionManager appropriate for invocation-side use. + """ + return _IngestionManager( + lock, pool, subscription, None, termination_manager, transmission_manager, + expiration_manager) + + +def service_ingestion_manager( + servicer, operation_context, output_operator, lock, pool, + termination_manager, transmission_manager, expiration_manager): + """Creates an IngestionManager appropriate for service-side use. + + The returned IngestionManager will require its set_group_and_name method to be + called before its advance method may be called. + + Args: + servicer: A base.Servicer for servicing the operation. + operation_context: A base.OperationContext for the operation to be passed to + the customer. + output_operator: A base.Operator for the operation to be passed to the + customer and to be called by the customer to accept operation data output + by the customer. + lock: The operation-wide lock. + pool: A thread pool in which to execute customer code. + termination_manager: The _interfaces.TerminationManager for the operation. + transmission_manager: The _interfaces.TransmissionManager for the + operation. + expiration_manager: The _interfaces.ExpirationManager for the operation. + + Returns: + An IngestionManager appropriate for service-side use. + """ + subscription_creator = _ServiceSubscriptionCreator( + servicer, operation_context, output_operator) + return _IngestionManager( + lock, pool, None, subscription_creator, termination_manager, + transmission_manager, expiration_manager) diff --git a/src/python/grpcio/grpc/framework/core/_interfaces.py b/src/python/grpcio/grpc/framework/core/_interfaces.py new file mode 100644 index 0000000000..a626b9f767 --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_interfaces.py @@ -0,0 +1,308 @@ +# 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. + +"""Package-internal interfaces.""" + +import abc + +from grpc.framework.interfaces.base import base + + +class TerminationManager(object): + """An object responsible for handling the termination of an operation. + + Attributes: + outcome: None if the operation is active or a base.Outcome value if it has + terminated. + """ + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def add_callback(self, callback): + """Registers a callback to be called on operation termination. + + If the operation has already terminated the callback will not be called. + + Args: + callback: A callable that will be passed an interfaces.Outcome value. + + Returns: + None if the operation has not yet terminated and the passed callback will + be called when it does, or a base.Outcome value describing the operation + termination if the operation has terminated and the callback will not be + called as a result of this method call. + """ + raise NotImplementedError() + + @abc.abstractmethod + def emission_complete(self): + """Indicates that emissions from customer code have completed.""" + raise NotImplementedError() + + @abc.abstractmethod + def transmission_complete(self): + """Indicates that transmissions to the remote end are complete. + + Returns: + True if the operation has terminated or False if the operation remains + ongoing. + """ + raise NotImplementedError() + + @abc.abstractmethod + def reception_complete(self): + """Indicates that reception from the other side is complete.""" + raise NotImplementedError() + + @abc.abstractmethod + def ingestion_complete(self): + """Indicates that customer code ingestion of received values is complete.""" + raise NotImplementedError() + + @abc.abstractmethod + def expire(self): + """Indicates that the operation must abort because it has taken too long.""" + raise NotImplementedError() + + @abc.abstractmethod + def abort(self, outcome): + """Indicates that the operation must abort for the indicated reason. + + Args: + outcome: An interfaces.Outcome indicating operation abortion. + """ + raise NotImplementedError() + + +class TransmissionManager(object): + """A manager responsible for transmitting to the other end of an operation.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def kick_off( + self, group, method, timeout, initial_metadata, payload, completion, + allowance): + """Transmits the values associated with operation invocation.""" + raise NotImplementedError() + + @abc.abstractmethod + def advance(self, initial_metadata, payload, completion, allowance): + """Accepts values for transmission to the other end of the operation. + + Args: + initial_metadata: An initial metadata value to be transmitted to the other + side of the operation. May only ever be non-None once. + payload: A payload value. + completion: A base.Completion value. May only ever be non-None in the last + transmission to be made to the other side. + allowance: A positive integer communicating the number of additional + payloads allowed to be transmitted from the other side to this side of + the operation, or None if no additional allowance is being granted in + this call. + """ + raise NotImplementedError() + + @abc.abstractmethod + def timeout(self, timeout): + """Accepts for transmission to the other side a new timeout value. + + Args: + timeout: A positive float used as the new timeout value for the operation + to be transmitted to the other side. + """ + raise NotImplementedError() + + @abc.abstractmethod + def allowance(self, allowance): + """Indicates to this manager that the remote customer is allowing payloads. + + Args: + allowance: A positive integer indicating the number of additional payloads + the remote customer is allowing to be transmitted from this side of the + operation. + """ + raise NotImplementedError() + + @abc.abstractmethod + def remote_complete(self): + """Indicates to this manager that data from the remote side is complete.""" + raise NotImplementedError() + + @abc.abstractmethod + def abort(self, outcome): + """Indicates that the operation has aborted. + + Args: + outcome: An interfaces.Outcome for the operation. If None, indicates that + the operation abortion should not be communicated to the other side of + the operation. + """ + raise NotImplementedError() + + +class ExpirationManager(object): + """A manager responsible for aborting the operation if it runs out of time.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def change_timeout(self, timeout): + """Changes the timeout allotted for the operation. + + Operation duration is always measure from the beginning of the operation; + calling this method changes the operation's allotted time to timeout total + seconds, not timeout seconds from the time of this method call. + + Args: + timeout: A length of time in seconds to allow for the operation. + """ + raise NotImplementedError() + + @abc.abstractmethod + def deadline(self): + """Returns the time until which the operation is allowed to run. + + Returns: + The time (seconds since the epoch) at which the operation will expire. + """ + raise NotImplementedError() + + @abc.abstractmethod + def terminate(self): + """Indicates to this manager that the operation has terminated.""" + raise NotImplementedError() + + +class EmissionManager(base.Operator): + """A manager of values emitted by customer code.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def advance( + self, initial_metadata=None, payload=None, completion=None, + allowance=None): + """Accepts a value emitted by customer code. + + This method should only be called by customer code. + + Args: + initial_metadata: An initial metadata value emitted by the local customer + to be sent to the other side of the operation. + payload: A payload value emitted by the local customer to be sent to the + other side of the operation. + completion: A Completion value emitted by the local customer to be sent to + the other side of the operation. + allowance: A positive integer indicating an additional number of payloads + that the local customer is willing to accept from the other side of the + operation. + """ + raise NotImplementedError() + + +class IngestionManager(object): + """A manager responsible for executing customer code. + + This name of this manager comes from its responsibility to pass successive + values from the other side of the operation into the code of the local + customer. + """ + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def set_group_and_method(self, group, method): + """Communicates to this IngestionManager the operation group and method. + + Args: + group: The group identifier of the operation. + method: The method identifier of the operation. + """ + raise NotImplementedError() + + @abc.abstractmethod + def add_local_allowance(self, allowance): + """Communicates to this IngestionManager that more payloads may be ingested. + + Args: + allowance: A positive integer indicating an additional number of payloads + that the local customer is willing to ingest. + """ + raise NotImplementedError() + + @abc.abstractmethod + def local_emissions_done(self): + """Indicates to this manager that local emissions are done.""" + raise NotImplementedError() + + @abc.abstractmethod + def advance(self, initial_metadata, payload, completion, allowance): + """Advances the operation by passing values to the local customer.""" + raise NotImplementedError() + + +class ReceptionManager(object): + """A manager responsible for receiving tickets from the other end.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def receive_ticket(self, ticket): + """Handle a ticket from the other side of the operation. + + Args: + ticket: An interfaces.BackToFrontTicket or interfaces.FrontToBackTicket + appropriate to this end of the operation and this object. + """ + raise NotImplementedError() + + +class Operation(object): + """An ongoing operation. + + Attributes: + context: A base.OperationContext object for the operation. + operator: A base.Operator object for the operation for use by the customer + of the operation. + """ + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def handle_ticket(self, ticket): + """Handle a ticket from the other side of the operation. + + Args: + ticket: A links.Ticket from the other side of the operation. + """ + raise NotImplementedError() + + @abc.abstractmethod + def abort(self, outcome): + """Aborts the operation. + + Args: + outcome: A base.Outcome value indicating operation abortion. + """ + raise NotImplementedError() diff --git a/src/python/grpcio/grpc/framework/core/_operation.py b/src/python/grpcio/grpc/framework/core/_operation.py new file mode 100644 index 0000000000..d20e40a53d --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_operation.py @@ -0,0 +1,192 @@ +# 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. + +"""Implementation of operations.""" + +import threading + +# _utilities is referenced from specification in this module. +from grpc.framework.core import _context +from grpc.framework.core import _emission +from grpc.framework.core import _expiration +from grpc.framework.core import _ingestion +from grpc.framework.core import _interfaces +from grpc.framework.core import _reception +from grpc.framework.core import _termination +from grpc.framework.core import _transmission +from grpc.framework.core import _utilities # pylint: disable=unused-import + + +class _EasyOperation(_interfaces.Operation): + """A trivial implementation of interfaces.Operation.""" + + def __init__( + self, lock, termination_manager, transmission_manager, expiration_manager, + context, operator, reception_manager): + """Constructor. + + Args: + lock: The operation-wide lock. + termination_manager: The _interfaces.TerminationManager for the operation. + transmission_manager: The _interfaces.TransmissionManager for the + operation. + expiration_manager: The _interfaces.ExpirationManager for the operation. + context: A base.OperationContext for use by the customer during the + operation. + operator: A base.Operator for use by the customer during the operation. + reception_manager: The _interfaces.ReceptionManager for the operation. + """ + self._lock = lock + self._termination_manager = termination_manager + self._transmission_manager = transmission_manager + self._expiration_manager = expiration_manager + self._reception_manager = reception_manager + + self.context = context + self.operator = operator + + def handle_ticket(self, ticket): + with self._lock: + self._reception_manager.receive_ticket(ticket) + + def abort(self, outcome): + with self._lock: + if self._termination_manager.outcome is None: + self._termination_manager.abort(outcome) + self._transmission_manager.abort(outcome) + self._expiration_manager.terminate() + + +def invocation_operate( + operation_id, group, method, subscription, timeout, initial_metadata, + payload, completion, ticket_sink, termination_action, pool): + """Constructs objects necessary for front-side operation management. + + Args: + operation_id: An object identifying the operation. + group: The group identifier of the operation. + method: The method identifier of the operation. + subscription: A base.Subscription describing the customer's interest in the + results of the operation. + timeout: A length of time in seconds to allow for the operation. + initial_metadata: An initial metadata value to be sent to the other side of + the operation. May be None if the initial metadata will be passed later or + if there will be no initial metadata passed at all. + payload: The first payload value to be transmitted to the other side. May be + None if there is no such value or if the customer chose not to pass it at + operation invocation. + completion: A base.Completion value indicating the end of values passed to + the other side of the operation. + ticket_sink: A callable that accepts links.Tickets and delivers them to the + other side of the operation. + termination_action: A callable that accepts the outcome of the operation as + a base.Outcome value to be called on operation completion. + pool: A thread pool with which to do the work of the operation. + + Returns: + An _interfaces.Operation for the operation. + """ + lock = threading.Lock() + with lock: + termination_manager = _termination.invocation_termination_manager( + termination_action, pool) + transmission_manager = _transmission.TransmissionManager( + operation_id, ticket_sink, lock, pool, termination_manager) + expiration_manager = _expiration.invocation_expiration_manager( + timeout, lock, termination_manager, transmission_manager) + operation_context = _context.OperationContext( + lock, termination_manager, transmission_manager, expiration_manager) + emission_manager = _emission.EmissionManager( + lock, termination_manager, transmission_manager, expiration_manager) + ingestion_manager = _ingestion.invocation_ingestion_manager( + subscription, lock, pool, termination_manager, transmission_manager, + expiration_manager) + reception_manager = _reception.ReceptionManager( + termination_manager, transmission_manager, expiration_manager, + ingestion_manager) + + termination_manager.set_expiration_manager(expiration_manager) + transmission_manager.set_expiration_manager(expiration_manager) + emission_manager.set_ingestion_manager(ingestion_manager) + + transmission_manager.kick_off( + group, method, timeout, initial_metadata, payload, completion, None) + + return _EasyOperation( + lock, termination_manager, transmission_manager, expiration_manager, + operation_context, emission_manager, reception_manager) + + +def service_operate( + servicer_package, ticket, ticket_sink, termination_action, pool): + """Constructs an Operation for service of an operation. + + Args: + servicer_package: A _utilities.ServicerPackage to be used servicing the + operation. + ticket: The first links.Ticket received for the operation. + ticket_sink: A callable that accepts links.Tickets and delivers them to the + other side of the operation. + termination_action: A callable that accepts the outcome of the operation as + a base.Outcome value to be called on operation completion. + pool: A thread pool with which to do the work of the operation. + + Returns: + An _interfaces.Operation for the operation. + """ + lock = threading.Lock() + with lock: + termination_manager = _termination.service_termination_manager( + termination_action, pool) + transmission_manager = _transmission.TransmissionManager( + ticket.operation_id, ticket_sink, lock, pool, termination_manager) + expiration_manager = _expiration.service_expiration_manager( + ticket.timeout, servicer_package.default_timeout, + servicer_package.maximum_timeout, lock, termination_manager, + transmission_manager) + operation_context = _context.OperationContext( + lock, termination_manager, transmission_manager, expiration_manager) + emission_manager = _emission.EmissionManager( + lock, termination_manager, transmission_manager, expiration_manager) + ingestion_manager = _ingestion.service_ingestion_manager( + servicer_package.servicer, operation_context, emission_manager, lock, + pool, termination_manager, transmission_manager, expiration_manager) + reception_manager = _reception.ReceptionManager( + termination_manager, transmission_manager, expiration_manager, + ingestion_manager) + + termination_manager.set_expiration_manager(expiration_manager) + transmission_manager.set_expiration_manager(expiration_manager) + emission_manager.set_ingestion_manager(ingestion_manager) + + reception_manager.receive_ticket(ticket) + + return _EasyOperation( + lock, termination_manager, transmission_manager, expiration_manager, + operation_context, emission_manager, reception_manager) diff --git a/src/python/grpcio/grpc/framework/core/_reception.py b/src/python/grpcio/grpc/framework/core/_reception.py new file mode 100644 index 0000000000..b64faf8146 --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_reception.py @@ -0,0 +1,137 @@ +# 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. + +"""State and behavior for ticket reception.""" + +from grpc.framework.core import _interfaces +from grpc.framework.interfaces.base import base +from grpc.framework.interfaces.base import utilities +from grpc.framework.interfaces.links import links + +_REMOTE_TICKET_TERMINATION_TO_LOCAL_OUTCOME = { + links.Ticket.Termination.CANCELLATION: base.Outcome.CANCELLED, + links.Ticket.Termination.EXPIRATION: base.Outcome.EXPIRED, + links.Ticket.Termination.SHUTDOWN: base.Outcome.REMOTE_SHUTDOWN, + links.Ticket.Termination.RECEPTION_FAILURE: base.Outcome.RECEPTION_FAILURE, + links.Ticket.Termination.TRANSMISSION_FAILURE: + base.Outcome.TRANSMISSION_FAILURE, + links.Ticket.Termination.LOCAL_FAILURE: base.Outcome.REMOTE_FAILURE, +} + + +class ReceptionManager(_interfaces.ReceptionManager): + """A ReceptionManager based around a _Receiver passed to it.""" + + def __init__( + self, termination_manager, transmission_manager, expiration_manager, + ingestion_manager): + """Constructor. + + Args: + termination_manager: The operation's _interfaces.TerminationManager. + transmission_manager: The operation's _interfaces.TransmissionManager. + expiration_manager: The operation's _interfaces.ExpirationManager. + ingestion_manager: The operation's _interfaces.IngestionManager. + """ + self._termination_manager = termination_manager + self._transmission_manager = transmission_manager + self._expiration_manager = expiration_manager + self._ingestion_manager = ingestion_manager + + self._lowest_unseen_sequence_number = 0 + self._out_of_sequence_tickets = {} + self._aborted = False + + def _abort(self, outcome): + self._aborted = True + self._termination_manager.abort(outcome) + self._transmission_manager.abort(outcome) + self._expiration_manager.terminate() + + def _sequence_failure(self, ticket): + """Determines a just-arrived ticket's sequential legitimacy. + + Args: + ticket: A just-arrived ticket. + + Returns: + True if the ticket is sequentially legitimate; False otherwise. + """ + if ticket.sequence_number < self._lowest_unseen_sequence_number: + return True + elif ticket.sequence_number in self._out_of_sequence_tickets: + return True + else: + return False + + def _process_one(self, ticket): + if ticket.sequence_number == 0: + self._ingestion_manager.set_group_and_method(ticket.group, ticket.method) + if ticket.timeout is not None: + self._expiration_manager.change_timeout(ticket.timeout) + if ticket.termination is None: + completion = None + else: + completion = utilities.completion( + ticket.terminal_metadata, ticket.code, ticket.message) + self._ingestion_manager.advance( + ticket.initial_metadata, ticket.payload, completion, ticket.allowance) + if ticket.allowance is not None: + self._transmission_manager.allowance(ticket.allowance) + + def _process(self, ticket): + """Process those tickets ready to be processed. + + Args: + ticket: A just-arrived ticket the sequence number of which matches this + _ReceptionManager's _lowest_unseen_sequence_number field. + """ + while True: + self._process_one(ticket) + next_ticket = self._out_of_sequence_tickets.pop( + ticket.sequence_number + 1, None) + if next_ticket is None: + self._lowest_unseen_sequence_number = ticket.sequence_number + 1 + return + else: + ticket = next_ticket + + def receive_ticket(self, ticket): + """See _interfaces.ReceptionManager.receive_ticket for specification.""" + if self._aborted: + return + elif self._sequence_failure(ticket): + self._abort(base.Outcome.RECEPTION_FAILURE) + elif ticket.termination not in (None, links.Ticket.Termination.COMPLETION): + outcome = _REMOTE_TICKET_TERMINATION_TO_LOCAL_OUTCOME[ticket.termination] + self._abort(outcome) + elif ticket.sequence_number == self._lowest_unseen_sequence_number: + self._process(ticket) + else: + self._out_of_sequence_tickets[ticket.sequence_number] = ticket diff --git a/src/python/grpcio/grpc/framework/core/_termination.py b/src/python/grpcio/grpc/framework/core/_termination.py new file mode 100644 index 0000000000..ad9f6123d8 --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_termination.py @@ -0,0 +1,212 @@ +# 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. + +"""State and behavior for operation termination.""" + +import abc + +from grpc.framework.core import _constants +from grpc.framework.core import _interfaces +from grpc.framework.foundation import callable_util +from grpc.framework.interfaces.base import base + + +def _invocation_completion_predicate( + unused_emission_complete, unused_transmission_complete, + unused_reception_complete, ingestion_complete): + return ingestion_complete + + +def _service_completion_predicate( + unused_emission_complete, transmission_complete, unused_reception_complete, + unused_ingestion_complete): + return transmission_complete + + +class TerminationManager(_interfaces.TerminationManager): + """A _interfaces.TransmissionManager on which another manager may be set.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def set_expiration_manager(self, expiration_manager): + """Sets the expiration manager with which this manager will interact. + + Args: + expiration_manager: The _interfaces.ExpirationManager associated with the + current operation. + """ + raise NotImplementedError() + + +class _TerminationManager(TerminationManager): + """An implementation of TerminationManager.""" + + def __init__(self, predicate, action, pool): + """Constructor. + + Args: + predicate: One of _invocation_completion_predicate or + _service_completion_predicate to be used to determine when the operation + has completed. + action: A behavior to pass the operation outcome on operation termination. + pool: A thread pool. + """ + self._predicate = predicate + self._action = action + self._pool = pool + self._expiration_manager = None + + self.outcome = None + self._callbacks = [] + + self._emission_complete = False + self._transmission_complete = False + self._reception_complete = False + self._ingestion_complete = False + + def set_expiration_manager(self, expiration_manager): + self._expiration_manager = expiration_manager + + def _terminate_internal_only(self, outcome): + """Terminates the operation. + + Args: + outcome: A base.Outcome describing the outcome of the operation. + """ + self.outcome = outcome + callbacks = list(self._callbacks) + self._callbacks = None + + act = callable_util.with_exceptions_logged( + self._action, _constants.INTERNAL_ERROR_LOG_MESSAGE) + + if outcome is base.Outcome.LOCAL_FAILURE: + self._pool.submit(act, outcome) + else: + def call_callbacks_and_act(callbacks, outcome): + for callback in callbacks: + callback_outcome = callable_util.call_logging_exceptions( + callback, _constants.TERMINATION_CALLBACK_EXCEPTION_LOG_MESSAGE, + outcome) + if callback_outcome.exception is not None: + outcome = base.Outcome.LOCAL_FAILURE + break + act(outcome) + + self._pool.submit( + callable_util.with_exceptions_logged( + call_callbacks_and_act, _constants.INTERNAL_ERROR_LOG_MESSAGE), + callbacks, outcome) + + def _terminate_and_notify(self, outcome): + self._terminate_internal_only(outcome) + self._expiration_manager.terminate() + + def _perhaps_complete(self): + if self._predicate( + self._emission_complete, self._transmission_complete, + self._reception_complete, self._ingestion_complete): + self._terminate_and_notify(base.Outcome.COMPLETED) + return True + else: + return False + + def is_active(self): + """See _interfaces.TerminationManager.is_active for specification.""" + return self.outcome is None + + def add_callback(self, callback): + """See _interfaces.TerminationManager.add_callback for specification.""" + if self.outcome is None: + self._callbacks.append(callback) + return None + else: + return self.outcome + + def emission_complete(self): + """See superclass method for specification.""" + if self.outcome is None: + self._emission_complete = True + self._perhaps_complete() + + def transmission_complete(self): + """See superclass method for specification.""" + if self.outcome is None: + self._transmission_complete = True + return self._perhaps_complete() + else: + return False + + def reception_complete(self): + """See superclass method for specification.""" + if self.outcome is None: + self._reception_complete = True + self._perhaps_complete() + + def ingestion_complete(self): + """See superclass method for specification.""" + if self.outcome is None: + self._ingestion_complete = True + self._perhaps_complete() + + def expire(self): + """See _interfaces.TerminationManager.expire for specification.""" + self._terminate_internal_only(base.Outcome.EXPIRED) + + def abort(self, outcome): + """See _interfaces.TerminationManager.abort for specification.""" + self._terminate_and_notify(outcome) + + +def invocation_termination_manager(action, pool): + """Creates a TerminationManager appropriate for invocation-side use. + + Args: + action: An action to call on operation termination. + pool: A thread pool in which to execute the passed action and any + termination callbacks that are registered during the operation. + + Returns: + A TerminationManager appropriate for invocation-side use. + """ + return _TerminationManager(_invocation_completion_predicate, action, pool) + + +def service_termination_manager(action, pool): + """Creates a TerminationManager appropriate for service-side use. + + Args: + action: An action to call on operation termination. + pool: A thread pool in which to execute the passed action and any + termination callbacks that are registered during the operation. + + Returns: + A TerminationManager appropriate for service-side use. + """ + return _TerminationManager(_service_completion_predicate, action, pool) diff --git a/src/python/grpcio/grpc/framework/core/_transmission.py b/src/python/grpcio/grpc/framework/core/_transmission.py new file mode 100644 index 0000000000..01894d398d --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_transmission.py @@ -0,0 +1,294 @@ +# 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. + +"""State and behavior for ticket transmission during an operation.""" + +from grpc.framework.core import _constants +from grpc.framework.core import _interfaces +from grpc.framework.foundation import callable_util +from grpc.framework.interfaces.base import base +from grpc.framework.interfaces.links import links + +_TRANSMISSION_EXCEPTION_LOG_MESSAGE = 'Exception during transmission!' + + +def _explode_completion(completion): + if completion is None: + return None, None, None, None + else: + return ( + completion.terminal_metadata, completion.code, completion.message, + links.Ticket.Termination.COMPLETION) + + +class TransmissionManager(_interfaces.TransmissionManager): + """An _interfaces.TransmissionManager that sends links.Tickets.""" + + def __init__( + self, operation_id, ticket_sink, lock, pool, termination_manager): + """Constructor. + + Args: + operation_id: The operation's ID. + ticket_sink: A callable that accepts tickets and sends them to the other + side of the operation. + lock: The operation-servicing-wide lock object. + pool: A thread pool in which the work of transmitting tickets will be + performed. + termination_manager: The _interfaces.TerminationManager associated with + this operation. + """ + self._lock = lock + self._pool = pool + self._ticket_sink = ticket_sink + self._operation_id = operation_id + self._termination_manager = termination_manager + self._expiration_manager = None + + self._lowest_unused_sequence_number = 0 + self._remote_allowance = 1 + self._remote_complete = False + self._timeout = None + self._local_allowance = 0 + self._initial_metadata = None + self._payloads = [] + self._completion = None + self._aborted = False + self._abortion_outcome = None + self._transmitting = False + + def set_expiration_manager(self, expiration_manager): + """Sets the ExpirationManager with which this manager will cooperate.""" + self._expiration_manager = expiration_manager + + def _next_ticket(self): + """Creates the next ticket to be transmitted. + + Returns: + A links.Ticket to be sent to the other side of the operation or None if + there is nothing to be sent at this time. + """ + if self._aborted: + if self._abortion_outcome is None: + return None + else: + termination = _constants.ABORTION_OUTCOME_TO_TICKET_TERMINATION[ + self._abortion_outcome] + if termination is None: + return None + else: + self._abortion_outcome = None + return links.Ticket( + self._operation_id, self._lowest_unused_sequence_number, None, + None, None, None, None, None, None, None, None, None, + termination) + + action = False + # TODO(nathaniel): Support other subscriptions. + local_subscription = links.Ticket.Subscription.FULL + timeout = self._timeout + if timeout is not None: + self._timeout = None + action = True + if self._local_allowance <= 0: + allowance = None + else: + allowance = self._local_allowance + self._local_allowance = 0 + action = True + initial_metadata = self._initial_metadata + if initial_metadata is not None: + self._initial_metadata = None + action = True + if not self._payloads or self._remote_allowance <= 0: + payload = None + else: + payload = self._payloads.pop(0) + self._remote_allowance -= 1 + action = True + if self._completion is None or self._payloads: + terminal_metadata, code, message, termination = None, None, None, None + else: + terminal_metadata, code, message, termination = _explode_completion( + self._completion) + self._completion = None + action = True + + if action: + ticket = links.Ticket( + self._operation_id, self._lowest_unused_sequence_number, None, None, + local_subscription, timeout, allowance, initial_metadata, payload, + terminal_metadata, code, message, termination) + self._lowest_unused_sequence_number += 1 + return ticket + else: + return None + + def _transmit(self, ticket): + """Commences the transmission loop sending tickets. + + Args: + ticket: A links.Ticket to be sent to the other side of the operation. + """ + def transmit(ticket): + while True: + transmission_outcome = callable_util.call_logging_exceptions( + self._ticket_sink, _TRANSMISSION_EXCEPTION_LOG_MESSAGE, ticket) + if transmission_outcome.exception is None: + with self._lock: + if ticket.termination is links.Ticket.Termination.COMPLETION: + self._termination_manager.transmission_complete() + ticket = self._next_ticket() + if ticket is None: + self._transmitting = False + return + else: + with self._lock: + if self._termination_manager.outcome is None: + self._termination_manager.abort(base.Outcome.TRANSMISSION_FAILURE) + self._expiration_manager.terminate() + return + + self._pool.submit(callable_util.with_exceptions_logged( + transmit, _constants.INTERNAL_ERROR_LOG_MESSAGE), ticket) + self._transmitting = True + + def kick_off( + self, group, method, timeout, initial_metadata, payload, completion, + allowance): + """See _interfaces.TransmissionManager.kickoff for specification.""" + # TODO(nathaniel): Support other subscriptions. + subscription = links.Ticket.Subscription.FULL + terminal_metadata, code, message, termination = _explode_completion( + completion) + self._remote_allowance = 1 if payload is None else 0 + ticket = links.Ticket( + self._operation_id, 0, group, method, subscription, timeout, allowance, + initial_metadata, payload, terminal_metadata, code, message, + termination) + self._lowest_unused_sequence_number = 1 + self._transmit(ticket) + + def advance(self, initial_metadata, payload, completion, allowance): + """See _interfaces.TransmissionManager.advance for specification.""" + effective_initial_metadata = initial_metadata + effective_payload = payload + effective_completion = completion + if allowance is not None and not self._remote_complete: + effective_allowance = allowance + else: + effective_allowance = None + if self._transmitting: + if effective_initial_metadata is not None: + self._initial_metadata = effective_initial_metadata + if effective_payload is not None: + self._payloads.append(effective_payload) + if effective_completion is not None: + self._completion = effective_completion + if effective_allowance is not None: + self._local_allowance += effective_allowance + else: + if effective_payload is not None: + if 0 < self._remote_allowance: + ticket_payload = effective_payload + self._remote_allowance -= 1 + else: + self._payloads.append(effective_payload) + ticket_payload = None + else: + ticket_payload = None + if effective_completion is not None and not self._payloads: + ticket_completion = effective_completion + else: + self._completion = effective_completion + ticket_completion = None + if any( + (effective_initial_metadata, ticket_payload, ticket_completion, + effective_allowance)): + terminal_metadata, code, message, termination = _explode_completion( + completion) + ticket = links.Ticket( + self._operation_id, self._lowest_unused_sequence_number, None, None, + None, None, allowance, effective_initial_metadata, ticket_payload, + terminal_metadata, code, message, termination) + self._lowest_unused_sequence_number += 1 + self._transmit(ticket) + + def timeout(self, timeout): + """See _interfaces.TransmissionManager.timeout for specification.""" + if self._transmitting: + self._timeout = timeout + else: + ticket = links.Ticket( + self._operation_id, self._lowest_unused_sequence_number, None, None, + None, timeout, None, None, None, None, None, None, None) + self._lowest_unused_sequence_number += 1 + self._transmit(ticket) + + def allowance(self, allowance): + """See _interfaces.TransmissionManager.allowance for specification.""" + if self._transmitting or not self._payloads: + self._remote_allowance += allowance + else: + self._remote_allowance += allowance - 1 + payload = self._payloads.pop(0) + if self._payloads: + completion = None + else: + completion = self._completion + self._completion = None + terminal_metadata, code, message, termination = _explode_completion( + completion) + ticket = links.Ticket( + self._operation_id, self._lowest_unused_sequence_number, None, None, + None, None, None, None, payload, terminal_metadata, code, message, + termination) + self._lowest_unused_sequence_number += 1 + self._transmit(ticket) + + def remote_complete(self): + """See _interfaces.TransmissionManager.remote_complete for specification.""" + self._remote_complete = True + self._local_allowance = 0 + + def abort(self, outcome): + """See _interfaces.TransmissionManager.abort for specification.""" + if self._transmitting: + self._aborted, self._abortion_outcome = True, outcome + else: + self._aborted = True + if outcome is not None: + termination = _constants.ABORTION_OUTCOME_TO_TICKET_TERMINATION[ + outcome] + if termination is not None: + ticket = links.Ticket( + self._operation_id, self._lowest_unused_sequence_number, None, + None, None, None, None, None, None, None, None, None, + termination) + self._transmit(ticket) diff --git a/src/python/grpcio/grpc/framework/core/_utilities.py b/src/python/grpcio/grpc/framework/core/_utilities.py new file mode 100644 index 0000000000..5b0d798751 --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/_utilities.py @@ -0,0 +1,46 @@ +# 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. + +"""Package-internal utilities.""" + +import collections + + +class ServicerPackage( + collections.namedtuple( + 'ServicerPackage', ('servicer', 'default_timeout', 'maximum_timeout'))): + """A trivial bundle class. + + Attributes: + servicer: A base.Servicer. + default_timeout: A float indicating the length of time in seconds to allow + for an operation invoked without a timeout. + maximum_timeout: A float indicating the maximum length of time in seconds to + allow for an operation. + """ diff --git a/src/python/grpcio/grpc/framework/core/implementations.py b/src/python/grpcio/grpc/framework/core/implementations.py new file mode 100644 index 0000000000..364a7faed4 --- /dev/null +++ b/src/python/grpcio/grpc/framework/core/implementations.py @@ -0,0 +1,62 @@ +# 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. + +"""Entry points into the ticket-exchange-based base layer implementation.""" + +# base and links are referenced from specification in this module. +from grpc.framework.core import _end +from grpc.framework.interfaces.base import base # pylint: disable=unused-import +from grpc.framework.interfaces.links import links # pylint: disable=unused-import + + +def invocation_end_link(): + """Creates a base.End-links.Link suitable for operation invocation. + + Returns: + An object that is both a base.End and a links.Link, that supports operation + invocation, and that translates operation invocation into ticket exchange. + """ + return _end.serviceless_end_link() + + +def service_end_link(servicer, default_timeout, maximum_timeout): + """Creates a base.End-links.Link suitable for operation service. + + Args: + servicer: A base.Servicer for servicing operations. + default_timeout: A length of time in seconds to be used as the default + time alloted for a single operation. + maximum_timeout: A length of time in seconds to be used as the maximum + time alloted for a single operation. + + Returns: + An object that is both a base.End and a links.Link and that services + operations that arrive at it through ticket exchange. + """ + return _end.serviceful_end_link(servicer, default_timeout, maximum_timeout) diff --git a/src/python/grpcio/grpc/framework/interfaces/base/base.py b/src/python/grpcio/grpc/framework/interfaces/base/base.py index 9d1651daac..76e0a5bdae 100644 --- a/src/python/grpcio/grpc/framework/interfaces/base/base.py +++ b/src/python/grpcio/grpc/framework/interfaces/base/base.py @@ -27,10 +27,20 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -"""The base interface of RPC Framework.""" +"""The base interface of RPC Framework. +Implementations of this interface support the conduct of "operations": +exchanges between two distinct ends of an arbitrary number of data payloads +and metadata such as a name for the operation, initial and terminal metadata +in each direction, and flow control. These operations may be used for transfers +of data, remote procedure calls, status indication, or anything else +applications choose. +""" + +# threading is referenced from specification in this module. import abc import enum +import threading # abandonment is referenced from specification in this module. from grpc.framework.foundation import abandonment # pylint: disable=unused-import @@ -208,19 +218,26 @@ class End(object): raise NotImplementedError() @abc.abstractmethod - def stop_gracefully(self): - """Gracefully stops this object's service of operations. + def stop(self, grace): + """Stops this object's service of operations. - Operations in progress will be allowed to complete, and this method blocks - until all of them have. - """ - raise NotImplementedError() + This object will refuse service of new operations as soon as this method is + called but operations under way at the time of the call may be given a + grace period during which they are allowed to finish. - @abc.abstractmethod - def stop_immediately(self): - """Immediately stops this object's service of operations. + Args: + grace: A duration of time in seconds to allow ongoing operations to + terminate before being forcefully terminated by the stopping of this + End. May be zero to terminate all ongoing operations and immediately + stop. - Operations in progress will not be allowed to complete. + Returns: + A threading.Event that will be set to indicate all operations having + terminated and this End having completely stopped. The returned event + may not be set until after the full grace period (if some ongoing + operation continues for the full length of the period) or it may be set + much sooner (if for example this End had no operations in progress at + the time its stop method was called). """ raise NotImplementedError() diff --git a/src/python/grpcio/grpc/framework/interfaces/links/links.py b/src/python/grpcio/grpc/framework/interfaces/links/links.py index 5ebbac8a6f..069ff024dd 100644 --- a/src/python/grpcio/grpc/framework/interfaces/links/links.py +++ b/src/python/grpcio/grpc/framework/interfaces/links/links.py @@ -98,7 +98,7 @@ class Ticket( COMPLETION = 'completion' CANCELLATION = 'cancellation' EXPIRATION = 'expiration' - LOCAL_SHUTDOWN = 'local shutdown' + SHUTDOWN = 'shutdown' RECEPTION_FAILURE = 'reception failure' TRANSMISSION_FAILURE = 'transmission failure' LOCAL_FAILURE = 'local failure' diff --git a/src/python/grpcio_test/grpc_test/_core_over_links_base_interface_test.py b/src/python/grpcio_test/grpc_test/_core_over_links_base_interface_test.py new file mode 100644 index 0000000000..72b1ae5642 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/_core_over_links_base_interface_test.py @@ -0,0 +1,165 @@ +# 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. + +"""Tests the RPC Framework Core's implementation of the Base interface.""" + +import collections +import logging +import random +import time +import unittest + +from grpc._adapter import _intermediary_low +from grpc._links import invocation +from grpc._links import service +from grpc.framework.core import implementations +from grpc.framework.interfaces.base import utilities +from grpc_test import test_common as grpc_test_common +from grpc_test.framework.common import test_constants +from grpc_test.framework.interfaces.base import test_cases +from grpc_test.framework.interfaces.base import test_interfaces + +_INVOCATION_INITIAL_METADATA = ((b'0', b'abc'), (b'1', b'def'), (b'2', b'ghi'),) +_SERVICE_INITIAL_METADATA = ((b'3', b'jkl'), (b'4', b'mno'), (b'5', b'pqr'),) +_SERVICE_TERMINAL_METADATA = ((b'6', b'stu'), (b'7', b'vwx'), (b'8', b'yza'),) +_CODE = _intermediary_low.Code.OK +_MESSAGE = b'test message' + + +class _SerializationBehaviors( + collections.namedtuple( + '_SerializationBehaviors', + ('request_serializers', 'request_deserializers', 'response_serializers', + 'response_deserializers',))): + pass + + +class _Links( + collections.namedtuple( + '_Links', + ('invocation_end_link', 'invocation_grpc_link', 'service_grpc_link', + 'service_end_link'))): + pass + + +def _serialization_behaviors_from_serializations(serializations): + request_serializers = {} + request_deserializers = {} + response_serializers = {} + response_deserializers = {} + for (group, method), serialization in serializations.iteritems(): + request_serializers[group, method] = serialization.serialize_request + request_deserializers[group, method] = serialization.deserialize_request + response_serializers[group, method] = serialization.serialize_response + response_deserializers[group, method] = serialization.deserialize_response + return _SerializationBehaviors( + request_serializers, request_deserializers, response_serializers, + response_deserializers) + + +class _Implementation(test_interfaces.Implementation): + + def instantiate(self, serializations, servicer): + serialization_behaviors = _serialization_behaviors_from_serializations( + serializations) + invocation_end_link = implementations.invocation_end_link() + service_end_link = implementations.service_end_link( + servicer, test_constants.DEFAULT_TIMEOUT, + test_constants.MAXIMUM_TIMEOUT) + service_grpc_link = service.service_link( + serialization_behaviors.request_deserializers, + serialization_behaviors.response_serializers) + port = service_grpc_link.add_port(0, None) + channel = _intermediary_low.Channel('localhost:%d' % port, None) + invocation_grpc_link = invocation.invocation_link( + channel, b'localhost', + serialization_behaviors.request_serializers, + serialization_behaviors.response_deserializers) + + invocation_end_link.join_link(invocation_grpc_link) + invocation_grpc_link.join_link(invocation_end_link) + service_end_link.join_link(service_grpc_link) + service_grpc_link.join_link(service_end_link) + invocation_grpc_link.start() + service_grpc_link.start() + return invocation_end_link, service_end_link, ( + invocation_grpc_link, service_grpc_link) + + def destantiate(self, memo): + invocation_grpc_link, service_grpc_link = memo + invocation_grpc_link.stop() + service_grpc_link.stop_gracefully() + + def invocation_initial_metadata(self): + return _INVOCATION_INITIAL_METADATA + + def service_initial_metadata(self): + return _SERVICE_INITIAL_METADATA + + def invocation_completion(self): + return utilities.completion(None, None, None) + + def service_completion(self): + return utilities.completion(_SERVICE_TERMINAL_METADATA, _CODE, _MESSAGE) + + def metadata_transmitted(self, original_metadata, transmitted_metadata): + return original_metadata is None or grpc_test_common.metadata_transmitted( + original_metadata, transmitted_metadata) + + def completion_transmitted(self, original_completion, transmitted_completion): + if (original_completion.terminal_metadata is not None and + not grpc_test_common.metadata_transmitted( + original_completion.terminal_metadata, + transmitted_completion.terminal_metadata)): + return False + elif original_completion.code is not transmitted_completion.code: + return False + elif original_completion.message != transmitted_completion.message: + return False + else: + return True + + +def setUpModule(): + logging.warn('setUpModule!') + + +def tearDownModule(): + logging.warn('tearDownModule!') + + +def load_tests(loader, tests, pattern): + return unittest.TestSuite( + tests=tuple( + loader.loadTestsFromTestCase(test_case_class) + for test_case_class in test_cases.test_cases(_Implementation()))) + + +if __name__ == '__main__': + unittest.main(verbosity=2) diff --git a/src/python/grpcio_test/grpc_test/framework/core/__init__.py b/src/python/grpcio_test/grpc_test/framework/core/__init__.py new file mode 100644 index 0000000000..7086519106 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/core/__init__.py @@ -0,0 +1,30 @@ +# 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. + + diff --git a/src/python/grpcio_test/grpc_test/framework/core/_base_interface_test.py b/src/python/grpcio_test/grpc_test/framework/core/_base_interface_test.py new file mode 100644 index 0000000000..8d72f131d5 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/core/_base_interface_test.py @@ -0,0 +1,96 @@ +# 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. + +"""Tests the RPC Framework Core's implementation of the Base interface.""" + +import logging +import random +import time +import unittest + +from grpc.framework.core import implementations +from grpc.framework.interfaces.base import utilities +from grpc_test.framework.common import test_constants +from grpc_test.framework.interfaces.base import test_cases +from grpc_test.framework.interfaces.base import test_interfaces + + +class _Implementation(test_interfaces.Implementation): + + def __init__(self): + self._invocation_initial_metadata = object() + self._service_initial_metadata = object() + self._invocation_terminal_metadata = object() + self._service_terminal_metadata = object() + + def instantiate(self, serializations, servicer): + invocation = implementations.invocation_end_link() + service = implementations.service_end_link( + servicer, test_constants.DEFAULT_TIMEOUT, + test_constants.MAXIMUM_TIMEOUT) + invocation.join_link(service) + service.join_link(invocation) + return invocation, service, None + + def destantiate(self, memo): + pass + + def invocation_initial_metadata(self): + return self._invocation_initial_metadata + + def service_initial_metadata(self): + return self._service_initial_metadata + + def invocation_completion(self): + return utilities.completion(self._invocation_terminal_metadata, None, None) + + def service_completion(self): + return utilities.completion(self._service_terminal_metadata, None, None) + + def metadata_transmitted(self, original_metadata, transmitted_metadata): + return transmitted_metadata is original_metadata + + def completion_transmitted(self, original_completion, transmitted_completion): + return ( + (original_completion.terminal_metadata is + transmitted_completion.terminal_metadata) and + original_completion.code is transmitted_completion.code and + original_completion.message is transmitted_completion.message + ) + + +def load_tests(loader, tests, pattern): + return unittest.TestSuite( + tests=tuple( + loader.loadTestsFromTestCase(test_case_class) + for test_case_class in test_cases.test_cases(_Implementation()))) + + +if __name__ == '__main__': + unittest.main(verbosity=2) diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/base/test_cases.py b/src/python/grpcio_test/grpc_test/framework/interfaces/base/test_cases.py index dd332fe5dd..5c8b176da4 100644 --- a/src/python/grpcio_test/grpc_test/framework/interfaces/base/test_cases.py +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/base/test_cases.py @@ -211,8 +211,10 @@ class _OperationTest(unittest.TestCase): elif instruction.kind is _control.Instruction.Kind.CONCLUDE: break - invocation_end.stop_gracefully() - service_end.stop_gracefully() + invocation_stop_event = invocation_end.stop(0) + service_stop_event = service_end.stop(0) + invocation_stop_event.wait() + service_stop_event.wait() invocation_stats = invocation_end.operation_stats() service_stats = service_end.operation_stats() diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py index 6c2e3346aa..a2bd7107c1 100644 --- a/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py @@ -29,9 +29,42 @@ """State and behavior appropriate for use in tests.""" +import logging import threading +import time from grpc.framework.interfaces.links import links +from grpc.framework.interfaces.links import utilities + +# A more-or-less arbitrary limit on the length of raw data values to be logged. +_UNCOMFORTABLY_LONG = 48 + + +def _safe_for_log_ticket(ticket): + """Creates a safe-for-printing-to-the-log ticket for a given ticket. + + Args: + ticket: Any links.Ticket. + + Returns: + A links.Ticket that is as much as can be equal to the given ticket but + possibly features values like the string "<payload of length 972321>" in + place of the actual values of the given ticket. + """ + if isinstance(ticket.payload, (basestring,)): + payload_length = len(ticket.payload) + else: + payload_length = -1 + if payload_length < _UNCOMFORTABLY_LONG: + return ticket + else: + return links.Ticket( + ticket.operation_id, ticket.sequence_number, + ticket.group, ticket.method, ticket.subscription, ticket.timeout, + ticket.allowance, ticket.initial_metadata, + '<payload of length {}>'.format(payload_length), + ticket.terminal_metadata, ticket.code, ticket.message, + ticket.termination) class RecordingLink(links.Link): @@ -64,3 +97,71 @@ class RecordingLink(links.Link): """Returns a copy of the list of all tickets received by this Link.""" with self._condition: return tuple(self._tickets) + + +class _Pipe(object): + """A conduit that logs all tickets passed through it.""" + + def __init__(self, name): + self._lock = threading.Lock() + self._name = name + self._left_mate = utilities.NULL_LINK + self._right_mate = utilities.NULL_LINK + + def accept_left_to_right_ticket(self, ticket): + with self._lock: + logging.warning( + '%s: moving left to right through %s: %s', time.time(), self._name, + _safe_for_log_ticket(ticket)) + try: + self._right_mate.accept_ticket(ticket) + except Exception as e: # pylint: disable=broad-except + logging.exception(e) + + def accept_right_to_left_ticket(self, ticket): + with self._lock: + logging.warning( + '%s: moving right to left through %s: %s', time.time(), self._name, + _safe_for_log_ticket(ticket)) + try: + self._left_mate.accept_ticket(ticket) + except Exception as e: # pylint: disable=broad-except + logging.exception(e) + + def join_left_mate(self, left_mate): + with self._lock: + self._left_mate = utilities.NULL_LINK if left_mate is None else left_mate + + def join_right_mate(self, right_mate): + with self._lock: + self._right_mate = ( + utilities.NULL_LINK if right_mate is None else right_mate) + + +class _Facade(links.Link): + + def __init__(self, accept, join): + self._accept = accept + self._join = join + + def accept_ticket(self, ticket): + self._accept(ticket) + + def join_link(self, link): + self._join(link) + + +def logging_links(name): + """Creates a conduit that logs all tickets passed through it. + + Args: + name: A name to use for the conduit to identify itself in logging output. + + Returns: + Two links.Links, the first of which is the "left" side of the conduit + and the second of which is the "right" side of the conduit. + """ + pipe = _Pipe(name) + left_facade = _Facade(pipe.accept_left_to_right_ticket, pipe.join_left_mate) + right_facade = _Facade(pipe.accept_right_to_left_ticket, pipe.join_right_mate) + return left_facade, right_facade -- GitLab From 71e29ef459378f404ad4377e960792435864f878 Mon Sep 17 00:00:00 2001 From: Masood Malekghassemi <soltanmm@users.noreply.github.com> Date: Fri, 21 Aug 2015 14:22:11 -0700 Subject: [PATCH 133/178] Add new core tests to run_tests/run_python.sh The tests don't currently get discovered by py.test due to their use of the Python 2.7+ load_tests protocol. --- tools/run_tests/run_python.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/run_tests/run_python.sh b/tools/run_tests/run_python.sh index 6f80219b0e..6fdca93fd5 100755 --- a/tools/run_tests/run_python.sh +++ b/tools/run_tests/run_python.sh @@ -39,4 +39,12 @@ export LD_LIBRARY_PATH=$ROOT/libs/$CONFIG export DYLD_LIBRARY_PATH=$ROOT/libs/$CONFIG export PATH=$ROOT/bins/$CONFIG:$ROOT/bins/$CONFIG/protobuf:$PATH source "python"$PYVER"_virtual_environment"/bin/activate + +# TODO(atash): These tests don't currently run under py.test and thus don't +# appear under the coverage report. Find a way to get these tests to work with +# py.test (or find another tool or *something*) that's acceptable to the rest of +# the team... +"python"$PYVER -m grpc_test._core_over_links_base_interface_test +"python"$PYVER -m grpc_test.framework.core._base_interface_test + "python"$PYVER $GRPCIO_TEST/setup.py test -a "-n8 --cov=grpc --junitxml=./report.xml" -- GitLab From 9e2f90cd068b4c2a8fdec69ca93ca614d35cba28 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Fri, 21 Aug 2015 15:35:03 -0700 Subject: [PATCH 134/178] headers reorg --- BUILD | 68 ++++----- Makefile | 68 ++++----- build.json | 34 ++--- examples/pubsub/main.cc | 6 +- examples/pubsub/publisher.h | 1 - examples/pubsub/publisher_test.cc | 2 - examples/pubsub/subscriber.h | 1 - examples/pubsub/subscriber_test.cc | 2 - include/grpc++/channel.h | 2 +- include/grpc++/client_context.h | 8 +- include/grpc++/completion_queue.h | 4 +- include/grpc++/create_channel.h | 4 +- include/grpc++/credentials.h | 2 +- .../{ => generic}/async_generic_service.h | 10 +- include/grpc++/{ => generic}/generic_stub.h | 10 +- include/grpc++/impl/call.h | 15 +- include/grpc++/impl/client_unary_call.h | 5 +- include/grpc++/impl/proto_utils.h | 4 +- include/grpc++/impl/rpc_service_method.h | 6 +- include/grpc++/impl/service_type.h | 4 +- include/grpc++/impl/sync.h | 2 +- include/grpc++/impl/thd.h | 2 +- include/grpc++/server.h | 4 +- include/grpc++/server_builder.h | 2 +- include/grpc++/server_context.h | 6 +- include/grpc++/server_credentials.h | 2 +- .../grpc++/{ => support}/async_unary_call.h | 10 +- include/grpc++/{ => support}/auth_context.h | 8 +- include/grpc++/{ => support}/byte_buffer.h | 12 +- .../grpc++/{ => support}/channel_arguments.h | 8 +- include/grpc++/{ => support}/config.h | 6 +- .../grpc++/{ => support}/config_protobuf.h | 6 +- .../{ => support}/dynamic_thread_pool.h | 17 ++- .../{ => support}/fixed_size_thread_pool.h | 15 +- include/grpc++/{ => support}/slice.h | 8 +- include/grpc++/{ => support}/status.h | 10 +- .../grpc++/{ => support}/status_code_enum.h | 6 +- include/grpc++/{ => support}/stream.h | 12 +- include/grpc++/{ => support}/stub_options.h | 6 +- .../{ => support}/thread_pool_interface.h | 6 +- include/grpc++/{ => support}/time.h | 8 +- src/compiler/config.h | 4 +- src/compiler/cpp_generator.cc | 12 +- src/compiler/python_generator.cc | 2 +- src/cpp/client/channel.cc | 11 +- src/cpp/client/channel_arguments.cc | 3 +- src/cpp/client/client_context.cc | 2 +- src/cpp/client/create_channel.cc | 2 +- src/cpp/client/create_channel_internal.h | 2 +- src/cpp/client/generic_stub.cc | 2 +- src/cpp/client/insecure_credentials.cc | 8 +- src/cpp/client/secure_channel_arguments.cc | 4 +- src/cpp/client/secure_credentials.cc | 2 +- src/cpp/client/secure_credentials.h | 2 +- src/cpp/common/auth_property_iterator.cc | 2 +- src/cpp/common/call.cc | 5 +- src/cpp/common/completion_queue.cc | 2 +- src/cpp/common/create_auth_context.h | 2 +- .../common/insecure_create_auth_context.cc | 2 +- src/cpp/common/secure_auth_context.h | 2 +- src/cpp/common/secure_create_auth_context.cc | 2 +- src/cpp/proto/proto_utils.cc | 2 +- src/cpp/server/async_generic_service.cc | 2 +- src/cpp/server/create_default_thread_pool.cc | 2 +- src/cpp/server/dynamic_thread_pool.cc | 2 +- src/cpp/server/fixed_size_thread_pool.cc | 2 +- src/cpp/server/secure_server_credentials.h | 4 +- src/cpp/server/server.cc | 7 +- src/cpp/server/server_builder.cc | 4 +- src/cpp/server/server_context.cc | 2 +- src/cpp/util/byte_buffer.cc | 2 +- src/cpp/util/slice.cc | 2 +- src/cpp/util/status.cc | 2 +- src/cpp/util/time.cc | 4 +- test/cpp/client/channel_arguments_test.cc | 2 +- .../cpp/common/auth_property_iterator_test.cc | 2 +- test/cpp/common/secure_auth_context_test.cc | 2 +- test/cpp/end2end/async_end2end_test.cc | 19 +-- test/cpp/end2end/client_crash_test.cc | 19 +-- test/cpp/end2end/client_crash_test_server.cc | 1 - test/cpp/end2end/end2end_test.cc | 24 ++-- test/cpp/end2end/generic_end2end_test.cc | 24 ++-- test/cpp/end2end/mock_test.cc | 20 ++- test/cpp/end2end/server_crash_test.cc | 19 +-- test/cpp/end2end/server_crash_test_client.cc | 2 - test/cpp/end2end/shutdown_test.cc | 16 +-- test/cpp/end2end/thread_stress_test.cc | 20 ++- test/cpp/end2end/zookeeper_test.cc | 11 +- test/cpp/interop/client.cc | 3 +- test/cpp/interop/client_helper.cc | 9 +- test/cpp/interop/client_helper.h | 1 - test/cpp/interop/interop_client.cc | 8 +- test/cpp/interop/interop_client.h | 2 +- test/cpp/interop/interop_test.cc | 11 +- test/cpp/interop/reconnect_interop_client.cc | 1 - test/cpp/interop/reconnect_interop_server.cc | 9 +- test/cpp/interop/server.cc | 14 +- test/cpp/interop/server_helper.cc | 1 - test/cpp/qps/client.h | 8 +- test/cpp/qps/client_async.cc | 6 +- test/cpp/qps/client_sync.cc | 9 +- test/cpp/qps/driver.cc | 22 +-- test/cpp/qps/interarrival.h | 2 +- test/cpp/qps/perf_db_client.h | 3 +- test/cpp/qps/qps_interarrival_test.cc | 4 +- test/cpp/qps/qps_openloop_test.cc | 4 +- test/cpp/qps/qps_test.cc | 4 +- test/cpp/qps/qps_test_with_poll.cc | 4 +- test/cpp/qps/qps_worker.cc | 5 +- test/cpp/qps/report.h | 3 +- test/cpp/qps/server_async.cc | 10 +- test/cpp/qps/server_sync.cc | 15 +- test/cpp/qps/stats.h | 3 +- test/cpp/qps/sync_streaming_ping_pong_test.cc | 4 +- test/cpp/qps/sync_unary_ping_pong_test.cc | 4 +- test/cpp/qps/timer.cc | 1 - test/cpp/qps/worker.cc | 2 +- test/cpp/server/dynamic_thread_pool_test.cc | 3 +- .../cpp/server/fixed_size_thread_pool_test.cc | 3 +- test/cpp/util/byte_buffer_test.cc | 4 +- test/cpp/util/cli_call.cc | 11 +- test/cpp/util/cli_call.h | 3 +- test/cpp/util/cli_call_test.cc | 13 +- test/cpp/util/create_test_channel.cc | 4 +- test/cpp/util/create_test_channel.h | 1 - test/cpp/util/grpc_cli.cc | 7 +- test/cpp/util/slice_test.cc | 2 +- test/cpp/util/status_test.cc | 3 +- test/cpp/util/time_test.cc | 2 +- tools/doxygen/Doxyfile.c++ | 36 ++--- tools/doxygen/Doxyfile.c++.internal | 36 ++--- tools/run_tests/sources_and_headers.json | 136 +++++++++--------- vsprojects/grpc++/grpc++.vcxproj | 34 ++--- vsprojects/grpc++/grpc++.vcxproj.filters | 90 ++++++------ .../grpc++_unsecure/grpc++_unsecure.vcxproj | 34 ++--- .../grpc++_unsecure.vcxproj.filters | 90 ++++++------ 136 files changed, 660 insertions(+), 727 deletions(-) rename include/grpc++/{ => generic}/async_generic_service.h (92%) rename include/grpc++/{ => generic}/generic_stub.h (91%) rename include/grpc++/{ => support}/async_unary_call.h (97%) rename include/grpc++/{ => support}/auth_context.h (95%) rename include/grpc++/{ => support}/byte_buffer.h (93%) rename include/grpc++/{ => support}/channel_arguments.h (94%) rename include/grpc++/{ => support}/config.h (96%) rename include/grpc++/{ => support}/config_protobuf.h (95%) rename include/grpc++/{ => support}/dynamic_thread_pool.h (91%) rename include/grpc++/{ => support}/fixed_size_thread_pool.h (90%) rename include/grpc++/{ => support}/slice.h (94%) rename include/grpc++/{ => support}/status.h (92%) rename include/grpc++/{ => support}/status_code_enum.h (98%) rename include/grpc++/{ => support}/stream.h (99%) rename include/grpc++/{ => support}/stub_options.h (93%) rename include/grpc++/{ => support}/thread_pool_interface.h (93%) rename include/grpc++/{ => support}/time.h (96%) diff --git a/BUILD b/BUILD index d712053a3d..620a954a5a 100644 --- a/BUILD +++ b/BUILD @@ -710,21 +710,13 @@ cc_library( "src/cpp/util/time.cc", ], hdrs = [ - "include/grpc++/async_generic_service.h", - "include/grpc++/async_unary_call.h", - "include/grpc++/auth_context.h", - "include/grpc++/byte_buffer.h", "include/grpc++/channel.h", - "include/grpc++/channel_arguments.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", - "include/grpc++/config.h", - "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", - "include/grpc++/generic_stub.h", + "include/grpc++/generic/async_generic_service.h", + "include/grpc++/generic/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", @@ -743,13 +735,21 @@ cc_library( "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", - "include/grpc++/slice.h", - "include/grpc++/status.h", - "include/grpc++/status_code_enum.h", - "include/grpc++/stream.h", - "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", - "include/grpc++/time.h", + "include/grpc++/support/async_unary_call.h", + "include/grpc++/support/auth_context.h", + "include/grpc++/support/byte_buffer.h", + "include/grpc++/support/channel_arguments.h", + "include/grpc++/support/config.h", + "include/grpc++/support/config_protobuf.h", + "include/grpc++/support/dynamic_thread_pool.h", + "include/grpc++/support/fixed_size_thread_pool.h", + "include/grpc++/support/slice.h", + "include/grpc++/support/status.h", + "include/grpc++/support/status_code_enum.h", + "include/grpc++/support/stream.h", + "include/grpc++/support/stub_options.h", + "include/grpc++/support/thread_pool_interface.h", + "include/grpc++/support/time.h", ], includes = [ "include", @@ -796,21 +796,13 @@ cc_library( "src/cpp/util/time.cc", ], hdrs = [ - "include/grpc++/async_generic_service.h", - "include/grpc++/async_unary_call.h", - "include/grpc++/auth_context.h", - "include/grpc++/byte_buffer.h", "include/grpc++/channel.h", - "include/grpc++/channel_arguments.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", - "include/grpc++/config.h", - "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", - "include/grpc++/generic_stub.h", + "include/grpc++/generic/async_generic_service.h", + "include/grpc++/generic/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", @@ -829,13 +821,21 @@ cc_library( "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", - "include/grpc++/slice.h", - "include/grpc++/status.h", - "include/grpc++/status_code_enum.h", - "include/grpc++/stream.h", - "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", - "include/grpc++/time.h", + "include/grpc++/support/async_unary_call.h", + "include/grpc++/support/auth_context.h", + "include/grpc++/support/byte_buffer.h", + "include/grpc++/support/channel_arguments.h", + "include/grpc++/support/config.h", + "include/grpc++/support/config_protobuf.h", + "include/grpc++/support/dynamic_thread_pool.h", + "include/grpc++/support/fixed_size_thread_pool.h", + "include/grpc++/support/slice.h", + "include/grpc++/support/status.h", + "include/grpc++/support/status_code_enum.h", + "include/grpc++/support/stream.h", + "include/grpc++/support/stub_options.h", + "include/grpc++/support/thread_pool_interface.h", + "include/grpc++/support/time.h", ], includes = [ "include", diff --git a/Makefile b/Makefile index 5cce835c02..9dffab01c0 100644 --- a/Makefile +++ b/Makefile @@ -4629,21 +4629,13 @@ LIBGRPC++_SRC = \ src/cpp/util/time.cc \ PUBLIC_HEADERS_CXX += \ - include/grpc++/async_generic_service.h \ - include/grpc++/async_unary_call.h \ - include/grpc++/auth_context.h \ - include/grpc++/byte_buffer.h \ include/grpc++/channel.h \ - include/grpc++/channel_arguments.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ - include/grpc++/config.h \ - include/grpc++/config_protobuf.h \ include/grpc++/create_channel.h \ include/grpc++/credentials.h \ - include/grpc++/dynamic_thread_pool.h \ - include/grpc++/fixed_size_thread_pool.h \ - include/grpc++/generic_stub.h \ + include/grpc++/generic/async_generic_service.h \ + include/grpc++/generic/generic_stub.h \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ include/grpc++/impl/grpc_library.h \ @@ -4662,13 +4654,21 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/server_builder.h \ include/grpc++/server_context.h \ include/grpc++/server_credentials.h \ - include/grpc++/slice.h \ - include/grpc++/status.h \ - include/grpc++/status_code_enum.h \ - include/grpc++/stream.h \ - include/grpc++/stub_options.h \ - include/grpc++/thread_pool_interface.h \ - include/grpc++/time.h \ + include/grpc++/support/async_unary_call.h \ + include/grpc++/support/auth_context.h \ + include/grpc++/support/byte_buffer.h \ + include/grpc++/support/channel_arguments.h \ + include/grpc++/support/config.h \ + include/grpc++/support/config_protobuf.h \ + include/grpc++/support/dynamic_thread_pool.h \ + include/grpc++/support/fixed_size_thread_pool.h \ + include/grpc++/support/slice.h \ + include/grpc++/support/status.h \ + include/grpc++/support/status_code_enum.h \ + include/grpc++/support/stream.h \ + include/grpc++/support/stub_options.h \ + include/grpc++/support/thread_pool_interface.h \ + include/grpc++/support/time.h \ LIBGRPC++_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC++_SRC)))) @@ -4871,21 +4871,13 @@ LIBGRPC++_UNSECURE_SRC = \ src/cpp/util/time.cc \ PUBLIC_HEADERS_CXX += \ - include/grpc++/async_generic_service.h \ - include/grpc++/async_unary_call.h \ - include/grpc++/auth_context.h \ - include/grpc++/byte_buffer.h \ include/grpc++/channel.h \ - include/grpc++/channel_arguments.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ - include/grpc++/config.h \ - include/grpc++/config_protobuf.h \ include/grpc++/create_channel.h \ include/grpc++/credentials.h \ - include/grpc++/dynamic_thread_pool.h \ - include/grpc++/fixed_size_thread_pool.h \ - include/grpc++/generic_stub.h \ + include/grpc++/generic/async_generic_service.h \ + include/grpc++/generic/generic_stub.h \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ include/grpc++/impl/grpc_library.h \ @@ -4904,13 +4896,21 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/server_builder.h \ include/grpc++/server_context.h \ include/grpc++/server_credentials.h \ - include/grpc++/slice.h \ - include/grpc++/status.h \ - include/grpc++/status_code_enum.h \ - include/grpc++/stream.h \ - include/grpc++/stub_options.h \ - include/grpc++/thread_pool_interface.h \ - include/grpc++/time.h \ + include/grpc++/support/async_unary_call.h \ + include/grpc++/support/auth_context.h \ + include/grpc++/support/byte_buffer.h \ + include/grpc++/support/channel_arguments.h \ + include/grpc++/support/config.h \ + include/grpc++/support/config_protobuf.h \ + include/grpc++/support/dynamic_thread_pool.h \ + include/grpc++/support/fixed_size_thread_pool.h \ + include/grpc++/support/slice.h \ + include/grpc++/support/status.h \ + include/grpc++/support/status_code_enum.h \ + include/grpc++/support/stream.h \ + include/grpc++/support/stub_options.h \ + include/grpc++/support/thread_pool_interface.h \ + include/grpc++/support/time.h \ LIBGRPC++_UNSECURE_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC++_UNSECURE_SRC)))) diff --git a/build.json b/build.json index 484502bf34..8eb4f37703 100644 --- a/build.json +++ b/build.json @@ -30,21 +30,13 @@ { "name": "grpc++_base", "public_headers": [ - "include/grpc++/async_generic_service.h", - "include/grpc++/async_unary_call.h", - "include/grpc++/auth_context.h", - "include/grpc++/byte_buffer.h", "include/grpc++/channel.h", - "include/grpc++/channel_arguments.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", - "include/grpc++/config.h", - "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", - "include/grpc++/generic_stub.h", + "include/grpc++/generic/async_generic_service.h", + "include/grpc++/generic/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", @@ -63,13 +55,21 @@ "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", - "include/grpc++/slice.h", - "include/grpc++/status.h", - "include/grpc++/status_code_enum.h", - "include/grpc++/stream.h", - "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", - "include/grpc++/time.h" + "include/grpc++/support/async_unary_call.h", + "include/grpc++/support/auth_context.h", + "include/grpc++/support/byte_buffer.h", + "include/grpc++/support/channel_arguments.h", + "include/grpc++/support/config.h", + "include/grpc++/support/config_protobuf.h", + "include/grpc++/support/dynamic_thread_pool.h", + "include/grpc++/support/fixed_size_thread_pool.h", + "include/grpc++/support/slice.h", + "include/grpc++/support/status.h", + "include/grpc++/support/status_code_enum.h", + "include/grpc++/support/stream.h", + "include/grpc++/support/stub_options.h", + "include/grpc++/support/thread_pool_interface.h", + "include/grpc++/support/time.h" ], "headers": [ "src/cpp/client/create_channel_internal.h", diff --git a/examples/pubsub/main.cc b/examples/pubsub/main.cc index fcee3b316b..32102dcb5c 100644 --- a/examples/pubsub/main.cc +++ b/examples/pubsub/main.cc @@ -37,18 +37,16 @@ #include <string> #include <thread> +#include <gflags/gflags.h> #include <grpc/grpc.h> #include <grpc/support/log.h> -#include <gflags/gflags.h> -#include <grpc++/channel_arguments.h> #include <grpc++/channel.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/status.h> -#include "test/cpp/util/test_config.h" #include "examples/pubsub/publisher.h" #include "examples/pubsub/subscriber.h" +#include "test/cpp/util/test_config.h" DEFINE_int32(server_port, 443, "Server port."); DEFINE_string(server_host, "pubsub-staging.googleapis.com", diff --git a/examples/pubsub/publisher.h b/examples/pubsub/publisher.h index b98e6973dc..02e6194b0b 100644 --- a/examples/pubsub/publisher.h +++ b/examples/pubsub/publisher.h @@ -35,7 +35,6 @@ #define GRPC_EXAMPLES_PUBSUB_PUBLISHER_H #include <grpc++/channel.h> -#include <grpc++/status.h> #include "examples/pubsub/pubsub.grpc.pb.h" diff --git a/examples/pubsub/publisher_test.cc b/examples/pubsub/publisher_test.cc index 972b426e64..c2eb295ef2 100644 --- a/examples/pubsub/publisher_test.cc +++ b/examples/pubsub/publisher_test.cc @@ -31,7 +31,6 @@ * */ -#include <grpc++/channel_arguments.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> @@ -39,7 +38,6 @@ #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> #include <gtest/gtest.h> #include "examples/pubsub/publisher.h" diff --git a/examples/pubsub/subscriber.h b/examples/pubsub/subscriber.h index 87c833102c..c5b1df0d3e 100644 --- a/examples/pubsub/subscriber.h +++ b/examples/pubsub/subscriber.h @@ -35,7 +35,6 @@ #define GRPC_EXAMPLES_PUBSUB_SUBSCRIBER_H #include <grpc++/channel.h> -#include <grpc++/status.h> #include "examples/pubsub/pubsub.grpc.pb.h" diff --git a/examples/pubsub/subscriber_test.cc b/examples/pubsub/subscriber_test.cc index 7974ca88c2..c5a077f407 100644 --- a/examples/pubsub/subscriber_test.cc +++ b/examples/pubsub/subscriber_test.cc @@ -31,7 +31,6 @@ * */ -#include <grpc++/channel_arguments.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> @@ -39,7 +38,6 @@ #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> #include <gtest/gtest.h> #include "examples/pubsub/subscriber.h" diff --git a/include/grpc++/channel.h b/include/grpc++/channel.h index 7d6216e9c4..a8af74175b 100644 --- a/include/grpc++/channel.h +++ b/include/grpc++/channel.h @@ -37,9 +37,9 @@ #include <memory> #include <grpc/grpc.h> -#include <grpc++/config.h> #include <grpc++/impl/call.h> #include <grpc++/impl/grpc_library.h> +#include <grpc++/support/config.h> struct grpc_channel; diff --git a/include/grpc++/client_context.h b/include/grpc++/client_context.h index 55ed17506a..ee28f360cb 100644 --- a/include/grpc++/client_context.h +++ b/include/grpc++/client_context.h @@ -42,10 +42,10 @@ #include <grpc/grpc.h> #include <grpc/support/log.h> #include <grpc/support/time.h> -#include <grpc++/auth_context.h> -#include <grpc++/config.h> -#include <grpc++/status.h> -#include <grpc++/time.h> +#include <grpc++/support/auth_context.h> +#include <grpc++/support/config.h> +#include <grpc++/support/status.h> +#include <grpc++/support/time.h> struct census_context; diff --git a/include/grpc++/completion_queue.h b/include/grpc++/completion_queue.h index 061f4874fa..d81d2e735d 100644 --- a/include/grpc++/completion_queue.h +++ b/include/grpc++/completion_queue.h @@ -36,8 +36,8 @@ #include <grpc/support/time.h> #include <grpc++/impl/grpc_library.h> -#include <grpc++/status.h> -#include <grpc++/time.h> +#include <grpc++/support/status.h> +#include <grpc++/support/time.h> struct grpc_completion_queue; diff --git a/include/grpc++/create_channel.h b/include/grpc++/create_channel.h index fe34452128..0e559ac53e 100644 --- a/include/grpc++/create_channel.h +++ b/include/grpc++/create_channel.h @@ -36,11 +36,11 @@ #include <memory> -#include <grpc++/config.h> #include <grpc++/credentials.h> +#include <grpc++/support/channel_arguments.h> +#include <grpc++/support/config.h> namespace grpc { -class ChannelArguments; // If creds does not hold an object or is invalid, a lame channel is returned. std::shared_ptr<Channel> CreateChannel( diff --git a/include/grpc++/credentials.h b/include/grpc++/credentials.h index 306dc961c0..71e1f00f15 100644 --- a/include/grpc++/credentials.h +++ b/include/grpc++/credentials.h @@ -36,8 +36,8 @@ #include <memory> -#include <grpc++/config.h> #include <grpc++/impl/grpc_library.h> +#include <grpc++/support/config.h> namespace grpc { class ChannelArguments; diff --git a/include/grpc++/async_generic_service.h b/include/grpc++/generic/async_generic_service.h similarity index 92% rename from include/grpc++/async_generic_service.h rename to include/grpc++/generic/async_generic_service.h index b435c6e73d..35bc945824 100644 --- a/include/grpc++/async_generic_service.h +++ b/include/grpc++/generic/async_generic_service.h @@ -31,11 +31,11 @@ * */ -#ifndef GRPCXX_ASYNC_GENERIC_SERVICE_H -#define GRPCXX_ASYNC_GENERIC_SERVICE_H +#ifndef GRPCXX_GENERIC_ASYNC_GENERIC_SERVICE_H +#define GRPCXX_GENERIC_ASYNC_GENERIC_SERVICE_H -#include <grpc++/byte_buffer.h> -#include <grpc++/stream.h> +#include <grpc++/support/byte_buffer.h> +#include <grpc++/support/stream.h> struct grpc_server; @@ -75,4 +75,4 @@ class AsyncGenericService GRPC_FINAL { } // namespace grpc -#endif // GRPCXX_ASYNC_GENERIC_SERVICE_H +#endif // GRPCXX_GENERIC_ASYNC_GENERIC_SERVICE_H diff --git a/include/grpc++/generic_stub.h b/include/grpc++/generic/generic_stub.h similarity index 91% rename from include/grpc++/generic_stub.h rename to include/grpc++/generic/generic_stub.h index 734440881e..08ed77aefb 100644 --- a/include/grpc++/generic_stub.h +++ b/include/grpc++/generic/generic_stub.h @@ -31,11 +31,11 @@ * */ -#ifndef GRPCXX_GENERIC_STUB_H -#define GRPCXX_GENERIC_STUB_H +#ifndef GRPCXX_GENERIC_GENERIC_STUB_H +#define GRPCXX_GENERIC_GENERIC_STUB_H -#include <grpc++/byte_buffer.h> -#include <grpc++/stream.h> +#include <grpc++/support/byte_buffer.h> +#include <grpc++/support/stream.h> namespace grpc { @@ -60,4 +60,4 @@ class GenericStub GRPC_FINAL { } // namespace grpc -#endif // GRPCXX_GENERIC_STUB_H +#endif // GRPCXX_GENERIC_GENERIC_STUB_H diff --git a/include/grpc++/impl/call.h b/include/grpc++/impl/call.h index bc1db4c12c..ed3110fdb7 100644 --- a/include/grpc++/impl/call.h +++ b/include/grpc++/impl/call.h @@ -34,18 +34,17 @@ #ifndef GRPCXX_IMPL_CALL_H #define GRPCXX_IMPL_CALL_H -#include <grpc/support/alloc.h> -#include <grpc++/client_context.h> -#include <grpc++/completion_queue.h> -#include <grpc++/config.h> -#include <grpc++/status.h> -#include <grpc++/impl/serialization_traits.h> - #include <functional> #include <memory> #include <map> +#include <cstring> -#include <string.h> +#include <grpc/support/alloc.h> +#include <grpc++/client_context.h> +#include <grpc++/completion_queue.h> +#include <grpc++/impl/serialization_traits.h> +#include <grpc++/support/config.h> +#include <grpc++/support/status.h> struct grpc_call; struct grpc_op; diff --git a/include/grpc++/impl/client_unary_call.h b/include/grpc++/impl/client_unary_call.h index 4aae816cd7..4cdc800267 100644 --- a/include/grpc++/impl/client_unary_call.h +++ b/include/grpc++/impl/client_unary_call.h @@ -34,10 +34,9 @@ #ifndef GRPCXX_IMPL_CLIENT_UNARY_CALL_H #define GRPCXX_IMPL_CLIENT_UNARY_CALL_H -#include <grpc++/config.h> -#include <grpc++/status.h> - #include <grpc++/impl/call.h> +#include <grpc++/support/config.h> +#include <grpc++/support/status.h> namespace grpc { diff --git a/include/grpc++/impl/proto_utils.h b/include/grpc++/impl/proto_utils.h index ebefa3e1be..283e33486d 100644 --- a/include/grpc++/impl/proto_utils.h +++ b/include/grpc++/impl/proto_utils.h @@ -38,8 +38,8 @@ #include <grpc/grpc.h> #include <grpc++/impl/serialization_traits.h> -#include <grpc++/config_protobuf.h> -#include <grpc++/status.h> +#include <grpc++/support/config_protobuf.h> +#include <grpc++/support/status.h> namespace grpc { diff --git a/include/grpc++/impl/rpc_service_method.h b/include/grpc++/impl/rpc_service_method.h index 078c8c491a..0138eb2ac0 100644 --- a/include/grpc++/impl/rpc_service_method.h +++ b/include/grpc++/impl/rpc_service_method.h @@ -39,10 +39,10 @@ #include <memory> #include <vector> -#include <grpc++/config.h> #include <grpc++/impl/rpc_method.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> +#include <grpc++/support/config.h> +#include <grpc++/support/status.h> +#include <grpc++/support/stream.h> namespace grpc { class ServerContext; diff --git a/include/grpc++/impl/service_type.h b/include/grpc++/impl/service_type.h index c33a278f5b..3b6ac1de77 100644 --- a/include/grpc++/impl/service_type.h +++ b/include/grpc++/impl/service_type.h @@ -34,10 +34,10 @@ #ifndef GRPCXX_IMPL_SERVICE_TYPE_H #define GRPCXX_IMPL_SERVICE_TYPE_H -#include <grpc++/config.h> #include <grpc++/impl/serialization_traits.h> #include <grpc++/server.h> -#include <grpc++/status.h> +#include <grpc++/support/config.h> +#include <grpc++/support/status.h> namespace grpc { diff --git a/include/grpc++/impl/sync.h b/include/grpc++/impl/sync.h index 2f41d2bdeb..999c4303cb 100644 --- a/include/grpc++/impl/sync.h +++ b/include/grpc++/impl/sync.h @@ -34,7 +34,7 @@ #ifndef GRPCXX_IMPL_SYNC_H #define GRPCXX_IMPL_SYNC_H -#include <grpc++/config.h> +#include <grpc++/support/config.h> #ifdef GRPC_CXX0X_NO_THREAD #include <grpc++/impl/sync_no_cxx11.h> diff --git a/include/grpc++/impl/thd.h b/include/grpc++/impl/thd.h index 4c4578a92d..f8d4258ac6 100644 --- a/include/grpc++/impl/thd.h +++ b/include/grpc++/impl/thd.h @@ -34,7 +34,7 @@ #ifndef GRPCXX_IMPL_THD_H #define GRPCXX_IMPL_THD_H -#include <grpc++/config.h> +#include <grpc++/support/config.h> #ifdef GRPC_CXX0X_NO_THREAD #include <grpc++/impl/thd_no_cxx11.h> diff --git a/include/grpc++/server.h b/include/grpc++/server.h index a2bc097c7f..183cbc4692 100644 --- a/include/grpc++/server.h +++ b/include/grpc++/server.h @@ -38,11 +38,11 @@ #include <memory> #include <grpc++/completion_queue.h> -#include <grpc++/config.h> #include <grpc++/impl/call.h> #include <grpc++/impl/grpc_library.h> #include <grpc++/impl/sync.h> -#include <grpc++/status.h> +#include <grpc++/support/config.h> +#include <grpc++/support/status.h> struct grpc_server; diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h index 906daf1370..95325915a1 100644 --- a/include/grpc++/server_builder.h +++ b/include/grpc++/server_builder.h @@ -37,7 +37,7 @@ #include <memory> #include <vector> -#include <grpc++/config.h> +#include <grpc++/support/config.h> namespace grpc { diff --git a/include/grpc++/server_context.h b/include/grpc++/server_context.h index b87a1f0379..ce3cb47a23 100644 --- a/include/grpc++/server_context.h +++ b/include/grpc++/server_context.h @@ -39,9 +39,9 @@ #include <grpc/compression.h> #include <grpc/support/time.h> -#include <grpc++/auth_context.h> -#include <grpc++/config.h> -#include <grpc++/time.h> +#include <grpc++/support/auth_context.h> +#include <grpc++/support/config.h> +#include <grpc++/support/time.h> struct gpr_timespec; struct grpc_metadata; diff --git a/include/grpc++/server_credentials.h b/include/grpc++/server_credentials.h index 11acd67e8a..16b78c08af 100644 --- a/include/grpc++/server_credentials.h +++ b/include/grpc++/server_credentials.h @@ -37,7 +37,7 @@ #include <memory> #include <vector> -#include <grpc++/config.h> +#include <grpc++/support/config.h> struct grpc_server; diff --git a/include/grpc++/async_unary_call.h b/include/grpc++/support/async_unary_call.h similarity index 97% rename from include/grpc++/async_unary_call.h rename to include/grpc++/support/async_unary_call.h index 4e1dd15f32..0f4ad2656f 100644 --- a/include/grpc++/async_unary_call.h +++ b/include/grpc++/support/async_unary_call.h @@ -31,17 +31,17 @@ * */ -#ifndef GRPCXX_ASYNC_UNARY_CALL_H -#define GRPCXX_ASYNC_UNARY_CALL_H +#ifndef GRPCXX_SUPPORT_ASYNC_UNARY_CALL_H +#define GRPCXX_SUPPORT_ASYNC_UNARY_CALL_H +#include <grpc/support/log.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/completion_queue.h> #include <grpc++/server_context.h> #include <grpc++/impl/call.h> #include <grpc++/impl/service_type.h> -#include <grpc++/status.h> -#include <grpc/support/log.h> +#include <grpc++/support/status.h> namespace grpc { @@ -152,4 +152,4 @@ class ServerAsyncResponseWriter GRPC_FINAL } // namespace grpc -#endif // GRPCXX_ASYNC_UNARY_CALL_H +#endif // GRPCXX_SUPPORT_ASYNC_UNARY_CALL_H diff --git a/include/grpc++/auth_context.h b/include/grpc++/support/auth_context.h similarity index 95% rename from include/grpc++/auth_context.h rename to include/grpc++/support/auth_context.h index 7dced90ce5..f4f2dcf5bb 100644 --- a/include/grpc++/auth_context.h +++ b/include/grpc++/support/auth_context.h @@ -31,13 +31,13 @@ * */ -#ifndef GRPCXX_AUTH_CONTEXT_H -#define GRPCXX_AUTH_CONTEXT_H +#ifndef GRPCXX_SUPPORT_AUTH_CONTEXT_H +#define GRPCXX_SUPPORT_AUTH_CONTEXT_H #include <iterator> #include <vector> -#include <grpc++/config.h> +#include <grpc++/support/config.h> struct grpc_auth_context; struct grpc_auth_property; @@ -92,4 +92,4 @@ class AuthContext { } // namespace grpc -#endif // GRPCXX_AUTH_CONTEXT_H +#endif // GRPCXX_SUPPORT_AUTH_CONTEXT_H diff --git a/include/grpc++/byte_buffer.h b/include/grpc++/support/byte_buffer.h similarity index 93% rename from include/grpc++/byte_buffer.h rename to include/grpc++/support/byte_buffer.h index 6467776398..3f8cc25f47 100644 --- a/include/grpc++/byte_buffer.h +++ b/include/grpc++/support/byte_buffer.h @@ -31,16 +31,16 @@ * */ -#ifndef GRPCXX_BYTE_BUFFER_H -#define GRPCXX_BYTE_BUFFER_H +#ifndef GRPCXX_SUPPORT_BYTE_BUFFER_H +#define GRPCXX_SUPPORT_BYTE_BUFFER_H #include <grpc/grpc.h> #include <grpc/byte_buffer.h> #include <grpc/support/log.h> -#include <grpc++/config.h> -#include <grpc++/slice.h> -#include <grpc++/status.h> #include <grpc++/impl/serialization_traits.h> +#include <grpc++/support/config.h> +#include <grpc++/support/slice.h> +#include <grpc++/support/status.h> #include <vector> @@ -101,4 +101,4 @@ class SerializationTraits<ByteBuffer, void> { } // namespace grpc -#endif // GRPCXX_BYTE_BUFFER_H +#endif // GRPCXX_SUPPORT_BYTE_BUFFER_H diff --git a/include/grpc++/channel_arguments.h b/include/grpc++/support/channel_arguments.h similarity index 94% rename from include/grpc++/channel_arguments.h rename to include/grpc++/support/channel_arguments.h index 4d926377ec..cee68467c7 100644 --- a/include/grpc++/channel_arguments.h +++ b/include/grpc++/support/channel_arguments.h @@ -31,15 +31,15 @@ * */ -#ifndef GRPCXX_CHANNEL_ARGUMENTS_H -#define GRPCXX_CHANNEL_ARGUMENTS_H +#ifndef GRPCXX_SUPPORT_CHANNEL_ARGUMENTS_H +#define GRPCXX_SUPPORT_CHANNEL_ARGUMENTS_H #include <vector> #include <list> -#include <grpc++/config.h> #include <grpc/compression.h> #include <grpc/grpc.h> +#include <grpc++/support/config.h> namespace grpc { namespace testing { @@ -90,4 +90,4 @@ class ChannelArguments { } // namespace grpc -#endif // GRPCXX_CHANNEL_ARGUMENTS_H +#endif // GRPCXX_SUPPORT_CHANNEL_ARGUMENTS_H diff --git a/include/grpc++/config.h b/include/grpc++/support/config.h similarity index 96% rename from include/grpc++/config.h rename to include/grpc++/support/config.h index 889dc39eb7..836bd47283 100644 --- a/include/grpc++/config.h +++ b/include/grpc++/support/config.h @@ -31,8 +31,8 @@ * */ -#ifndef GRPCXX_CONFIG_H -#define GRPCXX_CONFIG_H +#ifndef GRPCXX_SUPPORT_CONFIG_H +#define GRPCXX_SUPPORT_CONFIG_H #if !defined(GRPC_NO_AUTODETECT_PLATFORM) @@ -113,4 +113,4 @@ typedef GRPC_CUSTOM_STRING string; } // namespace grpc -#endif // GRPCXX_CONFIG_H +#endif // GRPCXX_SUPPORT_CONFIG_H diff --git a/include/grpc++/config_protobuf.h b/include/grpc++/support/config_protobuf.h similarity index 95% rename from include/grpc++/config_protobuf.h rename to include/grpc++/support/config_protobuf.h index 3afc7a58e2..8235590d41 100644 --- a/include/grpc++/config_protobuf.h +++ b/include/grpc++/support/config_protobuf.h @@ -31,8 +31,8 @@ * */ -#ifndef GRPCXX_CONFIG_PROTOBUF_H -#define GRPCXX_CONFIG_PROTOBUF_H +#ifndef GRPCXX_SUPPORT_CONFIG_PROTOBUF_H +#define GRPCXX_SUPPORT_CONFIG_PROTOBUF_H #ifndef GRPC_CUSTOM_PROTOBUF_INT64 #include <google/protobuf/stubs/common.h> @@ -69,4 +69,4 @@ typedef GRPC_CUSTOM_CODEDINPUTSTREAM CodedInputStream; } // namespace protobuf } // namespace grpc -#endif // GRPCXX_CONFIG_PROTOBUF_H +#endif // GRPCXX_SUPPORT_CONFIG_PROTOBUF_H diff --git a/include/grpc++/dynamic_thread_pool.h b/include/grpc++/support/dynamic_thread_pool.h similarity index 91% rename from include/grpc++/dynamic_thread_pool.h rename to include/grpc++/support/dynamic_thread_pool.h index a4d4885b51..6062705129 100644 --- a/include/grpc++/dynamic_thread_pool.h +++ b/include/grpc++/support/dynamic_thread_pool.h @@ -31,19 +31,18 @@ * */ -#ifndef GRPCXX_DYNAMIC_THREAD_POOL_H -#define GRPCXX_DYNAMIC_THREAD_POOL_H - -#include <grpc++/config.h> - -#include <grpc++/impl/sync.h> -#include <grpc++/impl/thd.h> -#include <grpc++/thread_pool_interface.h> +#ifndef GRPCXX_SUPPORT_DYNAMIC_THREAD_POOL_H +#define GRPCXX_SUPPORT_DYNAMIC_THREAD_POOL_H #include <list> #include <memory> #include <queue> +#include <grpc++/impl/sync.h> +#include <grpc++/impl/thd.h> +#include <grpc++/support/config.h> +#include <grpc++/support/thread_pool_interface.h> + namespace grpc { class DynamicThreadPool GRPC_FINAL : public ThreadPoolInterface { @@ -80,4 +79,4 @@ class DynamicThreadPool GRPC_FINAL : public ThreadPoolInterface { } // namespace grpc -#endif // GRPCXX_DYNAMIC_THREAD_POOL_H +#endif // GRPCXX_SUPPORT_DYNAMIC_THREAD_POOL_H diff --git a/include/grpc++/fixed_size_thread_pool.h b/include/grpc++/support/fixed_size_thread_pool.h similarity index 90% rename from include/grpc++/fixed_size_thread_pool.h rename to include/grpc++/support/fixed_size_thread_pool.h index 307e166142..46ed745eff 100644 --- a/include/grpc++/fixed_size_thread_pool.h +++ b/include/grpc++/support/fixed_size_thread_pool.h @@ -31,17 +31,16 @@ * */ -#ifndef GRPCXX_FIXED_SIZE_THREAD_POOL_H -#define GRPCXX_FIXED_SIZE_THREAD_POOL_H +#ifndef GRPCXX_SUPPORT_FIXED_SIZE_THREAD_POOL_H +#define GRPCXX_SUPPORT_FIXED_SIZE_THREAD_POOL_H -#include <grpc++/config.h> +#include <queue> +#include <vector> #include <grpc++/impl/sync.h> #include <grpc++/impl/thd.h> -#include <grpc++/thread_pool_interface.h> - -#include <queue> -#include <vector> +#include <grpc++/support/config.h> +#include <grpc++/support/thread_pool_interface.h> namespace grpc { @@ -64,4 +63,4 @@ class FixedSizeThreadPool GRPC_FINAL : public ThreadPoolInterface { } // namespace grpc -#endif // GRPCXX_FIXED_SIZE_THREAD_POOL_H +#endif // GRPCXX_SUPPORT_FIXED_SIZE_THREAD_POOL_H diff --git a/include/grpc++/slice.h b/include/grpc++/support/slice.h similarity index 94% rename from include/grpc++/slice.h rename to include/grpc++/support/slice.h index 3e01bcf0ad..b2343a7f3d 100644 --- a/include/grpc++/slice.h +++ b/include/grpc++/support/slice.h @@ -31,11 +31,11 @@ * */ -#ifndef GRPCXX_SLICE_H -#define GRPCXX_SLICE_H +#ifndef GRPCXX_SUPPORT_SLICE_H +#define GRPCXX_SUPPORT_SLICE_H #include <grpc/support/slice.h> -#include <grpc++/config.h> +#include <grpc++/support/config.h> namespace grpc { @@ -71,4 +71,4 @@ class Slice GRPC_FINAL { } // namespace grpc -#endif // GRPCXX_SLICE_H +#endif // GRPCXX_SUPPORT_SLICE_H diff --git a/include/grpc++/status.h b/include/grpc++/support/status.h similarity index 92% rename from include/grpc++/status.h rename to include/grpc++/support/status.h index fb8526ddce..05750ff600 100644 --- a/include/grpc++/status.h +++ b/include/grpc++/support/status.h @@ -31,11 +31,11 @@ * */ -#ifndef GRPCXX_STATUS_H -#define GRPCXX_STATUS_H +#ifndef GRPCXX_SUPPORT_STATUS_H +#define GRPCXX_SUPPORT_STATUS_H -#include <grpc++/status_code_enum.h> -#include <grpc++/config.h> +#include <grpc++/support/config.h> +#include <grpc++/support/status_code_enum.h> namespace grpc { @@ -61,4 +61,4 @@ class Status { } // namespace grpc -#endif // GRPCXX_STATUS_H +#endif // GRPCXX_SUPPORT_STATUS_H diff --git a/include/grpc++/status_code_enum.h b/include/grpc++/support/status_code_enum.h similarity index 98% rename from include/grpc++/status_code_enum.h rename to include/grpc++/support/status_code_enum.h index 2211c964cd..7cb40452c8 100644 --- a/include/grpc++/status_code_enum.h +++ b/include/grpc++/support/status_code_enum.h @@ -31,8 +31,8 @@ * */ -#ifndef GRPCXX_STATUS_CODE_ENUM_H -#define GRPCXX_STATUS_CODE_ENUM_H +#ifndef GRPCXX_SUPPORT_STATUS_CODE_ENUM_H +#define GRPCXX_SUPPORT_STATUS_CODE_ENUM_H namespace grpc { @@ -156,4 +156,4 @@ enum StatusCode { } // namespace grpc -#endif // GRPCXX_STATUS_CODE_ENUM_H +#endif // GRPCXX_SUPPORT_STATUS_CODE_ENUM_H diff --git a/include/grpc++/stream.h b/include/grpc++/support/stream.h similarity index 99% rename from include/grpc++/stream.h rename to include/grpc++/support/stream.h index 577eb4e925..89a6dd693d 100644 --- a/include/grpc++/stream.h +++ b/include/grpc++/support/stream.h @@ -31,17 +31,17 @@ * */ -#ifndef GRPCXX_STREAM_H -#define GRPCXX_STREAM_H +#ifndef GRPCXX_SUPPORT_STREAM_H +#define GRPCXX_SUPPORT_STREAM_H +#include <grpc/support/log.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/completion_queue.h> -#include <grpc++/server_context.h> #include <grpc++/impl/call.h> #include <grpc++/impl/service_type.h> -#include <grpc++/status.h> -#include <grpc/support/log.h> +#include <grpc++/server_context.h> +#include <grpc++/support/status.h> namespace grpc { @@ -773,4 +773,4 @@ class ServerAsyncReaderWriter GRPC_FINAL : public ServerAsyncStreamingInterface, } // namespace grpc -#endif // GRPCXX_STREAM_H +#endif // GRPCXX_SUPPORT_STREAM_H diff --git a/include/grpc++/stub_options.h b/include/grpc++/support/stub_options.h similarity index 93% rename from include/grpc++/stub_options.h rename to include/grpc++/support/stub_options.h index c7c16dcd55..973aa9bc83 100644 --- a/include/grpc++/stub_options.h +++ b/include/grpc++/support/stub_options.h @@ -31,8 +31,8 @@ * */ -#ifndef GRPCXX_STUB_OPTIONS_H -#define GRPCXX_STUB_OPTIONS_H +#ifndef GRPCXX_SUPPORT_STUB_OPTIONS_H +#define GRPCXX_SUPPORT_STUB_OPTIONS_H namespace grpc { @@ -40,4 +40,4 @@ class StubOptions {}; } // namespace grpc -#endif // GRPCXX_STUB_OPTIONS_H +#endif // GRPCXX_SUPPORT_STUB_OPTIONS_H diff --git a/include/grpc++/thread_pool_interface.h b/include/grpc++/support/thread_pool_interface.h similarity index 93% rename from include/grpc++/thread_pool_interface.h rename to include/grpc++/support/thread_pool_interface.h index d080b31dcc..6528e7276f 100644 --- a/include/grpc++/thread_pool_interface.h +++ b/include/grpc++/support/thread_pool_interface.h @@ -31,8 +31,8 @@ * */ -#ifndef GRPCXX_THREAD_POOL_INTERFACE_H -#define GRPCXX_THREAD_POOL_INTERFACE_H +#ifndef GRPCXX_SUPPORT_THREAD_POOL_INTERFACE_H +#define GRPCXX_SUPPORT_THREAD_POOL_INTERFACE_H #include <functional> @@ -51,4 +51,4 @@ ThreadPoolInterface* CreateDefaultThreadPool(); } // namespace grpc -#endif // GRPCXX_THREAD_POOL_INTERFACE_H +#endif // GRPCXX_SUPPORT_THREAD_POOL_INTERFACE_H diff --git a/include/grpc++/time.h b/include/grpc++/support/time.h similarity index 96% rename from include/grpc++/time.h rename to include/grpc++/support/time.h index 8fb2f8505c..2d4196b93b 100644 --- a/include/grpc++/time.h +++ b/include/grpc++/support/time.h @@ -31,10 +31,10 @@ * */ -#ifndef GRPCXX_TIME_H -#define GRPCXX_TIME_H +#ifndef GRPCXX_SUPPORT_TIME_H +#define GRPCXX_SUPPORT_TIME_H -#include <grpc++/config.h> +#include <grpc++/support/config.h> namespace grpc { @@ -107,4 +107,4 @@ class TimePoint<std::chrono::system_clock::time_point> { #endif // !GRPC_CXX0X_NO_CHRONO -#endif // GRPCXX_TIME_H +#endif // GRPCXX_SUPPORT_TIME_H diff --git a/src/compiler/config.h b/src/compiler/config.h index cd52aca57d..fea976c318 100644 --- a/src/compiler/config.h +++ b/src/compiler/config.h @@ -34,8 +34,8 @@ #ifndef SRC_COMPILER_CONFIG_H #define SRC_COMPILER_CONFIG_H -#include <grpc++/config.h> -#include <grpc++/config_protobuf.h> +#include <grpc++/support/config.h> +#include <grpc++/support/config_protobuf.h> #ifndef GRPC_CUSTOM_DESCRIPTOR #include <google/protobuf/descriptor.h> diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc index b04ac038ad..5d82b605fb 100644 --- a/src/compiler/cpp_generator.cc +++ b/src/compiler/cpp_generator.cc @@ -115,10 +115,10 @@ grpc::string GetHeaderIncludes(const grpc::protobuf::FileDescriptor *file, "#include <grpc++/impl/rpc_method.h>\n" "#include <grpc++/impl/proto_utils.h>\n" "#include <grpc++/impl/service_type.h>\n" - "#include <grpc++/async_unary_call.h>\n" - "#include <grpc++/status.h>\n" - "#include <grpc++/stream.h>\n" - "#include <grpc++/stub_options.h>\n" + "#include <grpc++/support/async_unary_call.h>\n" + "#include <grpc++/support/status.h>\n" + "#include <grpc++/support/stream.h>\n" + "#include <grpc++/support/stub_options.h>\n" "\n" "namespace grpc {\n" "class CompletionQueue;\n" @@ -701,12 +701,12 @@ grpc::string GetSourceIncludes(const grpc::protobuf::FileDescriptor *file, grpc::protobuf::io::Printer printer(&output_stream, '$'); std::map<grpc::string, grpc::string> vars; - printer.Print(vars, "#include <grpc++/async_unary_call.h>\n"); printer.Print(vars, "#include <grpc++/channel.h>\n"); printer.Print(vars, "#include <grpc++/impl/client_unary_call.h>\n"); printer.Print(vars, "#include <grpc++/impl/rpc_service_method.h>\n"); printer.Print(vars, "#include <grpc++/impl/service_type.h>\n"); - printer.Print(vars, "#include <grpc++/stream.h>\n"); + printer.Print(vars, "#include <grpc++/support/async_unary_call.h>\n"); + printer.Print(vars, "#include <grpc++/support/stream.h>\n"); if (!file->package().empty()) { std::vector<grpc::string> parts = diff --git a/src/compiler/python_generator.cc b/src/compiler/python_generator.cc index 2982a89fad..72c457ac6b 100644 --- a/src/compiler/python_generator.cc +++ b/src/compiler/python_generator.cc @@ -42,7 +42,7 @@ #include <tuple> #include <vector> -#include <grpc++/config.h> +#include <grpc++/support/config.h> #include "src/compiler/config.h" #include "src/compiler/generator_helpers.h" #include "src/compiler/python_generator.h" diff --git a/src/cpp/client/channel.cc b/src/cpp/client/channel.cc index bb4be07beb..8bf2e4687e 100644 --- a/src/cpp/client/channel.cc +++ b/src/cpp/client/channel.cc @@ -38,17 +38,16 @@ #include <grpc/grpc.h> #include <grpc/support/log.h> #include <grpc/support/slice.h> - -#include "src/core/profiling/timers.h" -#include <grpc++/channel_arguments.h> #include <grpc++/client_context.h> #include <grpc++/completion_queue.h> -#include <grpc++/config.h> #include <grpc++/credentials.h> #include <grpc++/impl/call.h> #include <grpc++/impl/rpc_method.h> -#include <grpc++/status.h> -#include <grpc++/time.h> +#include <grpc++/support/channel_arguments.h> +#include <grpc++/support/config.h> +#include <grpc++/support/status.h> +#include <grpc++/support/time.h> +#include "src/core/profiling/timers.h" namespace grpc { diff --git a/src/cpp/client/channel_arguments.cc b/src/cpp/client/channel_arguments.cc index da6602e7af..50422d06c9 100644 --- a/src/cpp/client/channel_arguments.cc +++ b/src/cpp/client/channel_arguments.cc @@ -31,10 +31,9 @@ * */ -#include <grpc++/channel_arguments.h> +#include <grpc++/support/channel_arguments.h> #include <grpc/support/log.h> - #include "src/core/channel/channel_args.h" namespace grpc { diff --git a/src/cpp/client/client_context.cc b/src/cpp/client/client_context.cc index a3906fc781..c4d7cf2e51 100644 --- a/src/cpp/client/client_context.cc +++ b/src/cpp/client/client_context.cc @@ -38,7 +38,7 @@ #include <grpc/support/string_util.h> #include <grpc++/credentials.h> #include <grpc++/server_context.h> -#include <grpc++/time.h> +#include <grpc++/support/time.h> #include "src/core/channel/compress_filter.h" #include "src/cpp/common/create_auth_context.h" diff --git a/src/cpp/client/create_channel.cc b/src/cpp/client/create_channel.cc index 70ea7e0e27..8c571cbbaa 100644 --- a/src/cpp/client/create_channel.cc +++ b/src/cpp/client/create_channel.cc @@ -35,8 +35,8 @@ #include <sstream> #include <grpc++/channel.h> -#include <grpc++/channel_arguments.h> #include <grpc++/create_channel.h> +#include <grpc++/support/channel_arguments.h> #include "src/cpp/client/create_channel_internal.h" diff --git a/src/cpp/client/create_channel_internal.h b/src/cpp/client/create_channel_internal.h index 1692471990..4385ec701e 100644 --- a/src/cpp/client/create_channel_internal.h +++ b/src/cpp/client/create_channel_internal.h @@ -36,7 +36,7 @@ #include <memory> -#include <grpc++/config.h> +#include <grpc++/support/config.h> struct grpc_channel; diff --git a/src/cpp/client/generic_stub.cc b/src/cpp/client/generic_stub.cc index ee89c02965..7a2fdf941c 100644 --- a/src/cpp/client/generic_stub.cc +++ b/src/cpp/client/generic_stub.cc @@ -31,7 +31,7 @@ * */ -#include <grpc++/generic_stub.h> +#include <grpc++/generic/generic_stub.h> #include <grpc++/impl/rpc_method.h> diff --git a/src/cpp/client/insecure_credentials.cc b/src/cpp/client/insecure_credentials.cc index 97931406af..4a4d2cb97d 100644 --- a/src/cpp/client/insecure_credentials.cc +++ b/src/cpp/client/insecure_credentials.cc @@ -31,13 +31,13 @@ * */ +#include <grpc++/credentials.h> + #include <grpc/grpc.h> #include <grpc/support/log.h> - #include <grpc++/channel.h> -#include <grpc++/channel_arguments.h> -#include <grpc++/config.h> -#include <grpc++/credentials.h> +#include <grpc++/support/channel_arguments.h> +#include <grpc++/support/config.h> #include "src/cpp/client/create_channel_internal.h" namespace grpc { diff --git a/src/cpp/client/secure_channel_arguments.cc b/src/cpp/client/secure_channel_arguments.cc index d89df999ad..e17d3b58b0 100644 --- a/src/cpp/client/secure_channel_arguments.cc +++ b/src/cpp/client/secure_channel_arguments.cc @@ -31,9 +31,9 @@ * */ -#include <grpc++/channel_arguments.h> -#include <grpc/grpc_security.h> +#include <grpc++/support/channel_arguments.h> +#include <grpc/grpc_security.h> #include "src/core/channel/channel_args.h" namespace grpc { diff --git a/src/cpp/client/secure_credentials.cc b/src/cpp/client/secure_credentials.cc index 1e912c6beb..f368f2590a 100644 --- a/src/cpp/client/secure_credentials.cc +++ b/src/cpp/client/secure_credentials.cc @@ -33,8 +33,8 @@ #include <grpc/support/log.h> #include <grpc++/channel.h> -#include <grpc++/channel_arguments.h> #include <grpc++/impl/grpc_library.h> +#include <grpc++/support/channel_arguments.h> #include "src/cpp/client/create_channel_internal.h" #include "src/cpp/client/secure_credentials.h" diff --git a/src/cpp/client/secure_credentials.h b/src/cpp/client/secure_credentials.h index 974d83514d..62d3185477 100644 --- a/src/cpp/client/secure_credentials.h +++ b/src/cpp/client/secure_credentials.h @@ -36,7 +36,7 @@ #include <grpc/grpc_security.h> -#include <grpc++/config.h> +#include <grpc++/support/config.h> #include <grpc++/credentials.h> namespace grpc { diff --git a/src/cpp/common/auth_property_iterator.cc b/src/cpp/common/auth_property_iterator.cc index d3bfd5cb6b..5ccf8cf72c 100644 --- a/src/cpp/common/auth_property_iterator.cc +++ b/src/cpp/common/auth_property_iterator.cc @@ -31,7 +31,7 @@ * */ -#include <grpc++/auth_context.h> +#include <grpc++/support/auth_context.h> #include <grpc/grpc_security.h> diff --git a/src/cpp/common/call.cc b/src/cpp/common/call.cc index 479f14d42b..16aa2c9fb9 100644 --- a/src/cpp/common/call.cc +++ b/src/cpp/common/call.cc @@ -34,10 +34,9 @@ #include <grpc++/impl/call.h> #include <grpc/support/alloc.h> -#include <grpc++/byte_buffer.h> -#include <grpc++/client_context.h> #include <grpc++/channel.h> - +#include <grpc++/client_context.h> +#include <grpc++/support/byte_buffer.h> #include "src/core/profiling/timers.h" namespace grpc { diff --git a/src/cpp/common/completion_queue.cc b/src/cpp/common/completion_queue.cc index fca33f8f54..a175beb452 100644 --- a/src/cpp/common/completion_queue.cc +++ b/src/cpp/common/completion_queue.cc @@ -36,7 +36,7 @@ #include <grpc/grpc.h> #include <grpc/support/log.h> -#include <grpc++/time.h> +#include <grpc++/support/time.h> namespace grpc { diff --git a/src/cpp/common/create_auth_context.h b/src/cpp/common/create_auth_context.h index 9082a90c6d..b4962bae4e 100644 --- a/src/cpp/common/create_auth_context.h +++ b/src/cpp/common/create_auth_context.h @@ -33,7 +33,7 @@ #include <memory> #include <grpc/grpc.h> -#include <grpc++/auth_context.h> +#include <grpc++/support/auth_context.h> namespace grpc { diff --git a/src/cpp/common/insecure_create_auth_context.cc b/src/cpp/common/insecure_create_auth_context.cc index 07fc0bd549..fe80c1a80c 100644 --- a/src/cpp/common/insecure_create_auth_context.cc +++ b/src/cpp/common/insecure_create_auth_context.cc @@ -33,7 +33,7 @@ #include <memory> #include <grpc/grpc.h> -#include <grpc++/auth_context.h> +#include <grpc++/support/auth_context.h> namespace grpc { diff --git a/src/cpp/common/secure_auth_context.h b/src/cpp/common/secure_auth_context.h index 264ed620a3..01b7126189 100644 --- a/src/cpp/common/secure_auth_context.h +++ b/src/cpp/common/secure_auth_context.h @@ -34,7 +34,7 @@ #ifndef GRPC_INTERNAL_CPP_COMMON_SECURE_AUTH_CONTEXT_H #define GRPC_INTERNAL_CPP_COMMON_SECURE_AUTH_CONTEXT_H -#include <grpc++/auth_context.h> +#include <grpc++/support/auth_context.h> struct grpc_auth_context; diff --git a/src/cpp/common/secure_create_auth_context.cc b/src/cpp/common/secure_create_auth_context.cc index d81f4bbc4a..f13d25a1dd 100644 --- a/src/cpp/common/secure_create_auth_context.cc +++ b/src/cpp/common/secure_create_auth_context.cc @@ -34,7 +34,7 @@ #include <grpc/grpc.h> #include <grpc/grpc_security.h> -#include <grpc++/auth_context.h> +#include <grpc++/support/auth_context.h> #include "src/cpp/common/secure_auth_context.h" namespace grpc { diff --git a/src/cpp/proto/proto_utils.cc b/src/cpp/proto/proto_utils.cc index 05470ec627..be84c222a0 100644 --- a/src/cpp/proto/proto_utils.cc +++ b/src/cpp/proto/proto_utils.cc @@ -32,7 +32,6 @@ */ #include <grpc++/impl/proto_utils.h> -#include <grpc++/config.h> #include <grpc/grpc.h> #include <grpc/byte_buffer.h> @@ -40,6 +39,7 @@ #include <grpc/support/slice.h> #include <grpc/support/slice_buffer.h> #include <grpc/support/port_platform.h> +#include <grpc++/support/config.h> const int kMaxBufferLength = 8192; diff --git a/src/cpp/server/async_generic_service.cc b/src/cpp/server/async_generic_service.cc index 2e99afcb5f..6b9ea532b6 100644 --- a/src/cpp/server/async_generic_service.cc +++ b/src/cpp/server/async_generic_service.cc @@ -31,7 +31,7 @@ * */ -#include <grpc++/async_generic_service.h> +#include <grpc++/generic/async_generic_service.h> #include <grpc++/server.h> diff --git a/src/cpp/server/create_default_thread_pool.cc b/src/cpp/server/create_default_thread_pool.cc index 9f59d254f1..0eef7dfffe 100644 --- a/src/cpp/server/create_default_thread_pool.cc +++ b/src/cpp/server/create_default_thread_pool.cc @@ -32,7 +32,7 @@ */ #include <grpc/support/cpu.h> -#include <grpc++/dynamic_thread_pool.h> +#include <grpc++/support/dynamic_thread_pool.h> #ifndef GRPC_CUSTOM_DEFAULT_THREAD_POOL diff --git a/src/cpp/server/dynamic_thread_pool.cc b/src/cpp/server/dynamic_thread_pool.cc index b475f43b1d..d33852364d 100644 --- a/src/cpp/server/dynamic_thread_pool.cc +++ b/src/cpp/server/dynamic_thread_pool.cc @@ -33,7 +33,7 @@ #include <grpc++/impl/sync.h> #include <grpc++/impl/thd.h> -#include <grpc++/dynamic_thread_pool.h> +#include <grpc++/support/dynamic_thread_pool.h> namespace grpc { DynamicThreadPool::DynamicThread::DynamicThread(DynamicThreadPool* pool) diff --git a/src/cpp/server/fixed_size_thread_pool.cc b/src/cpp/server/fixed_size_thread_pool.cc index bafbc5802a..427e904449 100644 --- a/src/cpp/server/fixed_size_thread_pool.cc +++ b/src/cpp/server/fixed_size_thread_pool.cc @@ -33,7 +33,7 @@ #include <grpc++/impl/sync.h> #include <grpc++/impl/thd.h> -#include <grpc++/fixed_size_thread_pool.h> +#include <grpc++/support/fixed_size_thread_pool.h> namespace grpc { diff --git a/src/cpp/server/secure_server_credentials.h b/src/cpp/server/secure_server_credentials.h index b9803f107e..d3d37b188d 100644 --- a/src/cpp/server/secure_server_credentials.h +++ b/src/cpp/server/secure_server_credentials.h @@ -34,10 +34,10 @@ #ifndef GRPC_INTERNAL_CPP_SERVER_SECURE_SERVER_CREDENTIALS_H #define GRPC_INTERNAL_CPP_SERVER_SECURE_SERVER_CREDENTIALS_H -#include <grpc/grpc_security.h> - #include <grpc++/server_credentials.h> +#include <grpc/grpc_security.h> + namespace grpc { class SecureServerCredentials GRPC_FINAL : public ServerCredentials { diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index e039c07374..568bb8ad5e 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -32,19 +32,20 @@ */ #include <grpc++/server.h> + #include <utility> #include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/log.h> #include <grpc++/completion_queue.h> -#include <grpc++/async_generic_service.h> +#include <grpc++/generic/async_generic_service.h> #include <grpc++/impl/rpc_service_method.h> #include <grpc++/impl/service_type.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/thread_pool_interface.h> -#include <grpc++/time.h> +#include <grpc++/support/thread_pool_interface.h> +#include <grpc++/support/time.h> #include "src/core/profiling/timers.h" diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc index 0b11d86173..4e8399405e 100644 --- a/src/cpp/server/server_builder.cc +++ b/src/cpp/server/server_builder.cc @@ -37,8 +37,8 @@ #include <grpc/support/log.h> #include <grpc++/impl/service_type.h> #include <grpc++/server.h> -#include <grpc++/thread_pool_interface.h> -#include <grpc++/fixed_size_thread_pool.h> +#include <grpc++/support/thread_pool_interface.h> +#include <grpc++/support/fixed_size_thread_pool.h> namespace grpc { diff --git a/src/cpp/server/server_context.cc b/src/cpp/server/server_context.cc index 03461ddda5..acc163d6b5 100644 --- a/src/cpp/server/server_context.cc +++ b/src/cpp/server/server_context.cc @@ -38,7 +38,7 @@ #include <grpc/support/log.h> #include <grpc++/impl/call.h> #include <grpc++/impl/sync.h> -#include <grpc++/time.h> +#include <grpc++/support/time.h> #include "src/core/channel/compress_filter.h" #include "src/cpp/common/create_auth_context.h" diff --git a/src/cpp/util/byte_buffer.cc b/src/cpp/util/byte_buffer.cc index a66c92c3e1..e46e656beb 100644 --- a/src/cpp/util/byte_buffer.cc +++ b/src/cpp/util/byte_buffer.cc @@ -32,7 +32,7 @@ */ #include <grpc/byte_buffer_reader.h> -#include <grpc++/byte_buffer.h> +#include <grpc++/support/byte_buffer.h> namespace grpc { diff --git a/src/cpp/util/slice.cc b/src/cpp/util/slice.cc index 57370dabc6..7e88423b6c 100644 --- a/src/cpp/util/slice.cc +++ b/src/cpp/util/slice.cc @@ -31,7 +31,7 @@ * */ -#include <grpc++/slice.h> +#include <grpc++/support/slice.h> namespace grpc { diff --git a/src/cpp/util/status.cc b/src/cpp/util/status.cc index 5bb9eda3d9..ad9850cf07 100644 --- a/src/cpp/util/status.cc +++ b/src/cpp/util/status.cc @@ -31,7 +31,7 @@ * */ -#include <grpc++/status.h> +#include <grpc++/support/status.h> namespace grpc { diff --git a/src/cpp/util/time.cc b/src/cpp/util/time.cc index 799c597e0b..b3401eb26b 100644 --- a/src/cpp/util/time.cc +++ b/src/cpp/util/time.cc @@ -31,12 +31,12 @@ * */ -#include <grpc++/config.h> +#include <grpc++/support/config.h> #ifndef GRPC_CXX0X_NO_CHRONO #include <grpc/support/time.h> -#include <grpc++/time.h> +#include <grpc++/support/time.h> using std::chrono::duration_cast; using std::chrono::nanoseconds; diff --git a/test/cpp/client/channel_arguments_test.cc b/test/cpp/client/channel_arguments_test.cc index 01c56cb795..3d75e7b0e6 100644 --- a/test/cpp/client/channel_arguments_test.cc +++ b/test/cpp/client/channel_arguments_test.cc @@ -31,7 +31,7 @@ * */ -#include <grpc++/channel_arguments.h> +#include <grpc++/support/channel_arguments.h> #include <grpc/grpc.h> #include <gtest/gtest.h> diff --git a/test/cpp/common/auth_property_iterator_test.cc b/test/cpp/common/auth_property_iterator_test.cc index bf17842a84..630c38c7f6 100644 --- a/test/cpp/common/auth_property_iterator_test.cc +++ b/test/cpp/common/auth_property_iterator_test.cc @@ -32,7 +32,7 @@ */ #include <grpc/grpc_security.h> -#include <grpc++/auth_context.h> +#include <grpc++/support/auth_context.h> #include <gtest/gtest.h> #include "src/cpp/common/secure_auth_context.h" diff --git a/test/cpp/common/secure_auth_context_test.cc b/test/cpp/common/secure_auth_context_test.cc index e0376c9cc7..c71ef58023 100644 --- a/test/cpp/common/secure_auth_context_test.cc +++ b/test/cpp/common/secure_auth_context_test.cc @@ -32,7 +32,7 @@ */ #include <grpc/grpc_security.h> -#include <grpc++/auth_context.h> +#include <grpc++/support/auth_context.h> #include <gtest/gtest.h> #include "src/cpp/common/secure_auth_context.h" diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc index 7006ebb83a..f81043d610 100644 --- a/test/cpp/end2end/async_end2end_test.cc +++ b/test/cpp/end2end/async_end2end_test.cc @@ -33,12 +33,9 @@ #include <memory> -#include "test/core/util/port.h" -#include "test/core/util/test_config.h" -#include "test/cpp/util/echo_duplicate.grpc.pb.h" -#include "test/cpp/util/echo.grpc.pb.h" -#include <grpc++/async_unary_call.h> -#include <grpc++/channel_arguments.h> +#include <grpc/grpc.h> +#include <grpc/support/thd.h> +#include <grpc/support/time.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> @@ -47,14 +44,12 @@ #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> -#include <grpc++/time.h> #include <gtest/gtest.h> -#include <grpc/grpc.h> -#include <grpc/support/thd.h> -#include <grpc/support/time.h> +#include "test/core/util/port.h" +#include "test/core/util/test_config.h" +#include "test/cpp/util/echo_duplicate.grpc.pb.h" +#include "test/cpp/util/echo.grpc.pb.h" using grpc::cpp::test::util::EchoRequest; using grpc::cpp::test::util::EchoResponse; diff --git a/test/cpp/end2end/client_crash_test.cc b/test/cpp/end2end/client_crash_test.cc index 89708a2ef6..3359080cec 100644 --- a/test/cpp/end2end/client_crash_test.cc +++ b/test/cpp/end2end/client_crash_test.cc @@ -31,11 +31,9 @@ * */ -#include "test/core/util/port.h" -#include "test/core/util/test_config.h" -#include "test/cpp/util/echo_duplicate.grpc.pb.h" -#include "test/cpp/util/echo.grpc.pb.h" -#include <grpc++/channel_arguments.h> +#include <grpc/grpc.h> +#include <grpc/support/thd.h> +#include <grpc/support/time.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> @@ -44,15 +42,12 @@ #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> -#include <grpc++/time.h> #include <gtest/gtest.h> -#include <grpc/grpc.h> -#include <grpc/support/thd.h> -#include <grpc/support/time.h> - +#include "test/core/util/port.h" +#include "test/core/util/test_config.h" +#include "test/cpp/util/echo_duplicate.grpc.pb.h" +#include "test/cpp/util/echo.grpc.pb.h" #include "test/cpp/util/subprocess.h" using grpc::cpp::test::util::EchoRequest; diff --git a/test/cpp/end2end/client_crash_test_server.cc b/test/cpp/end2end/client_crash_test_server.cc index 3fd8c2c2f9..79a7832874 100644 --- a/test/cpp/end2end/client_crash_test_server.cc +++ b/test/cpp/end2end/client_crash_test_server.cc @@ -40,7 +40,6 @@ #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> #include "test/cpp/util/echo.grpc.pb.h" DEFINE_string(address, "", "Address to bind to"); diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc index fc4e88c2a7..1b83eb4b3c 100644 --- a/test/cpp/end2end/end2end_test.cc +++ b/test/cpp/end2end/end2end_test.cc @@ -34,30 +34,26 @@ #include <mutex> #include <thread> -#include "src/core/security/credentials.h" -#include "test/core/end2end/data/ssl_test_data.h" -#include "test/core/util/port.h" -#include "test/core/util/test_config.h" -#include "test/cpp/util/echo_duplicate.grpc.pb.h" -#include "test/cpp/util/echo.grpc.pb.h" -#include <grpc++/channel_arguments.h> +#include <grpc/grpc.h> +#include <grpc/support/thd.h> +#include <grpc/support/time.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/dynamic_thread_pool.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> -#include <grpc++/time.h> +#include <grpc++/support/dynamic_thread_pool.h> #include <gtest/gtest.h> -#include <grpc/grpc.h> -#include <grpc/support/thd.h> -#include <grpc/support/time.h> +#include "src/core/security/credentials.h" +#include "test/core/end2end/data/ssl_test_data.h" +#include "test/core/util/port.h" +#include "test/core/util/test_config.h" +#include "test/cpp/util/echo_duplicate.grpc.pb.h" +#include "test/cpp/util/echo.grpc.pb.h" using grpc::cpp::test::util::EchoRequest; using grpc::cpp::test::util::EchoResponse; diff --git a/test/cpp/end2end/generic_end2end_test.cc b/test/cpp/end2end/generic_end2end_test.cc index b817198fa7..de7eab8dc2 100644 --- a/test/cpp/end2end/generic_end2end_test.cc +++ b/test/cpp/end2end/generic_end2end_test.cc @@ -33,32 +33,26 @@ #include <memory> -#include "test/core/util/port.h" -#include "test/core/util/test_config.h" -#include "test/cpp/util/echo.grpc.pb.h" +#include <grpc/grpc.h> +#include <grpc/support/thd.h> +#include <grpc/support/time.h> #include <grpc++/impl/proto_utils.h> -#include <grpc++/async_generic_service.h> -#include <grpc++/async_unary_call.h> -#include <grpc++/byte_buffer.h> -#include <grpc++/channel_arguments.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/generic_stub.h> +#include <grpc++/generic/async_generic_service.h> +#include <grpc++/generic/generic_stub.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/slice.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> -#include <grpc++/time.h> +#include <grpc++/support/slice.h> #include <gtest/gtest.h> -#include <grpc/grpc.h> -#include <grpc/support/thd.h> -#include <grpc/support/time.h> +#include "test/core/util/port.h" +#include "test/core/util/test_config.h" +#include "test/cpp/util/echo.grpc.pb.h" using grpc::cpp::test::util::EchoRequest; using grpc::cpp::test::util::EchoResponse; diff --git a/test/cpp/end2end/mock_test.cc b/test/cpp/end2end/mock_test.cc index 96b6ecbd6e..a547cfc67e 100644 --- a/test/cpp/end2end/mock_test.cc +++ b/test/cpp/end2end/mock_test.cc @@ -33,28 +33,24 @@ #include <thread> -#include "test/core/util/port.h" -#include "test/core/util/test_config.h" -#include "test/cpp/util/echo_duplicate.grpc.pb.h" -#include "test/cpp/util/echo.grpc.pb.h" -#include <grpc++/channel_arguments.h> +#include <grpc/grpc.h> +#include <grpc/support/thd.h> +#include <grpc/support/time.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/dynamic_thread_pool.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> -#include <grpc++/time.h> +#include <grpc++/support/dynamic_thread_pool.h> #include <gtest/gtest.h> -#include <grpc/grpc.h> -#include <grpc/support/thd.h> -#include <grpc/support/time.h> +#include "test/core/util/port.h" +#include "test/core/util/test_config.h" +#include "test/cpp/util/echo_duplicate.grpc.pb.h" +#include "test/cpp/util/echo.grpc.pb.h" using grpc::cpp::test::util::EchoRequest; using grpc::cpp::test::util::EchoResponse; diff --git a/test/cpp/end2end/server_crash_test.cc b/test/cpp/end2end/server_crash_test.cc index 2688f2c4ea..1a0f04e22b 100644 --- a/test/cpp/end2end/server_crash_test.cc +++ b/test/cpp/end2end/server_crash_test.cc @@ -31,11 +31,9 @@ * */ -#include "test/core/util/port.h" -#include "test/core/util/test_config.h" -#include "test/cpp/util/echo_duplicate.grpc.pb.h" -#include "test/cpp/util/echo.grpc.pb.h" -#include <grpc++/channel_arguments.h> +#include <grpc/grpc.h> +#include <grpc/support/thd.h> +#include <grpc/support/time.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> @@ -44,15 +42,12 @@ #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> -#include <grpc++/time.h> #include <gtest/gtest.h> -#include <grpc/grpc.h> -#include <grpc/support/thd.h> -#include <grpc/support/time.h> - +#include "test/core/util/port.h" +#include "test/core/util/test_config.h" +#include "test/cpp/util/echo.grpc.pb.h" +#include "test/cpp/util/echo_duplicate.grpc.pb.h" #include "test/cpp/util/subprocess.h" using grpc::cpp::test::util::EchoRequest; diff --git a/test/cpp/end2end/server_crash_test_client.cc b/test/cpp/end2end/server_crash_test_client.cc index 52dce8f28e..7ca43a0c5b 100644 --- a/test/cpp/end2end/server_crash_test_client.cc +++ b/test/cpp/end2end/server_crash_test_client.cc @@ -37,12 +37,10 @@ #include <string> #include <gflags/gflags.h> -#include <grpc++/channel_arguments.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/status.h> #include "test/cpp/util/echo.grpc.pb.h" DEFINE_string(address, "", "Address to connect to"); diff --git a/test/cpp/end2end/shutdown_test.cc b/test/cpp/end2end/shutdown_test.cc index dc5fb5af9b..e83f86f7ec 100644 --- a/test/cpp/end2end/shutdown_test.cc +++ b/test/cpp/end2end/shutdown_test.cc @@ -31,14 +31,10 @@ * */ -#include "test/core/util/test_config.h" - #include <thread> -#include "test/core/util/port.h" -#include "test/cpp/util/echo.grpc.pb.h" -#include "src/core/support/env.h" -#include <grpc++/channel_arguments.h> +#include <grpc/grpc.h> +#include <grpc/support/sync.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> @@ -47,10 +43,12 @@ #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> #include <gtest/gtest.h> -#include <grpc/grpc.h> -#include <grpc/support/sync.h> + +#include "src/core/support/env.h" +#include "test/core/util/test_config.h" +#include "test/core/util/port.h" +#include "test/cpp/util/echo.grpc.pb.h" using grpc::cpp::test::util::EchoRequest; using grpc::cpp::test::util::EchoResponse; diff --git a/test/cpp/end2end/thread_stress_test.cc b/test/cpp/end2end/thread_stress_test.cc index e59a77dc9e..be436a2f6c 100644 --- a/test/cpp/end2end/thread_stress_test.cc +++ b/test/cpp/end2end/thread_stress_test.cc @@ -34,28 +34,24 @@ #include <mutex> #include <thread> -#include "test/core/util/port.h" -#include "test/core/util/test_config.h" -#include "test/cpp/util/echo_duplicate.grpc.pb.h" -#include "test/cpp/util/echo.grpc.pb.h" -#include <grpc++/channel_arguments.h> +#include <grpc/grpc.h> +#include <grpc/support/thd.h> +#include <grpc/support/time.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/dynamic_thread_pool.h> +#include <grpc++/support/dynamic_thread_pool.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> -#include <grpc++/time.h> #include <gtest/gtest.h> -#include <grpc/grpc.h> -#include <grpc/support/thd.h> -#include <grpc/support/time.h> +#include "test/core/util/port.h" +#include "test/core/util/test_config.h" +#include "test/cpp/util/echo_duplicate.grpc.pb.h" +#include "test/cpp/util/echo.grpc.pb.h" using grpc::cpp::test::util::EchoRequest; using grpc::cpp::test::util::EchoResponse; diff --git a/test/cpp/end2end/zookeeper_test.cc b/test/cpp/end2end/zookeeper_test.cc index d7fac3d07e..e7d95b1c46 100644 --- a/test/cpp/end2end/zookeeper_test.cc +++ b/test/cpp/end2end/zookeeper_test.cc @@ -31,11 +31,6 @@ * */ -#include "test/core/util/test_config.h" -#include "test/core/util/port.h" -#include "test/cpp/util/echo.grpc.pb.h" -#include "src/core/support/env.h" -#include <grpc++/channel_arguments.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> @@ -44,12 +39,16 @@ #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> #include <gtest/gtest.h> #include <grpc/grpc.h> #include <grpc/grpc_zookeeper.h> #include <zookeeper/zookeeper.h> +#include "test/core/util/test_config.h" +#include "test/core/util/port.h" +#include "test/cpp/util/echo.grpc.pb.h" +#include "src/core/support/env.h" + using grpc::cpp::test::util::EchoRequest; using grpc::cpp::test::util::EchoResponse; diff --git a/test/cpp/interop/client.cc b/test/cpp/interop/client.cc index d9e4f1ba6a..cb5232153b 100644 --- a/test/cpp/interop/client.cc +++ b/test/cpp/interop/client.cc @@ -40,8 +40,7 @@ #include <gflags/gflags.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> + #include "test/cpp/interop/client_helper.h" #include "test/cpp/interop/interop_client.h" #include "test/cpp/util/test_config.h" diff --git a/test/cpp/interop/client_helper.cc b/test/cpp/interop/client_helper.cc index be652a4add..abc14aeb98 100644 --- a/test/cpp/interop/client_helper.cc +++ b/test/cpp/interop/client_helper.cc @@ -33,27 +33,24 @@ #include "test/cpp/interop/client_helper.h" +#include <unistd.h> + #include <fstream> #include <memory> #include <sstream> -#include <unistd.h> - #include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/log.h> #include <gflags/gflags.h> -#include <grpc++/channel_arguments.h> #include <grpc++/channel.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/stream.h> +#include "src/cpp/client/secure_credentials.h" #include "test/core/security/oauth2_utils.h" #include "test/cpp/util/create_test_channel.h" -#include "src/cpp/client/secure_credentials.h" - DECLARE_bool(enable_ssl); DECLARE_bool(use_prod_roots); DECLARE_int32(server_port); diff --git a/test/cpp/interop/client_helper.h b/test/cpp/interop/client_helper.h index d4c14433a9..92d5078f48 100644 --- a/test/cpp/interop/client_helper.h +++ b/test/cpp/interop/client_helper.h @@ -36,7 +36,6 @@ #include <memory> -#include <grpc++/config.h> #include <grpc++/channel.h> #include "src/core/surface/call.h" diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index c73505c670..fa358585d4 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -33,11 +33,11 @@ #include "test/cpp/interop/interop_client.h" +#include <unistd.h> + #include <fstream> #include <memory> -#include <unistd.h> - #include <grpc/grpc.h> #include <grpc/support/log.h> #include <grpc/support/string_util.h> @@ -45,14 +45,12 @@ #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/credentials.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> +#include "src/core/transport/stream_op.h" #include "test/cpp/interop/client_helper.h" #include "test/proto/test.grpc.pb.h" #include "test/proto/empty.grpc.pb.h" #include "test/proto/messages.grpc.pb.h" -#include "src/core/transport/stream_op.h" namespace grpc { namespace testing { diff --git a/test/cpp/interop/interop_client.h b/test/cpp/interop/interop_client.h index 354c2c6195..5e26cc82e6 100644 --- a/test/cpp/interop/interop_client.h +++ b/test/cpp/interop/interop_client.h @@ -33,11 +33,11 @@ #ifndef GRPC_TEST_CPP_INTEROP_INTEROP_CLIENT_H #define GRPC_TEST_CPP_INTEROP_INTEROP_CLIENT_H + #include <memory> #include <grpc/grpc.h> #include <grpc++/channel.h> -#include <grpc++/status.h> #include "test/proto/messages.grpc.pb.h" namespace grpc { diff --git a/test/cpp/interop/interop_test.cc b/test/cpp/interop/interop_test.cc index aac6e56b89..f01b032e95 100644 --- a/test/cpp/interop/interop_test.cc +++ b/test/cpp/interop/interop_test.cc @@ -44,17 +44,18 @@ #include <sys/types.h> #include <sys/wait.h> -extern "C" { -#include "src/core/iomgr/socket_utils_posix.h" -#include "src/core/support/string.h" -} - #include <grpc/support/alloc.h> #include <grpc/support/host_port.h> #include <grpc/support/log.h> #include <grpc/support/string_util.h> #include "test/core/util/port.h" +extern "C" { +#include "src/core/iomgr/socket_utils_posix.h" +#include "src/core/support/string.h" +} + + int test_client(const char* root, const char* host, int port) { int status; pid_t cli; diff --git a/test/cpp/interop/reconnect_interop_client.cc b/test/cpp/interop/reconnect_interop_client.cc index 675c6ff073..d332dcad84 100644 --- a/test/cpp/interop/reconnect_interop_client.cc +++ b/test/cpp/interop/reconnect_interop_client.cc @@ -39,7 +39,6 @@ #include <gflags/gflags.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> -#include <grpc++/status.h> #include "test/cpp/util/create_test_channel.h" #include "test/cpp/util/test_config.h" #include "test/proto/test.grpc.pb.h" diff --git a/test/cpp/interop/reconnect_interop_server.cc b/test/cpp/interop/reconnect_interop_server.cc index 8bc51aa52e..d4f171b1d0 100644 --- a/test/cpp/interop/reconnect_interop_server.cc +++ b/test/cpp/interop/reconnect_interop_server.cc @@ -31,23 +31,22 @@ * */ +#include <signal.h> +#include <unistd.h> + #include <condition_variable> #include <memory> #include <mutex> #include <sstream> -#include <signal.h> -#include <unistd.h> - #include <gflags/gflags.h> #include <grpc/grpc.h> #include <grpc/support/log.h> -#include <grpc++/config.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> + #include "test/core/util/reconnect_server.h" #include "test/cpp/util/test_config.h" #include "test/proto/test.grpc.pb.h" diff --git a/test/cpp/interop/server.cc b/test/cpp/interop/server.cc index 760bb18f73..35ec890aa0 100644 --- a/test/cpp/interop/server.cc +++ b/test/cpp/interop/server.cc @@ -31,32 +31,28 @@ * */ +#include <signal.h> +#include <unistd.h> + #include <fstream> #include <memory> #include <sstream> #include <thread> -#include <signal.h> -#include <unistd.h> - #include <gflags/gflags.h> #include <grpc/grpc.h> #include <grpc/support/log.h> #include <grpc/support/useful.h> - -#include <grpc++/config.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> +#include "test/cpp/interop/server_helper.h" +#include "test/cpp/util/test_config.h" #include "test/proto/test.grpc.pb.h" #include "test/proto/empty.grpc.pb.h" #include "test/proto/messages.grpc.pb.h" -#include "test/cpp/interop/server_helper.h" -#include "test/cpp/util/test_config.h" DEFINE_bool(enable_ssl, false, "Whether to use ssl/tls."); DEFINE_int32(port, 0, "Server port."); diff --git a/test/cpp/interop/server_helper.cc b/test/cpp/interop/server_helper.cc index 3721d79635..e897f4ebf0 100644 --- a/test/cpp/interop/server_helper.cc +++ b/test/cpp/interop/server_helper.cc @@ -36,7 +36,6 @@ #include <memory> #include <gflags/gflags.h> -#include <grpc++/config.h> #include <grpc++/server_credentials.h> #include "src/core/surface/call.h" diff --git a/test/cpp/qps/client.h b/test/cpp/qps/client.h index 5395d02e32..0f95cfea38 100644 --- a/test/cpp/qps/client.h +++ b/test/cpp/qps/client.h @@ -34,14 +34,14 @@ #ifndef TEST_QPS_CLIENT_H #define TEST_QPS_CLIENT_H +#include <condition_variable> +#include <mutex> + #include "test/cpp/qps/histogram.h" #include "test/cpp/qps/interarrival.h" #include "test/cpp/qps/timer.h" #include "test/cpp/qps/qpstest.grpc.pb.h" - -#include <condition_variable> -#include <mutex> -#include <grpc++/config.h> +#include "test/cpp/util/create_test_channel.h" namespace grpc { diff --git a/test/cpp/qps/client_async.cc b/test/cpp/qps/client_async.cc index a337610cbf..f779e4a577 100644 --- a/test/cpp/qps/client_async.cc +++ b/test/cpp/qps/client_async.cc @@ -46,14 +46,12 @@ #include <grpc/support/histogram.h> #include <grpc/support/log.h> #include <gflags/gflags.h> -#include <grpc++/async_unary_call.h> #include <grpc++/client_context.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> -#include "test/cpp/util/create_test_channel.h" + #include "test/cpp/qps/qpstest.grpc.pb.h" #include "test/cpp/qps/timer.h" #include "test/cpp/qps/client.h" +#include "test/cpp/util/create_test_channel.h" namespace grpc { namespace testing { diff --git a/test/cpp/qps/client_sync.cc b/test/cpp/qps/client_sync.cc index db5416a707..123dca6600 100644 --- a/test/cpp/qps/client_sync.cc +++ b/test/cpp/qps/client_sync.cc @@ -31,6 +31,8 @@ * */ +#include <sys/signal.h> + #include <cassert> #include <chrono> #include <memory> @@ -40,21 +42,18 @@ #include <vector> #include <sstream> -#include <sys/signal.h> - +#include <gflags/gflags.h> #include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/histogram.h> #include <grpc/support/host_port.h> #include <grpc/support/log.h> #include <grpc/support/time.h> -#include <gflags/gflags.h> #include <grpc++/client_context.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> #include <gtest/gtest.h> + #include "test/cpp/util/create_test_channel.h" #include "test/cpp/qps/client.h" #include "test/cpp/qps/qpstest.grpc.pb.h" diff --git a/test/cpp/qps/driver.cc b/test/cpp/qps/driver.cc index 78e3720938..3bd61ea4e8 100644 --- a/test/cpp/qps/driver.cc +++ b/test/cpp/qps/driver.cc @@ -31,24 +31,24 @@ * */ -#include "test/cpp/qps/driver.h" -#include "src/core/support/env.h" +#include <unistd.h> +#include <list> +#include <thread> +#include <deque> +#include <vector> + #include <grpc/support/alloc.h> #include <grpc/support/log.h> #include <grpc/support/host_port.h> -#include <grpc++/channel_arguments.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> -#include <grpc++/stream.h> -#include <list> -#include <thread> -#include <deque> -#include <vector> -#include <unistd.h> -#include "test/cpp/qps/histogram.h" -#include "test/cpp/qps/qps_worker.h" + +#include "src/core/support/env.h" #include "test/core/util/port.h" #include "test/core/util/test_config.h" +#include "test/cpp/qps/driver.h" +#include "test/cpp/qps/histogram.h" +#include "test/cpp/qps/qps_worker.h" using std::list; using std::thread; diff --git a/test/cpp/qps/interarrival.h b/test/cpp/qps/interarrival.h index 04d14f689f..841619e3ff 100644 --- a/test/cpp/qps/interarrival.h +++ b/test/cpp/qps/interarrival.h @@ -39,7 +39,7 @@ #include <cstdlib> #include <vector> -#include <grpc++/config.h> +#include <grpc++/support/config.h> namespace grpc { namespace testing { diff --git a/test/cpp/qps/perf_db_client.h b/test/cpp/qps/perf_db_client.h index 3433cd88d1..ae5d17074b 100644 --- a/test/cpp/qps/perf_db_client.h +++ b/test/cpp/qps/perf_db_client.h @@ -37,12 +37,11 @@ #include <cfloat> #include <grpc/grpc.h> -#include <grpc++/channel_arguments.h> +#include <grpc++/support/channel_arguments.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/status.h> #include "test/cpp/qps/perf_db.grpc.pb.h" namespace grpc { diff --git a/test/cpp/qps/qps_interarrival_test.cc b/test/cpp/qps/qps_interarrival_test.cc index 1eed956a1c..a7979e6187 100644 --- a/test/cpp/qps/qps_interarrival_test.cc +++ b/test/cpp/qps/qps_interarrival_test.cc @@ -31,13 +31,13 @@ * */ -#include "test/cpp/qps/interarrival.h" #include <chrono> #include <iostream> // Use the C histogram rather than C++ to avoid depending on proto #include <grpc/support/histogram.h> -#include <grpc++/config.h> + +#include "test/cpp/qps/interarrival.h" using grpc::testing::RandomDist; using grpc::testing::InterarrivalTimer; diff --git a/test/cpp/qps/qps_openloop_test.cc b/test/cpp/qps/qps_openloop_test.cc index 9a7313f6e8..5a6a9249a9 100644 --- a/test/cpp/qps/qps_openloop_test.cc +++ b/test/cpp/qps/qps_openloop_test.cc @@ -31,12 +31,12 @@ * */ +#include <signal.h> + #include <set> #include <grpc/support/log.h> -#include <signal.h> - #include "test/cpp/qps/driver.h" #include "test/cpp/qps/report.h" #include "test/cpp/util/benchmark_config.h" diff --git a/test/cpp/qps/qps_test.cc b/test/cpp/qps/qps_test.cc index ba980a6664..d0c4a79cd9 100644 --- a/test/cpp/qps/qps_test.cc +++ b/test/cpp/qps/qps_test.cc @@ -31,12 +31,12 @@ * */ +#include <signal.h> + #include <set> #include <grpc/support/log.h> -#include <signal.h> - #include "test/cpp/qps/driver.h" #include "test/cpp/qps/report.h" #include "test/cpp/util/benchmark_config.h" diff --git a/test/cpp/qps/qps_test_with_poll.cc b/test/cpp/qps/qps_test_with_poll.cc index 90a8da8d11..31d2c1bf7b 100644 --- a/test/cpp/qps/qps_test_with_poll.cc +++ b/test/cpp/qps/qps_test_with_poll.cc @@ -31,12 +31,12 @@ * */ +#include <signal.h> + #include <set> #include <grpc/support/log.h> -#include <signal.h> - #include "test/cpp/qps/driver.h" #include "test/cpp/qps/report.h" #include "test/cpp/util/benchmark_config.h" diff --git a/test/cpp/qps/qps_worker.cc b/test/cpp/qps/qps_worker.cc index f1cea5ee66..51e955a80a 100644 --- a/test/cpp/qps/qps_worker.cc +++ b/test/cpp/qps/qps_worker.cc @@ -47,16 +47,15 @@ #include <grpc/support/log.h> #include <grpc/support/host_port.h> #include <grpc++/client_context.h> -#include <grpc++/status.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_credentials.h> -#include <grpc++/stream.h> + #include "test/core/util/grpc_profiler.h" -#include "test/cpp/util/create_test_channel.h" #include "test/cpp/qps/qpstest.pb.h" #include "test/cpp/qps/client.h" #include "test/cpp/qps/server.h" +#include "test/cpp/util/create_test_channel.h" namespace grpc { namespace testing { diff --git a/test/cpp/qps/report.h b/test/cpp/qps/report.h index aec3cbe80a..620abade39 100644 --- a/test/cpp/qps/report.h +++ b/test/cpp/qps/report.h @@ -37,7 +37,8 @@ #include <memory> #include <set> #include <vector> -#include <grpc++/config.h> + +#include <grpc++/support/config.h> #include "test/cpp/qps/driver.h" #include "test/cpp/qps/qpstest.grpc.pb.h" diff --git a/test/cpp/qps/server_async.cc b/test/cpp/qps/server_async.cc index b4fc49c31c..77415f42ce 100644 --- a/test/cpp/qps/server_async.cc +++ b/test/cpp/qps/server_async.cc @@ -41,22 +41,20 @@ #include <thread> #include <gflags/gflags.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/host_port.h> -#include <grpc++/async_unary_call.h> -#include <grpc++/config.h> +#include <grpc/support/log.h> +#include <grpc++/support/config.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> #include <gtest/gtest.h> + #include "test/cpp/qps/qpstest.grpc.pb.h" #include "test/cpp/qps/server.h" -#include <grpc/grpc.h> -#include <grpc/support/log.h> namespace grpc { namespace testing { diff --git a/test/cpp/qps/server_sync.cc b/test/cpp/qps/server_sync.cc index 4c3c9cb497..c149fbc738 100644 --- a/test/cpp/qps/server_sync.cc +++ b/test/cpp/qps/server_sync.cc @@ -32,28 +32,25 @@ */ #include <sys/signal.h> -#include <thread> - #include <unistd.h> +#include <thread> #include <gflags/gflags.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/host_port.h> -#include <grpc++/config.h> -#include <grpc++/dynamic_thread_pool.h> -#include <grpc++/fixed_size_thread_pool.h> +#include <grpc/support/log.h> +#include <grpc++/support/dynamic_thread_pool.h> +#include <grpc++/support/fixed_size_thread_pool.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> + #include "test/cpp/qps/qpstest.grpc.pb.h" #include "test/cpp/qps/server.h" #include "test/cpp/qps/timer.h" -#include <grpc/grpc.h> -#include <grpc/support/log.h> namespace grpc { namespace testing { diff --git a/test/cpp/qps/stats.h b/test/cpp/qps/stats.h index 82dc03e3da..93875017ca 100644 --- a/test/cpp/qps/stats.h +++ b/test/cpp/qps/stats.h @@ -34,9 +34,10 @@ #ifndef TEST_QPS_STATS_UTILS_H #define TEST_QPS_STATS_UTILS_H -#include "test/cpp/qps/histogram.h" #include <string> +#include "test/cpp/qps/histogram.h" + namespace grpc { namespace testing { diff --git a/test/cpp/qps/sync_streaming_ping_pong_test.cc b/test/cpp/qps/sync_streaming_ping_pong_test.cc index d53905a779..52e43939a8 100644 --- a/test/cpp/qps/sync_streaming_ping_pong_test.cc +++ b/test/cpp/qps/sync_streaming_ping_pong_test.cc @@ -31,12 +31,12 @@ * */ +#include <signal.h> + #include <set> #include <grpc/support/log.h> -#include <signal.h> - #include "test/cpp/qps/driver.h" #include "test/cpp/qps/report.h" #include "test/cpp/util/benchmark_config.h" diff --git a/test/cpp/qps/sync_unary_ping_pong_test.cc b/test/cpp/qps/sync_unary_ping_pong_test.cc index d276d13a43..fbd21357aa 100644 --- a/test/cpp/qps/sync_unary_ping_pong_test.cc +++ b/test/cpp/qps/sync_unary_ping_pong_test.cc @@ -31,12 +31,12 @@ * */ +#include <signal.h> + #include <set> #include <grpc/support/log.h> -#include <signal.h> - #include "test/cpp/qps/driver.h" #include "test/cpp/qps/report.h" #include "test/cpp/util/benchmark_config.h" diff --git a/test/cpp/qps/timer.cc b/test/cpp/qps/timer.cc index c1ba23decd..8edb838da3 100644 --- a/test/cpp/qps/timer.cc +++ b/test/cpp/qps/timer.cc @@ -36,7 +36,6 @@ #include <sys/time.h> #include <sys/resource.h> #include <grpc/support/time.h> -#include <grpc++/config.h> Timer::Timer() : start_(Sample()) {} diff --git a/test/cpp/qps/worker.cc b/test/cpp/qps/worker.cc index 7cf4903148..935e4853a6 100644 --- a/test/cpp/qps/worker.cc +++ b/test/cpp/qps/worker.cc @@ -36,9 +36,9 @@ #include <chrono> #include <thread> +#include <gflags/gflags.h> #include <grpc/grpc.h> #include <grpc/support/time.h> -#include <gflags/gflags.h> #include "test/cpp/qps/qps_worker.h" #include "test/cpp/util/test_config.h" diff --git a/test/cpp/server/dynamic_thread_pool_test.cc b/test/cpp/server/dynamic_thread_pool_test.cc index 63b603b8f7..e978fd03f3 100644 --- a/test/cpp/server/dynamic_thread_pool_test.cc +++ b/test/cpp/server/dynamic_thread_pool_test.cc @@ -31,11 +31,12 @@ * */ +#include <grpc++/support/dynamic_thread_pool.h> + #include <condition_variable> #include <functional> #include <mutex> -#include <grpc++/dynamic_thread_pool.h> #include <gtest/gtest.h> namespace grpc { diff --git a/test/cpp/server/fixed_size_thread_pool_test.cc b/test/cpp/server/fixed_size_thread_pool_test.cc index 442e974fc1..97953af224 100644 --- a/test/cpp/server/fixed_size_thread_pool_test.cc +++ b/test/cpp/server/fixed_size_thread_pool_test.cc @@ -31,11 +31,12 @@ * */ +#include <grpc++/support/fixed_size_thread_pool.h> + #include <condition_variable> #include <functional> #include <mutex> -#include <grpc++/fixed_size_thread_pool.h> #include <gtest/gtest.h> namespace grpc { diff --git a/test/cpp/util/byte_buffer_test.cc b/test/cpp/util/byte_buffer_test.cc index 5195575f99..f36c32cac5 100644 --- a/test/cpp/util/byte_buffer_test.cc +++ b/test/cpp/util/byte_buffer_test.cc @@ -31,13 +31,13 @@ * */ -#include <grpc++/byte_buffer.h> +#include <grpc++/support/byte_buffer.h> #include <cstring> #include <vector> #include <grpc/support/slice.h> -#include <grpc++/slice.h> +#include <grpc++/support/slice.h> #include <gtest/gtest.h> namespace grpc { diff --git a/test/cpp/util/cli_call.cc b/test/cpp/util/cli_call.cc index d0a300f511..d60cee9c02 100644 --- a/test/cpp/util/cli_call.cc +++ b/test/cpp/util/cli_call.cc @@ -35,16 +35,13 @@ #include <iostream> -#include <grpc++/byte_buffer.h> -#include <grpc++/channel.h> -#include <grpc++/client_context.h> -#include <grpc++/generic_stub.h> -#include <grpc++/status.h> -#include <grpc++/stream.h> - #include <grpc/grpc.h> #include <grpc/support/log.h> #include <grpc/support/slice.h> +#include <grpc++/support/byte_buffer.h> +#include <grpc++/channel.h> +#include <grpc++/client_context.h> +#include <grpc++/generic/generic_stub.h> namespace grpc { namespace testing { diff --git a/test/cpp/util/cli_call.h b/test/cpp/util/cli_call.h index 46b5dd3e4f..7a3dcf2e9f 100644 --- a/test/cpp/util/cli_call.h +++ b/test/cpp/util/cli_call.h @@ -37,8 +37,7 @@ #include <map> #include <grpc++/channel.h> -#include <grpc++/config.h> -#include <grpc++/status.h> +#include <grpc++/support/status.h> namespace grpc { namespace testing { diff --git a/test/cpp/util/cli_call_test.cc b/test/cpp/util/cli_call_test.cc index 146e96720f..0d34009bd5 100644 --- a/test/cpp/util/cli_call_test.cc +++ b/test/cpp/util/cli_call_test.cc @@ -31,24 +31,23 @@ * */ -#include "test/core/util/test_config.h" #include "test/cpp/util/cli_call.h" -#include "test/cpp/util/echo.grpc.pb.h" -#include <grpc++/channel_arguments.h> + +#include <grpc/grpc.h> #include <grpc++/channel.h> #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/dynamic_thread_pool.h> +#include <grpc++/support/dynamic_thread_pool.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/status.h> -#include "test/core/util/port.h" #include <gtest/gtest.h> -#include <grpc/grpc.h> +#include "test/core/util/port.h" +#include "test/core/util/test_config.h" +#include "test/cpp/util/echo.grpc.pb.h" using grpc::cpp::test::util::EchoRequest; using grpc::cpp::test::util::EchoResponse; diff --git a/test/cpp/util/create_test_channel.cc b/test/cpp/util/create_test_channel.cc index 43e719ef6b..161b4bdc1d 100644 --- a/test/cpp/util/create_test_channel.cc +++ b/test/cpp/util/create_test_channel.cc @@ -33,11 +33,11 @@ #include "test/cpp/util/create_test_channel.h" -#include "test/core/end2end/data/ssl_test_data.h" -#include <grpc++/channel_arguments.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> +#include "test/core/end2end/data/ssl_test_data.h" + namespace grpc { // When ssl is enabled, if server is empty, override_hostname is used to diff --git a/test/cpp/util/create_test_channel.h b/test/cpp/util/create_test_channel.h index 129cc746f9..1263d4ed68 100644 --- a/test/cpp/util/create_test_channel.h +++ b/test/cpp/util/create_test_channel.h @@ -36,7 +36,6 @@ #include <memory> -#include <grpc++/config.h> #include <grpc++/credentials.h> namespace grpc { diff --git a/test/cpp/util/grpc_cli.cc b/test/cpp/util/grpc_cli.cc index 15c56a352c..746d67deeb 100644 --- a/test/cpp/util/grpc_cli.cc +++ b/test/cpp/util/grpc_cli.cc @@ -64,14 +64,13 @@ #include <sstream> #include <gflags/gflags.h> -#include "test/cpp/util/cli_call.h" -#include "test/cpp/util/test_config.h" -#include <grpc++/channel_arguments.h> +#include <grpc/grpc.h> #include <grpc++/channel.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc/grpc.h> +#include "test/cpp/util/cli_call.h" +#include "test/cpp/util/test_config.h" DEFINE_bool(enable_ssl, true, "Whether to use ssl/tls."); DEFINE_bool(use_auth, false, "Whether to create default google credentials."); diff --git a/test/cpp/util/slice_test.cc b/test/cpp/util/slice_test.cc index eb328490e1..de7ff031ab 100644 --- a/test/cpp/util/slice_test.cc +++ b/test/cpp/util/slice_test.cc @@ -31,7 +31,7 @@ * */ -#include <grpc++/slice.h> +#include <grpc++/support/slice.h> #include <grpc/support/slice.h> #include <gtest/gtest.h> diff --git a/test/cpp/util/status_test.cc b/test/cpp/util/status_test.cc index 17b92ab06a..837a6bab02 100644 --- a/test/cpp/util/status_test.cc +++ b/test/cpp/util/status_test.cc @@ -31,7 +31,8 @@ * */ -#include <grpc++/status.h> +#include <grpc++/support/status.h> + #include <grpc/status.h> #include <grpc/support/log.h> diff --git a/test/cpp/util/time_test.cc b/test/cpp/util/time_test.cc index 4cb6ec4b4e..1e501dfd28 100644 --- a/test/cpp/util/time_test.cc +++ b/test/cpp/util/time_test.cc @@ -32,7 +32,7 @@ */ #include <grpc/support/time.h> -#include <grpc++/time.h> +#include <grpc++/support/time.h> #include <gtest/gtest.h> using std::chrono::duration_cast; diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++ index 8daeb134f7..ccea4f68de 100644 --- a/tools/doxygen/Doxyfile.c++ +++ b/tools/doxygen/Doxyfile.c++ @@ -760,21 +760,13 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = include/grpc++/async_generic_service.h \ -include/grpc++/async_unary_call.h \ -include/grpc++/auth_context.h \ -include/grpc++/byte_buffer.h \ -include/grpc++/channel.h \ -include/grpc++/channel_arguments.h \ +INPUT = include/grpc++/channel.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ -include/grpc++/config.h \ -include/grpc++/config_protobuf.h \ include/grpc++/create_channel.h \ include/grpc++/credentials.h \ -include/grpc++/dynamic_thread_pool.h \ -include/grpc++/fixed_size_thread_pool.h \ -include/grpc++/generic_stub.h \ +include/grpc++/generic/async_generic_service.h \ +include/grpc++/generic/generic_stub.h \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ include/grpc++/impl/grpc_library.h \ @@ -793,13 +785,21 @@ include/grpc++/server.h \ include/grpc++/server_builder.h \ include/grpc++/server_context.h \ include/grpc++/server_credentials.h \ -include/grpc++/slice.h \ -include/grpc++/status.h \ -include/grpc++/status_code_enum.h \ -include/grpc++/stream.h \ -include/grpc++/stub_options.h \ -include/grpc++/thread_pool_interface.h \ -include/grpc++/time.h +include/grpc++/support/async_unary_call.h \ +include/grpc++/support/auth_context.h \ +include/grpc++/support/byte_buffer.h \ +include/grpc++/support/channel_arguments.h \ +include/grpc++/support/config.h \ +include/grpc++/support/config_protobuf.h \ +include/grpc++/support/dynamic_thread_pool.h \ +include/grpc++/support/fixed_size_thread_pool.h \ +include/grpc++/support/slice.h \ +include/grpc++/support/status.h \ +include/grpc++/support/status_code_enum.h \ +include/grpc++/support/stream.h \ +include/grpc++/support/stub_options.h \ +include/grpc++/support/thread_pool_interface.h \ +include/grpc++/support/time.h # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index 23ff05fb86..c4a7fb0757 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -760,21 +760,13 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = include/grpc++/async_generic_service.h \ -include/grpc++/async_unary_call.h \ -include/grpc++/auth_context.h \ -include/grpc++/byte_buffer.h \ -include/grpc++/channel.h \ -include/grpc++/channel_arguments.h \ +INPUT = include/grpc++/channel.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ -include/grpc++/config.h \ -include/grpc++/config_protobuf.h \ include/grpc++/create_channel.h \ include/grpc++/credentials.h \ -include/grpc++/dynamic_thread_pool.h \ -include/grpc++/fixed_size_thread_pool.h \ -include/grpc++/generic_stub.h \ +include/grpc++/generic/async_generic_service.h \ +include/grpc++/generic/generic_stub.h \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ include/grpc++/impl/grpc_library.h \ @@ -793,13 +785,21 @@ include/grpc++/server.h \ include/grpc++/server_builder.h \ include/grpc++/server_context.h \ include/grpc++/server_credentials.h \ -include/grpc++/slice.h \ -include/grpc++/status.h \ -include/grpc++/status_code_enum.h \ -include/grpc++/stream.h \ -include/grpc++/stub_options.h \ -include/grpc++/thread_pool_interface.h \ -include/grpc++/time.h \ +include/grpc++/support/async_unary_call.h \ +include/grpc++/support/auth_context.h \ +include/grpc++/support/byte_buffer.h \ +include/grpc++/support/channel_arguments.h \ +include/grpc++/support/config.h \ +include/grpc++/support/config_protobuf.h \ +include/grpc++/support/dynamic_thread_pool.h \ +include/grpc++/support/fixed_size_thread_pool.h \ +include/grpc++/support/slice.h \ +include/grpc++/support/status.h \ +include/grpc++/support/status_code_enum.h \ +include/grpc++/support/stream.h \ +include/grpc++/support/stub_options.h \ +include/grpc++/support/thread_pool_interface.h \ +include/grpc++/support/time.h \ src/cpp/client/secure_credentials.h \ src/cpp/common/secure_auth_context.h \ src/cpp/server/secure_server_credentials.h \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 9446368a8e..8e6afe87d2 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -13118,21 +13118,13 @@ "grpc" ], "headers": [ - "include/grpc++/async_generic_service.h", - "include/grpc++/async_unary_call.h", - "include/grpc++/auth_context.h", - "include/grpc++/byte_buffer.h", "include/grpc++/channel.h", - "include/grpc++/channel_arguments.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", - "include/grpc++/config.h", - "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", - "include/grpc++/generic_stub.h", + "include/grpc++/generic/async_generic_service.h", + "include/grpc++/generic/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", @@ -13151,13 +13143,21 @@ "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", - "include/grpc++/slice.h", - "include/grpc++/status.h", - "include/grpc++/status_code_enum.h", - "include/grpc++/stream.h", - "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", - "include/grpc++/time.h", + "include/grpc++/support/async_unary_call.h", + "include/grpc++/support/auth_context.h", + "include/grpc++/support/byte_buffer.h", + "include/grpc++/support/channel_arguments.h", + "include/grpc++/support/config.h", + "include/grpc++/support/config_protobuf.h", + "include/grpc++/support/dynamic_thread_pool.h", + "include/grpc++/support/fixed_size_thread_pool.h", + "include/grpc++/support/slice.h", + "include/grpc++/support/status.h", + "include/grpc++/support/status_code_enum.h", + "include/grpc++/support/stream.h", + "include/grpc++/support/stub_options.h", + "include/grpc++/support/thread_pool_interface.h", + "include/grpc++/support/time.h", "src/cpp/client/create_channel_internal.h", "src/cpp/client/secure_credentials.h", "src/cpp/common/create_auth_context.h", @@ -13167,21 +13167,13 @@ "language": "c++", "name": "grpc++", "src": [ - "include/grpc++/async_generic_service.h", - "include/grpc++/async_unary_call.h", - "include/grpc++/auth_context.h", - "include/grpc++/byte_buffer.h", "include/grpc++/channel.h", - "include/grpc++/channel_arguments.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", - "include/grpc++/config.h", - "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", - "include/grpc++/generic_stub.h", + "include/grpc++/generic/async_generic_service.h", + "include/grpc++/generic/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", @@ -13200,13 +13192,21 @@ "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", - "include/grpc++/slice.h", - "include/grpc++/status.h", - "include/grpc++/status_code_enum.h", - "include/grpc++/stream.h", - "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", - "include/grpc++/time.h", + "include/grpc++/support/async_unary_call.h", + "include/grpc++/support/auth_context.h", + "include/grpc++/support/byte_buffer.h", + "include/grpc++/support/channel_arguments.h", + "include/grpc++/support/config.h", + "include/grpc++/support/config_protobuf.h", + "include/grpc++/support/dynamic_thread_pool.h", + "include/grpc++/support/fixed_size_thread_pool.h", + "include/grpc++/support/slice.h", + "include/grpc++/support/status.h", + "include/grpc++/support/status_code_enum.h", + "include/grpc++/support/stream.h", + "include/grpc++/support/stub_options.h", + "include/grpc++/support/thread_pool_interface.h", + "include/grpc++/support/time.h", "src/cpp/client/channel.cc", "src/cpp/client/channel_arguments.cc", "src/cpp/client/client_context.cc", @@ -13290,21 +13290,13 @@ "grpc_unsecure" ], "headers": [ - "include/grpc++/async_generic_service.h", - "include/grpc++/async_unary_call.h", - "include/grpc++/auth_context.h", - "include/grpc++/byte_buffer.h", "include/grpc++/channel.h", - "include/grpc++/channel_arguments.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", - "include/grpc++/config.h", - "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", - "include/grpc++/generic_stub.h", + "include/grpc++/generic/async_generic_service.h", + "include/grpc++/generic/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", @@ -13323,34 +13315,34 @@ "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", - "include/grpc++/slice.h", - "include/grpc++/status.h", - "include/grpc++/status_code_enum.h", - "include/grpc++/stream.h", - "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", - "include/grpc++/time.h", + "include/grpc++/support/async_unary_call.h", + "include/grpc++/support/auth_context.h", + "include/grpc++/support/byte_buffer.h", + "include/grpc++/support/channel_arguments.h", + "include/grpc++/support/config.h", + "include/grpc++/support/config_protobuf.h", + "include/grpc++/support/dynamic_thread_pool.h", + "include/grpc++/support/fixed_size_thread_pool.h", + "include/grpc++/support/slice.h", + "include/grpc++/support/status.h", + "include/grpc++/support/status_code_enum.h", + "include/grpc++/support/stream.h", + "include/grpc++/support/stub_options.h", + "include/grpc++/support/thread_pool_interface.h", + "include/grpc++/support/time.h", "src/cpp/client/create_channel_internal.h", "src/cpp/common/create_auth_context.h" ], "language": "c++", "name": "grpc++_unsecure", "src": [ - "include/grpc++/async_generic_service.h", - "include/grpc++/async_unary_call.h", - "include/grpc++/auth_context.h", - "include/grpc++/byte_buffer.h", "include/grpc++/channel.h", - "include/grpc++/channel_arguments.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", - "include/grpc++/config.h", - "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", - "include/grpc++/generic_stub.h", + "include/grpc++/generic/async_generic_service.h", + "include/grpc++/generic/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", "include/grpc++/impl/grpc_library.h", @@ -13369,13 +13361,21 @@ "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", - "include/grpc++/slice.h", - "include/grpc++/status.h", - "include/grpc++/status_code_enum.h", - "include/grpc++/stream.h", - "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", - "include/grpc++/time.h", + "include/grpc++/support/async_unary_call.h", + "include/grpc++/support/auth_context.h", + "include/grpc++/support/byte_buffer.h", + "include/grpc++/support/channel_arguments.h", + "include/grpc++/support/config.h", + "include/grpc++/support/config_protobuf.h", + "include/grpc++/support/dynamic_thread_pool.h", + "include/grpc++/support/fixed_size_thread_pool.h", + "include/grpc++/support/slice.h", + "include/grpc++/support/status.h", + "include/grpc++/support/status_code_enum.h", + "include/grpc++/support/stream.h", + "include/grpc++/support/stub_options.h", + "include/grpc++/support/thread_pool_interface.h", + "include/grpc++/support/time.h", "src/cpp/client/channel.cc", "src/cpp/client/channel_arguments.cc", "src/cpp/client/client_context.cc", diff --git a/vsprojects/grpc++/grpc++.vcxproj b/vsprojects/grpc++/grpc++.vcxproj index e2e17d4177..5181b3a200 100644 --- a/vsprojects/grpc++/grpc++.vcxproj +++ b/vsprojects/grpc++/grpc++.vcxproj @@ -213,21 +213,13 @@ </Link> </ItemDefinitionGroup> <ItemGroup> - <ClInclude Include="..\..\include\grpc++\async_generic_service.h" /> - <ClInclude Include="..\..\include\grpc++\async_unary_call.h" /> - <ClInclude Include="..\..\include\grpc++\auth_context.h" /> - <ClInclude Include="..\..\include\grpc++\byte_buffer.h" /> <ClInclude Include="..\..\include\grpc++\channel.h" /> - <ClInclude Include="..\..\include\grpc++\channel_arguments.h" /> <ClInclude Include="..\..\include\grpc++\client_context.h" /> <ClInclude Include="..\..\include\grpc++\completion_queue.h" /> - <ClInclude Include="..\..\include\grpc++\config.h" /> - <ClInclude Include="..\..\include\grpc++\config_protobuf.h" /> <ClInclude Include="..\..\include\grpc++\create_channel.h" /> <ClInclude Include="..\..\include\grpc++\credentials.h" /> - <ClInclude Include="..\..\include\grpc++\dynamic_thread_pool.h" /> - <ClInclude Include="..\..\include\grpc++\fixed_size_thread_pool.h" /> - <ClInclude Include="..\..\include\grpc++\generic_stub.h" /> + <ClInclude Include="..\..\include\grpc++\generic\async_generic_service.h" /> + <ClInclude Include="..\..\include\grpc++\generic\generic_stub.h" /> <ClInclude Include="..\..\include\grpc++\impl\call.h" /> <ClInclude Include="..\..\include\grpc++\impl\client_unary_call.h" /> <ClInclude Include="..\..\include\grpc++\impl\grpc_library.h" /> @@ -246,13 +238,21 @@ <ClInclude Include="..\..\include\grpc++\server_builder.h" /> <ClInclude Include="..\..\include\grpc++\server_context.h" /> <ClInclude Include="..\..\include\grpc++\server_credentials.h" /> - <ClInclude Include="..\..\include\grpc++\slice.h" /> - <ClInclude Include="..\..\include\grpc++\status.h" /> - <ClInclude Include="..\..\include\grpc++\status_code_enum.h" /> - <ClInclude Include="..\..\include\grpc++\stream.h" /> - <ClInclude Include="..\..\include\grpc++\stub_options.h" /> - <ClInclude Include="..\..\include\grpc++\thread_pool_interface.h" /> - <ClInclude Include="..\..\include\grpc++\time.h" /> + <ClInclude Include="..\..\include\grpc++\support\async_unary_call.h" /> + <ClInclude Include="..\..\include\grpc++\support\auth_context.h" /> + <ClInclude Include="..\..\include\grpc++\support\byte_buffer.h" /> + <ClInclude Include="..\..\include\grpc++\support\channel_arguments.h" /> + <ClInclude Include="..\..\include\grpc++\support\config.h" /> + <ClInclude Include="..\..\include\grpc++\support\config_protobuf.h" /> + <ClInclude Include="..\..\include\grpc++\support\dynamic_thread_pool.h" /> + <ClInclude Include="..\..\include\grpc++\support\fixed_size_thread_pool.h" /> + <ClInclude Include="..\..\include\grpc++\support\slice.h" /> + <ClInclude Include="..\..\include\grpc++\support\status.h" /> + <ClInclude Include="..\..\include\grpc++\support\status_code_enum.h" /> + <ClInclude Include="..\..\include\grpc++\support\stream.h" /> + <ClInclude Include="..\..\include\grpc++\support\stub_options.h" /> + <ClInclude Include="..\..\include\grpc++\support\thread_pool_interface.h" /> + <ClInclude Include="..\..\include\grpc++\support\time.h" /> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\src\cpp\client\secure_credentials.h" /> diff --git a/vsprojects/grpc++/grpc++.vcxproj.filters b/vsprojects/grpc++/grpc++.vcxproj.filters index 6f308d1d02..cbffd3c765 100644 --- a/vsprojects/grpc++/grpc++.vcxproj.filters +++ b/vsprojects/grpc++/grpc++.vcxproj.filters @@ -96,50 +96,26 @@ </ClCompile> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\include\grpc++\async_generic_service.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\async_unary_call.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\auth_context.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\byte_buffer.h"> - <Filter>include\grpc++</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\channel.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\channel_arguments.h"> - <Filter>include\grpc++</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\client_context.h"> <Filter>include\grpc++</Filter> </ClInclude> <ClInclude Include="..\..\include\grpc++\completion_queue.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\config.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\config_protobuf.h"> - <Filter>include\grpc++</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\create_channel.h"> <Filter>include\grpc++</Filter> </ClInclude> <ClInclude Include="..\..\include\grpc++\credentials.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\dynamic_thread_pool.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\fixed_size_thread_pool.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\generic\async_generic_service.h"> + <Filter>include\grpc++\generic</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\generic_stub.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\generic\generic_stub.h"> + <Filter>include\grpc++\generic</Filter> </ClInclude> <ClInclude Include="..\..\include\grpc++\impl\call.h"> <Filter>include\grpc++\impl</Filter> @@ -195,26 +171,50 @@ <ClInclude Include="..\..\include\grpc++\server_credentials.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\slice.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\async_unary_call.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\status.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\auth_context.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\status_code_enum.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\byte_buffer.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\stream.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\channel_arguments.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\stub_options.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\config.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\thread_pool_interface.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\config_protobuf.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\time.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\dynamic_thread_pool.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\fixed_size_thread_pool.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\slice.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\status.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\status_code_enum.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\stream.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\stub_options.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\thread_pool_interface.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\time.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> </ItemGroup> <ItemGroup> @@ -242,9 +242,15 @@ <Filter Include="include\grpc++"> <UniqueIdentifier>{784a0281-f547-aeb0-9f55-b26b7de9c769}</UniqueIdentifier> </Filter> + <Filter Include="include\grpc++\generic"> + <UniqueIdentifier>{51dae921-3aa2-1976-2ee4-c5615de1af54}</UniqueIdentifier> + </Filter> <Filter Include="include\grpc++\impl"> <UniqueIdentifier>{0da8cd95-314f-da1b-5ce7-7791a5be1f1a}</UniqueIdentifier> </Filter> + <Filter Include="include\grpc++\support"> + <UniqueIdentifier>{a5c10dae-f715-2a30-1066-d22f8bc94cb2}</UniqueIdentifier> + </Filter> <Filter Include="src"> <UniqueIdentifier>{328ff211-2886-406e-56f9-18ba1686f363}</UniqueIdentifier> </Filter> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj index 4be468cb62..77f83086c7 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj @@ -213,21 +213,13 @@ </Link> </ItemDefinitionGroup> <ItemGroup> - <ClInclude Include="..\..\include\grpc++\async_generic_service.h" /> - <ClInclude Include="..\..\include\grpc++\async_unary_call.h" /> - <ClInclude Include="..\..\include\grpc++\auth_context.h" /> - <ClInclude Include="..\..\include\grpc++\byte_buffer.h" /> <ClInclude Include="..\..\include\grpc++\channel.h" /> - <ClInclude Include="..\..\include\grpc++\channel_arguments.h" /> <ClInclude Include="..\..\include\grpc++\client_context.h" /> <ClInclude Include="..\..\include\grpc++\completion_queue.h" /> - <ClInclude Include="..\..\include\grpc++\config.h" /> - <ClInclude Include="..\..\include\grpc++\config_protobuf.h" /> <ClInclude Include="..\..\include\grpc++\create_channel.h" /> <ClInclude Include="..\..\include\grpc++\credentials.h" /> - <ClInclude Include="..\..\include\grpc++\dynamic_thread_pool.h" /> - <ClInclude Include="..\..\include\grpc++\fixed_size_thread_pool.h" /> - <ClInclude Include="..\..\include\grpc++\generic_stub.h" /> + <ClInclude Include="..\..\include\grpc++\generic\async_generic_service.h" /> + <ClInclude Include="..\..\include\grpc++\generic\generic_stub.h" /> <ClInclude Include="..\..\include\grpc++\impl\call.h" /> <ClInclude Include="..\..\include\grpc++\impl\client_unary_call.h" /> <ClInclude Include="..\..\include\grpc++\impl\grpc_library.h" /> @@ -246,13 +238,21 @@ <ClInclude Include="..\..\include\grpc++\server_builder.h" /> <ClInclude Include="..\..\include\grpc++\server_context.h" /> <ClInclude Include="..\..\include\grpc++\server_credentials.h" /> - <ClInclude Include="..\..\include\grpc++\slice.h" /> - <ClInclude Include="..\..\include\grpc++\status.h" /> - <ClInclude Include="..\..\include\grpc++\status_code_enum.h" /> - <ClInclude Include="..\..\include\grpc++\stream.h" /> - <ClInclude Include="..\..\include\grpc++\stub_options.h" /> - <ClInclude Include="..\..\include\grpc++\thread_pool_interface.h" /> - <ClInclude Include="..\..\include\grpc++\time.h" /> + <ClInclude Include="..\..\include\grpc++\support\async_unary_call.h" /> + <ClInclude Include="..\..\include\grpc++\support\auth_context.h" /> + <ClInclude Include="..\..\include\grpc++\support\byte_buffer.h" /> + <ClInclude Include="..\..\include\grpc++\support\channel_arguments.h" /> + <ClInclude Include="..\..\include\grpc++\support\config.h" /> + <ClInclude Include="..\..\include\grpc++\support\config_protobuf.h" /> + <ClInclude Include="..\..\include\grpc++\support\dynamic_thread_pool.h" /> + <ClInclude Include="..\..\include\grpc++\support\fixed_size_thread_pool.h" /> + <ClInclude Include="..\..\include\grpc++\support\slice.h" /> + <ClInclude Include="..\..\include\grpc++\support\status.h" /> + <ClInclude Include="..\..\include\grpc++\support\status_code_enum.h" /> + <ClInclude Include="..\..\include\grpc++\support\stream.h" /> + <ClInclude Include="..\..\include\grpc++\support\stub_options.h" /> + <ClInclude Include="..\..\include\grpc++\support\thread_pool_interface.h" /> + <ClInclude Include="..\..\include\grpc++\support\time.h" /> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\src\cpp\client\create_channel_internal.h" /> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters index bd51d1fa0b..d4288f8987 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters @@ -81,50 +81,26 @@ </ClCompile> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\include\grpc++\async_generic_service.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\async_unary_call.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\auth_context.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\byte_buffer.h"> - <Filter>include\grpc++</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\channel.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\channel_arguments.h"> - <Filter>include\grpc++</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\client_context.h"> <Filter>include\grpc++</Filter> </ClInclude> <ClInclude Include="..\..\include\grpc++\completion_queue.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\config.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\config_protobuf.h"> - <Filter>include\grpc++</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\create_channel.h"> <Filter>include\grpc++</Filter> </ClInclude> <ClInclude Include="..\..\include\grpc++\credentials.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\dynamic_thread_pool.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\fixed_size_thread_pool.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\generic\async_generic_service.h"> + <Filter>include\grpc++\generic</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\generic_stub.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\generic\generic_stub.h"> + <Filter>include\grpc++\generic</Filter> </ClInclude> <ClInclude Include="..\..\include\grpc++\impl\call.h"> <Filter>include\grpc++\impl</Filter> @@ -180,26 +156,50 @@ <ClInclude Include="..\..\include\grpc++\server_credentials.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\slice.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\async_unary_call.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\status.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\auth_context.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\status_code_enum.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\byte_buffer.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\stream.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\channel_arguments.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\stub_options.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\config.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\thread_pool_interface.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\config_protobuf.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\time.h"> - <Filter>include\grpc++</Filter> + <ClInclude Include="..\..\include\grpc++\support\dynamic_thread_pool.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\fixed_size_thread_pool.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\slice.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\status.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\status_code_enum.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\stream.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\stub_options.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\thread_pool_interface.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\time.h"> + <Filter>include\grpc++\support</Filter> </ClInclude> </ItemGroup> <ItemGroup> @@ -218,9 +218,15 @@ <Filter Include="include\grpc++"> <UniqueIdentifier>{eceb50c0-bb49-3812-b6bd-b0af6df81da7}</UniqueIdentifier> </Filter> + <Filter Include="include\grpc++\generic"> + <UniqueIdentifier>{83717d3c-57d9-2bfa-ed9c-2b08f86da12b}</UniqueIdentifier> + </Filter> <Filter Include="include\grpc++\impl"> <UniqueIdentifier>{dadc0002-f2ac-451b-a9b8-33b8de10b5fc}</UniqueIdentifier> </Filter> + <Filter Include="include\grpc++\support"> + <UniqueIdentifier>{0ebf8008-80b9-d6da-e1dc-854bf1ec2195}</UniqueIdentifier> + </Filter> <Filter Include="src"> <UniqueIdentifier>{cce6a85d-1111-3834-6825-31e170d93cff}</UniqueIdentifier> </Filter> -- GitLab From 9fb35a53320a7b958739ce01ed50de087e6c5ee9 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Fri, 21 Aug 2015 15:49:35 -0700 Subject: [PATCH 135/178] split stream.h into sync_stream.h and async_stream.h --- BUILD | 6 +- Makefile | 6 +- build.json | 3 +- .../grpc++/generic/async_generic_service.h | 2 +- include/grpc++/generic/generic_stub.h | 2 +- include/grpc++/impl/rpc_service_method.h | 2 +- .../support/{stream.h => async_stream.h} | 348 +--------------- include/grpc++/support/sync_stream.h | 392 ++++++++++++++++++ src/compiler/cpp_generator.cc | 6 +- tools/doxygen/Doxyfile.c++ | 3 +- tools/doxygen/Doxyfile.c++.internal | 3 +- tools/run_tests/sources_and_headers.json | 12 +- vsprojects/grpc++/grpc++.vcxproj | 3 +- vsprojects/grpc++/grpc++.vcxproj.filters | 7 +- .../grpc++_unsecure/grpc++_unsecure.vcxproj | 3 +- .../grpc++_unsecure.vcxproj.filters | 7 +- 16 files changed, 438 insertions(+), 367 deletions(-) rename include/grpc++/support/{stream.h => async_stream.h} (57%) create mode 100644 include/grpc++/support/sync_stream.h diff --git a/BUILD b/BUILD index 620a954a5a..3847795f4d 100644 --- a/BUILD +++ b/BUILD @@ -735,6 +735,7 @@ cc_library( "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", + "include/grpc++/support/async_stream.h", "include/grpc++/support/async_unary_call.h", "include/grpc++/support/auth_context.h", "include/grpc++/support/byte_buffer.h", @@ -746,8 +747,8 @@ cc_library( "include/grpc++/support/slice.h", "include/grpc++/support/status.h", "include/grpc++/support/status_code_enum.h", - "include/grpc++/support/stream.h", "include/grpc++/support/stub_options.h", + "include/grpc++/support/sync_stream.h", "include/grpc++/support/thread_pool_interface.h", "include/grpc++/support/time.h", ], @@ -821,6 +822,7 @@ cc_library( "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", + "include/grpc++/support/async_stream.h", "include/grpc++/support/async_unary_call.h", "include/grpc++/support/auth_context.h", "include/grpc++/support/byte_buffer.h", @@ -832,8 +834,8 @@ cc_library( "include/grpc++/support/slice.h", "include/grpc++/support/status.h", "include/grpc++/support/status_code_enum.h", - "include/grpc++/support/stream.h", "include/grpc++/support/stub_options.h", + "include/grpc++/support/sync_stream.h", "include/grpc++/support/thread_pool_interface.h", "include/grpc++/support/time.h", ], diff --git a/Makefile b/Makefile index 9dffab01c0..626c155f64 100644 --- a/Makefile +++ b/Makefile @@ -4654,6 +4654,7 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/server_builder.h \ include/grpc++/server_context.h \ include/grpc++/server_credentials.h \ + include/grpc++/support/async_stream.h \ include/grpc++/support/async_unary_call.h \ include/grpc++/support/auth_context.h \ include/grpc++/support/byte_buffer.h \ @@ -4665,8 +4666,8 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/support/slice.h \ include/grpc++/support/status.h \ include/grpc++/support/status_code_enum.h \ - include/grpc++/support/stream.h \ include/grpc++/support/stub_options.h \ + include/grpc++/support/sync_stream.h \ include/grpc++/support/thread_pool_interface.h \ include/grpc++/support/time.h \ @@ -4896,6 +4897,7 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/server_builder.h \ include/grpc++/server_context.h \ include/grpc++/server_credentials.h \ + include/grpc++/support/async_stream.h \ include/grpc++/support/async_unary_call.h \ include/grpc++/support/auth_context.h \ include/grpc++/support/byte_buffer.h \ @@ -4907,8 +4909,8 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/support/slice.h \ include/grpc++/support/status.h \ include/grpc++/support/status_code_enum.h \ - include/grpc++/support/stream.h \ include/grpc++/support/stub_options.h \ + include/grpc++/support/sync_stream.h \ include/grpc++/support/thread_pool_interface.h \ include/grpc++/support/time.h \ diff --git a/build.json b/build.json index 8eb4f37703..931f541cc8 100644 --- a/build.json +++ b/build.json @@ -55,6 +55,7 @@ "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", + "include/grpc++/support/async_stream.h", "include/grpc++/support/async_unary_call.h", "include/grpc++/support/auth_context.h", "include/grpc++/support/byte_buffer.h", @@ -66,8 +67,8 @@ "include/grpc++/support/slice.h", "include/grpc++/support/status.h", "include/grpc++/support/status_code_enum.h", - "include/grpc++/support/stream.h", "include/grpc++/support/stub_options.h", + "include/grpc++/support/sync_stream.h", "include/grpc++/support/thread_pool_interface.h", "include/grpc++/support/time.h" ], diff --git a/include/grpc++/generic/async_generic_service.h b/include/grpc++/generic/async_generic_service.h index 35bc945824..8578d850ff 100644 --- a/include/grpc++/generic/async_generic_service.h +++ b/include/grpc++/generic/async_generic_service.h @@ -35,7 +35,7 @@ #define GRPCXX_GENERIC_ASYNC_GENERIC_SERVICE_H #include <grpc++/support/byte_buffer.h> -#include <grpc++/support/stream.h> +#include <grpc++/support/async_stream.h> struct grpc_server; diff --git a/include/grpc++/generic/generic_stub.h b/include/grpc++/generic/generic_stub.h index 08ed77aefb..1bb7900b06 100644 --- a/include/grpc++/generic/generic_stub.h +++ b/include/grpc++/generic/generic_stub.h @@ -34,8 +34,8 @@ #ifndef GRPCXX_GENERIC_GENERIC_STUB_H #define GRPCXX_GENERIC_GENERIC_STUB_H +#include <grpc++/support/async_stream.h> #include <grpc++/support/byte_buffer.h> -#include <grpc++/support/stream.h> namespace grpc { diff --git a/include/grpc++/impl/rpc_service_method.h b/include/grpc++/impl/rpc_service_method.h index 0138eb2ac0..597798c203 100644 --- a/include/grpc++/impl/rpc_service_method.h +++ b/include/grpc++/impl/rpc_service_method.h @@ -42,7 +42,7 @@ #include <grpc++/impl/rpc_method.h> #include <grpc++/support/config.h> #include <grpc++/support/status.h> -#include <grpc++/support/stream.h> +#include <grpc++/support/sync_stream.h> namespace grpc { class ServerContext; diff --git a/include/grpc++/support/stream.h b/include/grpc++/support/async_stream.h similarity index 57% rename from include/grpc++/support/stream.h rename to include/grpc++/support/async_stream.h index 89a6dd693d..8380731556 100644 --- a/include/grpc++/support/stream.h +++ b/include/grpc++/support/async_stream.h @@ -31,8 +31,8 @@ * */ -#ifndef GRPCXX_SUPPORT_STREAM_H -#define GRPCXX_SUPPORT_STREAM_H +#ifndef GRPCXX_SUPPORT_ASYNC_STREAM_H +#define GRPCXX_SUPPORT_ASYNC_STREAM_H #include <grpc/support/log.h> #include <grpc++/channel.h> @@ -45,348 +45,6 @@ namespace grpc { -// Common interface for all client side streaming. -class ClientStreamingInterface { - public: - virtual ~ClientStreamingInterface() {} - - // Wait until the stream finishes, and return the final status. When the - // client side declares it has no more message to send, either implicitly or - // by calling WritesDone, it needs to make sure there is no more message to - // be received from the server, either implicitly or by getting a false from - // a Read(). - // This function will return either: - // - when all incoming messages have been read and the server has returned - // status - // - OR when the server has returned a non-OK status - virtual Status Finish() = 0; -}; - -// An interface that yields a sequence of R messages. -template <class R> -class ReaderInterface { - public: - virtual ~ReaderInterface() {} - - // Blocking read a message and parse to msg. Returns true on success. - // The method returns false when there will be no more incoming messages, - // either because the other side has called WritesDone or the stream has - // failed (or been cancelled). - virtual bool Read(R* msg) = 0; -}; - -// An interface that can be fed a sequence of W messages. -template <class W> -class WriterInterface { - public: - virtual ~WriterInterface() {} - - // Blocking write msg to the stream. Returns true on success. - // Returns false when the stream has been closed. - virtual bool Write(const W& msg, const WriteOptions& options) = 0; - - inline bool Write(const W& msg) { return Write(msg, WriteOptions()); } -}; - -template <class R> -class ClientReaderInterface : public ClientStreamingInterface, - public ReaderInterface<R> { - public: - virtual void WaitForInitialMetadata() = 0; -}; - -template <class R> -class ClientReader GRPC_FINAL : public ClientReaderInterface<R> { - public: - // Blocking create a stream and write the first request out. - template <class W> - ClientReader(Channel* channel, const RpcMethod& method, - ClientContext* context, const W& request) - : context_(context), call_(channel->CreateCall(method, context, &cq_)) { - CallOpSet<CallOpSendInitialMetadata, CallOpSendMessage, - CallOpClientSendClose> ops; - ops.SendInitialMetadata(context->send_initial_metadata_); - // TODO(ctiller): don't assert - GPR_ASSERT(ops.SendMessage(request).ok()); - ops.ClientSendClose(); - call_.PerformOps(&ops); - cq_.Pluck(&ops); - } - - // Blocking wait for initial metadata from server. The received metadata - // can only be accessed after this call returns. Should only be called before - // the first read. Calling this method is optional, and if it is not called - // the metadata will be available in ClientContext after the first read. - void WaitForInitialMetadata() { - GPR_ASSERT(!context_->initial_metadata_received_); - - CallOpSet<CallOpRecvInitialMetadata> ops; - ops.RecvInitialMetadata(context_); - call_.PerformOps(&ops); - cq_.Pluck(&ops); // status ignored - } - - bool Read(R* msg) GRPC_OVERRIDE { - CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>> ops; - if (!context_->initial_metadata_received_) { - ops.RecvInitialMetadata(context_); - } - ops.RecvMessage(msg); - call_.PerformOps(&ops); - return cq_.Pluck(&ops) && ops.got_message; - } - - Status Finish() GRPC_OVERRIDE { - CallOpSet<CallOpClientRecvStatus> ops; - Status status; - ops.ClientRecvStatus(context_, &status); - call_.PerformOps(&ops); - GPR_ASSERT(cq_.Pluck(&ops)); - return status; - } - - private: - ClientContext* context_; - CompletionQueue cq_; - Call call_; -}; - -template <class W> -class ClientWriterInterface : public ClientStreamingInterface, - public WriterInterface<W> { - public: - virtual bool WritesDone() = 0; -}; - -template <class W> -class ClientWriter : public ClientWriterInterface<W> { - public: - // Blocking create a stream. - template <class R> - ClientWriter(Channel* channel, const RpcMethod& method, - ClientContext* context, R* response) - : context_(context), call_(channel->CreateCall(method, context, &cq_)) { - finish_ops_.RecvMessage(response); - - CallOpSet<CallOpSendInitialMetadata> ops; - ops.SendInitialMetadata(context->send_initial_metadata_); - call_.PerformOps(&ops); - cq_.Pluck(&ops); - } - - using WriterInterface<W>::Write; - bool Write(const W& msg, const WriteOptions& options) GRPC_OVERRIDE { - CallOpSet<CallOpSendMessage> ops; - if (!ops.SendMessage(msg, options).ok()) { - return false; - } - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - bool WritesDone() GRPC_OVERRIDE { - CallOpSet<CallOpClientSendClose> ops; - ops.ClientSendClose(); - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - // Read the final response and wait for the final status. - Status Finish() GRPC_OVERRIDE { - Status status; - finish_ops_.ClientRecvStatus(context_, &status); - call_.PerformOps(&finish_ops_); - GPR_ASSERT(cq_.Pluck(&finish_ops_)); - return status; - } - - private: - ClientContext* context_; - CallOpSet<CallOpGenericRecvMessage, CallOpClientRecvStatus> finish_ops_; - CompletionQueue cq_; - Call call_; -}; - -// Client-side interface for bi-directional streaming. -template <class W, class R> -class ClientReaderWriterInterface : public ClientStreamingInterface, - public WriterInterface<W>, - public ReaderInterface<R> { - public: - virtual void WaitForInitialMetadata() = 0; - virtual bool WritesDone() = 0; -}; - -template <class W, class R> -class ClientReaderWriter GRPC_FINAL : public ClientReaderWriterInterface<W, R> { - public: - // Blocking create a stream. - ClientReaderWriter(Channel* channel, const RpcMethod& method, - ClientContext* context) - : context_(context), call_(channel->CreateCall(method, context, &cq_)) { - CallOpSet<CallOpSendInitialMetadata> ops; - ops.SendInitialMetadata(context->send_initial_metadata_); - call_.PerformOps(&ops); - cq_.Pluck(&ops); - } - - // Blocking wait for initial metadata from server. The received metadata - // can only be accessed after this call returns. Should only be called before - // the first read. Calling this method is optional, and if it is not called - // the metadata will be available in ClientContext after the first read. - void WaitForInitialMetadata() { - GPR_ASSERT(!context_->initial_metadata_received_); - - CallOpSet<CallOpRecvInitialMetadata> ops; - ops.RecvInitialMetadata(context_); - call_.PerformOps(&ops); - cq_.Pluck(&ops); // status ignored - } - - bool Read(R* msg) GRPC_OVERRIDE { - CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>> ops; - if (!context_->initial_metadata_received_) { - ops.RecvInitialMetadata(context_); - } - ops.RecvMessage(msg); - call_.PerformOps(&ops); - return cq_.Pluck(&ops) && ops.got_message; - } - - using WriterInterface<W>::Write; - bool Write(const W& msg, const WriteOptions& options) GRPC_OVERRIDE { - CallOpSet<CallOpSendMessage> ops; - if (!ops.SendMessage(msg, options).ok()) return false; - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - bool WritesDone() GRPC_OVERRIDE { - CallOpSet<CallOpClientSendClose> ops; - ops.ClientSendClose(); - call_.PerformOps(&ops); - return cq_.Pluck(&ops); - } - - Status Finish() GRPC_OVERRIDE { - CallOpSet<CallOpClientRecvStatus> ops; - Status status; - ops.ClientRecvStatus(context_, &status); - call_.PerformOps(&ops); - GPR_ASSERT(cq_.Pluck(&ops)); - return status; - } - - private: - ClientContext* context_; - CompletionQueue cq_; - Call call_; -}; - -template <class R> -class ServerReader GRPC_FINAL : public ReaderInterface<R> { - public: - ServerReader(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {} - - void SendInitialMetadata() { - GPR_ASSERT(!ctx_->sent_initial_metadata_); - - CallOpSet<CallOpSendInitialMetadata> ops; - ops.SendInitialMetadata(ctx_->initial_metadata_); - ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); - call_->cq()->Pluck(&ops); - } - - bool Read(R* msg) GRPC_OVERRIDE { - CallOpSet<CallOpRecvMessage<R>> ops; - ops.RecvMessage(msg); - call_->PerformOps(&ops); - return call_->cq()->Pluck(&ops) && ops.got_message; - } - - private: - Call* const call_; - ServerContext* const ctx_; -}; - -template <class W> -class ServerWriter GRPC_FINAL : public WriterInterface<W> { - public: - ServerWriter(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {} - - void SendInitialMetadata() { - GPR_ASSERT(!ctx_->sent_initial_metadata_); - - CallOpSet<CallOpSendInitialMetadata> ops; - ops.SendInitialMetadata(ctx_->initial_metadata_); - ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); - call_->cq()->Pluck(&ops); - } - - using WriterInterface<W>::Write; - bool Write(const W& msg, const WriteOptions& options) GRPC_OVERRIDE { - CallOpSet<CallOpSendInitialMetadata, CallOpSendMessage> ops; - if (!ops.SendMessage(msg, options).ok()) { - return false; - } - if (!ctx_->sent_initial_metadata_) { - ops.SendInitialMetadata(ctx_->initial_metadata_); - ctx_->sent_initial_metadata_ = true; - } - call_->PerformOps(&ops); - return call_->cq()->Pluck(&ops); - } - - private: - Call* const call_; - ServerContext* const ctx_; -}; - -// Server-side interface for bi-directional streaming. -template <class W, class R> -class ServerReaderWriter GRPC_FINAL : public WriterInterface<W>, - public ReaderInterface<R> { - public: - ServerReaderWriter(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {} - - void SendInitialMetadata() { - GPR_ASSERT(!ctx_->sent_initial_metadata_); - - CallOpSet<CallOpSendInitialMetadata> ops; - ops.SendInitialMetadata(ctx_->initial_metadata_); - ctx_->sent_initial_metadata_ = true; - call_->PerformOps(&ops); - call_->cq()->Pluck(&ops); - } - - bool Read(R* msg) GRPC_OVERRIDE { - CallOpSet<CallOpRecvMessage<R>> ops; - ops.RecvMessage(msg); - call_->PerformOps(&ops); - return call_->cq()->Pluck(&ops) && ops.got_message; - } - - using WriterInterface<W>::Write; - bool Write(const W& msg, const WriteOptions& options) GRPC_OVERRIDE { - CallOpSet<CallOpSendInitialMetadata, CallOpSendMessage> ops; - if (!ops.SendMessage(msg, options).ok()) { - return false; - } - if (!ctx_->sent_initial_metadata_) { - ops.SendInitialMetadata(ctx_->initial_metadata_); - ctx_->sent_initial_metadata_ = true; - } - call_->PerformOps(&ops); - return call_->cq()->Pluck(&ops); - } - - private: - Call* const call_; - ServerContext* const ctx_; -}; - // Async interfaces // Common interface for all client side streaming. class ClientAsyncStreamingInterface { @@ -773,4 +431,4 @@ class ServerAsyncReaderWriter GRPC_FINAL : public ServerAsyncStreamingInterface, } // namespace grpc -#endif // GRPCXX_SUPPORT_STREAM_H +#endif // GRPCXX_SUPPORT_ASYNC_STREAM_H diff --git a/include/grpc++/support/sync_stream.h b/include/grpc++/support/sync_stream.h new file mode 100644 index 0000000000..b4bb637ff2 --- /dev/null +++ b/include/grpc++/support/sync_stream.h @@ -0,0 +1,392 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef GRPCXX_SUPPORT_SYNC_STREAM_H +#define GRPCXX_SUPPORT_SYNC_STREAM_H + +#include <grpc/support/log.h> +#include <grpc++/channel.h> +#include <grpc++/client_context.h> +#include <grpc++/completion_queue.h> +#include <grpc++/impl/call.h> +#include <grpc++/impl/service_type.h> +#include <grpc++/server_context.h> +#include <grpc++/support/status.h> + +namespace grpc { + +// Common interface for all client side streaming. +class ClientStreamingInterface { + public: + virtual ~ClientStreamingInterface() {} + + // Wait until the stream finishes, and return the final status. When the + // client side declares it has no more message to send, either implicitly or + // by calling WritesDone, it needs to make sure there is no more message to + // be received from the server, either implicitly or by getting a false from + // a Read(). + // This function will return either: + // - when all incoming messages have been read and the server has returned + // status + // - OR when the server has returned a non-OK status + virtual Status Finish() = 0; +}; + +// An interface that yields a sequence of R messages. +template <class R> +class ReaderInterface { + public: + virtual ~ReaderInterface() {} + + // Blocking read a message and parse to msg. Returns true on success. + // The method returns false when there will be no more incoming messages, + // either because the other side has called WritesDone or the stream has + // failed (or been cancelled). + virtual bool Read(R* msg) = 0; +}; + +// An interface that can be fed a sequence of W messages. +template <class W> +class WriterInterface { + public: + virtual ~WriterInterface() {} + + // Blocking write msg to the stream. Returns true on success. + // Returns false when the stream has been closed. + virtual bool Write(const W& msg, const WriteOptions& options) = 0; + + inline bool Write(const W& msg) { return Write(msg, WriteOptions()); } +}; + +template <class R> +class ClientReaderInterface : public ClientStreamingInterface, + public ReaderInterface<R> { + public: + virtual void WaitForInitialMetadata() = 0; +}; + +template <class R> +class ClientReader GRPC_FINAL : public ClientReaderInterface<R> { + public: + // Blocking create a stream and write the first request out. + template <class W> + ClientReader(Channel* channel, const RpcMethod& method, + ClientContext* context, const W& request) + : context_(context), call_(channel->CreateCall(method, context, &cq_)) { + CallOpSet<CallOpSendInitialMetadata, CallOpSendMessage, + CallOpClientSendClose> ops; + ops.SendInitialMetadata(context->send_initial_metadata_); + // TODO(ctiller): don't assert + GPR_ASSERT(ops.SendMessage(request).ok()); + ops.ClientSendClose(); + call_.PerformOps(&ops); + cq_.Pluck(&ops); + } + + // Blocking wait for initial metadata from server. The received metadata + // can only be accessed after this call returns. Should only be called before + // the first read. Calling this method is optional, and if it is not called + // the metadata will be available in ClientContext after the first read. + void WaitForInitialMetadata() { + GPR_ASSERT(!context_->initial_metadata_received_); + + CallOpSet<CallOpRecvInitialMetadata> ops; + ops.RecvInitialMetadata(context_); + call_.PerformOps(&ops); + cq_.Pluck(&ops); // status ignored + } + + bool Read(R* msg) GRPC_OVERRIDE { + CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>> ops; + if (!context_->initial_metadata_received_) { + ops.RecvInitialMetadata(context_); + } + ops.RecvMessage(msg); + call_.PerformOps(&ops); + return cq_.Pluck(&ops) && ops.got_message; + } + + Status Finish() GRPC_OVERRIDE { + CallOpSet<CallOpClientRecvStatus> ops; + Status status; + ops.ClientRecvStatus(context_, &status); + call_.PerformOps(&ops); + GPR_ASSERT(cq_.Pluck(&ops)); + return status; + } + + private: + ClientContext* context_; + CompletionQueue cq_; + Call call_; +}; + +template <class W> +class ClientWriterInterface : public ClientStreamingInterface, + public WriterInterface<W> { + public: + virtual bool WritesDone() = 0; +}; + +template <class W> +class ClientWriter : public ClientWriterInterface<W> { + public: + // Blocking create a stream. + template <class R> + ClientWriter(Channel* channel, const RpcMethod& method, + ClientContext* context, R* response) + : context_(context), call_(channel->CreateCall(method, context, &cq_)) { + finish_ops_.RecvMessage(response); + + CallOpSet<CallOpSendInitialMetadata> ops; + ops.SendInitialMetadata(context->send_initial_metadata_); + call_.PerformOps(&ops); + cq_.Pluck(&ops); + } + + using WriterInterface<W>::Write; + bool Write(const W& msg, const WriteOptions& options) GRPC_OVERRIDE { + CallOpSet<CallOpSendMessage> ops; + if (!ops.SendMessage(msg, options).ok()) { + return false; + } + call_.PerformOps(&ops); + return cq_.Pluck(&ops); + } + + bool WritesDone() GRPC_OVERRIDE { + CallOpSet<CallOpClientSendClose> ops; + ops.ClientSendClose(); + call_.PerformOps(&ops); + return cq_.Pluck(&ops); + } + + // Read the final response and wait for the final status. + Status Finish() GRPC_OVERRIDE { + Status status; + finish_ops_.ClientRecvStatus(context_, &status); + call_.PerformOps(&finish_ops_); + GPR_ASSERT(cq_.Pluck(&finish_ops_)); + return status; + } + + private: + ClientContext* context_; + CallOpSet<CallOpGenericRecvMessage, CallOpClientRecvStatus> finish_ops_; + CompletionQueue cq_; + Call call_; +}; + +// Client-side interface for bi-directional streaming. +template <class W, class R> +class ClientReaderWriterInterface : public ClientStreamingInterface, + public WriterInterface<W>, + public ReaderInterface<R> { + public: + virtual void WaitForInitialMetadata() = 0; + virtual bool WritesDone() = 0; +}; + +template <class W, class R> +class ClientReaderWriter GRPC_FINAL : public ClientReaderWriterInterface<W, R> { + public: + // Blocking create a stream. + ClientReaderWriter(Channel* channel, const RpcMethod& method, + ClientContext* context) + : context_(context), call_(channel->CreateCall(method, context, &cq_)) { + CallOpSet<CallOpSendInitialMetadata> ops; + ops.SendInitialMetadata(context->send_initial_metadata_); + call_.PerformOps(&ops); + cq_.Pluck(&ops); + } + + // Blocking wait for initial metadata from server. The received metadata + // can only be accessed after this call returns. Should only be called before + // the first read. Calling this method is optional, and if it is not called + // the metadata will be available in ClientContext after the first read. + void WaitForInitialMetadata() { + GPR_ASSERT(!context_->initial_metadata_received_); + + CallOpSet<CallOpRecvInitialMetadata> ops; + ops.RecvInitialMetadata(context_); + call_.PerformOps(&ops); + cq_.Pluck(&ops); // status ignored + } + + bool Read(R* msg) GRPC_OVERRIDE { + CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>> ops; + if (!context_->initial_metadata_received_) { + ops.RecvInitialMetadata(context_); + } + ops.RecvMessage(msg); + call_.PerformOps(&ops); + return cq_.Pluck(&ops) && ops.got_message; + } + + using WriterInterface<W>::Write; + bool Write(const W& msg, const WriteOptions& options) GRPC_OVERRIDE { + CallOpSet<CallOpSendMessage> ops; + if (!ops.SendMessage(msg, options).ok()) return false; + call_.PerformOps(&ops); + return cq_.Pluck(&ops); + } + + bool WritesDone() GRPC_OVERRIDE { + CallOpSet<CallOpClientSendClose> ops; + ops.ClientSendClose(); + call_.PerformOps(&ops); + return cq_.Pluck(&ops); + } + + Status Finish() GRPC_OVERRIDE { + CallOpSet<CallOpClientRecvStatus> ops; + Status status; + ops.ClientRecvStatus(context_, &status); + call_.PerformOps(&ops); + GPR_ASSERT(cq_.Pluck(&ops)); + return status; + } + + private: + ClientContext* context_; + CompletionQueue cq_; + Call call_; +}; + +template <class R> +class ServerReader GRPC_FINAL : public ReaderInterface<R> { + public: + ServerReader(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {} + + void SendInitialMetadata() { + GPR_ASSERT(!ctx_->sent_initial_metadata_); + + CallOpSet<CallOpSendInitialMetadata> ops; + ops.SendInitialMetadata(ctx_->initial_metadata_); + ctx_->sent_initial_metadata_ = true; + call_->PerformOps(&ops); + call_->cq()->Pluck(&ops); + } + + bool Read(R* msg) GRPC_OVERRIDE { + CallOpSet<CallOpRecvMessage<R>> ops; + ops.RecvMessage(msg); + call_->PerformOps(&ops); + return call_->cq()->Pluck(&ops) && ops.got_message; + } + + private: + Call* const call_; + ServerContext* const ctx_; +}; + +template <class W> +class ServerWriter GRPC_FINAL : public WriterInterface<W> { + public: + ServerWriter(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {} + + void SendInitialMetadata() { + GPR_ASSERT(!ctx_->sent_initial_metadata_); + + CallOpSet<CallOpSendInitialMetadata> ops; + ops.SendInitialMetadata(ctx_->initial_metadata_); + ctx_->sent_initial_metadata_ = true; + call_->PerformOps(&ops); + call_->cq()->Pluck(&ops); + } + + using WriterInterface<W>::Write; + bool Write(const W& msg, const WriteOptions& options) GRPC_OVERRIDE { + CallOpSet<CallOpSendInitialMetadata, CallOpSendMessage> ops; + if (!ops.SendMessage(msg, options).ok()) { + return false; + } + if (!ctx_->sent_initial_metadata_) { + ops.SendInitialMetadata(ctx_->initial_metadata_); + ctx_->sent_initial_metadata_ = true; + } + call_->PerformOps(&ops); + return call_->cq()->Pluck(&ops); + } + + private: + Call* const call_; + ServerContext* const ctx_; +}; + +// Server-side interface for bi-directional streaming. +template <class W, class R> +class ServerReaderWriter GRPC_FINAL : public WriterInterface<W>, + public ReaderInterface<R> { + public: + ServerReaderWriter(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {} + + void SendInitialMetadata() { + GPR_ASSERT(!ctx_->sent_initial_metadata_); + + CallOpSet<CallOpSendInitialMetadata> ops; + ops.SendInitialMetadata(ctx_->initial_metadata_); + ctx_->sent_initial_metadata_ = true; + call_->PerformOps(&ops); + call_->cq()->Pluck(&ops); + } + + bool Read(R* msg) GRPC_OVERRIDE { + CallOpSet<CallOpRecvMessage<R>> ops; + ops.RecvMessage(msg); + call_->PerformOps(&ops); + return call_->cq()->Pluck(&ops) && ops.got_message; + } + + using WriterInterface<W>::Write; + bool Write(const W& msg, const WriteOptions& options) GRPC_OVERRIDE { + CallOpSet<CallOpSendInitialMetadata, CallOpSendMessage> ops; + if (!ops.SendMessage(msg, options).ok()) { + return false; + } + if (!ctx_->sent_initial_metadata_) { + ops.SendInitialMetadata(ctx_->initial_metadata_); + ctx_->sent_initial_metadata_ = true; + } + call_->PerformOps(&ops); + return call_->cq()->Pluck(&ops); + } + + private: + Call* const call_; + ServerContext* const ctx_; +}; + +} // namespace grpc + +#endif // GRPCXX_SUPPORT_SYNC_STREAM_H diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc index 5d82b605fb..1bf2b16ed6 100644 --- a/src/compiler/cpp_generator.cc +++ b/src/compiler/cpp_generator.cc @@ -112,13 +112,14 @@ grpc::string GetHeaderPrologue(const grpc::protobuf::FileDescriptor *file, grpc::string GetHeaderIncludes(const grpc::protobuf::FileDescriptor *file, const Parameters ¶ms) { grpc::string temp = + "#include <grpc++/support/async_stream.h>\n" "#include <grpc++/impl/rpc_method.h>\n" "#include <grpc++/impl/proto_utils.h>\n" "#include <grpc++/impl/service_type.h>\n" "#include <grpc++/support/async_unary_call.h>\n" "#include <grpc++/support/status.h>\n" - "#include <grpc++/support/stream.h>\n" "#include <grpc++/support/stub_options.h>\n" + "#include <grpc++/support/sync_stream.h>\n" "\n" "namespace grpc {\n" "class CompletionQueue;\n" @@ -706,7 +707,8 @@ grpc::string GetSourceIncludes(const grpc::protobuf::FileDescriptor *file, printer.Print(vars, "#include <grpc++/impl/rpc_service_method.h>\n"); printer.Print(vars, "#include <grpc++/impl/service_type.h>\n"); printer.Print(vars, "#include <grpc++/support/async_unary_call.h>\n"); - printer.Print(vars, "#include <grpc++/support/stream.h>\n"); + printer.Print(vars, "#include <grpc++/support/async_stream.h>\n"); + printer.Print(vars, "#include <grpc++/support/sync_stream.h>\n"); if (!file->package().empty()) { std::vector<grpc::string> parts = diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++ index ccea4f68de..d6337c20d7 100644 --- a/tools/doxygen/Doxyfile.c++ +++ b/tools/doxygen/Doxyfile.c++ @@ -785,6 +785,7 @@ include/grpc++/server.h \ include/grpc++/server_builder.h \ include/grpc++/server_context.h \ include/grpc++/server_credentials.h \ +include/grpc++/support/async_stream.h \ include/grpc++/support/async_unary_call.h \ include/grpc++/support/auth_context.h \ include/grpc++/support/byte_buffer.h \ @@ -796,8 +797,8 @@ include/grpc++/support/fixed_size_thread_pool.h \ include/grpc++/support/slice.h \ include/grpc++/support/status.h \ include/grpc++/support/status_code_enum.h \ -include/grpc++/support/stream.h \ include/grpc++/support/stub_options.h \ +include/grpc++/support/sync_stream.h \ include/grpc++/support/thread_pool_interface.h \ include/grpc++/support/time.h diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index c4a7fb0757..38999f99f0 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -785,6 +785,7 @@ include/grpc++/server.h \ include/grpc++/server_builder.h \ include/grpc++/server_context.h \ include/grpc++/server_credentials.h \ +include/grpc++/support/async_stream.h \ include/grpc++/support/async_unary_call.h \ include/grpc++/support/auth_context.h \ include/grpc++/support/byte_buffer.h \ @@ -796,8 +797,8 @@ include/grpc++/support/fixed_size_thread_pool.h \ include/grpc++/support/slice.h \ include/grpc++/support/status.h \ include/grpc++/support/status_code_enum.h \ -include/grpc++/support/stream.h \ include/grpc++/support/stub_options.h \ +include/grpc++/support/sync_stream.h \ include/grpc++/support/thread_pool_interface.h \ include/grpc++/support/time.h \ src/cpp/client/secure_credentials.h \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 8e6afe87d2..620fbddc9d 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -13143,6 +13143,7 @@ "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", + "include/grpc++/support/async_stream.h", "include/grpc++/support/async_unary_call.h", "include/grpc++/support/auth_context.h", "include/grpc++/support/byte_buffer.h", @@ -13154,8 +13155,8 @@ "include/grpc++/support/slice.h", "include/grpc++/support/status.h", "include/grpc++/support/status_code_enum.h", - "include/grpc++/support/stream.h", "include/grpc++/support/stub_options.h", + "include/grpc++/support/sync_stream.h", "include/grpc++/support/thread_pool_interface.h", "include/grpc++/support/time.h", "src/cpp/client/create_channel_internal.h", @@ -13192,6 +13193,7 @@ "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", + "include/grpc++/support/async_stream.h", "include/grpc++/support/async_unary_call.h", "include/grpc++/support/auth_context.h", "include/grpc++/support/byte_buffer.h", @@ -13203,8 +13205,8 @@ "include/grpc++/support/slice.h", "include/grpc++/support/status.h", "include/grpc++/support/status_code_enum.h", - "include/grpc++/support/stream.h", "include/grpc++/support/stub_options.h", + "include/grpc++/support/sync_stream.h", "include/grpc++/support/thread_pool_interface.h", "include/grpc++/support/time.h", "src/cpp/client/channel.cc", @@ -13315,6 +13317,7 @@ "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", + "include/grpc++/support/async_stream.h", "include/grpc++/support/async_unary_call.h", "include/grpc++/support/auth_context.h", "include/grpc++/support/byte_buffer.h", @@ -13326,8 +13329,8 @@ "include/grpc++/support/slice.h", "include/grpc++/support/status.h", "include/grpc++/support/status_code_enum.h", - "include/grpc++/support/stream.h", "include/grpc++/support/stub_options.h", + "include/grpc++/support/sync_stream.h", "include/grpc++/support/thread_pool_interface.h", "include/grpc++/support/time.h", "src/cpp/client/create_channel_internal.h", @@ -13361,6 +13364,7 @@ "include/grpc++/server_builder.h", "include/grpc++/server_context.h", "include/grpc++/server_credentials.h", + "include/grpc++/support/async_stream.h", "include/grpc++/support/async_unary_call.h", "include/grpc++/support/auth_context.h", "include/grpc++/support/byte_buffer.h", @@ -13372,8 +13376,8 @@ "include/grpc++/support/slice.h", "include/grpc++/support/status.h", "include/grpc++/support/status_code_enum.h", - "include/grpc++/support/stream.h", "include/grpc++/support/stub_options.h", + "include/grpc++/support/sync_stream.h", "include/grpc++/support/thread_pool_interface.h", "include/grpc++/support/time.h", "src/cpp/client/channel.cc", diff --git a/vsprojects/grpc++/grpc++.vcxproj b/vsprojects/grpc++/grpc++.vcxproj index 5181b3a200..4eb2dfdb7c 100644 --- a/vsprojects/grpc++/grpc++.vcxproj +++ b/vsprojects/grpc++/grpc++.vcxproj @@ -238,6 +238,7 @@ <ClInclude Include="..\..\include\grpc++\server_builder.h" /> <ClInclude Include="..\..\include\grpc++\server_context.h" /> <ClInclude Include="..\..\include\grpc++\server_credentials.h" /> + <ClInclude Include="..\..\include\grpc++\support\async_stream.h" /> <ClInclude Include="..\..\include\grpc++\support\async_unary_call.h" /> <ClInclude Include="..\..\include\grpc++\support\auth_context.h" /> <ClInclude Include="..\..\include\grpc++\support\byte_buffer.h" /> @@ -249,8 +250,8 @@ <ClInclude Include="..\..\include\grpc++\support\slice.h" /> <ClInclude Include="..\..\include\grpc++\support\status.h" /> <ClInclude Include="..\..\include\grpc++\support\status_code_enum.h" /> - <ClInclude Include="..\..\include\grpc++\support\stream.h" /> <ClInclude Include="..\..\include\grpc++\support\stub_options.h" /> + <ClInclude Include="..\..\include\grpc++\support\sync_stream.h" /> <ClInclude Include="..\..\include\grpc++\support\thread_pool_interface.h" /> <ClInclude Include="..\..\include\grpc++\support\time.h" /> </ItemGroup> diff --git a/vsprojects/grpc++/grpc++.vcxproj.filters b/vsprojects/grpc++/grpc++.vcxproj.filters index cbffd3c765..21fbe15a70 100644 --- a/vsprojects/grpc++/grpc++.vcxproj.filters +++ b/vsprojects/grpc++/grpc++.vcxproj.filters @@ -171,6 +171,9 @@ <ClInclude Include="..\..\include\grpc++\server_credentials.h"> <Filter>include\grpc++</Filter> </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\async_stream.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> <ClInclude Include="..\..\include\grpc++\support\async_unary_call.h"> <Filter>include\grpc++\support</Filter> </ClInclude> @@ -204,10 +207,10 @@ <ClInclude Include="..\..\include\grpc++\support\status_code_enum.h"> <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\support\stream.h"> + <ClInclude Include="..\..\include\grpc++\support\stub_options.h"> <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\support\stub_options.h"> + <ClInclude Include="..\..\include\grpc++\support\sync_stream.h"> <Filter>include\grpc++\support</Filter> </ClInclude> <ClInclude Include="..\..\include\grpc++\support\thread_pool_interface.h"> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj index 77f83086c7..f7174350a6 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj @@ -238,6 +238,7 @@ <ClInclude Include="..\..\include\grpc++\server_builder.h" /> <ClInclude Include="..\..\include\grpc++\server_context.h" /> <ClInclude Include="..\..\include\grpc++\server_credentials.h" /> + <ClInclude Include="..\..\include\grpc++\support\async_stream.h" /> <ClInclude Include="..\..\include\grpc++\support\async_unary_call.h" /> <ClInclude Include="..\..\include\grpc++\support\auth_context.h" /> <ClInclude Include="..\..\include\grpc++\support\byte_buffer.h" /> @@ -249,8 +250,8 @@ <ClInclude Include="..\..\include\grpc++\support\slice.h" /> <ClInclude Include="..\..\include\grpc++\support\status.h" /> <ClInclude Include="..\..\include\grpc++\support\status_code_enum.h" /> - <ClInclude Include="..\..\include\grpc++\support\stream.h" /> <ClInclude Include="..\..\include\grpc++\support\stub_options.h" /> + <ClInclude Include="..\..\include\grpc++\support\sync_stream.h" /> <ClInclude Include="..\..\include\grpc++\support\thread_pool_interface.h" /> <ClInclude Include="..\..\include\grpc++\support\time.h" /> </ItemGroup> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters index d4288f8987..b1df78c7e3 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters @@ -156,6 +156,9 @@ <ClInclude Include="..\..\include\grpc++\server_credentials.h"> <Filter>include\grpc++</Filter> </ClInclude> + <ClInclude Include="..\..\include\grpc++\support\async_stream.h"> + <Filter>include\grpc++\support</Filter> + </ClInclude> <ClInclude Include="..\..\include\grpc++\support\async_unary_call.h"> <Filter>include\grpc++\support</Filter> </ClInclude> @@ -189,10 +192,10 @@ <ClInclude Include="..\..\include\grpc++\support\status_code_enum.h"> <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\support\stream.h"> + <ClInclude Include="..\..\include\grpc++\support\stub_options.h"> <Filter>include\grpc++\support</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\support\stub_options.h"> + <ClInclude Include="..\..\include\grpc++\support\sync_stream.h"> <Filter>include\grpc++\support</Filter> </ClInclude> <ClInclude Include="..\..\include\grpc++\support\thread_pool_interface.h"> -- GitLab From 849c7ca4b2bbda14dd9531ede3aa31cd86aa8d85 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Fri, 21 Aug 2015 16:06:05 -0700 Subject: [PATCH 136/178] prettify comment --- src/cpp/server/server.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index 29db0b41c3..05053ba5d5 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -333,9 +333,8 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) { unknown_method_.reset(new RpcServiceMethod( "unknown", RpcMethod::BIDI_STREAMING, new UnknownMethodHandler)); // Use of emplace_back with just constructor arguments is not accepted - // here - // by gcc-4.4 because it can't match the anonymous nullptr with a proper - // constructor implicitly. Construct the object and use push_back. + // here by gcc-4.4 because it can't match the anonymous nullptr with a + // proper constructor implicitly. Construct the object and use push_back. sync_methods_->push_back(SyncRequest(unknown_method_.get(), nullptr)); } for (size_t i = 0; i < num_cqs; i++) { -- GitLab From ea02eb619d3565a9e03f0cd25e439b01845b6536 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Wed, 19 Aug 2015 17:26:53 -0700 Subject: [PATCH 137/178] introduce INativeCall interface to simplify testing --- .../Grpc.Core.Tests/Grpc.Core.Tests.csproj | 1 + .../Grpc.Core.Tests/GrpcEnvironmentTest.cs | 7 +- .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 243 ++++++++++++++++++ src/csharp/Grpc.Core/Grpc.Core.csproj | 1 + src/csharp/Grpc.Core/GrpcEnvironment.cs | 8 + src/csharp/Grpc.Core/Internal/AsyncCall.cs | 63 +++-- .../Grpc.Core/Internal/AsyncCallBase.cs | 27 +- .../Grpc.Core/Internal/AsyncCallServer.cs | 8 +- .../Grpc.Core/Internal/CallSafeHandle.cs | 42 +-- src/csharp/Grpc.Core/Internal/INativeCall.cs | 79 ++++++ .../Grpc.Core/Properties/AssemblyInfo.cs | 7 + 11 files changed, 421 insertions(+), 65 deletions(-) create mode 100644 src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs create mode 100644 src/csharp/Grpc.Core/Internal/INativeCall.cs diff --git a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj index ad4e94a695..b571fe9025 100644 --- a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj +++ b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj @@ -65,6 +65,7 @@ </Compile> <Compile Include="ClientBaseTest.cs" /> <Compile Include="ShutdownTest.cs" /> + <Compile Include="Internal\AsyncCallTest.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="ClientServerTest.cs" /> <Compile Include="ServerTest.cs" /> diff --git a/src/csharp/Grpc.Core.Tests/GrpcEnvironmentTest.cs b/src/csharp/Grpc.Core.Tests/GrpcEnvironmentTest.cs index 4fdfab5a99..78295cf6d4 100644 --- a/src/csharp/Grpc.Core.Tests/GrpcEnvironmentTest.cs +++ b/src/csharp/Grpc.Core.Tests/GrpcEnvironmentTest.cs @@ -53,7 +53,7 @@ namespace Grpc.Core.Tests { var env1 = GrpcEnvironment.AddRef(); var env2 = GrpcEnvironment.AddRef(); - Assert.IsTrue(object.ReferenceEquals(env1, env2)); + Assert.AreSame(env1, env2); GrpcEnvironment.Release(); GrpcEnvironment.Release(); } @@ -61,18 +61,21 @@ namespace Grpc.Core.Tests [Test] public void InitializeAfterShutdown() { + Assert.AreEqual(0, GrpcEnvironment.GetRefCount()); + var env1 = GrpcEnvironment.AddRef(); GrpcEnvironment.Release(); var env2 = GrpcEnvironment.AddRef(); GrpcEnvironment.Release(); - Assert.IsFalse(object.ReferenceEquals(env1, env2)); + Assert.AreNotSame(env1, env2); } [Test] public void ReleaseWithoutAddRef() { + Assert.AreEqual(0, GrpcEnvironment.GetRefCount()); Assert.Throws(typeof(InvalidOperationException), () => GrpcEnvironment.Release()); } diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs new file mode 100644 index 0000000000..141af7760c --- /dev/null +++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs @@ -0,0 +1,243 @@ +#region Copyright notice and license + +// 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. + +#endregion + +using System; +using System.Runtime.InteropServices; +using Grpc.Core.Internal; +using NUnit.Framework; +using System.Threading.Tasks; + +namespace Grpc.Core.Internal.Tests +{ + public class AsyncCallTest + { + Channel channel; + FakeNativeCall fakeCall; + AsyncCall<string, string> asyncCall; + + [SetUp] + public void Init() + { + channel = new Channel("localhost", Credentials.Insecure); + + fakeCall = new FakeNativeCall(); + + var callDetails = new CallInvocationDetails<string, string>(channel, "someMethod", null, Marshallers.StringMarshaller, Marshallers.StringMarshaller, new CallOptions()); + asyncCall = new AsyncCall<string, string>(callDetails, fakeCall); + } + + [TearDown] + public void Cleanup() + { + channel.ShutdownAsync().Wait(); + } + + [Test] + public void AsyncUnary_CompletionSuccess() + { + var resultTask = asyncCall.UnaryCallAsync("abc"); + fakeCall.UnaryResponseClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()), new byte[] { 1, 2, 3 }); + Assert.IsTrue(resultTask.IsCompleted); + Assert.IsTrue(fakeCall.IsDisposed); + Assert.AreEqual(Status.DefaultSuccess, asyncCall.GetStatus()); + } + + [Test] + public void AsyncUnary_CompletionFailure() + { + var resultTask = asyncCall.UnaryCallAsync("abc"); + fakeCall.UnaryResponseClientHandler(false, new ClientSideStatus(), null); + + Assert.IsTrue(resultTask.IsCompleted); + Assert.IsTrue(fakeCall.IsDisposed); + + Assert.AreEqual(StatusCode.Internal, asyncCall.GetStatus().StatusCode); + Assert.IsNull(asyncCall.GetTrailers()); + var ex = Assert.Throws<RpcException>(() => resultTask.GetAwaiter().GetResult()); + Assert.AreEqual(StatusCode.Internal, ex.Status.StatusCode); + } + + + //[Test] + //public void Duplex_ReceiveEarlyClose() + //{ + // asyncCall.StartDuplexStreamingCall(); + + // fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(new Status(StatusCode.DeadlineExceeded, ""), null)); + + // // TODO: start read... + // Assert.IsTrue(fakeCall.IsDisposed); + //} + + //[Test] + //public void Duplex_ReceiveEarlyCloseWithRead() + //{ + // asyncCall.StartDuplexStreamingCall(); + + // fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(new Status(StatusCode.DeadlineExceeded, ""), null)); + + // var taskSource = new AsyncCompletionTaskSource<string>(); + // asyncCall.StartReadMessage(taskSource.CompletionDelegate); + + // fakeCall.ReceivedMessageHandler(true, new byte[] { 1 } ); + + // // TODO: start read... + // Assert.IsTrue(fakeCall.IsDisposed); + //} + + + internal class FakeNativeCall : INativeCall + { + + public UnaryResponseClientHandler UnaryResponseClientHandler + { + get; + set; + } + + public ReceivedStatusOnClientHandler ReceivedStatusOnClientHandler + { + get; + set; + } + + public ReceivedMessageHandler ReceivedMessageHandler + { + get; + set; + } + + public SendCompletionHandler SendCompletionHandler + { + get; + set; + } + + public ReceivedCloseOnServerHandler ReceivedCloseOnServerHandler + { + get; + set; + } + + public bool IsCancelled + { + get; + set; + } + + public bool IsDisposed + { + get; + set; + } + + public void Cancel() + { + IsCancelled = true; + } + + public void CancelWithStatus(Status status) + { + IsCancelled = true; + } + + public string GetPeer() + { + return "PEER"; + } + + public void StartUnary(UnaryResponseClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags) + { + UnaryResponseClientHandler = callback; + } + + public void StartUnary(BatchContextSafeHandle ctx, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags) + { + throw new NotImplementedException(); + } + + public void StartClientStreaming(UnaryResponseClientHandler callback, MetadataArraySafeHandle metadataArray) + { + UnaryResponseClientHandler = callback; + } + + public void StartServerStreaming(ReceivedStatusOnClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags) + { + ReceivedStatusOnClientHandler = callback; + } + + public void StartDuplexStreaming(ReceivedStatusOnClientHandler callback, MetadataArraySafeHandle metadataArray) + { + ReceivedStatusOnClientHandler = callback; + } + + public void StartReceiveMessage(ReceivedMessageHandler callback) + { + ReceivedMessageHandler = callback; + } + + public void StartSendInitialMetadata(SendCompletionHandler callback, MetadataArraySafeHandle metadataArray) + { + SendCompletionHandler = callback; + } + + public void StartSendMessage(SendCompletionHandler callback, byte[] payload, WriteFlags writeFlags, bool sendEmptyInitialMetadata) + { + SendCompletionHandler = callback; + } + + public void StartSendCloseFromClient(SendCompletionHandler callback) + { + SendCompletionHandler = callback; + } + + public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata) + { + SendCompletionHandler = callback; + } + + public void StartServerSide(ReceivedCloseOnServerHandler callback) + { + ReceivedCloseOnServerHandler = callback; + } + + public void Dispose() + { + IsDisposed = true; + } + } + + } + + +} \ No newline at end of file diff --git a/src/csharp/Grpc.Core/Grpc.Core.csproj b/src/csharp/Grpc.Core/Grpc.Core.csproj index 055aff1444..ad2af17bc7 100644 --- a/src/csharp/Grpc.Core/Grpc.Core.csproj +++ b/src/csharp/Grpc.Core/Grpc.Core.csproj @@ -49,6 +49,7 @@ <Compile Include="AsyncDuplexStreamingCall.cs" /> <Compile Include="AsyncServerStreamingCall.cs" /> <Compile Include="IClientStreamWriter.cs" /> + <Compile Include="Internal\INativeCall.cs" /> <Compile Include="IServerStreamWriter.cs" /> <Compile Include="IAsyncStreamWriter.cs" /> <Compile Include="IAsyncStreamReader.cs" /> diff --git a/src/csharp/Grpc.Core/GrpcEnvironment.cs b/src/csharp/Grpc.Core/GrpcEnvironment.cs index 0a44eead74..b64228558e 100644 --- a/src/csharp/Grpc.Core/GrpcEnvironment.cs +++ b/src/csharp/Grpc.Core/GrpcEnvironment.cs @@ -102,6 +102,14 @@ namespace Grpc.Core } } + internal static int GetRefCount() + { + lock (staticLock) + { + return refCount; + } + } + /// <summary> /// Gets application-wide logger used by gRPC. /// </summary> diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs index bb9ba5b8dd..30d60077f0 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs @@ -51,6 +51,7 @@ namespace Grpc.Core.Internal static readonly ILogger Logger = GrpcEnvironment.Logger.ForType<AsyncCall<TRequest, TResponse>>(); readonly CallInvocationDetails<TRequest, TResponse> details; + readonly INativeCall injectedNativeCall; // for testing // Completion of a pending unary response if not null. TaskCompletionSource<TResponse> unaryResponseTcs; @@ -61,12 +62,21 @@ namespace Grpc.Core.Internal bool readObserverCompleted; // True if readObserver has already been completed. public AsyncCall(CallInvocationDetails<TRequest, TResponse> callDetails) - : base(callDetails.RequestMarshaller.Serializer, callDetails.ResponseMarshaller.Deserializer) + : base(callDetails.RequestMarshaller.Serializer, callDetails.ResponseMarshaller.Deserializer, callDetails.Channel.Environment) { this.details = callDetails.WithOptions(callDetails.Options.Normalize()); this.initialMetadataSent = true; // we always send metadata at the very beginning of the call. } + /// <summary> + /// This constructor should only be used for testing. + /// </summary> + public AsyncCall(CallInvocationDetails<TRequest, TResponse> callDetails, INativeCall injectedNativeCall) + : this(callDetails) + { + this.injectedNativeCall = injectedNativeCall; + } + // TODO: this method is not Async, so it shouldn't be in AsyncCall class, but // it is reusing fair amount of code in this class, so we are leaving it here. /// <summary> @@ -100,7 +110,7 @@ namespace Grpc.Core.Internal bool success = (ev.success != 0); try { - HandleUnaryResponse(success, ctx); + HandleUnaryResponse(success, ctx.GetReceivedStatusOnClient(), ctx.GetReceivedMessage()); } catch (Exception e) { @@ -125,7 +135,7 @@ namespace Grpc.Core.Internal Preconditions.CheckState(!started); started = true; - Initialize(details.Channel.Environment.CompletionQueue); + Initialize(environment.CompletionQueue); halfcloseRequested = true; readingDone = true; @@ -152,7 +162,7 @@ namespace Grpc.Core.Internal Preconditions.CheckState(!started); started = true; - Initialize(details.Channel.Environment.CompletionQueue); + Initialize(environment.CompletionQueue); readingDone = true; @@ -176,7 +186,7 @@ namespace Grpc.Core.Internal Preconditions.CheckState(!started); started = true; - Initialize(details.Channel.Environment.CompletionQueue); + Initialize(environment.CompletionQueue); halfcloseRequested = true; halfclosed = true; // halfclose not confirmed yet, but it will be once finishedHandler is called. @@ -201,7 +211,7 @@ namespace Grpc.Core.Internal Preconditions.CheckState(!started); started = true; - Initialize(details.Channel.Environment.CompletionQueue); + Initialize(environment.CompletionQueue); using (var metadataArray = MetadataArraySafeHandle.Create(details.Options.Headers)) { @@ -318,18 +328,27 @@ namespace Grpc.Core.Internal private void Initialize(CompletionQueueSafeHandle cq) { + var call = CreateNativeCall(cq); + details.Channel.AddCallReference(this); + InitializeInternal(call); + RegisterCancellationCallback(); + } + + private INativeCall CreateNativeCall(CompletionQueueSafeHandle cq) + { + if (injectedNativeCall != null) + { + return injectedNativeCall; // allows injecting a mock INativeCall in tests. + } + var parentCall = details.Options.PropagationToken != null ? details.Options.PropagationToken.ParentCall : CallSafeHandle.NullInstance; - var call = details.Channel.Handle.CreateCall(details.Channel.Environment.CompletionRegistry, + return details.Channel.Handle.CreateCall(environment.CompletionRegistry, parentCall, ContextPropagationToken.DefaultMask, cq, details.Method, details.Host, Timespec.FromDateTime(details.Options.Deadline.Value)); - - details.Channel.AddCallReference(this); - - InitializeInternal(call); - RegisterCancellationCallback(); } + // Make sure that once cancellationToken for this call is cancelled, Cancel() will be called. private void RegisterCancellationCallback() { @@ -352,14 +371,12 @@ namespace Grpc.Core.Internal /// <summary> /// Handler for unary response completion. /// </summary> - private void HandleUnaryResponse(bool success, BatchContextSafeHandle ctx) + private void HandleUnaryResponse(bool success, ClientSideStatus receivedStatus, byte[] receivedMessage) { - var fullStatus = ctx.GetReceivedStatusOnClient(); - lock (myLock) { finished = true; - finishedStatus = fullStatus; + finishedStatus = receivedStatus; halfclosed = true; @@ -368,11 +385,13 @@ namespace Grpc.Core.Internal if (!success) { - unaryResponseTcs.SetException(new RpcException(new Status(StatusCode.Internal, "Internal error occured."))); + var internalError = new Status(StatusCode.Internal, "Internal error occured."); + finishedStatus = new ClientSideStatus(internalError, null); + unaryResponseTcs.SetException(new RpcException(internalError)); return; } - var status = fullStatus.Status; + var status = receivedStatus.Status; if (status.StatusCode != StatusCode.OK) { @@ -382,7 +401,7 @@ namespace Grpc.Core.Internal // TODO: handle deserialization error TResponse msg; - TryDeserialize(ctx.GetReceivedMessage(), out msg); + TryDeserialize(receivedMessage, out msg); unaryResponseTcs.SetResult(msg); } @@ -390,15 +409,13 @@ namespace Grpc.Core.Internal /// <summary> /// Handles receive status completion for calls with streaming response. /// </summary> - private void HandleFinished(bool success, BatchContextSafeHandle ctx) + private void HandleFinished(bool success, ClientSideStatus receivedStatus) { - var fullStatus = ctx.GetReceivedStatusOnClient(); - AsyncCompletionDelegate<TResponse> origReadCompletionDelegate = null; lock (myLock) { finished = true; - finishedStatus = fullStatus; + finishedStatus = receivedStatus; origReadCompletionDelegate = readCompletionDelegate; diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs index 1808294f43..7744dbec00 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs @@ -54,9 +54,10 @@ namespace Grpc.Core.Internal readonly Func<TWrite, byte[]> serializer; readonly Func<byte[], TRead> deserializer; + protected readonly GrpcEnvironment environment; protected readonly object myLock = new object(); - protected CallSafeHandle call; + protected INativeCall call; protected bool disposed; protected bool started; @@ -74,10 +75,11 @@ namespace Grpc.Core.Internal protected bool initialMetadataSent; protected long streamingWritesCounter; - public AsyncCallBase(Func<TWrite, byte[]> serializer, Func<byte[], TRead> deserializer) + public AsyncCallBase(Func<TWrite, byte[]> serializer, Func<byte[], TRead> deserializer, GrpcEnvironment environment) { this.serializer = Preconditions.CheckNotNull(serializer); this.deserializer = Preconditions.CheckNotNull(deserializer); + this.environment = Preconditions.CheckNotNull(environment); } /// <summary> @@ -114,7 +116,7 @@ namespace Grpc.Core.Internal } } - protected void InitializeInternal(CallSafeHandle call) + protected void InitializeInternal(INativeCall call) { lock (myLock) { @@ -177,7 +179,7 @@ namespace Grpc.Core.Internal { if (!disposed && call != null) { - bool noMoreSendCompletions = halfclosed || (cancelRequested && sendCompletionDelegate == null); + bool noMoreSendCompletions = halfclosed || ((cancelRequested || finished) && sendCompletionDelegate == null); if (noMoreSendCompletions && readingDone && finished) { ReleaseResources(); @@ -209,14 +211,15 @@ namespace Grpc.Core.Internal Preconditions.CheckState(!disposed); Preconditions.CheckState(!halfcloseRequested, "Already halfclosed."); + Preconditions.CheckState(!finished, "Already finished."); Preconditions.CheckState(sendCompletionDelegate == null, "Only one write can be pending at a time"); } protected virtual void CheckReadingAllowed() { Preconditions.CheckState(started); - Preconditions.CheckState(!disposed); Preconditions.CheckState(!errorOccured); + Preconditions.CheckState(!disposed); Preconditions.CheckState(!readingDone, "Stream has already been closed."); Preconditions.CheckState(readCompletionDelegate == null, "Only one read can be pending at a time"); @@ -280,7 +283,7 @@ namespace Grpc.Core.Internal /// <summary> /// Handles send completion. /// </summary> - protected void HandleSendFinished(bool success, BatchContextSafeHandle ctx) + protected void HandleSendFinished(bool success) { AsyncCompletionDelegate<object> origCompletionDelegate = null; lock (myLock) @@ -304,7 +307,7 @@ namespace Grpc.Core.Internal /// <summary> /// Handles halfclose completion. /// </summary> - protected void HandleHalfclosed(bool success, BatchContextSafeHandle ctx) + protected void HandleHalfclosed(bool success) { AsyncCompletionDelegate<object> origCompletionDelegate = null; lock (myLock) @@ -329,15 +332,13 @@ namespace Grpc.Core.Internal /// <summary> /// Handles streaming read completion. /// </summary> - protected void HandleReadFinished(bool success, BatchContextSafeHandle ctx) + protected void HandleReadFinished(bool success, byte[] receivedMessage) { - var payload = ctx.GetReceivedMessage(); - AsyncCompletionDelegate<TRead> origCompletionDelegate = null; lock (myLock) { origCompletionDelegate = readCompletionDelegate; - if (payload != null) + if (receivedMessage != null) { readCompletionDelegate = null; } @@ -354,11 +355,11 @@ namespace Grpc.Core.Internal // TODO: handle the case when error occured... - if (payload != null) + if (receivedMessage != null) { // TODO: handle deserialization error TRead msg; - TryDeserialize(payload, out msg); + TryDeserialize(receivedMessage, out msg); FireCompletion(origCompletionDelegate, msg, null); } diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs index 6278c0191e..5c47251030 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs @@ -49,12 +49,10 @@ namespace Grpc.Core.Internal { readonly TaskCompletionSource<object> finishedServersideTcs = new TaskCompletionSource<object>(); readonly CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); - readonly GrpcEnvironment environment; readonly Server server; - public AsyncCallServer(Func<TResponse, byte[]> serializer, Func<byte[], TRequest> deserializer, GrpcEnvironment environment, Server server) : base(serializer, deserializer) + public AsyncCallServer(Func<TResponse, byte[]> serializer, Func<byte[], TRequest> deserializer, GrpcEnvironment environment, Server server) : base(serializer, deserializer, environment) { - this.environment = Preconditions.CheckNotNull(environment); this.server = Preconditions.CheckNotNull(server); } @@ -185,10 +183,8 @@ namespace Grpc.Core.Internal /// <summary> /// Handles the server side close completion. /// </summary> - private void HandleFinishedServerside(bool success, BatchContextSafeHandle ctx) + private void HandleFinishedServerside(bool success, bool cancelled) { - bool cancelled = ctx.GetReceivedCloseOnServerCancelled(); - lock (myLock) { finished = true; diff --git a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs index 3cb01e29bd..e1466da65b 100644 --- a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs @@ -40,7 +40,7 @@ namespace Grpc.Core.Internal /// <summary> /// grpc_call from <grpc/grpc.h> /// </summary> - internal class CallSafeHandle : SafeHandleZeroIsInvalid + internal class CallSafeHandle : SafeHandleZeroIsInvalid, INativeCall { public static readonly CallSafeHandle NullInstance = new CallSafeHandle(); @@ -109,10 +109,10 @@ namespace Grpc.Core.Internal this.completionRegistry = completionRegistry; } - public void StartUnary(BatchCompletionDelegate callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags) + public void StartUnary(UnaryResponseClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, callback); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage())); grpcsharp_call_start_unary(this, ctx, payload, new UIntPtr((ulong)payload.Length), metadataArray, writeFlags) .CheckOk(); } @@ -123,66 +123,66 @@ namespace Grpc.Core.Internal .CheckOk(); } - public void StartClientStreaming(BatchCompletionDelegate callback, MetadataArraySafeHandle metadataArray) + public void StartClientStreaming(UnaryResponseClientHandler callback, MetadataArraySafeHandle metadataArray) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, callback); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage())); grpcsharp_call_start_client_streaming(this, ctx, metadataArray).CheckOk(); } - public void StartServerStreaming(BatchCompletionDelegate callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags) + public void StartServerStreaming(ReceivedStatusOnClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, callback); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient())); grpcsharp_call_start_server_streaming(this, ctx, payload, new UIntPtr((ulong)payload.Length), metadataArray, writeFlags).CheckOk(); } - public void StartDuplexStreaming(BatchCompletionDelegate callback, MetadataArraySafeHandle metadataArray) + public void StartDuplexStreaming(ReceivedStatusOnClientHandler callback, MetadataArraySafeHandle metadataArray) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, callback); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient())); grpcsharp_call_start_duplex_streaming(this, ctx, metadataArray).CheckOk(); } - public void StartSendMessage(BatchCompletionDelegate callback, byte[] payload, WriteFlags writeFlags, bool sendEmptyInitialMetadata) + public void StartSendMessage(SendCompletionHandler callback, byte[] payload, WriteFlags writeFlags, bool sendEmptyInitialMetadata) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, callback); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); grpcsharp_call_send_message(this, ctx, payload, new UIntPtr((ulong)payload.Length), writeFlags, sendEmptyInitialMetadata).CheckOk(); } - public void StartSendCloseFromClient(BatchCompletionDelegate callback) + public void StartSendCloseFromClient(SendCompletionHandler callback) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, callback); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); grpcsharp_call_send_close_from_client(this, ctx).CheckOk(); } - public void StartSendStatusFromServer(BatchCompletionDelegate callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata) + public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, callback); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); grpcsharp_call_send_status_from_server(this, ctx, status.StatusCode, status.Detail, metadataArray, sendEmptyInitialMetadata).CheckOk(); } - public void StartReceiveMessage(BatchCompletionDelegate callback) + public void StartReceiveMessage(ReceivedMessageHandler callback) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, callback); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedMessage())); grpcsharp_call_recv_message(this, ctx).CheckOk(); } - public void StartServerSide(BatchCompletionDelegate callback) + public void StartServerSide(ReceivedCloseOnServerHandler callback) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, callback); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedCloseOnServerCancelled())); grpcsharp_call_start_serverside(this, ctx).CheckOk(); } - public void StartSendInitialMetadata(BatchCompletionDelegate callback, MetadataArraySafeHandle metadataArray) + public void StartSendInitialMetadata(SendCompletionHandler callback, MetadataArraySafeHandle metadataArray) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, callback); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success)); grpcsharp_call_send_initial_metadata(this, ctx, metadataArray).CheckOk(); } diff --git a/src/csharp/Grpc.Core/Internal/INativeCall.cs b/src/csharp/Grpc.Core/Internal/INativeCall.cs new file mode 100644 index 0000000000..42028e458c --- /dev/null +++ b/src/csharp/Grpc.Core/Internal/INativeCall.cs @@ -0,0 +1,79 @@ +#region Copyright notice and license +// 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. + +#endregion + +using System; +namespace Grpc.Core.Internal +{ + internal delegate void UnaryResponseClientHandler(bool success, ClientSideStatus receivedStatus, byte[] receivedMessage); + + internal delegate void ReceivedStatusOnClientHandler(bool success, ClientSideStatus receivedStatus); + + internal delegate void ReceivedMessageHandler(bool success, byte[] receivedMessage); + + internal delegate void SendCompletionHandler(bool success); + + internal delegate void ReceivedCloseOnServerHandler(bool success, bool cancelled); + + /// <summary> + /// Abstraction of a native call object. + /// </summary> + internal interface INativeCall : IDisposable + { + void Cancel(); + + void CancelWithStatus(Grpc.Core.Status status); + + string GetPeer(); + + void StartUnary(UnaryResponseClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, Grpc.Core.WriteFlags writeFlags); + + void StartUnary(BatchContextSafeHandle ctx, byte[] payload, MetadataArraySafeHandle metadataArray, Grpc.Core.WriteFlags writeFlags); + + void StartClientStreaming(UnaryResponseClientHandler callback, MetadataArraySafeHandle metadataArray); + + void StartServerStreaming(ReceivedStatusOnClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, Grpc.Core.WriteFlags writeFlags); + + void StartDuplexStreaming(ReceivedStatusOnClientHandler callback, MetadataArraySafeHandle metadataArray); + + void StartReceiveMessage(ReceivedMessageHandler callback); + + void StartSendInitialMetadata(SendCompletionHandler callback, MetadataArraySafeHandle metadataArray); + + void StartSendMessage(SendCompletionHandler callback, byte[] payload, Grpc.Core.WriteFlags writeFlags, bool sendEmptyInitialMetadata); + + void StartSendCloseFromClient(SendCompletionHandler callback); + + void StartSendStatusFromServer(SendCompletionHandler callback, Grpc.Core.Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata); + + void StartServerSide(ReceivedCloseOnServerHandler callback); + } +} diff --git a/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs b/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs index 29db85d7aa..caca080b7f 100644 --- a/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs +++ b/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs @@ -16,6 +16,13 @@ using System.Runtime.CompilerServices; "0442bb8e12768722de0b0cb1b15e955b32a11352740ee59f2c94c48edc8e177d1052536b8ac651bce11ce5da3a" + "27fc95aff3dc604a6971417453f9483c7b5e836756d5b271bf8f2403fe186e31956148c03d804487cf642f8cc0" + "71394ee9672dfe5b55ea0f95dfd5a7f77d22c962ccf51320d3")] + +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2,PublicKey=" + + "0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6" + + "c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdc" + + "f9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff6" + + "2abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] #else [assembly: InternalsVisibleTo("Grpc.Core.Tests")] +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] #endif \ No newline at end of file -- GitLab From fb34a99d9810cf4cac2c1d20813379d5ea976adf Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Fri, 21 Aug 2015 10:45:39 -0700 Subject: [PATCH 138/178] reading of response headers for unary response calls --- .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 4 +-- .../Grpc.Core.Tests/ResponseHeadersTest.cs | 19 ++++++++++++ .../Grpc.Core/AsyncClientStreamingCall.cs | 15 +++++++++- src/csharp/Grpc.Core/AsyncUnaryCall.cs | 15 +++++++++- src/csharp/Grpc.Core/Calls.cs | 4 +-- src/csharp/Grpc.Core/Internal/AsyncCall.cs | 29 ++++++++++++------- .../Grpc.Core/Internal/CallSafeHandle.cs | 4 +-- src/csharp/Grpc.Core/Internal/INativeCall.cs | 3 +- 8 files changed, 74 insertions(+), 19 deletions(-) diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs index 141af7760c..1fa895ba71 100644 --- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs +++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs @@ -66,7 +66,7 @@ namespace Grpc.Core.Internal.Tests public void AsyncUnary_CompletionSuccess() { var resultTask = asyncCall.UnaryCallAsync("abc"); - fakeCall.UnaryResponseClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()), new byte[] { 1, 2, 3 }); + fakeCall.UnaryResponseClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()), new byte[] { 1, 2, 3 }, new Metadata()); Assert.IsTrue(resultTask.IsCompleted); Assert.IsTrue(fakeCall.IsDisposed); Assert.AreEqual(Status.DefaultSuccess, asyncCall.GetStatus()); @@ -76,7 +76,7 @@ namespace Grpc.Core.Internal.Tests public void AsyncUnary_CompletionFailure() { var resultTask = asyncCall.UnaryCallAsync("abc"); - fakeCall.UnaryResponseClientHandler(false, new ClientSideStatus(), null); + fakeCall.UnaryResponseClientHandler(false, new ClientSideStatus(new Status(StatusCode.Internal, ""), null), new byte[] { 1, 2, 3 }, new Metadata()); Assert.IsTrue(resultTask.IsCompleted); Assert.IsTrue(fakeCall.IsDisposed); diff --git a/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs b/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs index 706006702e..8ad41af1b8 100644 --- a/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs +++ b/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs @@ -73,6 +73,25 @@ namespace Grpc.Core.Tests server.ShutdownAsync().Wait(); } + [Test] + public async Task ResponseHeadersAsync_UnaryCall() + { + helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) => + { + await context.WriteResponseHeadersAsync(headers); + return "PASS"; + }); + + var call = Calls.AsyncUnaryCall(helper.CreateUnaryCall(), ""); + var responseHeaders = await call.ResponseHeadersAsync; + + Assert.AreEqual(headers.Count, responseHeaders.Count); + Assert.AreEqual("ascii-header", responseHeaders[0].Key); + Assert.AreEqual("abcdefg", responseHeaders[0].Value); + + Assert.AreEqual("PASS", await call.ResponseAsync); + } + [Test] public void WriteResponseHeaders_NullNotAllowed() { diff --git a/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs b/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs index fb9b562c77..dbaa3085c5 100644 --- a/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs @@ -44,14 +44,16 @@ namespace Grpc.Core { readonly IClientStreamWriter<TRequest> requestStream; readonly Task<TResponse> responseAsync; + readonly Task<Metadata> responseHeadersAsync; readonly Func<Status> getStatusFunc; readonly Func<Metadata> getTrailersFunc; readonly Action disposeAction; - public AsyncClientStreamingCall(IClientStreamWriter<TRequest> requestStream, Task<TResponse> responseAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) + public AsyncClientStreamingCall(IClientStreamWriter<TRequest> requestStream, Task<TResponse> responseAsync, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) { this.requestStream = requestStream; this.responseAsync = responseAsync; + this.responseHeadersAsync = responseHeadersAsync; this.getStatusFunc = getStatusFunc; this.getTrailersFunc = getTrailersFunc; this.disposeAction = disposeAction; @@ -68,6 +70,17 @@ namespace Grpc.Core } } + /// <summary> + /// Asynchronous access to response headers. + /// </summary> + public Task<Metadata> ResponseHeadersAsync + { + get + { + return this.responseHeadersAsync; + } + } + /// <summary> /// Async stream to send streaming requests. /// </summary> diff --git a/src/csharp/Grpc.Core/AsyncUnaryCall.cs b/src/csharp/Grpc.Core/AsyncUnaryCall.cs index 224e343916..154a17a33e 100644 --- a/src/csharp/Grpc.Core/AsyncUnaryCall.cs +++ b/src/csharp/Grpc.Core/AsyncUnaryCall.cs @@ -43,13 +43,15 @@ namespace Grpc.Core public sealed class AsyncUnaryCall<TResponse> : IDisposable { readonly Task<TResponse> responseAsync; + readonly Task<Metadata> responseHeadersAsync; readonly Func<Status> getStatusFunc; readonly Func<Metadata> getTrailersFunc; readonly Action disposeAction; - public AsyncUnaryCall(Task<TResponse> responseAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) + public AsyncUnaryCall(Task<TResponse> responseAsync, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) { this.responseAsync = responseAsync; + this.responseHeadersAsync = responseHeadersAsync; this.getStatusFunc = getStatusFunc; this.getTrailersFunc = getTrailersFunc; this.disposeAction = disposeAction; @@ -66,6 +68,17 @@ namespace Grpc.Core } } + /// <summary> + /// Asynchronous access to response headers. + /// </summary> + public Task<Metadata> ResponseHeadersAsync + { + get + { + return this.responseHeadersAsync; + } + } + /// <summary> /// Allows awaiting this object directly. /// </summary> diff --git a/src/csharp/Grpc.Core/Calls.cs b/src/csharp/Grpc.Core/Calls.cs index 7067456638..ada3616aa4 100644 --- a/src/csharp/Grpc.Core/Calls.cs +++ b/src/csharp/Grpc.Core/Calls.cs @@ -74,7 +74,7 @@ namespace Grpc.Core { var asyncCall = new AsyncCall<TRequest, TResponse>(call); var asyncResult = asyncCall.UnaryCallAsync(req); - return new AsyncUnaryCall<TResponse>(asyncResult, asyncCall.GetStatus, asyncCall.GetTrailers, asyncCall.Cancel); + return new AsyncUnaryCall<TResponse>(asyncResult, asyncCall.ResponseHeadersAsync, asyncCall.GetStatus, asyncCall.GetTrailers, asyncCall.Cancel); } /// <summary> @@ -110,7 +110,7 @@ namespace Grpc.Core var asyncCall = new AsyncCall<TRequest, TResponse>(call); var resultTask = asyncCall.ClientStreamingCallAsync(); var requestStream = new ClientRequestStream<TRequest, TResponse>(asyncCall); - return new AsyncClientStreamingCall<TRequest, TResponse>(requestStream, resultTask, asyncCall.GetStatus, asyncCall.GetTrailers, asyncCall.Cancel); + return new AsyncClientStreamingCall<TRequest, TResponse>(requestStream, resultTask, asyncCall.ResponseHeadersAsync, asyncCall.GetStatus, asyncCall.GetTrailers, asyncCall.Cancel); } /// <summary> diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs index 30d60077f0..132b426424 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs @@ -56,6 +56,9 @@ namespace Grpc.Core.Internal // Completion of a pending unary response if not null. TaskCompletionSource<TResponse> unaryResponseTcs; + // Response headers set here once received. + TaskCompletionSource<Metadata> responseHeadersTcs = new TaskCompletionSource<Metadata>(); + // Set after status is received. Used for both unary and streaming response calls. ClientSideStatus? finishedStatus; @@ -110,7 +113,7 @@ namespace Grpc.Core.Internal bool success = (ev.success != 0); try { - HandleUnaryResponse(success, ctx.GetReceivedStatusOnClient(), ctx.GetReceivedMessage()); + HandleUnaryResponse(success, ctx.GetReceivedStatusOnClient(), ctx.GetReceivedMessage(), ctx.GetReceivedInitialMetadata()); } catch (Exception e) { @@ -257,6 +260,17 @@ namespace Grpc.Core.Internal } } + /// <summary> + /// Get the task that completes once response headers are received. + /// </summary> + public Task<Metadata> ResponseHeadersAsync + { + get + { + return responseHeadersTcs.Task; + } + } + /// <summary> /// Gets the resulting status if the call has already finished. /// Throws InvalidOperationException otherwise. @@ -371,7 +385,7 @@ namespace Grpc.Core.Internal /// <summary> /// Handler for unary response completion. /// </summary> - private void HandleUnaryResponse(bool success, ClientSideStatus receivedStatus, byte[] receivedMessage) + private void HandleUnaryResponse(bool success, ClientSideStatus receivedStatus, byte[] receivedMessage, Metadata responseHeaders) { lock (myLock) { @@ -383,18 +397,13 @@ namespace Grpc.Core.Internal ReleaseResourcesIfPossible(); } - if (!success) - { - var internalError = new Status(StatusCode.Internal, "Internal error occured."); - finishedStatus = new ClientSideStatus(internalError, null); - unaryResponseTcs.SetException(new RpcException(internalError)); - return; - } + responseHeadersTcs.SetResult(responseHeaders); var status = receivedStatus.Status; - if (status.StatusCode != StatusCode.OK) + if (!success || status.StatusCode != StatusCode.OK) { + unaryResponseTcs.SetException(new RpcException(status)); return; } diff --git a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs index e1466da65b..ed6747ea93 100644 --- a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs @@ -112,7 +112,7 @@ namespace Grpc.Core.Internal public void StartUnary(UnaryResponseClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage())); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage(), context.GetReceivedInitialMetadata())); grpcsharp_call_start_unary(this, ctx, payload, new UIntPtr((ulong)payload.Length), metadataArray, writeFlags) .CheckOk(); } @@ -126,7 +126,7 @@ namespace Grpc.Core.Internal public void StartClientStreaming(UnaryResponseClientHandler callback, MetadataArraySafeHandle metadataArray) { var ctx = BatchContextSafeHandle.Create(); - completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage())); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedStatusOnClient(), context.GetReceivedMessage(), context.GetReceivedInitialMetadata())); grpcsharp_call_start_client_streaming(this, ctx, metadataArray).CheckOk(); } diff --git a/src/csharp/Grpc.Core/Internal/INativeCall.cs b/src/csharp/Grpc.Core/Internal/INativeCall.cs index 42028e458c..ef2e230ff8 100644 --- a/src/csharp/Grpc.Core/Internal/INativeCall.cs +++ b/src/csharp/Grpc.Core/Internal/INativeCall.cs @@ -33,8 +33,9 @@ using System; namespace Grpc.Core.Internal { - internal delegate void UnaryResponseClientHandler(bool success, ClientSideStatus receivedStatus, byte[] receivedMessage); + internal delegate void UnaryResponseClientHandler(bool success, ClientSideStatus receivedStatus, byte[] receivedMessage, Metadata responseHeaders); + // Received status for streaming response calls. internal delegate void ReceivedStatusOnClientHandler(bool success, ClientSideStatus receivedStatus); internal delegate void ReceivedMessageHandler(bool success, byte[] receivedMessage); -- GitLab From 3af838a2d719c65c360f28ee8551c6012f408401 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Fri, 21 Aug 2015 13:48:52 -0700 Subject: [PATCH 139/178] simplify stream reads on client side --- src/csharp/Grpc.Core/Internal/AsyncCall.cs | 66 +++++++------------ .../Grpc.Core/Internal/AsyncCallBase.cs | 37 +++-------- .../Internal/ClientResponseStream.cs | 8 ++- 3 files changed, 40 insertions(+), 71 deletions(-) diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs index 132b426424..d687bb6283 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs @@ -56,14 +56,15 @@ namespace Grpc.Core.Internal // Completion of a pending unary response if not null. TaskCompletionSource<TResponse> unaryResponseTcs; + // Indicates that steaming call has finished. + TaskCompletionSource<object> streamingCallFinishedTcs = new TaskCompletionSource<object>(); + // Response headers set here once received. TaskCompletionSource<Metadata> responseHeadersTcs = new TaskCompletionSource<Metadata>(); // Set after status is received. Used for both unary and streaming response calls. ClientSideStatus? finishedStatus; - bool readObserverCompleted; // True if readObserver has already been completed. - public AsyncCall(CallInvocationDetails<TRequest, TResponse> callDetails) : base(callDetails.RequestMarshaller.Serializer, callDetails.ResponseMarshaller.Deserializer, callDetails.Channel.Environment) { @@ -74,8 +75,7 @@ namespace Grpc.Core.Internal /// <summary> /// This constructor should only be used for testing. /// </summary> - public AsyncCall(CallInvocationDetails<TRequest, TResponse> callDetails, INativeCall injectedNativeCall) - : this(callDetails) + public AsyncCall(CallInvocationDetails<TRequest, TResponse> callDetails, INativeCall injectedNativeCall) : this(callDetails) { this.injectedNativeCall = injectedNativeCall; } @@ -192,7 +192,6 @@ namespace Grpc.Core.Internal Initialize(environment.CompletionQueue); halfcloseRequested = true; - halfclosed = true; // halfclose not confirmed yet, but it will be once finishedHandler is called. byte[] payload = UnsafeSerialize(msg); @@ -260,6 +259,17 @@ namespace Grpc.Core.Internal } } + /// <summary> + /// Get the task that completes once if streaming call finishes with ok status and throws RpcException with given status otherwise. + /// </summary> + public Task StreamingCallFinishedTask + { + get + { + return streamingCallFinishedTcs.Task; + } + } + /// <summary> /// Get the task that completes once response headers are received. /// </summary> @@ -305,36 +315,6 @@ namespace Grpc.Core.Internal } } - /// <summary> - /// On client-side, we only fire readCompletionDelegate once all messages have been read - /// and status has been received. - /// </summary> - protected override void ProcessLastRead(AsyncCompletionDelegate<TResponse> completionDelegate) - { - if (completionDelegate != null && readingDone && finishedStatus.HasValue) - { - bool shouldComplete; - lock (myLock) - { - shouldComplete = !readObserverCompleted; - readObserverCompleted = true; - } - - if (shouldComplete) - { - var status = finishedStatus.Value.Status; - if (status.StatusCode != StatusCode.OK) - { - FireCompletion(completionDelegate, default(TResponse), new RpcException(status)); - } - else - { - FireCompletion(completionDelegate, default(TResponse), null); - } - } - } - } - protected override void OnAfterReleaseResources() { details.Channel.RemoveCallReference(this); @@ -392,8 +372,6 @@ namespace Grpc.Core.Internal finished = true; finishedStatus = receivedStatus; - halfclosed = true; - ReleaseResourcesIfPossible(); } @@ -403,7 +381,6 @@ namespace Grpc.Core.Internal if (!success || status.StatusCode != StatusCode.OK) { - unaryResponseTcs.SetException(new RpcException(status)); return; } @@ -420,18 +397,23 @@ namespace Grpc.Core.Internal /// </summary> private void HandleFinished(bool success, ClientSideStatus receivedStatus) { - AsyncCompletionDelegate<TResponse> origReadCompletionDelegate = null; lock (myLock) { finished = true; finishedStatus = receivedStatus; - origReadCompletionDelegate = readCompletionDelegate; - ReleaseResourcesIfPossible(); } - ProcessLastRead(origReadCompletionDelegate); + var status = receivedStatus.Status; + + if (!success || status.StatusCode != StatusCode.OK) + { + streamingCallFinishedTcs.SetException(new RpcException(status)); + return; + } + + streamingCallFinishedTcs.SetResult(null); } } } \ No newline at end of file diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs index 7744dbec00..4d20394644 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs @@ -61,19 +61,17 @@ namespace Grpc.Core.Internal protected bool disposed; protected bool started; - protected bool errorOccured; protected bool cancelRequested; protected AsyncCompletionDelegate<object> sendCompletionDelegate; // Completion of a pending send or sendclose if not null. protected AsyncCompletionDelegate<TRead> readCompletionDelegate; // Completion of a pending send or sendclose if not null. - protected bool readingDone; - protected bool halfcloseRequested; - protected bool halfclosed; + protected bool readingDone; // True if last read (i.e. read with null payload) was already received. + protected bool halfcloseRequested; // True if send close have been initiated. protected bool finished; // True if close has been received from the peer. protected bool initialMetadataSent; - protected long streamingWritesCounter; + protected long streamingWritesCounter; // Number of streaming send operations started so far. public AsyncCallBase(Func<TWrite, byte[]> serializer, Func<byte[], TRead> deserializer, GrpcEnvironment environment) { @@ -161,16 +159,6 @@ namespace Grpc.Core.Internal } } - // TODO(jtattermusch): find more fitting name for this method. - /// <summary> - /// Default behavior just completes the read observer, but more sofisticated behavior might be required - /// by subclasses. - /// </summary> - protected virtual void ProcessLastRead(AsyncCompletionDelegate<TRead> completionDelegate) - { - FireCompletion(completionDelegate, default(TRead), null); - } - /// <summary> /// If there are no more pending actions and no new actions can be started, releases /// the underlying native resources. @@ -179,7 +167,7 @@ namespace Grpc.Core.Internal { if (!disposed && call != null) { - bool noMoreSendCompletions = halfclosed || ((cancelRequested || finished) && sendCompletionDelegate == null); + bool noMoreSendCompletions = sendCompletionDelegate == null && (halfcloseRequested || cancelRequested || finished); if (noMoreSendCompletions && readingDone && finished) { ReleaseResources(); @@ -206,7 +194,6 @@ namespace Grpc.Core.Internal protected void CheckSendingAllowed() { Preconditions.CheckState(started); - Preconditions.CheckState(!errorOccured); CheckNotCancelled(); Preconditions.CheckState(!disposed); @@ -218,7 +205,6 @@ namespace Grpc.Core.Internal protected virtual void CheckReadingAllowed() { Preconditions.CheckState(started); - Preconditions.CheckState(!errorOccured); Preconditions.CheckState(!disposed); Preconditions.CheckState(!readingDone, "Stream has already been closed."); @@ -312,7 +298,6 @@ namespace Grpc.Core.Internal AsyncCompletionDelegate<object> origCompletionDelegate = null; lock (myLock) { - halfclosed = true; origCompletionDelegate = sendCompletionDelegate; sendCompletionDelegate = null; @@ -338,15 +323,11 @@ namespace Grpc.Core.Internal lock (myLock) { origCompletionDelegate = readCompletionDelegate; - if (receivedMessage != null) - { - readCompletionDelegate = null; - } - else + readCompletionDelegate = null; + + if (receivedMessage == null) { - // This was the last read. Keeping the readCompletionDelegate - // to be either fired by this handler or by client-side finished - // handler. + // This was the last read. readingDone = true; } @@ -365,7 +346,7 @@ namespace Grpc.Core.Internal } else { - ProcessLastRead(origCompletionDelegate); + FireCompletion(origCompletionDelegate, default(TRead), null); } } } diff --git a/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs b/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs index 6c44521038..b4a7335c7c 100644 --- a/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs +++ b/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs @@ -72,7 +72,13 @@ namespace Grpc.Core.Internal call.StartReadMessage(taskSource.CompletionDelegate); var result = await taskSource.Task; this.current = result; - return result != null; + + if (result == null) + { + await call.StreamingCallFinishedTask; + return false; + } + return true; } public void Dispose() -- GitLab From 4c25efa5195a81141ec1fc1dfa9dca42a74d377a Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Fri, 21 Aug 2015 16:07:57 -0700 Subject: [PATCH 140/178] support for reading response headers on client side --- src/csharp/.gitignore | 1 + .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 11 ++++ .../Grpc.Core.Tests/ResponseHeadersTest.cs | 58 +++++++++++++++++++ .../Grpc.Core/AsyncDuplexStreamingCall.cs | 16 ++++- .../Grpc.Core/AsyncServerStreamingCall.cs | 16 ++++- src/csharp/Grpc.Core/Calls.cs | 4 +- src/csharp/Grpc.Core/Channel.cs | 1 - src/csharp/Grpc.Core/Internal/AsyncCall.cs | 10 ++++ .../Grpc.Core/Internal/CallSafeHandle.cs | 11 ++++ src/csharp/Grpc.Core/Internal/INativeCall.cs | 4 ++ src/csharp/ext/grpc_csharp_ext.c | 55 +++++++++--------- 11 files changed, 156 insertions(+), 31 deletions(-) diff --git a/src/csharp/.gitignore b/src/csharp/.gitignore index ae48956567..48365e32a5 100644 --- a/src/csharp/.gitignore +++ b/src/csharp/.gitignore @@ -5,4 +5,5 @@ test-results packages Grpc.v12.suo TestResult.xml +/TestResults *.nupkg diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs index 1fa895ba71..5747f3ba04 100644 --- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs +++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs @@ -137,6 +137,12 @@ namespace Grpc.Core.Internal.Tests set; } + public ReceivedResponseHeadersHandler ReceivedResponseHeadersHandler + { + get; + set; + } + public SendCompletionHandler SendCompletionHandler { get; @@ -206,6 +212,11 @@ namespace Grpc.Core.Internal.Tests ReceivedMessageHandler = callback; } + public void StartReceiveInitialMetadata(ReceivedResponseHeadersHandler callback) + { + ReceivedResponseHeadersHandler = callback; + } + public void StartSendInitialMetadata(SendCompletionHandler callback, MetadataArraySafeHandle metadataArray) { SendCompletionHandler = callback; diff --git a/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs b/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs index 8ad41af1b8..76e36626b1 100644 --- a/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs +++ b/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs @@ -32,13 +32,16 @@ #endregion using System; +using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading.Tasks; + using Grpc.Core; using Grpc.Core.Internal; using Grpc.Core.Utils; + using NUnit.Framework; namespace Grpc.Core.Tests @@ -92,6 +95,61 @@ namespace Grpc.Core.Tests Assert.AreEqual("PASS", await call.ResponseAsync); } + [Test] + public async Task ResponseHeadersAsync_ClientStreamingCall() + { + helper.ClientStreamingHandler = new ClientStreamingServerMethod<string, string>(async (requestStream, context) => + { + await context.WriteResponseHeadersAsync(headers); + return "PASS"; + }); + + var call = Calls.AsyncClientStreamingCall(helper.CreateClientStreamingCall()); + await call.RequestStream.CompleteAsync(); + var responseHeaders = await call.ResponseHeadersAsync; + + Assert.AreEqual("ascii-header", responseHeaders[0].Key); + Assert.AreEqual("PASS", await call.ResponseAsync); + } + + [Test] + public async Task ResponseHeadersAsync_ServerStreamingCall() + { + helper.ServerStreamingHandler = new ServerStreamingServerMethod<string, string>(async (request, responseStream, context) => + { + await context.WriteResponseHeadersAsync(headers); + await responseStream.WriteAsync("PASS"); + }); + + var call = Calls.AsyncServerStreamingCall(helper.CreateServerStreamingCall(), ""); + var responseHeaders = await call.ResponseHeadersAsync; + + Assert.AreEqual("ascii-header", responseHeaders[0].Key); + CollectionAssert.AreEqual(new [] { "PASS" }, await call.ResponseStream.ToListAsync()); + } + + [Test] + public async Task ResponseHeadersAsync_DuplexStreamingCall() + { + helper.DuplexStreamingHandler = new DuplexStreamingServerMethod<string, string>(async (requestStream, responseStream, context) => + { + await context.WriteResponseHeadersAsync(headers); + while (await requestStream.MoveNext()) + { + await responseStream.WriteAsync(requestStream.Current); + } + }); + + var call = Calls.AsyncDuplexStreamingCall(helper.CreateDuplexStreamingCall()); + var responseHeaders = await call.ResponseHeadersAsync; + + var messages = new[] { "PASS" }; + await call.RequestStream.WriteAllAsync(messages); + + Assert.AreEqual("ascii-header", responseHeaders[0].Key); + CollectionAssert.AreEqual(messages, await call.ResponseStream.ToListAsync()); + } + [Test] public void WriteResponseHeaders_NullNotAllowed() { diff --git a/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs b/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs index 183c84216a..ee7ba29695 100644 --- a/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs @@ -32,6 +32,7 @@ #endregion using System; +using System.Threading.Tasks; namespace Grpc.Core { @@ -42,14 +43,16 @@ namespace Grpc.Core { readonly IClientStreamWriter<TRequest> requestStream; readonly IAsyncStreamReader<TResponse> responseStream; + readonly Task<Metadata> responseHeadersAsync; readonly Func<Status> getStatusFunc; readonly Func<Metadata> getTrailersFunc; readonly Action disposeAction; - public AsyncDuplexStreamingCall(IClientStreamWriter<TRequest> requestStream, IAsyncStreamReader<TResponse> responseStream, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) + public AsyncDuplexStreamingCall(IClientStreamWriter<TRequest> requestStream, IAsyncStreamReader<TResponse> responseStream, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) { this.requestStream = requestStream; this.responseStream = responseStream; + this.responseHeadersAsync = responseHeadersAsync; this.getStatusFunc = getStatusFunc; this.getTrailersFunc = getTrailersFunc; this.disposeAction = disposeAction; @@ -77,6 +80,17 @@ namespace Grpc.Core } } + /// <summary> + /// Asynchronous access to response headers. + /// </summary> + public Task<Metadata> ResponseHeadersAsync + { + get + { + return this.responseHeadersAsync; + } + } + /// <summary> /// Gets the call status if the call has already finished. /// Throws InvalidOperationException otherwise. diff --git a/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs b/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs index ab2049f269..2853a79ce6 100644 --- a/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs @@ -32,6 +32,7 @@ #endregion using System; +using System.Threading.Tasks; namespace Grpc.Core { @@ -41,13 +42,15 @@ namespace Grpc.Core public sealed class AsyncServerStreamingCall<TResponse> : IDisposable { readonly IAsyncStreamReader<TResponse> responseStream; + readonly Task<Metadata> responseHeadersAsync; readonly Func<Status> getStatusFunc; readonly Func<Metadata> getTrailersFunc; readonly Action disposeAction; - public AsyncServerStreamingCall(IAsyncStreamReader<TResponse> responseStream, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) + public AsyncServerStreamingCall(IAsyncStreamReader<TResponse> responseStream, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) { this.responseStream = responseStream; + this.responseHeadersAsync = responseHeadersAsync; this.getStatusFunc = getStatusFunc; this.getTrailersFunc = getTrailersFunc; this.disposeAction = disposeAction; @@ -64,6 +67,17 @@ namespace Grpc.Core } } + /// <summary> + /// Asynchronous access to response headers. + /// </summary> + public Task<Metadata> ResponseHeadersAsync + { + get + { + return this.responseHeadersAsync; + } + } + /// <summary> /// Gets the call status if the call has already finished. /// Throws InvalidOperationException otherwise. diff --git a/src/csharp/Grpc.Core/Calls.cs b/src/csharp/Grpc.Core/Calls.cs index ada3616aa4..e57ac89db3 100644 --- a/src/csharp/Grpc.Core/Calls.cs +++ b/src/csharp/Grpc.Core/Calls.cs @@ -93,7 +93,7 @@ namespace Grpc.Core var asyncCall = new AsyncCall<TRequest, TResponse>(call); asyncCall.StartServerStreamingCall(req); var responseStream = new ClientResponseStream<TRequest, TResponse>(asyncCall); - return new AsyncServerStreamingCall<TResponse>(responseStream, asyncCall.GetStatus, asyncCall.GetTrailers, asyncCall.Cancel); + return new AsyncServerStreamingCall<TResponse>(responseStream, asyncCall.ResponseHeadersAsync, asyncCall.GetStatus, asyncCall.GetTrailers, asyncCall.Cancel); } /// <summary> @@ -130,7 +130,7 @@ namespace Grpc.Core asyncCall.StartDuplexStreamingCall(); var requestStream = new ClientRequestStream<TRequest, TResponse>(asyncCall); var responseStream = new ClientResponseStream<TRequest, TResponse>(asyncCall); - return new AsyncDuplexStreamingCall<TRequest, TResponse>(requestStream, responseStream, asyncCall.GetStatus, asyncCall.GetTrailers, asyncCall.Cancel); + return new AsyncDuplexStreamingCall<TRequest, TResponse>(requestStream, responseStream, asyncCall.ResponseHeadersAsync, asyncCall.GetStatus, asyncCall.GetTrailers, asyncCall.Cancel); } } } diff --git a/src/csharp/Grpc.Core/Channel.cs b/src/csharp/Grpc.Core/Channel.cs index 2f8519dfa3..c11b320a64 100644 --- a/src/csharp/Grpc.Core/Channel.cs +++ b/src/csharp/Grpc.Core/Channel.cs @@ -58,7 +58,6 @@ namespace Grpc.Core readonly List<ChannelOption> options; bool shutdownRequested; - bool disposed; /// <summary> /// Creates a channel that connects to a specific host. diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs index d687bb6283..1b00b95bc8 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs @@ -199,6 +199,7 @@ namespace Grpc.Core.Internal { call.StartServerStreaming(HandleFinished, payload, metadataArray, GetWriteFlagsForCall()); } + call.StartReceiveInitialMetadata(HandleReceivedResponseHeaders); } } @@ -219,6 +220,7 @@ namespace Grpc.Core.Internal { call.StartDuplexStreaming(HandleFinished, metadataArray); } + call.StartReceiveInitialMetadata(HandleReceivedResponseHeaders); } } @@ -362,6 +364,14 @@ namespace Grpc.Core.Internal return writeOptions != null ? writeOptions.Flags : default(WriteFlags); } + /// <summary> + /// Handles receive status completion for calls with streaming response. + /// </summary> + private void HandleReceivedResponseHeaders(bool success, Metadata responseHeaders) + { + responseHeadersTcs.SetResult(responseHeaders); + } + /// <summary> /// Handler for unary response completion. /// </summary> diff --git a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs index ed6747ea93..0f187529e8 100644 --- a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs @@ -86,6 +86,10 @@ namespace Grpc.Core.Internal static extern GRPCCallError grpcsharp_call_recv_message(CallSafeHandle call, BatchContextSafeHandle ctx); + [DllImport("grpc_csharp_ext.dll")] + static extern GRPCCallError grpcsharp_call_recv_initial_metadata(CallSafeHandle call, + BatchContextSafeHandle ctx); + [DllImport("grpc_csharp_ext.dll")] static extern GRPCCallError grpcsharp_call_start_serverside(CallSafeHandle call, BatchContextSafeHandle ctx); @@ -172,6 +176,13 @@ namespace Grpc.Core.Internal grpcsharp_call_recv_message(this, ctx).CheckOk(); } + public void StartReceiveInitialMetadata(ReceivedResponseHeadersHandler callback) + { + var ctx = BatchContextSafeHandle.Create(); + completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success, context.GetReceivedInitialMetadata())); + grpcsharp_call_recv_initial_metadata(this, ctx).CheckOk(); + } + public void StartServerSide(ReceivedCloseOnServerHandler callback) { var ctx = BatchContextSafeHandle.Create(); diff --git a/src/csharp/Grpc.Core/Internal/INativeCall.cs b/src/csharp/Grpc.Core/Internal/INativeCall.cs index ef2e230ff8..ed4257d1f4 100644 --- a/src/csharp/Grpc.Core/Internal/INativeCall.cs +++ b/src/csharp/Grpc.Core/Internal/INativeCall.cs @@ -40,6 +40,8 @@ namespace Grpc.Core.Internal internal delegate void ReceivedMessageHandler(bool success, byte[] receivedMessage); + internal delegate void ReceivedResponseHeadersHandler(bool success, Metadata responseHeaders); + internal delegate void SendCompletionHandler(bool success); internal delegate void ReceivedCloseOnServerHandler(bool success, bool cancelled); @@ -67,6 +69,8 @@ namespace Grpc.Core.Internal void StartReceiveMessage(ReceivedMessageHandler callback); + void StartReceiveInitialMetadata(ReceivedResponseHeadersHandler callback); + void StartSendInitialMetadata(SendCompletionHandler callback, MetadataArraySafeHandle metadataArray); void StartSendMessage(SendCompletionHandler callback, byte[] payload, Grpc.Core.WriteFlags writeFlags, bool sendEmptyInitialMetadata); diff --git a/src/csharp/ext/grpc_csharp_ext.c b/src/csharp/ext/grpc_csharp_ext.c index fc9470f93f..489e219c49 100644 --- a/src/csharp/ext/grpc_csharp_ext.c +++ b/src/csharp/ext/grpc_csharp_ext.c @@ -595,7 +595,7 @@ GPR_EXPORT grpc_call_error GPR_CALLTYPE grpcsharp_call_start_server_streaming( grpc_call *call, grpcsharp_batch_context *ctx, const char *send_buffer, size_t send_buffer_len, grpc_metadata_array *initial_metadata, gpr_uint32 write_flags) { /* TODO: don't use magic number */ - grpc_op ops[5]; + grpc_op ops[4]; ops[0].op = GRPC_OP_SEND_INITIAL_METADATA; grpcsharp_metadata_array_move(&(ctx->send_initial_metadata), initial_metadata); @@ -615,23 +615,18 @@ GPR_EXPORT grpc_call_error GPR_CALLTYPE grpcsharp_call_start_server_streaming( ops[2].flags = 0; ops[2].reserved = NULL; - ops[3].op = GRPC_OP_RECV_INITIAL_METADATA; - ops[3].data.recv_initial_metadata = &(ctx->recv_initial_metadata); - ops[3].flags = 0; - ops[3].reserved = NULL; - - ops[4].op = GRPC_OP_RECV_STATUS_ON_CLIENT; - ops[4].data.recv_status_on_client.trailing_metadata = + ops[3].op = GRPC_OP_RECV_STATUS_ON_CLIENT; + ops[3].data.recv_status_on_client.trailing_metadata = &(ctx->recv_status_on_client.trailing_metadata); - ops[4].data.recv_status_on_client.status = + ops[3].data.recv_status_on_client.status = &(ctx->recv_status_on_client.status); /* not using preallocation for status_details */ - ops[4].data.recv_status_on_client.status_details = + ops[3].data.recv_status_on_client.status_details = &(ctx->recv_status_on_client.status_details); - ops[4].data.recv_status_on_client.status_details_capacity = + ops[3].data.recv_status_on_client.status_details_capacity = &(ctx->recv_status_on_client.status_details_capacity); - ops[4].flags = 0; - ops[4].reserved = NULL; + ops[3].flags = 0; + ops[3].reserved = NULL; return grpc_call_start_batch(call, ops, sizeof(ops) / sizeof(ops[0]), ctx, NULL); @@ -642,7 +637,7 @@ grpcsharp_call_start_duplex_streaming(grpc_call *call, grpcsharp_batch_context *ctx, grpc_metadata_array *initial_metadata) { /* TODO: don't use magic number */ - grpc_op ops[3]; + grpc_op ops[2]; ops[0].op = GRPC_OP_SEND_INITIAL_METADATA; grpcsharp_metadata_array_move(&(ctx->send_initial_metadata), initial_metadata); @@ -652,28 +647,36 @@ grpcsharp_call_start_duplex_streaming(grpc_call *call, ops[0].flags = 0; ops[0].reserved = NULL; - ops[1].op = GRPC_OP_RECV_INITIAL_METADATA; - ops[1].data.recv_initial_metadata = &(ctx->recv_initial_metadata); - ops[1].flags = 0; - ops[1].reserved = NULL; - - ops[2].op = GRPC_OP_RECV_STATUS_ON_CLIENT; - ops[2].data.recv_status_on_client.trailing_metadata = + ops[1].op = GRPC_OP_RECV_STATUS_ON_CLIENT; + ops[1].data.recv_status_on_client.trailing_metadata = &(ctx->recv_status_on_client.trailing_metadata); - ops[2].data.recv_status_on_client.status = + ops[1].data.recv_status_on_client.status = &(ctx->recv_status_on_client.status); /* not using preallocation for status_details */ - ops[2].data.recv_status_on_client.status_details = + ops[1].data.recv_status_on_client.status_details = &(ctx->recv_status_on_client.status_details); - ops[2].data.recv_status_on_client.status_details_capacity = + ops[1].data.recv_status_on_client.status_details_capacity = &(ctx->recv_status_on_client.status_details_capacity); - ops[2].flags = 0; - ops[2].reserved = NULL; + ops[1].flags = 0; + ops[1].reserved = NULL; return grpc_call_start_batch(call, ops, sizeof(ops) / sizeof(ops[0]), ctx, NULL); } +GPR_EXPORT grpc_call_error GPR_CALLTYPE grpcsharp_call_recv_initial_metadata( + grpc_call *call, grpcsharp_batch_context *ctx) { + /* TODO: don't use magic number */ + grpc_op ops[1]; + ops[0].op = GRPC_OP_RECV_INITIAL_METADATA; + ops[0].data.recv_initial_metadata = &(ctx->recv_initial_metadata); + ops[0].flags = 0; + ops[0].reserved = NULL; + + return grpc_call_start_batch(call, ops, sizeof(ops) / sizeof(ops[0]), ctx, + NULL); +} + GPR_EXPORT grpc_call_error GPR_CALLTYPE grpcsharp_call_send_message(grpc_call *call, grpcsharp_batch_context *ctx, const char *send_buffer, size_t send_buffer_len, -- GitLab From dca145bcfee28b5d5ff161b17719f8e53b7b5fd4 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Fri, 21 Aug 2015 16:12:35 -0700 Subject: [PATCH 141/178] fix stylecop issues --- .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 36 ++----------------- .../Grpc.Core.Tests/ResponseHeadersTest.cs | 2 +- src/csharp/Grpc.Core/GrpcEnvironment.cs | 1 - src/csharp/Grpc.Core/Internal/AsyncCall.cs | 1 - src/csharp/Grpc.Core/Internal/INativeCall.cs | 1 + 5 files changed, 4 insertions(+), 37 deletions(-) diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs index 5747f3ba04..685c5f7d6c 100644 --- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs +++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs @@ -33,9 +33,10 @@ using System; using System.Runtime.InteropServices; +using System.Threading.Tasks; + using Grpc.Core.Internal; using NUnit.Framework; -using System.Threading.Tasks; namespace Grpc.Core.Internal.Tests { @@ -87,38 +88,8 @@ namespace Grpc.Core.Internal.Tests Assert.AreEqual(StatusCode.Internal, ex.Status.StatusCode); } - - //[Test] - //public void Duplex_ReceiveEarlyClose() - //{ - // asyncCall.StartDuplexStreamingCall(); - - // fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(new Status(StatusCode.DeadlineExceeded, ""), null)); - - // // TODO: start read... - // Assert.IsTrue(fakeCall.IsDisposed); - //} - - //[Test] - //public void Duplex_ReceiveEarlyCloseWithRead() - //{ - // asyncCall.StartDuplexStreamingCall(); - - // fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(new Status(StatusCode.DeadlineExceeded, ""), null)); - - // var taskSource = new AsyncCompletionTaskSource<string>(); - // asyncCall.StartReadMessage(taskSource.CompletionDelegate); - - // fakeCall.ReceivedMessageHandler(true, new byte[] { 1 } ); - - // // TODO: start read... - // Assert.IsTrue(fakeCall.IsDisposed); - //} - - internal class FakeNativeCall : INativeCall { - public UnaryResponseClientHandler UnaryResponseClientHandler { get; @@ -247,8 +218,5 @@ namespace Grpc.Core.Internal.Tests IsDisposed = true; } } - } - - } \ No newline at end of file diff --git a/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs b/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs index 76e36626b1..a1648f3671 100644 --- a/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs +++ b/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs @@ -125,7 +125,7 @@ namespace Grpc.Core.Tests var responseHeaders = await call.ResponseHeadersAsync; Assert.AreEqual("ascii-header", responseHeaders[0].Key); - CollectionAssert.AreEqual(new [] { "PASS" }, await call.ResponseStream.ToListAsync()); + CollectionAssert.AreEqual(new[] { "PASS" }, await call.ResponseStream.ToListAsync()); } [Test] diff --git a/src/csharp/Grpc.Core/GrpcEnvironment.cs b/src/csharp/Grpc.Core/GrpcEnvironment.cs index b64228558e..e7c04185c2 100644 --- a/src/csharp/Grpc.Core/GrpcEnvironment.cs +++ b/src/csharp/Grpc.Core/GrpcEnvironment.cs @@ -185,7 +185,6 @@ namespace Grpc.Core return Marshal.PtrToStringAnsi(ptr); } - internal static void GrpcNativeInit() { grpcsharp_init(); diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs index 1b00b95bc8..be5d611a53 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs @@ -344,7 +344,6 @@ namespace Grpc.Core.Internal details.Method, details.Host, Timespec.FromDateTime(details.Options.Deadline.Value)); } - // Make sure that once cancellationToken for this call is cancelled, Cancel() will be called. private void RegisterCancellationCallback() { diff --git a/src/csharp/Grpc.Core/Internal/INativeCall.cs b/src/csharp/Grpc.Core/Internal/INativeCall.cs index ed4257d1f4..cbef599139 100644 --- a/src/csharp/Grpc.Core/Internal/INativeCall.cs +++ b/src/csharp/Grpc.Core/Internal/INativeCall.cs @@ -31,6 +31,7 @@ #endregion using System; + namespace Grpc.Core.Internal { internal delegate void UnaryResponseClientHandler(bool success, ClientSideStatus receivedStatus, byte[] receivedMessage, Metadata responseHeaders); -- GitLab From 987263a039f0e707ae31d163fbdb94640efbd588 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Fri, 21 Aug 2015 16:14:43 -0700 Subject: [PATCH 142/178] Lower-case string --- src/python/grpcio_test/grpc_test/_cython/adapter_low_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python/grpcio_test/grpc_test/_cython/adapter_low_test.py b/src/python/grpcio_test/grpc_test/_cython/adapter_low_test.py index 9bab930e56..f1bec238cf 100644 --- a/src/python/grpcio_test/grpc_test/_cython/adapter_low_test.py +++ b/src/python/grpcio_test/grpc_test/_cython/adapter_low_test.py @@ -76,7 +76,7 @@ class InsecureServerInsecureClient(unittest.TestCase): CLIENT_METADATA_BIN_VALUE = b'\0'*1000 SERVER_INITIAL_METADATA_KEY = 'init_me_me_me' SERVER_INITIAL_METADATA_VALUE = 'whodawha?' - SERVER_TRAILING_METADATA_KEY = 'California_is_in_a_drought' + SERVER_TRAILING_METADATA_KEY = 'california_is_in_a_drought' SERVER_TRAILING_METADATA_VALUE = 'zomg it is' SERVER_STATUS_CODE = _types.StatusCode.OK SERVER_STATUS_DETAILS = 'our work is never over' -- GitLab From 578c7c5fe9d62095ce7e79da84160143d3b8ece0 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Fri, 21 Aug 2015 16:26:58 -0700 Subject: [PATCH 143/178] revert AssemblyInfo.cs --- src/csharp/Grpc.Core/Properties/AssemblyInfo.cs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs b/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs index caca080b7f..29db85d7aa 100644 --- a/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs +++ b/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs @@ -16,13 +16,6 @@ using System.Runtime.CompilerServices; "0442bb8e12768722de0b0cb1b15e955b32a11352740ee59f2c94c48edc8e177d1052536b8ac651bce11ce5da3a" + "27fc95aff3dc604a6971417453f9483c7b5e836756d5b271bf8f2403fe186e31956148c03d804487cf642f8cc0" + "71394ee9672dfe5b55ea0f95dfd5a7f77d22c962ccf51320d3")] - -[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2,PublicKey=" + - "0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6" + - "c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdc" + - "f9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff6" + - "2abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] #else [assembly: InternalsVisibleTo("Grpc.Core.Tests")] -[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] #endif \ No newline at end of file -- GitLab From 11a28c7f1a31343f85f72f35bd42b34877cc9339 Mon Sep 17 00:00:00 2001 From: Craig Tiller <craig.tiller@gmail.com> Date: Mon, 24 Aug 2015 07:54:34 -0700 Subject: [PATCH 144/178] Update projects --- Makefile | 6 +++--- build.json | 3 +-- tools/run_tests/jobset.py | 1 + tools/run_tests/sources_and_headers.json | 5 +---- vsprojects/Grpc.mak | 4 ++-- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index f7ace3186a..15e05a5d87 100644 --- a/Makefile +++ b/Makefile @@ -7135,14 +7135,14 @@ $(BINDIR)/$(CONFIG)/gen_legal_metadata_characters: openssl_dep_error else -$(BINDIR)/$(CONFIG)/gen_legal_metadata_characters: $(GEN_LEGAL_METADATA_CHARACTERS_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a +$(BINDIR)/$(CONFIG)/gen_legal_metadata_characters: $(GEN_LEGAL_METADATA_CHARACTERS_OBJS) $(E) "[LD] Linking $@" $(Q) mkdir -p `dirname $@` - $(Q) $(LD) $(LDFLAGS) $(GEN_LEGAL_METADATA_CHARACTERS_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/gen_legal_metadata_characters + $(Q) $(LD) $(LDFLAGS) $(GEN_LEGAL_METADATA_CHARACTERS_OBJS) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/gen_legal_metadata_characters endif -$(OBJDIR)/$(CONFIG)/tools/codegen/core/gen_legal_metadata_characters.o: $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a +$(OBJDIR)/$(CONFIG)/tools/codegen/core/gen_legal_metadata_characters.o: deps_gen_legal_metadata_characters: $(GEN_LEGAL_METADATA_CHARACTERS_OBJS:.o=.dep) ifneq ($(NO_SECURE),true) diff --git a/build.json b/build.json index c6a670970b..b784fe3303 100644 --- a/build.json +++ b/build.json @@ -1150,8 +1150,7 @@ "src": [ "tools/codegen/core/gen_legal_metadata_characters.c" ], - "deps": [ - ] + "deps": [] }, { "name": "gpr_cmdline_test", diff --git a/tools/run_tests/jobset.py b/tools/run_tests/jobset.py index 538deac0e3..d0e3fc4eb3 100755 --- a/tools/run_tests/jobset.py +++ b/tools/run_tests/jobset.py @@ -174,6 +174,7 @@ class Job(object): for k, v in add_env.iteritems(): env[k] = v self._start = time.time() + print spec.cmdline self._process = subprocess.Popen(args=spec.cmdline, stderr=subprocess.STDOUT, stdout=self._tempfile, diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 142c84901d..aa22f0f159 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -238,10 +238,7 @@ ] }, { - "deps": [ - "gpr", - "grpc" - ], + "deps": [], "headers": [], "language": "c", "name": "gen_legal_metadata_characters", diff --git a/vsprojects/Grpc.mak b/vsprojects/Grpc.mak index 3d853d9c76..9eede74b08 100644 --- a/vsprojects/Grpc.mak +++ b/vsprojects/Grpc.mak @@ -183,10 +183,10 @@ gen_hpack_tables: gen_hpack_tables.exe echo Running gen_hpack_tables $(OUT_DIR)\gen_hpack_tables.exe -gen_legal_metadata_characters.exe: build_gpr build_grpc $(OUT_DIR) +gen_legal_metadata_characters.exe: $(OUT_DIR) echo Building gen_legal_metadata_characters $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\tools\codegen\core\gen_legal_metadata_characters.c - $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gen_legal_metadata_characters.exe" Debug\gpr.lib Debug\grpc.lib $(LIBS) $(OUT_DIR)\gen_legal_metadata_characters.obj + $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gen_legal_metadata_characters.exe" $(LIBS) $(OUT_DIR)\gen_legal_metadata_characters.obj gen_legal_metadata_characters: gen_legal_metadata_characters.exe echo Running gen_legal_metadata_characters $(OUT_DIR)\gen_legal_metadata_characters.exe -- GitLab From 79c9b358d980cb4ff389e89beec1173f12d1829d Mon Sep 17 00:00:00 2001 From: Nathaniel Manista <nathaniel@google.com> Date: Mon, 24 Aug 2015 16:59:09 +0000 Subject: [PATCH 145/178] The face interface of RPC Framework. This is the public API of the old face package of RPC Framework extracted into a first-class interface and adapted to metadata, status, and flow control. --- .../framework/interfaces/face/__init__.py | 30 + .../grpc/framework/interfaces/face/face.py | 933 ++++++++++++++++++ .../framework/interfaces/face/utilities.py | 178 ++++ 3 files changed, 1141 insertions(+) create mode 100644 src/python/grpcio/grpc/framework/interfaces/face/__init__.py create mode 100644 src/python/grpcio/grpc/framework/interfaces/face/face.py create mode 100644 src/python/grpcio/grpc/framework/interfaces/face/utilities.py diff --git a/src/python/grpcio/grpc/framework/interfaces/face/__init__.py b/src/python/grpcio/grpc/framework/interfaces/face/__init__.py new file mode 100644 index 0000000000..7086519106 --- /dev/null +++ b/src/python/grpcio/grpc/framework/interfaces/face/__init__.py @@ -0,0 +1,30 @@ +# 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. + + diff --git a/src/python/grpcio/grpc/framework/interfaces/face/face.py b/src/python/grpcio/grpc/framework/interfaces/face/face.py new file mode 100644 index 0000000000..948e7505b6 --- /dev/null +++ b/src/python/grpcio/grpc/framework/interfaces/face/face.py @@ -0,0 +1,933 @@ +# 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. + +"""Interfaces defining the Face layer of RPC Framework.""" + +import abc +import collections +import enum + +# cardinality, style, abandonment, future, and stream are +# referenced from specification in this module. +from grpc.framework.common import cardinality # pylint: disable=unused-import +from grpc.framework.common import style # pylint: disable=unused-import +from grpc.framework.foundation import abandonment # pylint: disable=unused-import +from grpc.framework.foundation import future # pylint: disable=unused-import +from grpc.framework.foundation import stream # pylint: disable=unused-import + + +class NoSuchMethodError(Exception): + """Raised by customer code to indicate an unrecognized method. + + Attributes: + group: The group of the unrecognized method. + name: The name of the unrecognized method. + """ + + def __init__(self, group, method): + """Constructor. + + Args: + group: The group identifier of the unrecognized RPC name. + method: The method identifier of the unrecognized RPC name. + """ + super(NoSuchMethodError, self).__init__() + self.group = group + self.method = method + + def __repr__(self): + return 'face.NoSuchMethodError(%s, %s)' % (self.group, self.method,) + + +class Abortion( + collections.namedtuple( + 'Abortion', + ('kind', 'initial_metadata', 'terminal_metadata', 'code', 'details',))): + """A value describing RPC abortion. + + Attributes: + kind: A Kind value identifying how the RPC failed. + initial_metadata: The initial metadata from the other side of the RPC or + None if no initial metadata value was received. + terminal_metadata: The terminal metadata from the other side of the RPC or + None if no terminal metadata value was received. + code: The code value from the other side of the RPC or None if no code value + was received. + details: The details value from the other side of the RPC or None if no + details value was received. + """ + + @enum.unique + class Kind(enum.Enum): + """Types of RPC abortion.""" + + CANCELLED = 'cancelled' + EXPIRED = 'expired' + LOCAL_SHUTDOWN = 'local shutdown' + REMOTE_SHUTDOWN = 'remote shutdown' + NETWORK_FAILURE = 'network failure' + LOCAL_FAILURE = 'local failure' + REMOTE_FAILURE = 'remote failure' + + +class AbortionError(Exception): + """Common super type for exceptions indicating RPC abortion. + + initial_metadata: The initial metadata from the other side of the RPC or + None if no initial metadata value was received. + terminal_metadata: The terminal metadata from the other side of the RPC or + None if no terminal metadata value was received. + code: The code value from the other side of the RPC or None if no code value + was received. + details: The details value from the other side of the RPC or None if no + details value was received. + """ + __metaclass__ = abc.ABCMeta + + def __init__(self, initial_metadata, terminal_metadata, code, details): + super(AbortionError, self).__init__() + self.initial_metadata = initial_metadata + self.terminal_metadata = terminal_metadata + self.code = code + self.details = details + + +class CancellationError(AbortionError): + """Indicates that an RPC has been cancelled.""" + + +class ExpirationError(AbortionError): + """Indicates that an RPC has expired ("timed out").""" + + +class LocalShutdownError(AbortionError): + """Indicates that an RPC has terminated due to local shutdown of RPCs.""" + + +class RemoteShutdownError(AbortionError): + """Indicates that an RPC has terminated due to remote shutdown of RPCs.""" + + +class NetworkError(AbortionError): + """Indicates that some error occurred on the network.""" + + +class LocalError(AbortionError): + """Indicates that an RPC has terminated due to a local defect.""" + + +class RemoteError(AbortionError): + """Indicates that an RPC has terminated due to a remote defect.""" + + +class RpcContext(object): + """Provides RPC-related information and action.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def is_active(self): + """Describes whether the RPC is active or has terminated.""" + raise NotImplementedError() + + @abc.abstractmethod + def time_remaining(self): + """Describes the length of allowed time remaining for the RPC. + + Returns: + A nonnegative float indicating the length of allowed time in seconds + remaining for the RPC to complete before it is considered to have timed + out. + """ + raise NotImplementedError() + + @abc.abstractmethod + def add_abortion_callback(self, abortion_callback): + """Registers a callback to be called if the RPC is aborted. + + Args: + abortion_callback: A callable to be called and passed an Abortion value + in the event of RPC abortion. + """ + raise NotImplementedError() + + @abc.abstractmethod + def cancel(self): + """Cancels the RPC. + + Idempotent and has no effect if the RPC has already terminated. + """ + raise NotImplementedError() + + +class Call(RpcContext): + """Invocation-side utility object for an RPC.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def initial_metadata(self): + """Accesses the initial metadata from the service-side of the RPC. + + This method blocks until the value is available or is known not to have been + emitted from the service-side of the RPC. + + Returns: + The initial metadata object emitted by the service-side of the RPC, or + None if there was no such value. + """ + raise NotImplementedError() + + @abc.abstractmethod + def terminal_metadata(self): + """Accesses the terminal metadata from the service-side of the RPC. + + This method blocks until the value is available or is known not to have been + emitted from the service-side of the RPC. + + Returns: + The terminal metadata object emitted by the service-side of the RPC, or + None if there was no such value. + """ + raise NotImplementedError() + + @abc.abstractmethod + def code(self): + """Accesses the code emitted by the service-side of the RPC. + + This method blocks until the value is available or is known not to have been + emitted from the service-side of the RPC. + + Returns: + The code object emitted by the service-side of the RPC, or None if there + was no such value. + """ + raise NotImplementedError() + + @abc.abstractmethod + def details(self): + """Accesses the details value emitted by the service-side of the RPC. + + This method blocks until the value is available or is known not to have been + emitted from the service-side of the RPC. + + Returns: + The details value emitted by the service-side of the RPC, or None if there + was no such value. + """ + raise NotImplementedError() + + +class ServicerContext(RpcContext): + """A context object passed to method implementations.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def invocation_metadata(self): + """Accesses the metadata from the invocation-side of the RPC. + + This method blocks until the value is available or is known not to have been + emitted from the invocation-side of the RPC. + + Returns: + The metadata object emitted by the invocation-side of the RPC, or None if + there was no such value. + """ + raise NotImplementedError() + + @abc.abstractmethod + def initial_metadata(self, initial_metadata): + """Accepts the service-side initial metadata value of the RPC. + + This method need not be called by method implementations if they have no + service-side initial metadata to transmit. + + Args: + initial_metadata: The service-side initial metadata value of the RPC to + be transmitted to the invocation side of the RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def terminal_metadata(self, terminal_metadata): + """Accepts the service-side terminal metadata value of the RPC. + + This method need not be called by method implementations if they have no + service-side terminal metadata to transmit. + + Args: + terminal_metadata: The service-side terminal metadata value of the RPC to + be transmitted to the invocation side of the RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def code(self, code): + """Accepts the service-side code of the RPC. + + This method need not be called by method implementations if they have no + code to transmit. + + Args: + code: The code of the RPC to be transmitted to the invocation side of the + RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def details(self, details): + """Accepts the service-side details of the RPC. + + This method need not be called by method implementations if they have no + service-side details to transmit. + + Args: + details: The service-side details value of the RPC to be transmitted to + the invocation side of the RPC. + """ + raise NotImplementedError() + + +class ResponseReceiver(object): + """Invocation-side object used to accept the output of an RPC.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def initial_metadata(self, initial_metadata): + """Receives the initial metadata from the service-side of the RPC. + + Args: + initial_metadata: The initial metadata object emitted from the + service-side of the RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def response(self, response): + """Receives a response from the service-side of the RPC. + + Args: + response: A response object emitted from the service-side of the RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def complete(self, terminal_metadata, code, details): + """Receives the completion values emitted from the service-side of the RPC. + + Args: + terminal_metadata: The terminal metadata object emitted from the + service-side of the RPC. + code: The code object emitted from the service-side of the RPC. + details: The details object emitted from the service-side of the RPC. + """ + raise NotImplementedError() + + +class UnaryUnaryMultiCallable(object): + """Affords invoking a unary-unary RPC in any call style.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def __call__( + self, request, timeout, metadata=None, with_call=False): + """Synchronously invokes the underlying RPC. + + Args: + request: The request value for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of + the RPC. + with_call: Whether or not to include return a Call for the RPC in addition + to the reponse. + + Returns: + The response value for the RPC, and a Call for the RPC if with_call was + set to True at invocation. + + Raises: + AbortionError: Indicating that the RPC was aborted. + """ + raise NotImplementedError() + + @abc.abstractmethod + def future(self, request, timeout, metadata=None): + """Asynchronously invokes the underlying RPC. + + Args: + request: The request value for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of + the RPC. + + Returns: + An object that is both a Call for the RPC and a future.Future. In the + event of RPC completion, the return Future's result value will be the + response value of the RPC. In the event of RPC abortion, the returned + Future's exception value will be an AbortionError. + """ + raise NotImplementedError() + + @abc.abstractmethod + def event( + self, request, receiver, abortion_callback, timeout, + metadata=None): + """Asynchronously invokes the underlying RPC. + + Args: + request: The request value for the RPC. + receiver: A ResponseReceiver to be passed the response data of the RPC. + abortion_callback: A callback to be called and passed an Abortion value + in the event of RPC abortion. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of + the RPC. + + Returns: + A Call for the RPC. + """ + raise NotImplementedError() + + +class UnaryStreamMultiCallable(object): + """Affords invoking a unary-stream RPC in any call style.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def __call__(self, request, timeout, metadata=None): + """Invokes the underlying RPC. + + Args: + request: The request value for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of + the RPC. + + Returns: + An object that is both a Call for the RPC and an iterator of response + values. Drawing response values from the returned iterator may raise + AbortionError indicating abortion of the RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def event( + self, request, receiver, abortion_callback, timeout, + metadata=None): + """Asynchronously invokes the underlying RPC. + + Args: + request: The request value for the RPC. + receiver: A ResponseReceiver to be passed the response data of the RPC. + abortion_callback: A callback to be called and passed an Abortion value + in the event of RPC abortion. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of + the RPC. + + Returns: + A Call object for the RPC. + """ + raise NotImplementedError() + + +class StreamUnaryMultiCallable(object): + """Affords invoking a stream-unary RPC in any call style.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def __call__( + self, request_iterator, timeout, metadata=None, + with_call=False): + """Synchronously invokes the underlying RPC. + + Args: + request_iterator: An iterator that yields request values for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of + the RPC. + with_call: Whether or not to include return a Call for the RPC in addition + to the reponse. + + Returns: + The response value for the RPC, and a Call for the RPC if with_call was + set to True at invocation. + + Raises: + AbortionError: Indicating that the RPC was aborted. + """ + raise NotImplementedError() + + @abc.abstractmethod + def future(self, request_iterator, timeout, metadata=None): + """Asynchronously invokes the underlying RPC. + + Args: + request_iterator: An iterator that yields request values for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of + the RPC. + + Returns: + An object that is both a Call for the RPC and a future.Future. In the + event of RPC completion, the return Future's result value will be the + response value of the RPC. In the event of RPC abortion, the returned + Future's exception value will be an AbortionError. + """ + raise NotImplementedError() + + @abc.abstractmethod + def event( + self, receiver, abortion_callback, timeout, metadata=None): + """Asynchronously invokes the underlying RPC. + + Args: + receiver: A ResponseReceiver to be passed the response data of the RPC. + abortion_callback: A callback to be called and passed an Abortion value + in the event of RPC abortion. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of + the RPC. + + Returns: + A single object that is both a Call object for the RPC and a + stream.Consumer to which the request values of the RPC should be passed. + """ + raise NotImplementedError() + + +class StreamStreamMultiCallable(object): + """Affords invoking a stream-stream RPC in any call style.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def __call__(self, request_iterator, timeout, metadata=None): + """Invokes the underlying RPC. + + Args: + request_iterator: An iterator that yields request values for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of + the RPC. + + Returns: + An object that is both a Call for the RPC and an iterator of response + values. Drawing response values from the returned iterator may raise + AbortionError indicating abortion of the RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def event( + self, receiver, abortion_callback, timeout, metadata=None): + """Asynchronously invokes the underlying RPC. + + Args: + receiver: A ResponseReceiver to be passed the response data of the RPC. + abortion_callback: A callback to be called and passed an Abortion value + in the event of RPC abortion. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of + the RPC. + + Returns: + A single object that is both a Call object for the RPC and a + stream.Consumer to which the request values of the RPC should be passed. + """ + raise NotImplementedError() + + +class MethodImplementation(object): + """A sum type that describes a method implementation. + + Attributes: + cardinality: A cardinality.Cardinality value. + style: A style.Service value. + unary_unary_inline: The implementation of the method as a callable value + that takes a request value and a ServicerContext object and returns a + response value. Only non-None if cardinality is + cardinality.Cardinality.UNARY_UNARY and style is style.Service.INLINE. + unary_stream_inline: The implementation of the method as a callable value + that takes a request value and a ServicerContext object and returns an + iterator of response values. Only non-None if cardinality is + cardinality.Cardinality.UNARY_STREAM and style is style.Service.INLINE. + stream_unary_inline: The implementation of the method as a callable value + that takes an iterator of request values and a ServicerContext object and + returns a response value. Only non-None if cardinality is + cardinality.Cardinality.STREAM_UNARY and style is style.Service.INLINE. + stream_stream_inline: The implementation of the method as a callable value + that takes an iterator of request values and a ServicerContext object and + returns an iterator of response values. Only non-None if cardinality is + cardinality.Cardinality.STREAM_STREAM and style is style.Service.INLINE. + unary_unary_event: The implementation of the method as a callable value that + takes a request value, a response callback to which to pass the response + value of the RPC, and a ServicerContext. Only non-None if cardinality is + cardinality.Cardinality.UNARY_UNARY and style is style.Service.EVENT. + unary_stream_event: The implementation of the method as a callable value + that takes a request value, a stream.Consumer to which to pass the + response values of the RPC, and a ServicerContext. Only non-None if + cardinality is cardinality.Cardinality.UNARY_STREAM and style is + style.Service.EVENT. + stream_unary_event: The implementation of the method as a callable value + that takes a response callback to which to pass the response value of the + RPC and a ServicerContext and returns a stream.Consumer to which the + request values of the RPC should be passed. Only non-None if cardinality + is cardinality.Cardinality.STREAM_UNARY and style is style.Service.EVENT. + stream_stream_event: The implementation of the method as a callable value + that takes a stream.Consumer to which to pass the response values of the + RPC and a ServicerContext and returns a stream.Consumer to which the + request values of the RPC should be passed. Only non-None if cardinality + is cardinality.Cardinality.STREAM_STREAM and style is + style.Service.EVENT. + """ + __metaclass__ = abc.ABCMeta + + +class MultiMethodImplementation(object): + """A general type able to service many methods.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def service(self, group, method, response_consumer, context): + """Services an RPC. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + response_consumer: A stream.Consumer to be called to accept the response + values of the RPC. + context: a ServicerContext object. + + Returns: + A stream.Consumer with which to accept the request values of the RPC. The + consumer returned from this method may or may not be invoked to + completion: in the case of RPC abortion, RPC Framework will simply stop + passing values to this object. Implementations must not assume that this + object will be called to completion of the request stream or even called + at all. + + Raises: + abandonment.Abandoned: May or may not be raised when the RPC has been + aborted. + NoSuchMethodError: If this MultiMethod does not recognize the given group + and name for the RPC and is not able to service the RPC. + """ + raise NotImplementedError() + + +class GenericStub(object): + """Affords RPC invocation via generic methods.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def blocking_unary_unary( + self, group, method, request, timeout, metadata=None, + with_call=False): + """Invokes a unary-request-unary-response method. + + This method blocks until either returning the response value of the RPC + (in the event of RPC completion) or raising an exception (in the event of + RPC abortion). + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + request: The request value for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of the RPC. + with_call: Whether or not to include return a Call for the RPC in addition + to the reponse. + + Returns: + The response value for the RPC, and a Call for the RPC if with_call was + set to True at invocation. + + Raises: + AbortionError: Indicating that the RPC was aborted. + """ + raise NotImplementedError() + + @abc.abstractmethod + def future_unary_unary( + self, group, method, request, timeout, metadata=None): + """Invokes a unary-request-unary-response method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + request: The request value for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of the RPC. + + Returns: + An object that is both a Call for the RPC and a future.Future. In the + event of RPC completion, the return Future's result value will be the + response value of the RPC. In the event of RPC abortion, the returned + Future's exception value will be an AbortionError. + """ + raise NotImplementedError() + + @abc.abstractmethod + def inline_unary_stream( + self, group, method, request, timeout, metadata=None): + """Invokes a unary-request-stream-response method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + request: The request value for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of the RPC. + + Returns: + An object that is both a Call for the RPC and an iterator of response + values. Drawing response values from the returned iterator may raise + AbortionError indicating abortion of the RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def blocking_stream_unary( + self, group, method, request_iterator, timeout, metadata=None, + with_call=False): + """Invokes a stream-request-unary-response method. + + This method blocks until either returning the response value of the RPC + (in the event of RPC completion) or raising an exception (in the event of + RPC abortion). + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + request_iterator: An iterator that yields request values for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of the RPC. + with_call: Whether or not to include return a Call for the RPC in addition + to the reponse. + + Returns: + The response value for the RPC, and a Call for the RPC if with_call was + set to True at invocation. + + Raises: + AbortionError: Indicating that the RPC was aborted. + """ + raise NotImplementedError() + + @abc.abstractmethod + def future_stream_unary( + self, group, method, request_iterator, timeout, metadata=None): + """Invokes a stream-request-unary-response method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + request_iterator: An iterator that yields request values for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of the RPC. + + Returns: + An object that is both a Call for the RPC and a future.Future. In the + event of RPC completion, the return Future's result value will be the + response value of the RPC. In the event of RPC abortion, the returned + Future's exception value will be an AbortionError. + """ + raise NotImplementedError() + + @abc.abstractmethod + def inline_stream_stream( + self, group, method, request_iterator, timeout, metadata=None): + """Invokes a stream-request-stream-response method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + request_iterator: An iterator that yields request values for the RPC. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of the RPC. + + Returns: + An object that is both a Call for the RPC and an iterator of response + values. Drawing response values from the returned iterator may raise + AbortionError indicating abortion of the RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def event_unary_unary( + self, group, method, request, receiver, abortion_callback, timeout, + metadata=None): + """Event-driven invocation of a unary-request-unary-response method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + request: The request value for the RPC. + receiver: A ResponseReceiver to be passed the response data of the RPC. + abortion_callback: A callback to be called and passed an Abortion value + in the event of RPC abortion. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of the RPC. + + Returns: + A Call for the RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def event_unary_stream( + self, group, method, request, receiver, abortion_callback, timeout, + metadata=None): + """Event-driven invocation of a unary-request-stream-response method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + request: The request value for the RPC. + receiver: A ResponseReceiver to be passed the response data of the RPC. + abortion_callback: A callback to be called and passed an Abortion value + in the event of RPC abortion. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of the RPC. + + Returns: + A Call for the RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def event_stream_unary( + self, group, method, receiver, abortion_callback, timeout, + metadata=None): + """Event-driven invocation of a unary-request-unary-response method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + receiver: A ResponseReceiver to be passed the response data of the RPC. + abortion_callback: A callback to be called and passed an Abortion value + in the event of RPC abortion. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of the RPC. + + Returns: + A pair of a Call object for the RPC and a stream.Consumer to which the + request values of the RPC should be passed. + """ + raise NotImplementedError() + + @abc.abstractmethod + def event_stream_stream( + self, group, method, receiver, abortion_callback, timeout, + metadata=None): + """Event-driven invocation of a unary-request-stream-response method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + receiver: A ResponseReceiver to be passed the response data of the RPC. + abortion_callback: A callback to be called and passed an Abortion value + in the event of RPC abortion. + timeout: A duration of time in seconds to allow for the RPC. + metadata: A metadata value to be passed to the service-side of the RPC. + + Returns: + A pair of a Call object for the RPC and a stream.Consumer to which the + request values of the RPC should be passed. + """ + raise NotImplementedError() + + @abc.abstractmethod + def unary_unary(self, group, method): + """Creates a UnaryUnaryMultiCallable for a unary-unary method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + + Returns: + A UnaryUnaryMultiCallable value for the named unary-unary method. + """ + raise NotImplementedError() + + @abc.abstractmethod + def unary_stream(self, group, method): + """Creates a UnaryStreamMultiCallable for a unary-stream method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + + Returns: + A UnaryStreamMultiCallable value for the name unary-stream method. + """ + raise NotImplementedError() + + @abc.abstractmethod + def stream_unary(self, group, method): + """Creates a StreamUnaryMultiCallable for a stream-unary method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + + Returns: + A StreamUnaryMultiCallable value for the named stream-unary method. + """ + raise NotImplementedError() + + @abc.abstractmethod + def stream_stream(self, group, method): + """Creates a StreamStreamMultiCallable for a stream-stream method. + + Args: + group: The group identifier of the RPC. + method: The method identifier of the RPC. + + Returns: + A StreamStreamMultiCallable value for the named stream-stream method. + """ + raise NotImplementedError() + + +class DynamicStub(object): + """Affords RPC invocation via attributes corresponding to afforded methods. + + Instances of this type may be scoped to a single group so that attribute + access is unambiguous. + + Instances of this type respond to attribute access as follows: if the + requested attribute is the name of a unary-unary method, the value of the + attribute will be a UnaryUnaryMultiCallable with which to invoke an RPC; if + the requested attribute is the name of a unary-stream method, the value of the + attribute will be a UnaryStreamMultiCallable with which to invoke an RPC; if + the requested attribute is the name of a stream-unary method, the value of the + attribute will be a StreamUnaryMultiCallable with which to invoke an RPC; and + if the requested attribute is the name of a stream-stream method, the value of + the attribute will be a StreamStreamMultiCallable with which to invoke an RPC. + """ + __metaclass__ = abc.ABCMeta diff --git a/src/python/grpcio/grpc/framework/interfaces/face/utilities.py b/src/python/grpcio/grpc/framework/interfaces/face/utilities.py new file mode 100644 index 0000000000..db2ec6ed87 --- /dev/null +++ b/src/python/grpcio/grpc/framework/interfaces/face/utilities.py @@ -0,0 +1,178 @@ +# 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. + +"""Utilities for RPC Framework's Face interface.""" + +import collections + +# stream is referenced from specification in this module. +from grpc.framework.common import cardinality +from grpc.framework.common import style +from grpc.framework.foundation import stream # pylint: disable=unused-import +from grpc.framework.interfaces.face import face + + +class _MethodImplementation( + face.MethodImplementation, + collections.namedtuple( + '_MethodImplementation', + ['cardinality', 'style', 'unary_unary_inline', 'unary_stream_inline', + 'stream_unary_inline', 'stream_stream_inline', 'unary_unary_event', + 'unary_stream_event', 'stream_unary_event', 'stream_stream_event',])): + pass + + +def unary_unary_inline(behavior): + """Creates an face.MethodImplementation for the given behavior. + + Args: + behavior: The implementation of a unary-unary RPC method as a callable value + that takes a request value and an face.ServicerContext object and + returns a response value. + + Returns: + An face.MethodImplementation derived from the given behavior. + """ + return _MethodImplementation( + cardinality.Cardinality.UNARY_UNARY, style.Service.INLINE, behavior, + None, None, None, None, None, None, None) + + +def unary_stream_inline(behavior): + """Creates an face.MethodImplementation for the given behavior. + + Args: + behavior: The implementation of a unary-stream RPC method as a callable + value that takes a request value and an face.ServicerContext object and + returns an iterator of response values. + + Returns: + An face.MethodImplementation derived from the given behavior. + """ + return _MethodImplementation( + cardinality.Cardinality.UNARY_STREAM, style.Service.INLINE, None, + behavior, None, None, None, None, None, None) + + +def stream_unary_inline(behavior): + """Creates an face.MethodImplementation for the given behavior. + + Args: + behavior: The implementation of a stream-unary RPC method as a callable + value that takes an iterator of request values and an + face.ServicerContext object and returns a response value. + + Returns: + An face.MethodImplementation derived from the given behavior. + """ + return _MethodImplementation( + cardinality.Cardinality.STREAM_UNARY, style.Service.INLINE, None, None, + behavior, None, None, None, None, None) + + +def stream_stream_inline(behavior): + """Creates an face.MethodImplementation for the given behavior. + + Args: + behavior: The implementation of a stream-stream RPC method as a callable + value that takes an iterator of request values and an + face.ServicerContext object and returns an iterator of response values. + + Returns: + An face.MethodImplementation derived from the given behavior. + """ + return _MethodImplementation( + cardinality.Cardinality.STREAM_STREAM, style.Service.INLINE, None, None, + None, behavior, None, None, None, None) + + +def unary_unary_event(behavior): + """Creates an face.MethodImplementation for the given behavior. + + Args: + behavior: The implementation of a unary-unary RPC method as a callable + value that takes a request value, a response callback to which to pass + the response value of the RPC, and an face.ServicerContext. + + Returns: + An face.MethodImplementation derived from the given behavior. + """ + return _MethodImplementation( + cardinality.Cardinality.UNARY_UNARY, style.Service.EVENT, None, None, + None, None, behavior, None, None, None) + + +def unary_stream_event(behavior): + """Creates an face.MethodImplementation for the given behavior. + + Args: + behavior: The implementation of a unary-stream RPC method as a callable + value that takes a request value, a stream.Consumer to which to pass the + the response values of the RPC, and an face.ServicerContext. + + Returns: + An face.MethodImplementation derived from the given behavior. + """ + return _MethodImplementation( + cardinality.Cardinality.UNARY_STREAM, style.Service.EVENT, None, None, + None, None, None, behavior, None, None) + + +def stream_unary_event(behavior): + """Creates an face.MethodImplementation for the given behavior. + + Args: + behavior: The implementation of a stream-unary RPC method as a callable + value that takes a response callback to which to pass the response value + of the RPC and an face.ServicerContext and returns a stream.Consumer to + which the request values of the RPC should be passed. + + Returns: + An face.MethodImplementation derived from the given behavior. + """ + return _MethodImplementation( + cardinality.Cardinality.STREAM_UNARY, style.Service.EVENT, None, None, + None, None, None, None, behavior, None) + + +def stream_stream_event(behavior): + """Creates an face.MethodImplementation for the given behavior. + + Args: + behavior: The implementation of a stream-stream RPC method as a callable + value that takes a stream.Consumer to which to pass the response values + of the RPC and an face.ServicerContext and returns a stream.Consumer to + which the request values of the RPC should be passed. + + Returns: + An face.MethodImplementation derived from the given behavior. + """ + return _MethodImplementation( + cardinality.Cardinality.STREAM_STREAM, style.Service.EVENT, None, None, + None, None, None, None, None, behavior) -- GitLab From 46f2d347629480b2dd69fda4546dc831de69518c Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Mon, 24 Aug 2015 10:43:51 -0700 Subject: [PATCH 146/178] Move the default roots check before allocation --- src/core/security/security_connector.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/core/security/security_connector.c b/src/core/security/security_connector.c index a354536dcd..ba9ac68c5f 100644 --- a/src/core/security/security_connector.c +++ b/src/core/security/security_connector.c @@ -575,6 +575,16 @@ grpc_security_status grpc_ssl_channel_security_connector_create( if (!check_request_metadata_creds(request_metadata_creds)) { goto error; } + if (config->pem_root_certs == NULL) { + pem_root_certs_size = grpc_get_default_ssl_roots(&pem_root_certs); + if (pem_root_certs == NULL || pem_root_certs_size == 0) { + gpr_log(GPR_ERROR, "Could not get default pem root certs."); + goto error; + } + } else { + pem_root_certs = config->pem_root_certs; + pem_root_certs_size = config->pem_root_certs_size; + } c = gpr_malloc(sizeof(grpc_ssl_channel_security_connector)); memset(c, 0, sizeof(grpc_ssl_channel_security_connector)); @@ -590,16 +600,6 @@ grpc_security_status grpc_ssl_channel_security_connector_create( if (overridden_target_name != NULL) { c->overridden_target_name = gpr_strdup(overridden_target_name); } - if (config->pem_root_certs == NULL) { - pem_root_certs_size = grpc_get_default_ssl_roots(&pem_root_certs); - if (pem_root_certs == NULL || pem_root_certs_size == 0) { - gpr_log(GPR_ERROR, "Could not get default pem root certs."); - goto error; - } - } else { - pem_root_certs = config->pem_root_certs; - pem_root_certs_size = config->pem_root_certs_size; - } result = tsi_create_ssl_client_handshaker_factory( config->pem_private_key, config->pem_private_key_size, config->pem_cert_chain, config->pem_cert_chain_size, pem_root_certs, -- GitLab From e8a7e30a751a9ba0aca79e4fa3b0fcd51d98c4e0 Mon Sep 17 00:00:00 2001 From: Vijay Pai <vpai@google.com> Date: Mon, 24 Aug 2015 10:52:33 -0700 Subject: [PATCH 147/178] Eliminate public thread-pool interface --- BUILD | 12 +-- Makefile | 94 +------------------ build.json | 38 +------- include/grpc++/server_builder.h | 4 - src/cpp/server/create_default_thread_pool.cc | 2 +- src/cpp/server/dynamic_thread_pool.cc | 2 +- .../cpp/server}/dynamic_thread_pool.h | 9 +- src/cpp/server/fixed_size_thread_pool.cc | 2 +- .../cpp/server}/fixed_size_thread_pool.h | 9 +- src/cpp/server/server.cc | 2 +- src/cpp/server/server_builder.cc | 8 +- .../cpp/server}/thread_pool_interface.h | 6 +- test/cpp/end2end/end2end_test.cc | 6 +- test/cpp/end2end/mock_test.cc | 5 +- test/cpp/end2end/thread_stress_test.cc | 5 +- test/cpp/qps/server_sync.cc | 12 +-- test/cpp/server/dynamic_thread_pool_test.cc | 77 --------------- .../cpp/server/fixed_size_thread_pool_test.cc | 77 --------------- test/cpp/util/cli_call_test.cc | 5 +- tools/doxygen/Doxyfile.c++ | 3 - tools/doxygen/Doxyfile.c++.internal | 6 +- tools/run_tests/sources_and_headers.json | 58 +++--------- tools/run_tests/tests.json | 36 ------- vsprojects/Grpc.mak | 18 +--- vsprojects/grpc++/grpc++.vcxproj | 6 +- vsprojects/grpc++/grpc++.vcxproj.filters | 18 ++-- .../grpc++_unsecure/grpc++_unsecure.vcxproj | 6 +- .../grpc++_unsecure.vcxproj.filters | 18 ++-- 28 files changed, 77 insertions(+), 467 deletions(-) rename {include/grpc++ => src/cpp/server}/dynamic_thread_pool.h (92%) rename {include/grpc++ => src/cpp/server}/fixed_size_thread_pool.h (91%) rename {include/grpc++ => src/cpp/server}/thread_pool_interface.h (92%) delete mode 100644 test/cpp/server/dynamic_thread_pool_test.cc delete mode 100644 test/cpp/server/fixed_size_thread_pool_test.cc diff --git a/BUILD b/BUILD index 7eb59797d4..54452463ba 100644 --- a/BUILD +++ b/BUILD @@ -677,6 +677,9 @@ cc_library( "src/cpp/server/secure_server_credentials.h", "src/cpp/client/channel.h", "src/cpp/common/create_auth_context.h", + "src/cpp/server/dynamic_thread_pool.h", + "src/cpp/server/fixed_size_thread_pool.h", + "src/cpp/server/thread_pool_interface.h", "src/cpp/client/secure_channel_arguments.cc", "src/cpp/client/secure_credentials.cc", "src/cpp/common/auth_property_iterator.cc", @@ -722,8 +725,6 @@ cc_library( "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", "include/grpc++/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", @@ -749,7 +750,6 @@ cc_library( "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", ], includes = [ @@ -769,6 +769,9 @@ cc_library( srcs = [ "src/cpp/client/channel.h", "src/cpp/common/create_auth_context.h", + "src/cpp/server/dynamic_thread_pool.h", + "src/cpp/server/fixed_size_thread_pool.h", + "src/cpp/server/thread_pool_interface.h", "src/cpp/common/insecure_create_auth_context.cc", "src/cpp/client/channel.cc", "src/cpp/client/channel_arguments.cc", @@ -809,8 +812,6 @@ cc_library( "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", "include/grpc++/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", @@ -836,7 +837,6 @@ cc_library( "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", ], includes = [ diff --git a/Makefile b/Makefile index 31628b4412..19c0fd5d95 100644 --- a/Makefile +++ b/Makefile @@ -862,9 +862,7 @@ credentials_test: $(BINDIR)/$(CONFIG)/credentials_test cxx_byte_buffer_test: $(BINDIR)/$(CONFIG)/cxx_byte_buffer_test cxx_slice_test: $(BINDIR)/$(CONFIG)/cxx_slice_test cxx_time_test: $(BINDIR)/$(CONFIG)/cxx_time_test -dynamic_thread_pool_test: $(BINDIR)/$(CONFIG)/dynamic_thread_pool_test end2end_test: $(BINDIR)/$(CONFIG)/end2end_test -fixed_size_thread_pool_test: $(BINDIR)/$(CONFIG)/fixed_size_thread_pool_test generic_end2end_test: $(BINDIR)/$(CONFIG)/generic_end2end_test grpc_cli: $(BINDIR)/$(CONFIG)/grpc_cli grpc_cpp_plugin: $(BINDIR)/$(CONFIG)/grpc_cpp_plugin @@ -1733,7 +1731,7 @@ buildtests: buildtests_c buildtests_cxx buildtests_zookeeper buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONFIG)/alarm_list_test $(BINDIR)/$(CONFIG)/alarm_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)/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_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)/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)/chttp2_fake_security_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_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_time_test $(BINDIR)/$(CONFIG)/dynamic_thread_pool_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/fixed_size_thread_pool_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)/status_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)/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_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)/status_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)/shutdown_test $(BINDIR)/$(CONFIG)/zookeeper_test @@ -3329,12 +3327,8 @@ test_cxx: test_zookeeper buildtests_cxx $(Q) $(BINDIR)/$(CONFIG)/cxx_slice_test || ( echo test cxx_slice_test failed ; exit 1 ) $(E) "[RUN] Testing cxx_time_test" $(Q) $(BINDIR)/$(CONFIG)/cxx_time_test || ( echo test cxx_time_test failed ; exit 1 ) - $(E) "[RUN] Testing dynamic_thread_pool_test" - $(Q) $(BINDIR)/$(CONFIG)/dynamic_thread_pool_test || ( echo test dynamic_thread_pool_test failed ; exit 1 ) $(E) "[RUN] Testing end2end_test" $(Q) $(BINDIR)/$(CONFIG)/end2end_test || ( echo test end2end_test failed ; exit 1 ) - $(E) "[RUN] Testing fixed_size_thread_pool_test" - $(Q) $(BINDIR)/$(CONFIG)/fixed_size_thread_pool_test || ( echo test fixed_size_thread_pool_test failed ; exit 1 ) $(E) "[RUN] Testing generic_end2end_test" $(Q) $(BINDIR)/$(CONFIG)/generic_end2end_test || ( echo test generic_end2end_test failed ; exit 1 ) $(E) "[RUN] Testing interop_test" @@ -4641,8 +4635,6 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/config_protobuf.h \ include/grpc++/create_channel.h \ include/grpc++/credentials.h \ - include/grpc++/dynamic_thread_pool.h \ - include/grpc++/fixed_size_thread_pool.h \ include/grpc++/generic_stub.h \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ @@ -4668,7 +4660,6 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/status_code_enum.h \ include/grpc++/stream.h \ include/grpc++/stub_options.h \ - include/grpc++/thread_pool_interface.h \ include/grpc++/time.h \ LIBGRPC++_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC++_SRC)))) @@ -4884,8 +4875,6 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/config_protobuf.h \ include/grpc++/create_channel.h \ include/grpc++/credentials.h \ - include/grpc++/dynamic_thread_pool.h \ - include/grpc++/fixed_size_thread_pool.h \ include/grpc++/generic_stub.h \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ @@ -4911,7 +4900,6 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/status_code_enum.h \ include/grpc++/stream.h \ include/grpc++/stub_options.h \ - include/grpc++/thread_pool_interface.h \ include/grpc++/time.h \ LIBGRPC++_UNSECURE_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC++_UNSECURE_SRC)))) @@ -9255,46 +9243,6 @@ endif endif -DYNAMIC_THREAD_POOL_TEST_SRC = \ - test/cpp/server/dynamic_thread_pool_test.cc \ - -DYNAMIC_THREAD_POOL_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(DYNAMIC_THREAD_POOL_TEST_SRC)))) -ifeq ($(NO_SECURE),true) - -# You can't build secure targets if you don't have OpenSSL. - -$(BINDIR)/$(CONFIG)/dynamic_thread_pool_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)/dynamic_thread_pool_test: protobuf_dep_error - -else - -$(BINDIR)/$(CONFIG)/dynamic_thread_pool_test: $(PROTOBUF_DEP) $(DYNAMIC_THREAD_POOL_TEST_OBJS) $(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) $(DYNAMIC_THREAD_POOL_TEST_OBJS) $(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)/dynamic_thread_pool_test - -endif - -endif - -$(OBJDIR)/$(CONFIG)/test/cpp/server/dynamic_thread_pool_test.o: $(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_dynamic_thread_pool_test: $(DYNAMIC_THREAD_POOL_TEST_OBJS:.o=.dep) - -ifneq ($(NO_SECURE),true) -ifneq ($(NO_DEPS),true) --include $(DYNAMIC_THREAD_POOL_TEST_OBJS:.o=.dep) -endif -endif - - END2END_TEST_SRC = \ test/cpp/end2end/end2end_test.cc \ @@ -9335,46 +9283,6 @@ endif endif -FIXED_SIZE_THREAD_POOL_TEST_SRC = \ - test/cpp/server/fixed_size_thread_pool_test.cc \ - -FIXED_SIZE_THREAD_POOL_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(FIXED_SIZE_THREAD_POOL_TEST_SRC)))) -ifeq ($(NO_SECURE),true) - -# You can't build secure targets if you don't have OpenSSL. - -$(BINDIR)/$(CONFIG)/fixed_size_thread_pool_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)/fixed_size_thread_pool_test: protobuf_dep_error - -else - -$(BINDIR)/$(CONFIG)/fixed_size_thread_pool_test: $(PROTOBUF_DEP) $(FIXED_SIZE_THREAD_POOL_TEST_OBJS) $(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) $(FIXED_SIZE_THREAD_POOL_TEST_OBJS) $(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)/fixed_size_thread_pool_test - -endif - -endif - -$(OBJDIR)/$(CONFIG)/test/cpp/server/fixed_size_thread_pool_test.o: $(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_fixed_size_thread_pool_test: $(FIXED_SIZE_THREAD_POOL_TEST_OBJS:.o=.dep) - -ifneq ($(NO_SECURE),true) -ifneq ($(NO_DEPS),true) --include $(FIXED_SIZE_THREAD_POOL_TEST_OBJS:.o=.dep) -endif -endif - - GENERIC_END2END_TEST_SRC = \ test/cpp/end2end/generic_end2end_test.cc \ diff --git a/build.json b/build.json index bd707d2e34..3f80cdfe17 100644 --- a/build.json +++ b/build.json @@ -42,8 +42,6 @@ "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", "include/grpc++/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", @@ -69,12 +67,14 @@ "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h" ], "headers": [ "src/cpp/client/channel.h", - "src/cpp/common/create_auth_context.h" + "src/cpp/common/create_auth_context.h", + "src/cpp/server/dynamic_thread_pool.h", + "src/cpp/server/fixed_size_thread_pool.h", + "src/cpp/server/thread_pool_interface.h" ], "src": [ "src/cpp/client/channel.cc", @@ -2129,21 +2129,6 @@ "gpr" ] }, - { - "name": "dynamic_thread_pool_test", - "build": "test", - "language": "c++", - "src": [ - "test/cpp/server/dynamic_thread_pool_test.cc" - ], - "deps": [ - "grpc_test_util", - "grpc++", - "grpc", - "gpr_test_util", - "gpr" - ] - }, { "name": "end2end_test", "build": "test", @@ -2160,21 +2145,6 @@ "gpr" ] }, - { - "name": "fixed_size_thread_pool_test", - "build": "test", - "language": "c++", - "src": [ - "test/cpp/server/fixed_size_thread_pool_test.cc" - ], - "deps": [ - "grpc_test_util", - "grpc++", - "grpc", - "gpr_test_util", - "gpr" - ] - }, { "name": "generic_end2end_test", "build": "test", diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h index 906daf1370..de70aab340 100644 --- a/include/grpc++/server_builder.h +++ b/include/grpc++/server_builder.h @@ -96,10 +96,6 @@ class ServerBuilder { std::shared_ptr<ServerCredentials> creds, int* selected_port = nullptr); - // Set the thread pool used for running appliation rpc handlers. - // Does not take ownership. - void SetThreadPool(ThreadPoolInterface* thread_pool); - // Add a completion queue for handling asynchronous services // Caller is required to keep this completion queue live until calling // BuildAndStart() diff --git a/src/cpp/server/create_default_thread_pool.cc b/src/cpp/server/create_default_thread_pool.cc index 9f59d254f1..f4ff4154b2 100644 --- a/src/cpp/server/create_default_thread_pool.cc +++ b/src/cpp/server/create_default_thread_pool.cc @@ -32,7 +32,7 @@ */ #include <grpc/support/cpu.h> -#include <grpc++/dynamic_thread_pool.h> +#include "src/cpp/server/dynamic_thread_pool.h" #ifndef GRPC_CUSTOM_DEFAULT_THREAD_POOL diff --git a/src/cpp/server/dynamic_thread_pool.cc b/src/cpp/server/dynamic_thread_pool.cc index b475f43b1d..34bf169396 100644 --- a/src/cpp/server/dynamic_thread_pool.cc +++ b/src/cpp/server/dynamic_thread_pool.cc @@ -33,7 +33,7 @@ #include <grpc++/impl/sync.h> #include <grpc++/impl/thd.h> -#include <grpc++/dynamic_thread_pool.h> +#include "src/cpp/server/dynamic_thread_pool.h" namespace grpc { DynamicThreadPool::DynamicThread::DynamicThread(DynamicThreadPool* pool) diff --git a/include/grpc++/dynamic_thread_pool.h b/src/cpp/server/dynamic_thread_pool.h similarity index 92% rename from include/grpc++/dynamic_thread_pool.h rename to src/cpp/server/dynamic_thread_pool.h index a4d4885b51..a4683eefc4 100644 --- a/include/grpc++/dynamic_thread_pool.h +++ b/src/cpp/server/dynamic_thread_pool.h @@ -31,19 +31,20 @@ * */ -#ifndef GRPCXX_DYNAMIC_THREAD_POOL_H -#define GRPCXX_DYNAMIC_THREAD_POOL_H +#ifndef GRPC_INTERNAL_CPP_DYNAMIC_THREAD_POOL_H +#define GRPC_INTERNAL_CPP_DYNAMIC_THREAD_POOL_H #include <grpc++/config.h> #include <grpc++/impl/sync.h> #include <grpc++/impl/thd.h> -#include <grpc++/thread_pool_interface.h> #include <list> #include <memory> #include <queue> +#include "src/cpp/server/thread_pool_interface.h" + namespace grpc { class DynamicThreadPool GRPC_FINAL : public ThreadPoolInterface { @@ -80,4 +81,4 @@ class DynamicThreadPool GRPC_FINAL : public ThreadPoolInterface { } // namespace grpc -#endif // GRPCXX_DYNAMIC_THREAD_POOL_H +#endif // GRPC_INTERNAL_CPP_DYNAMIC_THREAD_POOL_H diff --git a/src/cpp/server/fixed_size_thread_pool.cc b/src/cpp/server/fixed_size_thread_pool.cc index bafbc5802a..2bdc44be2e 100644 --- a/src/cpp/server/fixed_size_thread_pool.cc +++ b/src/cpp/server/fixed_size_thread_pool.cc @@ -33,7 +33,7 @@ #include <grpc++/impl/sync.h> #include <grpc++/impl/thd.h> -#include <grpc++/fixed_size_thread_pool.h> +#include "src/cpp/server/fixed_size_thread_pool.h" namespace grpc { diff --git a/include/grpc++/fixed_size_thread_pool.h b/src/cpp/server/fixed_size_thread_pool.h similarity index 91% rename from include/grpc++/fixed_size_thread_pool.h rename to src/cpp/server/fixed_size_thread_pool.h index 307e166142..65d3134ec4 100644 --- a/include/grpc++/fixed_size_thread_pool.h +++ b/src/cpp/server/fixed_size_thread_pool.h @@ -31,18 +31,19 @@ * */ -#ifndef GRPCXX_FIXED_SIZE_THREAD_POOL_H -#define GRPCXX_FIXED_SIZE_THREAD_POOL_H +#ifndef GRPC_INTERNAL_CPP_FIXED_SIZE_THREAD_POOL_H +#define GRPC_INTERNAL_CPP_FIXED_SIZE_THREAD_POOL_H #include <grpc++/config.h> #include <grpc++/impl/sync.h> #include <grpc++/impl/thd.h> -#include <grpc++/thread_pool_interface.h> #include <queue> #include <vector> +#include "src/cpp/server/thread_pool_interface.h" + namespace grpc { class FixedSizeThreadPool GRPC_FINAL : public ThreadPoolInterface { @@ -64,4 +65,4 @@ class FixedSizeThreadPool GRPC_FINAL : public ThreadPoolInterface { } // namespace grpc -#endif // GRPCXX_FIXED_SIZE_THREAD_POOL_H +#endif // GRPC_INTERNAL_CPP_FIXED_SIZE_THREAD_POOL_H diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index e039c07374..57707121f3 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -43,10 +43,10 @@ #include <grpc++/impl/service_type.h> #include <grpc++/server_context.h> #include <grpc++/server_credentials.h> -#include <grpc++/thread_pool_interface.h> #include <grpc++/time.h> #include "src/core/profiling/timers.h" +#include "src/cpp/server/thread_pool_interface.h" namespace grpc { diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc index 0b11d86173..db13c84a2b 100644 --- a/src/cpp/server/server_builder.cc +++ b/src/cpp/server/server_builder.cc @@ -37,8 +37,8 @@ #include <grpc/support/log.h> #include <grpc++/impl/service_type.h> #include <grpc++/server.h> -#include <grpc++/thread_pool_interface.h> -#include <grpc++/fixed_size_thread_pool.h> +#include "src/cpp/server/thread_pool_interface.h" +#include "src/cpp/server/fixed_size_thread_pool.h" namespace grpc { @@ -89,10 +89,6 @@ void ServerBuilder::AddListeningPort(const grpc::string& addr, ports_.push_back(port); } -void ServerBuilder::SetThreadPool(ThreadPoolInterface* thread_pool) { - thread_pool_ = thread_pool; -} - std::unique_ptr<Server> ServerBuilder::BuildAndStart() { bool thread_pool_owned = false; if (!async_services_.empty() && !services_.empty()) { diff --git a/include/grpc++/thread_pool_interface.h b/src/cpp/server/thread_pool_interface.h similarity index 92% rename from include/grpc++/thread_pool_interface.h rename to src/cpp/server/thread_pool_interface.h index d080b31dcc..1ebe30fe2a 100644 --- a/include/grpc++/thread_pool_interface.h +++ b/src/cpp/server/thread_pool_interface.h @@ -31,8 +31,8 @@ * */ -#ifndef GRPCXX_THREAD_POOL_INTERFACE_H -#define GRPCXX_THREAD_POOL_INTERFACE_H +#ifndef GRPC_INTERNAL_CPP_THREAD_POOL_INTERFACE_H +#define GRPC_INTERNAL_CPP_THREAD_POOL_INTERFACE_H #include <functional> @@ -51,4 +51,4 @@ ThreadPoolInterface* CreateDefaultThreadPool(); } // namespace grpc -#endif // GRPCXX_THREAD_POOL_INTERFACE_H +#endif // GRPC_INTERNAL_CPP_THREAD_POOL_INTERFACE_H diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc index 350b10726f..8ea63b1280 100644 --- a/test/cpp/end2end/end2end_test.cc +++ b/test/cpp/end2end/end2end_test.cc @@ -45,7 +45,6 @@ #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/dynamic_thread_pool.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> @@ -262,7 +261,7 @@ class TestServiceImplDupPkg class End2endTest : public ::testing::TestWithParam<bool> { protected: End2endTest() - : kMaxMessageSize_(8192), special_service_("special"), thread_pool_(2) {} + : kMaxMessageSize_(8192), special_service_("special") {} void SetUp() GRPC_OVERRIDE { int port = grpc_pick_unused_port_or_die(); @@ -281,7 +280,6 @@ class End2endTest : public ::testing::TestWithParam<bool> { builder.SetMaxMessageSize( kMaxMessageSize_); // For testing max message size. builder.RegisterService(&dup_pkg_service_); - builder.SetThreadPool(&thread_pool_); server_ = builder.BuildAndStart(); } @@ -309,7 +307,6 @@ class End2endTest : public ::testing::TestWithParam<bool> { ServerBuilder builder; builder.AddListeningPort(proxyaddr.str(), InsecureServerCredentials()); builder.RegisterService(proxy_service_.get()); - builder.SetThreadPool(&thread_pool_); proxy_server_ = builder.BuildAndStart(); channel_ = CreateChannel(proxyaddr.str(), InsecureCredentials(), @@ -329,7 +326,6 @@ class End2endTest : public ::testing::TestWithParam<bool> { TestServiceImpl service_; TestServiceImpl special_service_; TestServiceImplDupPkg dup_pkg_service_; - DynamicThreadPool thread_pool_; }; static void SendRpc(grpc::cpp::test::util::TestService::Stub* stub, diff --git a/test/cpp/end2end/mock_test.cc b/test/cpp/end2end/mock_test.cc index 32130e24e9..d1d5c4447b 100644 --- a/test/cpp/end2end/mock_test.cc +++ b/test/cpp/end2end/mock_test.cc @@ -42,7 +42,6 @@ #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/dynamic_thread_pool.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> @@ -234,7 +233,7 @@ class TestServiceImpl : public TestService::Service { class MockTest : public ::testing::Test { protected: - MockTest() : thread_pool_(2) {} + MockTest() {} void SetUp() GRPC_OVERRIDE { int port = grpc_pick_unused_port_or_die(); @@ -244,7 +243,6 @@ class MockTest : public ::testing::Test { builder.AddListeningPort(server_address_.str(), InsecureServerCredentials()); builder.RegisterService(&service_); - builder.SetThreadPool(&thread_pool_); server_ = builder.BuildAndStart(); } @@ -260,7 +258,6 @@ class MockTest : public ::testing::Test { std::unique_ptr<Server> server_; std::ostringstream server_address_; TestServiceImpl service_; - DynamicThreadPool thread_pool_; }; // Do one real rpc and one mocked one diff --git a/test/cpp/end2end/thread_stress_test.cc b/test/cpp/end2end/thread_stress_test.cc index ff9c945c7c..3604232749 100644 --- a/test/cpp/end2end/thread_stress_test.cc +++ b/test/cpp/end2end/thread_stress_test.cc @@ -43,7 +43,6 @@ #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/dynamic_thread_pool.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> @@ -177,7 +176,7 @@ class TestServiceImplDupPkg class End2endTest : public ::testing::Test { protected: - End2endTest() : kMaxMessageSize_(8192), thread_pool_(2) {} + End2endTest() : kMaxMessageSize_(8192) {} void SetUp() GRPC_OVERRIDE { int port = grpc_pick_unused_port_or_die(); @@ -190,7 +189,6 @@ class End2endTest : public ::testing::Test { builder.SetMaxMessageSize( kMaxMessageSize_); // For testing max message size. builder.RegisterService(&dup_pkg_service_); - builder.SetThreadPool(&thread_pool_); server_ = builder.BuildAndStart(); } @@ -208,7 +206,6 @@ class End2endTest : public ::testing::Test { const int kMaxMessageSize_; TestServiceImpl service_; TestServiceImplDupPkg dup_pkg_service_; - DynamicThreadPool thread_pool_; }; static void SendRpc(grpc::cpp::test::util::TestService::Stub* stub, diff --git a/test/cpp/qps/server_sync.cc b/test/cpp/qps/server_sync.cc index 4c3c9cb497..93f747a8f3 100644 --- a/test/cpp/qps/server_sync.cc +++ b/test/cpp/qps/server_sync.cc @@ -40,8 +40,6 @@ #include <grpc/support/alloc.h> #include <grpc/support/host_port.h> #include <grpc++/config.h> -#include <grpc++/dynamic_thread_pool.h> -#include <grpc++/fixed_size_thread_pool.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> @@ -93,12 +91,7 @@ class TestServiceImpl GRPC_FINAL : public TestService::Service { class SynchronousServer GRPC_FINAL : public grpc::testing::Server { public: SynchronousServer(const ServerConfig& config, int port) - : thread_pool_(), impl_(MakeImpl(port)) { - if (config.threads() > 0) { - thread_pool_.reset(new FixedSizeThreadPool(config.threads())); - } else { - thread_pool_.reset(new DynamicThreadPool(-config.threads())); - } + : impl_(MakeImpl(port)) { } private: @@ -112,13 +105,10 @@ class SynchronousServer GRPC_FINAL : public grpc::testing::Server { builder.RegisterService(&service_); - builder.SetThreadPool(thread_pool_.get()); - return builder.BuildAndStart(); } TestServiceImpl service_; - std::unique_ptr<ThreadPoolInterface> thread_pool_; std::unique_ptr<grpc::Server> impl_; }; diff --git a/test/cpp/server/dynamic_thread_pool_test.cc b/test/cpp/server/dynamic_thread_pool_test.cc deleted file mode 100644 index 63b603b8f7..0000000000 --- a/test/cpp/server/dynamic_thread_pool_test.cc +++ /dev/null @@ -1,77 +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. - * - */ - -#include <condition_variable> -#include <functional> -#include <mutex> - -#include <grpc++/dynamic_thread_pool.h> -#include <gtest/gtest.h> - -namespace grpc { - -class DynamicThreadPoolTest : public ::testing::Test { - public: - DynamicThreadPoolTest() : thread_pool_(0) {} - - protected: - DynamicThreadPool thread_pool_; -}; - -void Callback(std::mutex* mu, std::condition_variable* cv, bool* done) { - std::unique_lock<std::mutex> lock(*mu); - *done = true; - cv->notify_all(); -} - -TEST_F(DynamicThreadPoolTest, Add) { - std::mutex mu; - std::condition_variable cv; - bool done = false; - std::function<void()> callback = std::bind(Callback, &mu, &cv, &done); - thread_pool_.Add(callback); - - // Wait for the callback to finish. - std::unique_lock<std::mutex> lock(mu); - while (!done) { - cv.wait(lock); - } -} - -} // namespace grpc - -int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); - int result = RUN_ALL_TESTS(); - return result; -} diff --git a/test/cpp/server/fixed_size_thread_pool_test.cc b/test/cpp/server/fixed_size_thread_pool_test.cc deleted file mode 100644 index 442e974fc1..0000000000 --- a/test/cpp/server/fixed_size_thread_pool_test.cc +++ /dev/null @@ -1,77 +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. - * - */ - -#include <condition_variable> -#include <functional> -#include <mutex> - -#include <grpc++/fixed_size_thread_pool.h> -#include <gtest/gtest.h> - -namespace grpc { - -class FixedSizeThreadPoolTest : public ::testing::Test { - public: - FixedSizeThreadPoolTest() : thread_pool_(4) {} - - protected: - FixedSizeThreadPool thread_pool_; -}; - -void Callback(std::mutex* mu, std::condition_variable* cv, bool* done) { - std::unique_lock<std::mutex> lock(*mu); - *done = true; - cv->notify_all(); -} - -TEST_F(FixedSizeThreadPoolTest, Add) { - std::mutex mu; - std::condition_variable cv; - bool done = false; - std::function<void()> callback = std::bind(Callback, &mu, &cv, &done); - thread_pool_.Add(callback); - - // Wait for the callback to finish. - std::unique_lock<std::mutex> lock(mu); - while (!done) { - cv.wait(lock); - } -} - -} // namespace grpc - -int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); - int result = RUN_ALL_TESTS(); - return result; -} diff --git a/test/cpp/util/cli_call_test.cc b/test/cpp/util/cli_call_test.cc index 848a3aee57..6a1f055971 100644 --- a/test/cpp/util/cli_call_test.cc +++ b/test/cpp/util/cli_call_test.cc @@ -39,7 +39,6 @@ #include <grpc++/client_context.h> #include <grpc++/create_channel.h> #include <grpc++/credentials.h> -#include <grpc++/dynamic_thread_pool.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> #include <grpc++/server_context.h> @@ -75,7 +74,7 @@ class TestServiceImpl : public ::grpc::cpp::test::util::TestService::Service { class CliCallTest : public ::testing::Test { protected: - CliCallTest() : thread_pool_(2) {} + CliCallTest() {} void SetUp() GRPC_OVERRIDE { int port = grpc_pick_unused_port_or_die(); @@ -85,7 +84,6 @@ class CliCallTest : public ::testing::Test { builder.AddListeningPort(server_address_.str(), InsecureServerCredentials()); builder.RegisterService(&service_); - builder.SetThreadPool(&thread_pool_); server_ = builder.BuildAndStart(); } @@ -102,7 +100,6 @@ class CliCallTest : public ::testing::Test { std::unique_ptr<Server> server_; std::ostringstream server_address_; TestServiceImpl service_; - DynamicThreadPool thread_pool_; }; // Send a rpc with a normal stub and then a CliCall. Verify they match. diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++ index 790e637b72..4e7100c948 100644 --- a/tools/doxygen/Doxyfile.c++ +++ b/tools/doxygen/Doxyfile.c++ @@ -772,8 +772,6 @@ include/grpc++/config.h \ include/grpc++/config_protobuf.h \ include/grpc++/create_channel.h \ include/grpc++/credentials.h \ -include/grpc++/dynamic_thread_pool.h \ -include/grpc++/fixed_size_thread_pool.h \ include/grpc++/generic_stub.h \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ @@ -799,7 +797,6 @@ include/grpc++/status.h \ include/grpc++/status_code_enum.h \ include/grpc++/stream.h \ include/grpc++/stub_options.h \ -include/grpc++/thread_pool_interface.h \ include/grpc++/time.h # This tag can be used to specify the character encoding of the source files diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index cd1279e2a6..b2750ae68a 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -772,8 +772,6 @@ include/grpc++/config.h \ include/grpc++/config_protobuf.h \ include/grpc++/create_channel.h \ include/grpc++/credentials.h \ -include/grpc++/dynamic_thread_pool.h \ -include/grpc++/fixed_size_thread_pool.h \ include/grpc++/generic_stub.h \ include/grpc++/impl/call.h \ include/grpc++/impl/client_unary_call.h \ @@ -799,13 +797,15 @@ include/grpc++/status.h \ include/grpc++/status_code_enum.h \ include/grpc++/stream.h \ include/grpc++/stub_options.h \ -include/grpc++/thread_pool_interface.h \ include/grpc++/time.h \ src/cpp/client/secure_credentials.h \ src/cpp/common/secure_auth_context.h \ src/cpp/server/secure_server_credentials.h \ src/cpp/client/channel.h \ src/cpp/common/create_auth_context.h \ +src/cpp/server/dynamic_thread_pool.h \ +src/cpp/server/fixed_size_thread_pool.h \ +src/cpp/server/thread_pool_interface.h \ src/cpp/client/secure_channel_arguments.cc \ src/cpp/client/secure_credentials.cc \ src/cpp/common/auth_property_iterator.cc \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 50f078586d..2d1887e1ea 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -1183,21 +1183,6 @@ "test/cpp/util/time_test.cc" ] }, - { - "deps": [ - "gpr", - "gpr_test_util", - "grpc", - "grpc++", - "grpc_test_util" - ], - "headers": [], - "language": "c++", - "name": "dynamic_thread_pool_test", - "src": [ - "test/cpp/server/dynamic_thread_pool_test.cc" - ] - }, { "deps": [ "gpr", @@ -1214,21 +1199,6 @@ "test/cpp/end2end/end2end_test.cc" ] }, - { - "deps": [ - "gpr", - "gpr_test_util", - "grpc", - "grpc++", - "grpc_test_util" - ], - "headers": [], - "language": "c++", - "name": "fixed_size_thread_pool_test", - "src": [ - "test/cpp/server/fixed_size_thread_pool_test.cc" - ] - }, { "deps": [ "gpr", @@ -13130,8 +13100,6 @@ "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", "include/grpc++/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", @@ -13157,13 +13125,15 @@ "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", "src/cpp/client/channel.h", "src/cpp/client/secure_credentials.h", "src/cpp/common/create_auth_context.h", "src/cpp/common/secure_auth_context.h", - "src/cpp/server/secure_server_credentials.h" + "src/cpp/server/dynamic_thread_pool.h", + "src/cpp/server/fixed_size_thread_pool.h", + "src/cpp/server/secure_server_credentials.h", + "src/cpp/server/thread_pool_interface.h" ], "language": "c++", "name": "grpc++", @@ -13180,8 +13150,6 @@ "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", "include/grpc++/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", @@ -13207,7 +13175,6 @@ "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", "src/cpp/client/channel.cc", "src/cpp/client/channel.h", @@ -13233,7 +13200,9 @@ "src/cpp/server/async_generic_service.cc", "src/cpp/server/create_default_thread_pool.cc", "src/cpp/server/dynamic_thread_pool.cc", + "src/cpp/server/dynamic_thread_pool.h", "src/cpp/server/fixed_size_thread_pool.cc", + "src/cpp/server/fixed_size_thread_pool.h", "src/cpp/server/insecure_server_credentials.cc", "src/cpp/server/secure_server_credentials.cc", "src/cpp/server/secure_server_credentials.h", @@ -13241,6 +13210,7 @@ "src/cpp/server/server_builder.cc", "src/cpp/server/server_context.cc", "src/cpp/server/server_credentials.cc", + "src/cpp/server/thread_pool_interface.h", "src/cpp/util/byte_buffer.cc", "src/cpp/util/slice.cc", "src/cpp/util/status.cc", @@ -13304,8 +13274,6 @@ "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", "include/grpc++/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", @@ -13331,10 +13299,12 @@ "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", "src/cpp/client/channel.h", - "src/cpp/common/create_auth_context.h" + "src/cpp/common/create_auth_context.h", + "src/cpp/server/dynamic_thread_pool.h", + "src/cpp/server/fixed_size_thread_pool.h", + "src/cpp/server/thread_pool_interface.h" ], "language": "c++", "name": "grpc++_unsecure", @@ -13351,8 +13321,6 @@ "include/grpc++/config_protobuf.h", "include/grpc++/create_channel.h", "include/grpc++/credentials.h", - "include/grpc++/dynamic_thread_pool.h", - "include/grpc++/fixed_size_thread_pool.h", "include/grpc++/generic_stub.h", "include/grpc++/impl/call.h", "include/grpc++/impl/client_unary_call.h", @@ -13378,7 +13346,6 @@ "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", "include/grpc++/stub_options.h", - "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", "src/cpp/client/channel.cc", "src/cpp/client/channel.h", @@ -13398,12 +13365,15 @@ "src/cpp/server/async_generic_service.cc", "src/cpp/server/create_default_thread_pool.cc", "src/cpp/server/dynamic_thread_pool.cc", + "src/cpp/server/dynamic_thread_pool.h", "src/cpp/server/fixed_size_thread_pool.cc", + "src/cpp/server/fixed_size_thread_pool.h", "src/cpp/server/insecure_server_credentials.cc", "src/cpp/server/server.cc", "src/cpp/server/server_builder.cc", "src/cpp/server/server_context.cc", "src/cpp/server/server_credentials.cc", + "src/cpp/server/thread_pool_interface.h", "src/cpp/util/byte_buffer.cc", "src/cpp/util/slice.cc", "src/cpp/util/status.cc", diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 127b1dfc40..c9812e2a04 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -1339,24 +1339,6 @@ "windows" ] }, - { - "ci_platforms": [ - "linux", - "mac", - "posix", - "windows" - ], - "exclude_configs": [], - "flaky": false, - "language": "c++", - "name": "dynamic_thread_pool_test", - "platforms": [ - "linux", - "mac", - "posix", - "windows" - ] - }, { "ci_platforms": [ "linux", @@ -1375,24 +1357,6 @@ "windows" ] }, - { - "ci_platforms": [ - "linux", - "mac", - "posix", - "windows" - ], - "exclude_configs": [], - "flaky": false, - "language": "c++", - "name": "fixed_size_thread_pool_test", - "platforms": [ - "linux", - "mac", - "posix", - "windows" - ] - }, { "ci_platforms": [ "linux", diff --git a/vsprojects/Grpc.mak b/vsprojects/Grpc.mak index 662de784f7..a12b63dfb2 100644 --- a/vsprojects/Grpc.mak +++ b/vsprojects/Grpc.mak @@ -83,7 +83,7 @@ buildtests: buildtests_c buildtests_cxx buildtests_c: alarm_heap_test.exe alarm_list_test.exe alarm_test.exe alpn_test.exe bin_encoder_test.exe chttp2_status_conversion_test.exe chttp2_stream_encoder_test.exe chttp2_stream_map_test.exe compression_test.exe fling_client.exe fling_server.exe gpr_cmdline_test.exe gpr_env_test.exe gpr_file_test.exe gpr_histogram_test.exe gpr_host_port_test.exe gpr_log_test.exe gpr_slice_buffer_test.exe gpr_slice_test.exe gpr_stack_lockfree_test.exe gpr_string_test.exe gpr_sync_test.exe gpr_thd_test.exe gpr_time_test.exe gpr_tls_test.exe gpr_useful_test.exe grpc_auth_context_test.exe grpc_base64_test.exe grpc_byte_buffer_reader_test.exe grpc_channel_stack_test.exe grpc_completion_queue_test.exe grpc_credentials_test.exe grpc_json_token_test.exe grpc_jwt_verifier_test.exe grpc_security_connector_test.exe grpc_stream_op_test.exe hpack_parser_test.exe hpack_table_test.exe httpcli_format_request_test.exe httpcli_parser_test.exe json_rewrite.exe json_rewrite_test.exe json_test.exe lame_client_test.exe message_compress_test.exe multi_init_test.exe multiple_server_queues_test.exe murmur_hash_test.exe no_server_test.exe resolve_address_test.exe secure_endpoint_test.exe sockaddr_utils_test.exe time_averaged_stats_test.exe timeout_encoding_test.exe timers_test.exe transport_metadata_test.exe transport_security_test.exe uri_parser_test.exe chttp2_fake_security_bad_hostname_test.exe chttp2_fake_security_cancel_after_accept_test.exe chttp2_fake_security_cancel_after_accept_and_writes_closed_test.exe chttp2_fake_security_cancel_after_invoke_test.exe chttp2_fake_security_cancel_before_invoke_test.exe chttp2_fake_security_cancel_in_a_vacuum_test.exe chttp2_fake_security_census_simple_request_test.exe chttp2_fake_security_channel_connectivity_test.exe chttp2_fake_security_default_host_test.exe chttp2_fake_security_disappearing_server_test.exe chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fake_security_early_server_shutdown_finishes_tags_test.exe chttp2_fake_security_empty_batch_test.exe chttp2_fake_security_graceful_server_shutdown_test.exe chttp2_fake_security_invoke_large_request_test.exe chttp2_fake_security_max_concurrent_streams_test.exe chttp2_fake_security_max_message_length_test.exe chttp2_fake_security_no_op_test.exe chttp2_fake_security_ping_pong_streaming_test.exe chttp2_fake_security_registered_call_test.exe chttp2_fake_security_request_response_with_binary_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_payload_test.exe chttp2_fake_security_request_response_with_payload_and_call_creds_test.exe chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fake_security_request_with_compressed_payload_test.exe chttp2_fake_security_request_with_flags_test.exe chttp2_fake_security_request_with_large_metadata_test.exe chttp2_fake_security_request_with_payload_test.exe chttp2_fake_security_server_finishes_request_test.exe chttp2_fake_security_simple_delayed_request_test.exe chttp2_fake_security_simple_request_test.exe chttp2_fake_security_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_test.exe chttp2_fullstack_cancel_after_accept_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_cancel_after_invoke_test.exe chttp2_fullstack_cancel_before_invoke_test.exe chttp2_fullstack_cancel_in_a_vacuum_test.exe chttp2_fullstack_census_simple_request_test.exe chttp2_fullstack_channel_connectivity_test.exe chttp2_fullstack_default_host_test.exe chttp2_fullstack_disappearing_server_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_empty_batch_test.exe chttp2_fullstack_graceful_server_shutdown_test.exe chttp2_fullstack_invoke_large_request_test.exe chttp2_fullstack_max_concurrent_streams_test.exe chttp2_fullstack_max_message_length_test.exe chttp2_fullstack_no_op_test.exe chttp2_fullstack_ping_pong_streaming_test.exe chttp2_fullstack_registered_call_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_payload_test.exe chttp2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_request_with_compressed_payload_test.exe chttp2_fullstack_request_with_flags_test.exe chttp2_fullstack_request_with_large_metadata_test.exe chttp2_fullstack_request_with_payload_test.exe chttp2_fullstack_server_finishes_request_test.exe chttp2_fullstack_simple_delayed_request_test.exe chttp2_fullstack_simple_request_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_compression_bad_hostname_test.exe chttp2_fullstack_compression_cancel_after_accept_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_compression_cancel_after_invoke_test.exe chttp2_fullstack_compression_cancel_before_invoke_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_test.exe chttp2_fullstack_compression_census_simple_request_test.exe chttp2_fullstack_compression_channel_connectivity_test.exe chttp2_fullstack_compression_default_host_test.exe chttp2_fullstack_compression_disappearing_server_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_compression_empty_batch_test.exe chttp2_fullstack_compression_graceful_server_shutdown_test.exe chttp2_fullstack_compression_invoke_large_request_test.exe chttp2_fullstack_compression_max_concurrent_streams_test.exe chttp2_fullstack_compression_max_message_length_test.exe chttp2_fullstack_compression_no_op_test.exe chttp2_fullstack_compression_ping_pong_streaming_test.exe chttp2_fullstack_compression_registered_call_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_compression_request_with_compressed_payload_test.exe chttp2_fullstack_compression_request_with_flags_test.exe chttp2_fullstack_compression_request_with_large_metadata_test.exe chttp2_fullstack_compression_request_with_payload_test.exe chttp2_fullstack_compression_server_finishes_request_test.exe chttp2_fullstack_compression_simple_delayed_request_test.exe chttp2_fullstack_compression_simple_request_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_with_proxy_bad_hostname_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_with_proxy_cancel_after_invoke_test.exe chttp2_fullstack_with_proxy_cancel_before_invoke_test.exe chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test.exe chttp2_fullstack_with_proxy_census_simple_request_test.exe chttp2_fullstack_with_proxy_default_host_test.exe chttp2_fullstack_with_proxy_disappearing_server_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_with_proxy_empty_batch_test.exe chttp2_fullstack_with_proxy_graceful_server_shutdown_test.exe chttp2_fullstack_with_proxy_invoke_large_request_test.exe chttp2_fullstack_with_proxy_max_message_length_test.exe chttp2_fullstack_with_proxy_no_op_test.exe chttp2_fullstack_with_proxy_ping_pong_streaming_test.exe chttp2_fullstack_with_proxy_registered_call_test.exe chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_with_large_metadata_test.exe chttp2_fullstack_with_proxy_request_with_payload_test.exe chttp2_fullstack_with_proxy_server_finishes_request_test.exe chttp2_fullstack_with_proxy_simple_delayed_request_test.exe chttp2_fullstack_with_proxy_simple_request_test.exe chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_bad_hostname_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_census_simple_request_test.exe chttp2_simple_ssl_fullstack_channel_connectivity_test.exe chttp2_simple_ssl_fullstack_default_host_test.exe chttp2_simple_ssl_fullstack_disappearing_server_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_empty_batch_test.exe chttp2_simple_ssl_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_fullstack_max_message_length_test.exe chttp2_simple_ssl_fullstack_no_op_test.exe chttp2_simple_ssl_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_registered_call_test.exe chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_fullstack_request_with_flags_test.exe chttp2_simple_ssl_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_request_with_payload_test.exe chttp2_simple_ssl_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_simple_request_test.exe chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_default_host_test.exe chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test.exe chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test.exe chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test.exe chttp2_simple_ssl_fullstack_with_proxy_no_op_test.exe chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_with_proxy_registered_call_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test.exe chttp2_simple_ssl_with_oauth2_fullstack_default_host_test.exe chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test.exe chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test.exe chttp2_simple_ssl_with_oauth2_fullstack_no_op_test.exe chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_bad_hostname_test.exe chttp2_socket_pair_cancel_after_accept_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_cancel_after_invoke_test.exe chttp2_socket_pair_cancel_before_invoke_test.exe chttp2_socket_pair_cancel_in_a_vacuum_test.exe chttp2_socket_pair_census_simple_request_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_empty_batch_test.exe chttp2_socket_pair_graceful_server_shutdown_test.exe chttp2_socket_pair_invoke_large_request_test.exe chttp2_socket_pair_max_concurrent_streams_test.exe chttp2_socket_pair_max_message_length_test.exe chttp2_socket_pair_no_op_test.exe chttp2_socket_pair_ping_pong_streaming_test.exe chttp2_socket_pair_registered_call_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_payload_test.exe chttp2_socket_pair_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_request_with_compressed_payload_test.exe chttp2_socket_pair_request_with_flags_test.exe chttp2_socket_pair_request_with_large_metadata_test.exe chttp2_socket_pair_request_with_payload_test.exe chttp2_socket_pair_server_finishes_request_test.exe chttp2_socket_pair_simple_request_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe chttp2_socket_pair_with_grpc_trace_no_op_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_unsecure_test.exe chttp2_fullstack_cancel_after_accept_unsecure_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_census_simple_request_unsecure_test.exe chttp2_fullstack_channel_connectivity_unsecure_test.exe chttp2_fullstack_default_host_unsecure_test.exe chttp2_fullstack_disappearing_server_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_empty_batch_unsecure_test.exe chttp2_fullstack_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_invoke_large_request_unsecure_test.exe chttp2_fullstack_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_max_message_length_unsecure_test.exe chttp2_fullstack_no_op_unsecure_test.exe chttp2_fullstack_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_registered_call_unsecure_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_payload_unsecure_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_request_with_flags_unsecure_test.exe chttp2_fullstack_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_request_with_payload_unsecure_test.exe chttp2_fullstack_server_finishes_request_unsecure_test.exe chttp2_fullstack_simple_delayed_request_unsecure_test.exe chttp2_fullstack_simple_request_unsecure_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_compression_bad_hostname_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_compression_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_compression_census_simple_request_unsecure_test.exe chttp2_fullstack_compression_channel_connectivity_unsecure_test.exe chttp2_fullstack_compression_default_host_unsecure_test.exe chttp2_fullstack_compression_disappearing_server_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_compression_empty_batch_unsecure_test.exe chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_compression_invoke_large_request_unsecure_test.exe chttp2_fullstack_compression_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_compression_max_message_length_unsecure_test.exe chttp2_fullstack_compression_no_op_unsecure_test.exe chttp2_fullstack_compression_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_compression_registered_call_unsecure_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_flags_unsecure_test.exe chttp2_fullstack_compression_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_compression_request_with_payload_unsecure_test.exe chttp2_fullstack_compression_server_finishes_request_unsecure_test.exe chttp2_fullstack_compression_simple_delayed_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_with_proxy_bad_hostname_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_with_proxy_census_simple_request_unsecure_test.exe chttp2_fullstack_with_proxy_default_host_unsecure_test.exe chttp2_fullstack_with_proxy_disappearing_server_unsecure_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_with_proxy_empty_batch_unsecure_test.exe chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test.exe chttp2_fullstack_with_proxy_max_message_length_unsecure_test.exe chttp2_fullstack_with_proxy_no_op_unsecure_test.exe chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_with_proxy_registered_call_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_with_proxy_request_with_payload_unsecure_test.exe chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_bad_hostname_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_census_simple_request_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_empty_batch_unsecure_test.exe chttp2_socket_pair_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_invoke_large_request_unsecure_test.exe chttp2_socket_pair_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_max_message_length_unsecure_test.exe chttp2_socket_pair_no_op_unsecure_test.exe chttp2_socket_pair_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_registered_call_unsecure_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_request_with_flags_unsecure_test.exe chttp2_socket_pair_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_request_with_payload_unsecure_test.exe chttp2_socket_pair_server_finishes_request_unsecure_test.exe chttp2_socket_pair_simple_request_unsecure_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe connection_prefix_bad_client_test.exe initial_settings_frame_bad_client_test.exe echo All C tests built. -buildtests_cxx: async_end2end_test.exe auth_property_iterator_test.exe channel_arguments_test.exe cli_call_test.exe client_crash_test_server.exe credentials_test.exe cxx_byte_buffer_test.exe cxx_slice_test.exe cxx_time_test.exe dynamic_thread_pool_test.exe end2end_test.exe fixed_size_thread_pool_test.exe generic_end2end_test.exe grpc_cli.exe mock_test.exe reconnect_interop_client.exe reconnect_interop_server.exe secure_auth_context_test.exe server_crash_test_client.exe shutdown_test.exe status_test.exe thread_stress_test.exe zookeeper_test.exe +buildtests_cxx: async_end2end_test.exe auth_property_iterator_test.exe channel_arguments_test.exe cli_call_test.exe client_crash_test_server.exe credentials_test.exe cxx_byte_buffer_test.exe cxx_slice_test.exe cxx_time_test.exe end2end_test.exe generic_end2end_test.exe grpc_cli.exe mock_test.exe reconnect_interop_client.exe reconnect_interop_server.exe secure_auth_context_test.exe server_crash_test_client.exe shutdown_test.exe status_test.exe thread_stress_test.exe zookeeper_test.exe echo All C++ tests built. @@ -671,14 +671,6 @@ cxx_time_test: cxx_time_test.exe echo Running cxx_time_test $(OUT_DIR)\cxx_time_test.exe -dynamic_thread_pool_test.exe: build_grpc_test_util build_grpc++ build_grpc build_gpr_test_util build_gpr $(OUT_DIR) - echo Building dynamic_thread_pool_test - $(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\cpp\server\dynamic_thread_pool_test.cc - $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\dynamic_thread_pool_test.exe" Debug\grpc_test_util.lib Debug\grpc++.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(CXX_LIBS) $(LIBS) $(OUT_DIR)\dynamic_thread_pool_test.obj -dynamic_thread_pool_test: dynamic_thread_pool_test.exe - echo Running dynamic_thread_pool_test - $(OUT_DIR)\dynamic_thread_pool_test.exe - end2end_test.exe: Debug\grpc++_test_util.lib build_grpc_test_util build_grpc++ build_grpc build_gpr_test_util build_gpr $(OUT_DIR) echo Building end2end_test $(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\cpp\end2end\end2end_test.cc @@ -687,14 +679,6 @@ end2end_test: end2end_test.exe echo Running end2end_test $(OUT_DIR)\end2end_test.exe -fixed_size_thread_pool_test.exe: build_grpc_test_util build_grpc++ build_grpc build_gpr_test_util build_gpr $(OUT_DIR) - echo Building fixed_size_thread_pool_test - $(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\cpp\server\fixed_size_thread_pool_test.cc - $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\fixed_size_thread_pool_test.exe" Debug\grpc_test_util.lib Debug\grpc++.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(CXX_LIBS) $(LIBS) $(OUT_DIR)\fixed_size_thread_pool_test.obj -fixed_size_thread_pool_test: fixed_size_thread_pool_test.exe - echo Running fixed_size_thread_pool_test - $(OUT_DIR)\fixed_size_thread_pool_test.exe - generic_end2end_test.exe: Debug\grpc++_test_util.lib build_grpc_test_util build_grpc++ build_grpc build_gpr_test_util build_gpr $(OUT_DIR) echo Building generic_end2end_test $(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\cpp\end2end\generic_end2end_test.cc diff --git a/vsprojects/grpc++/grpc++.vcxproj b/vsprojects/grpc++/grpc++.vcxproj index 929bc1500e..cd85abd04a 100644 --- a/vsprojects/grpc++/grpc++.vcxproj +++ b/vsprojects/grpc++/grpc++.vcxproj @@ -225,8 +225,6 @@ <ClInclude Include="..\..\include\grpc++\config_protobuf.h" /> <ClInclude Include="..\..\include\grpc++\create_channel.h" /> <ClInclude Include="..\..\include\grpc++\credentials.h" /> - <ClInclude Include="..\..\include\grpc++\dynamic_thread_pool.h" /> - <ClInclude Include="..\..\include\grpc++\fixed_size_thread_pool.h" /> <ClInclude Include="..\..\include\grpc++\generic_stub.h" /> <ClInclude Include="..\..\include\grpc++\impl\call.h" /> <ClInclude Include="..\..\include\grpc++\impl\client_unary_call.h" /> @@ -252,7 +250,6 @@ <ClInclude Include="..\..\include\grpc++\status_code_enum.h" /> <ClInclude Include="..\..\include\grpc++\stream.h" /> <ClInclude Include="..\..\include\grpc++\stub_options.h" /> - <ClInclude Include="..\..\include\grpc++\thread_pool_interface.h" /> <ClInclude Include="..\..\include\grpc++\time.h" /> </ItemGroup> <ItemGroup> @@ -261,6 +258,9 @@ <ClInclude Include="..\..\src\cpp\server\secure_server_credentials.h" /> <ClInclude Include="..\..\src\cpp\client\channel.h" /> <ClInclude Include="..\..\src\cpp\common\create_auth_context.h" /> + <ClInclude Include="..\..\src\cpp\server\dynamic_thread_pool.h" /> + <ClInclude Include="..\..\src\cpp\server\fixed_size_thread_pool.h" /> + <ClInclude Include="..\..\src\cpp\server\thread_pool_interface.h" /> </ItemGroup> <ItemGroup> <ClCompile Include="..\..\src\cpp\client\secure_channel_arguments.cc"> diff --git a/vsprojects/grpc++/grpc++.vcxproj.filters b/vsprojects/grpc++/grpc++.vcxproj.filters index 0408fb46a5..65720f35e2 100644 --- a/vsprojects/grpc++/grpc++.vcxproj.filters +++ b/vsprojects/grpc++/grpc++.vcxproj.filters @@ -132,12 +132,6 @@ <ClInclude Include="..\..\include\grpc++\credentials.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\dynamic_thread_pool.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\fixed_size_thread_pool.h"> - <Filter>include\grpc++</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\generic_stub.h"> <Filter>include\grpc++</Filter> </ClInclude> @@ -213,9 +207,6 @@ <ClInclude Include="..\..\include\grpc++\stub_options.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\thread_pool_interface.h"> - <Filter>include\grpc++</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\time.h"> <Filter>include\grpc++</Filter> </ClInclude> @@ -236,6 +227,15 @@ <ClInclude Include="..\..\src\cpp\common\create_auth_context.h"> <Filter>src\cpp\common</Filter> </ClInclude> + <ClInclude Include="..\..\src\cpp\server\dynamic_thread_pool.h"> + <Filter>src\cpp\server</Filter> + </ClInclude> + <ClInclude Include="..\..\src\cpp\server\fixed_size_thread_pool.h"> + <Filter>src\cpp\server</Filter> + </ClInclude> + <ClInclude Include="..\..\src\cpp\server\thread_pool_interface.h"> + <Filter>src\cpp\server</Filter> + </ClInclude> </ItemGroup> <ItemGroup> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj index 2ff252e04e..6f53272545 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj @@ -225,8 +225,6 @@ <ClInclude Include="..\..\include\grpc++\config_protobuf.h" /> <ClInclude Include="..\..\include\grpc++\create_channel.h" /> <ClInclude Include="..\..\include\grpc++\credentials.h" /> - <ClInclude Include="..\..\include\grpc++\dynamic_thread_pool.h" /> - <ClInclude Include="..\..\include\grpc++\fixed_size_thread_pool.h" /> <ClInclude Include="..\..\include\grpc++\generic_stub.h" /> <ClInclude Include="..\..\include\grpc++\impl\call.h" /> <ClInclude Include="..\..\include\grpc++\impl\client_unary_call.h" /> @@ -252,12 +250,14 @@ <ClInclude Include="..\..\include\grpc++\status_code_enum.h" /> <ClInclude Include="..\..\include\grpc++\stream.h" /> <ClInclude Include="..\..\include\grpc++\stub_options.h" /> - <ClInclude Include="..\..\include\grpc++\thread_pool_interface.h" /> <ClInclude Include="..\..\include\grpc++\time.h" /> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\src\cpp\client\channel.h" /> <ClInclude Include="..\..\src\cpp\common\create_auth_context.h" /> + <ClInclude Include="..\..\src\cpp\server\dynamic_thread_pool.h" /> + <ClInclude Include="..\..\src\cpp\server\fixed_size_thread_pool.h" /> + <ClInclude Include="..\..\src\cpp\server\thread_pool_interface.h" /> </ItemGroup> <ItemGroup> <ClCompile Include="..\..\src\cpp\common\insecure_create_auth_context.cc"> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters index b4fae7741c..4d2e8a9c45 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters @@ -117,12 +117,6 @@ <ClInclude Include="..\..\include\grpc++\credentials.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\dynamic_thread_pool.h"> - <Filter>include\grpc++</Filter> - </ClInclude> - <ClInclude Include="..\..\include\grpc++\fixed_size_thread_pool.h"> - <Filter>include\grpc++</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\generic_stub.h"> <Filter>include\grpc++</Filter> </ClInclude> @@ -198,9 +192,6 @@ <ClInclude Include="..\..\include\grpc++\stub_options.h"> <Filter>include\grpc++</Filter> </ClInclude> - <ClInclude Include="..\..\include\grpc++\thread_pool_interface.h"> - <Filter>include\grpc++</Filter> - </ClInclude> <ClInclude Include="..\..\include\grpc++\time.h"> <Filter>include\grpc++</Filter> </ClInclude> @@ -212,6 +203,15 @@ <ClInclude Include="..\..\src\cpp\common\create_auth_context.h"> <Filter>src\cpp\common</Filter> </ClInclude> + <ClInclude Include="..\..\src\cpp\server\dynamic_thread_pool.h"> + <Filter>src\cpp\server</Filter> + </ClInclude> + <ClInclude Include="..\..\src\cpp\server\fixed_size_thread_pool.h"> + <Filter>src\cpp\server</Filter> + </ClInclude> + <ClInclude Include="..\..\src\cpp\server\thread_pool_interface.h"> + <Filter>src\cpp\server</Filter> + </ClInclude> </ItemGroup> <ItemGroup> -- GitLab From 81b4fcbe84ad644ddd2ff6c293610415859bec03 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Mon, 24 Aug 2015 10:56:44 -0700 Subject: [PATCH 148/178] Added test for responseHeaders KVO compliance --- src/objective-c/tests/GRPCClientTests.m | 62 +++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/src/objective-c/tests/GRPCClientTests.m b/src/objective-c/tests/GRPCClientTests.m index 06581e7599..fa604211e2 100644 --- a/src/objective-c/tests/GRPCClientTests.m +++ b/src/objective-c/tests/GRPCClientTests.m @@ -53,6 +53,37 @@ static ProtoMethod *kInexistentMethod; static ProtoMethod *kEmptyCallMethod; static ProtoMethod *kUnaryCallMethod; +// This is an observer class for testing that responseMetadata is KVO-compliant + +@interface PassthroughObserver : NSObject + +- (instancetype) initWithCallback:(void (^)(NSString*, id, NSDictionary*))callback; + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change + context:(void *)context; +@end + +@implementation PassthroughObserver { + void (^_callback)(NSString*, id, NSDictionary*); +} + +- (instancetype)initWithCallback:(void (^)(NSString *, id, NSDictionary *))callback { + self = [super init]; + if (self) { + _callback = callback; + } + return self; + +} + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + _callback(keyPath, object, change); + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; +} + +@end + @interface GRPCClientTests : XCTestCase @end @@ -183,4 +214,35 @@ static ProtoMethod *kUnaryCallMethod; [self waitForExpectationsWithTimeout:4 handler:nil]; } +- (void)testResponseMetadataKVO { + __weak XCTestExpectation *response = [self expectationWithDescription:@"Empty response received."]; + __weak XCTestExpectation *completion = [self expectationWithDescription:@"Empty RPC completed."]; + __weak XCTestExpectation *metadata = [self expectationWithDescription:@"Metadata changed."]; + + PassthroughObserver *observer = [[PassthroughObserver alloc] initWithCallback:^(NSString *keypath, id object, NSDictionary * change) { + if (keypath == @"responseHeaders") { + [expectation fulfill]; + } + }] + + GRPCCall *call = [[GRPCCall alloc] initWithHost:kHostAddress + path:kEmptyCallMethod.HTTPPath + requestsWriter:[GRXWriter writerWithValue:[NSData data]]]; + + [call addObserver:observer forKeyPath:@"responseHeaders" options:0 context:NULL]; + + id<GRXWriteable> responsesWriteable = [[GRXWriteable alloc] initWithValueHandler:^(NSData *value) { + XCTAssertNotNil(value, @"nil value received as response."); + XCTAssertEqual([value length], 0, @"Non-empty response received: %@", value); + [response fulfill]; + } completionHandler:^(NSError *errorOrNil) { + XCTAssertNil(errorOrNil, @"Finished with unexpected error: %@", errorOrNil); + [completion fulfill]; + }]; + + [call startWithWriteable:responsesWriteable]; + + [self waitForExpectationsWithTimeout:8 handler:nil]; +} + @end -- GitLab From 333ced0b8a7216d3ee91363b6f323e1c9e4da4ad Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Mon, 24 Aug 2015 10:57:32 -0700 Subject: [PATCH 149/178] Remove accidental dependency on zookeeper in shutdown_test --- Makefile | 14 +++++++------- build.json | 4 ---- tools/run_tests/sources_and_headers.json | 3 +-- vsprojects/Grpc.mak | 4 ++-- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 31628b4412..3a89fe2c19 100644 --- a/Makefile +++ b/Makefile @@ -1733,10 +1733,10 @@ buildtests: buildtests_c buildtests_cxx buildtests_zookeeper buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONFIG)/alarm_list_test $(BINDIR)/$(CONFIG)/alarm_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)/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_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)/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)/chttp2_fake_security_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_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_time_test $(BINDIR)/$(CONFIG)/dynamic_thread_pool_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/fixed_size_thread_pool_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)/status_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)/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_time_test $(BINDIR)/$(CONFIG)/dynamic_thread_pool_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/fixed_size_thread_pool_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)/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)/shutdown_test $(BINDIR)/$(CONFIG)/zookeeper_test +buildtests_zookeeper: privatelibs_zookeeper $(BINDIR)/$(CONFIG)/zookeeper_test else buildtests_zookeeper: endif @@ -3349,6 +3349,8 @@ test_cxx: test_zookeeper buildtests_cxx $(Q) $(BINDIR)/$(CONFIG)/secure_auth_context_test || ( echo test secure_auth_context_test failed ; exit 1 ) $(E) "[RUN] Testing server_crash_test" $(Q) $(BINDIR)/$(CONFIG)/server_crash_test || ( echo test server_crash_test failed ; exit 1 ) + $(E) "[RUN] Testing shutdown_test" + $(Q) $(BINDIR)/$(CONFIG)/shutdown_test || ( echo test shutdown_test failed ; exit 1 ) $(E) "[RUN] Testing status_test" $(Q) $(BINDIR)/$(CONFIG)/status_test || ( echo test status_test failed ; exit 1 ) $(E) "[RUN] Testing sync_streaming_ping_pong_test" @@ -3364,8 +3366,6 @@ flaky_test_cxx: buildtests_cxx ifeq ($(HAS_ZOOKEEPER),true) test_zookeeper: buildtests_zookeeper - $(E) "[RUN] Testing shutdown_test" - $(Q) $(BINDIR)/$(CONFIG)/shutdown_test || ( echo test shutdown_test failed ; exit 1 ) $(E) "[RUN] Testing zookeeper_test" $(Q) $(BINDIR)/$(CONFIG)/zookeeper_test || ( echo test zookeeper_test failed ; exit 1 ) @@ -10286,16 +10286,16 @@ $(BINDIR)/$(CONFIG)/shutdown_test: protobuf_dep_error else -$(BINDIR)/$(CONFIG)/shutdown_test: $(PROTOBUF_DEP) $(SHUTDOWN_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc_zookeeper.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +$(BINDIR)/$(CONFIG)/shutdown_test: $(PROTOBUF_DEP) $(SHUTDOWN_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) $(SHUTDOWN_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc_zookeeper.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a -lzookeeper_mt $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/shutdown_test + $(Q) $(LDXX) $(LDFLAGS) $(SHUTDOWN_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)/shutdown_test endif endif -$(OBJDIR)/$(CONFIG)/test/cpp/end2end/shutdown_test.o: $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc_zookeeper.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +$(OBJDIR)/$(CONFIG)/test/cpp/end2end/shutdown_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_shutdown_test: $(SHUTDOWN_TEST_OBJS:.o=.dep) ifneq ($(NO_SECURE),true) diff --git a/build.json b/build.json index bd707d2e34..3aeedca61a 100644 --- a/build.json +++ b/build.json @@ -2624,13 +2624,9 @@ "grpc++_test_util", "grpc_test_util", "grpc++", - "grpc_zookeeper", "grpc", "gpr_test_util", "gpr" - ], - "external_deps": [ - "zookeeper" ] }, { diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 50f078586d..cdd99a9447 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -1627,8 +1627,7 @@ "grpc", "grpc++", "grpc++_test_util", - "grpc_test_util", - "grpc_zookeeper" + "grpc_test_util" ], "headers": [], "language": "c++", diff --git a/vsprojects/Grpc.mak b/vsprojects/Grpc.mak index 662de784f7..1869442702 100644 --- a/vsprojects/Grpc.mak +++ b/vsprojects/Grpc.mak @@ -767,10 +767,10 @@ server_crash_test_client: server_crash_test_client.exe echo Running server_crash_test_client $(OUT_DIR)\server_crash_test_client.exe -shutdown_test.exe: Debug\grpc++_test_util.lib build_grpc_test_util build_grpc++ Debug\grpc_zookeeper.lib build_grpc build_gpr_test_util build_gpr $(OUT_DIR) +shutdown_test.exe: Debug\grpc++_test_util.lib build_grpc_test_util build_grpc++ build_grpc build_gpr_test_util build_gpr $(OUT_DIR) echo Building shutdown_test $(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\cpp\end2end\shutdown_test.cc - $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\shutdown_test.exe" Debug\grpc++_test_util.lib Debug\grpc_test_util.lib Debug\grpc++.lib Debug\grpc_zookeeper.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(CXX_LIBS) $(LIBS) $(OUT_DIR)\shutdown_test.obj + $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\shutdown_test.exe" Debug\grpc++_test_util.lib Debug\grpc_test_util.lib Debug\grpc++.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(CXX_LIBS) $(LIBS) $(OUT_DIR)\shutdown_test.obj shutdown_test: shutdown_test.exe echo Running shutdown_test $(OUT_DIR)\shutdown_test.exe -- GitLab From 9faff0e2b16c814d25b6be2d2af768e533e843bd Mon Sep 17 00:00:00 2001 From: Nathaniel Manista <nathaniel@google.com> Date: Mon, 24 Aug 2015 18:10:55 +0000 Subject: [PATCH 150/178] Four small bugfixes (1) In grpc._links.service._Kernel.add_ticket, premetadata() the call if it has not already been premetadataed for any non-None ticket termination, not just links.Ticket.Termination.COMPLETION. (2) In grpc.framework.core._reception, add an entry to _REMOTE_TICKET_TERMINATION_TO_LOCAL_OUTCOME for REMOTE_FAILURE. REMOTE_FAILURE on a received ticket indicates the remote side of the operation blaming the local side for operation abortion. (3) In grpc.framework.core._reception.ReceptionManager._abort, only abort the operation's other managers if the operation has not already terminated, as indicated by the "outcome" attribute of the TerminationManager. (4) In grpc.framework.core._reception.ReceptionManager._abort, don't transmit the outcome to the other side of the operation. Either it came from the other side in the first place and to send it back would be telling the other side something it already knows, or it arose from a network failure and there's no confidence that it would reach the other side. --- src/python/grpcio/grpc/_links/service.py | 2 +- src/python/grpcio/grpc/framework/core/_reception.py | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/python/grpcio/grpc/_links/service.py b/src/python/grpcio/grpc/_links/service.py index 5c636d61ab..03be5af404 100644 --- a/src/python/grpcio/grpc/_links/service.py +++ b/src/python/grpcio/grpc/_links/service.py @@ -239,7 +239,7 @@ class _Kernel(object): elif not rpc_state.premetadataed: if (ticket.terminal_metadata is not None or ticket.payload is not None or - ticket.termination is links.Ticket.Termination.COMPLETION or + ticket.termination is not None or ticket.code is not None or ticket.message is not None): call.premetadata() diff --git a/src/python/grpcio/grpc/framework/core/_reception.py b/src/python/grpcio/grpc/framework/core/_reception.py index b64faf8146..0858f64ff6 100644 --- a/src/python/grpcio/grpc/framework/core/_reception.py +++ b/src/python/grpcio/grpc/framework/core/_reception.py @@ -42,6 +42,7 @@ _REMOTE_TICKET_TERMINATION_TO_LOCAL_OUTCOME = { links.Ticket.Termination.TRANSMISSION_FAILURE: base.Outcome.TRANSMISSION_FAILURE, links.Ticket.Termination.LOCAL_FAILURE: base.Outcome.REMOTE_FAILURE, + links.Ticket.Termination.REMOTE_FAILURE: base.Outcome.LOCAL_FAILURE, } @@ -70,9 +71,10 @@ class ReceptionManager(_interfaces.ReceptionManager): def _abort(self, outcome): self._aborted = True - self._termination_manager.abort(outcome) - self._transmission_manager.abort(outcome) - self._expiration_manager.terminate() + if self._termination_manager.outcome is None: + self._termination_manager.abort(outcome) + self._transmission_manager.abort(None) + self._expiration_manager.terminate() def _sequence_failure(self, ticket): """Determines a just-arrived ticket's sequential legitimacy. -- GitLab From 2432c224d9e18f9db3e6852b3f7154e5691de32b Mon Sep 17 00:00:00 2001 From: Nathaniel Manista <nathaniel@google.com> Date: Mon, 24 Aug 2015 18:49:45 +0000 Subject: [PATCH 151/178] Add a "transport" field to links.Ticket This will be used for communication of transport-specific values and objects up to applications. --- src/python/grpcio/grpc/_links/invocation.py | 8 +++---- src/python/grpcio/grpc/_links/service.py | 10 ++++---- .../grpc/framework/core/_transmission.py | 14 +++++------ .../grpc/framework/interfaces/links/links.py | 24 +++++++++++++++++-- .../_links/_lonely_invocation_link_test.py | 2 +- .../grpc_test/_links/_transmission_test.py | 15 ++++++------ .../framework/interfaces/links/test_cases.py | 4 ++-- .../interfaces/links/test_utilities.py | 2 +- 8 files changed, 50 insertions(+), 29 deletions(-) diff --git a/src/python/grpcio/grpc/_links/invocation.py b/src/python/grpcio/grpc/_links/invocation.py index 0058ae91f8..a74c77ebcc 100644 --- a/src/python/grpcio/grpc/_links/invocation.py +++ b/src/python/grpcio/grpc/_links/invocation.py @@ -101,7 +101,7 @@ class _Kernel(object): else: ticket = links.Ticket( operation_id, rpc_state.sequence_number, None, None, None, None, 1, - None, None, None, None, None, None) + None, None, None, None, None, None, None) rpc_state.sequence_number += 1 self._relay.add_value(ticket) rpc_state.low_write = _LowWrite.OPEN @@ -118,7 +118,7 @@ class _Kernel(object): ticket = links.Ticket( operation_id, rpc_state.sequence_number, None, None, None, None, None, None, rpc_state.response_deserializer(event.bytes), None, None, None, - None) + None, None) rpc_state.sequence_number += 1 self._relay.add_value(ticket) @@ -129,7 +129,7 @@ class _Kernel(object): ticket = links.Ticket( operation_id, rpc_state.sequence_number, None, None, links.Ticket.Subscription.FULL, None, None, event.metadata, None, None, - None, None, None) + None, None, None, None) rpc_state.sequence_number += 1 self._relay.add_value(ticket) @@ -146,7 +146,7 @@ class _Kernel(object): ticket = links.Ticket( operation_id, rpc_state.sequence_number, None, None, None, None, None, None, None, event.metadata, event.status.code, event.status.details, - termination) + termination, None) rpc_state.sequence_number += 1 self._relay.add_value(ticket) diff --git a/src/python/grpcio/grpc/_links/service.py b/src/python/grpcio/grpc/_links/service.py index 5c636d61ab..de78e82cd6 100644 --- a/src/python/grpcio/grpc/_links/service.py +++ b/src/python/grpcio/grpc/_links/service.py @@ -131,7 +131,7 @@ class _Kernel(object): ticket = links.Ticket( call, 0, group, method, links.Ticket.Subscription.FULL, service_acceptance.deadline - time.time(), None, event.metadata, None, - None, None, None, None) + None, None, None, None, 'TODO: Service Context Object!') self._relay.add_value(ticket) def _on_read_event(self, event): @@ -157,7 +157,7 @@ class _Kernel(object): # rpc_state.read = _Read.AWAITING_ALLOWANCE ticket = links.Ticket( call, rpc_state.sequence_number, None, None, None, None, None, None, - payload, None, None, None, termination) + payload, None, None, None, termination, None) rpc_state.sequence_number += 1 self._relay.add_value(ticket) @@ -176,7 +176,7 @@ class _Kernel(object): else: ticket = links.Ticket( call, rpc_state.sequence_number, None, None, None, None, 1, None, - None, None, None, None, None) + None, None, None, None, None, None) rpc_state.sequence_number += 1 self._relay.add_value(ticket) rpc_state.low_write = _LowWrite.OPEN @@ -198,7 +198,7 @@ class _Kernel(object): termination = links.Ticket.Termination.TRANSMISSION_FAILURE ticket = links.Ticket( call, rpc_state.sequence_number, None, None, None, None, None, None, - None, None, None, None, termination) + None, None, None, None, termination, None) rpc_state.sequence_number += 1 self._relay.add_value(ticket) @@ -259,7 +259,7 @@ class _Kernel(object): termination = links.Ticket.Termination.COMPLETION ticket = links.Ticket( call, rpc_state.sequence_number, None, None, None, None, None, - None, payload, None, None, None, termination) + None, payload, None, None, None, termination, None) rpc_state.sequence_number += 1 self._relay.add_value(ticket) diff --git a/src/python/grpcio/grpc/framework/core/_transmission.py b/src/python/grpcio/grpc/framework/core/_transmission.py index 01894d398d..03644f4d49 100644 --- a/src/python/grpcio/grpc/framework/core/_transmission.py +++ b/src/python/grpcio/grpc/framework/core/_transmission.py @@ -107,7 +107,7 @@ class TransmissionManager(_interfaces.TransmissionManager): return links.Ticket( self._operation_id, self._lowest_unused_sequence_number, None, None, None, None, None, None, None, None, None, None, - termination) + termination, None) action = False # TODO(nathaniel): Support other subscriptions. @@ -144,7 +144,7 @@ class TransmissionManager(_interfaces.TransmissionManager): ticket = links.Ticket( self._operation_id, self._lowest_unused_sequence_number, None, None, local_subscription, timeout, allowance, initial_metadata, payload, - terminal_metadata, code, message, termination) + terminal_metadata, code, message, termination, None) self._lowest_unused_sequence_number += 1 return ticket else: @@ -191,7 +191,7 @@ class TransmissionManager(_interfaces.TransmissionManager): ticket = links.Ticket( self._operation_id, 0, group, method, subscription, timeout, allowance, initial_metadata, payload, terminal_metadata, code, message, - termination) + termination, None) self._lowest_unused_sequence_number = 1 self._transmit(ticket) @@ -236,7 +236,7 @@ class TransmissionManager(_interfaces.TransmissionManager): ticket = links.Ticket( self._operation_id, self._lowest_unused_sequence_number, None, None, None, None, allowance, effective_initial_metadata, ticket_payload, - terminal_metadata, code, message, termination) + terminal_metadata, code, message, termination, None) self._lowest_unused_sequence_number += 1 self._transmit(ticket) @@ -247,7 +247,7 @@ class TransmissionManager(_interfaces.TransmissionManager): else: ticket = links.Ticket( self._operation_id, self._lowest_unused_sequence_number, None, None, - None, timeout, None, None, None, None, None, None, None) + None, timeout, None, None, None, None, None, None, None, None) self._lowest_unused_sequence_number += 1 self._transmit(ticket) @@ -268,7 +268,7 @@ class TransmissionManager(_interfaces.TransmissionManager): ticket = links.Ticket( self._operation_id, self._lowest_unused_sequence_number, None, None, None, None, None, None, payload, terminal_metadata, code, message, - termination) + termination, None) self._lowest_unused_sequence_number += 1 self._transmit(ticket) @@ -290,5 +290,5 @@ class TransmissionManager(_interfaces.TransmissionManager): ticket = links.Ticket( self._operation_id, self._lowest_unused_sequence_number, None, None, None, None, None, None, None, None, None, None, - termination) + termination, None) self._transmit(ticket) diff --git a/src/python/grpcio/grpc/framework/interfaces/links/links.py b/src/python/grpcio/grpc/framework/interfaces/links/links.py index 069ff024dd..b98a30a399 100644 --- a/src/python/grpcio/grpc/framework/interfaces/links/links.py +++ b/src/python/grpcio/grpc/framework/interfaces/links/links.py @@ -34,12 +34,30 @@ import collections import enum +class Transport(collections.namedtuple('Transport', ('kind', 'value',))): + """A sum type for handles to an underlying transport system. + + Attributes: + kind: A Kind value identifying the kind of value being passed to or from + the underlying transport. + value: The value being passed through RPC Framework between the high-level + application and the underlying transport. + """ + + @enum.unique + class Kind(enum.Enum): + CALL_OPTION = 'call option' + SERVICER_CONTEXT = 'servicer context' + INVOCATION_CONTEXT = 'invocation context' + + class Ticket( collections.namedtuple( 'Ticket', - ['operation_id', 'sequence_number', 'group', 'method', 'subscription', + ('operation_id', 'sequence_number', 'group', 'method', 'subscription', 'timeout', 'allowance', 'initial_metadata', 'payload', - 'terminal_metadata', 'code', 'message', 'termination'])): + 'terminal_metadata', 'code', 'message', 'termination', + 'transport',))): """A sum type for all values sent from a front to a back. Attributes: @@ -81,6 +99,8 @@ class Ticket( termination: A Termination value describing the end of the operation, or None if the operation has not yet terminated. If set, no further tickets may be sent in the same direction. + transport: A Transport value or None, with further semantics being a matter + between high-level application and underlying transport. """ @enum.unique diff --git a/src/python/grpcio_test/grpc_test/_links/_lonely_invocation_link_test.py b/src/python/grpcio_test/grpc_test/_links/_lonely_invocation_link_test.py index abe240e07a..373a2b2a1f 100644 --- a/src/python/grpcio_test/grpc_test/_links/_lonely_invocation_link_test.py +++ b/src/python/grpcio_test/grpc_test/_links/_lonely_invocation_link_test.py @@ -66,7 +66,7 @@ class LonelyInvocationLinkTest(unittest.TestCase): ticket = links.Ticket( test_operation_id, 0, test_group, test_method, links.Ticket.Subscription.FULL, test_constants.SHORT_TIMEOUT, 1, None, - None, None, None, None, termination) + None, None, None, None, termination, None) invocation_link.accept_ticket(ticket) invocation_link_mate.block_until_tickets_satisfy(test_cases.terminated) diff --git a/src/python/grpcio_test/grpc_test/_links/_transmission_test.py b/src/python/grpcio_test/grpc_test/_links/_transmission_test.py index 9cdc9620f0..02ddd512c2 100644 --- a/src/python/grpcio_test/grpc_test/_links/_transmission_test.py +++ b/src/python/grpcio_test/grpc_test/_links/_transmission_test.py @@ -128,14 +128,14 @@ class RoundTripTest(unittest.TestCase): invocation_ticket = links.Ticket( test_operation_id, 0, test_group, test_method, links.Ticket.Subscription.FULL, test_constants.LONG_TIMEOUT, None, None, - None, None, None, None, links.Ticket.Termination.COMPLETION) + None, None, None, None, links.Ticket.Termination.COMPLETION, None) invocation_link.accept_ticket(invocation_ticket) service_mate.block_until_tickets_satisfy(test_cases.terminated) service_ticket = links.Ticket( service_mate.tickets()[-1].operation_id, 0, None, None, None, None, None, None, None, None, test_code, test_message, - links.Ticket.Termination.COMPLETION) + links.Ticket.Termination.COMPLETION, None) service_link.accept_ticket(service_ticket) invocation_mate.block_until_tickets_satisfy(test_cases.terminated) @@ -174,33 +174,34 @@ class RoundTripTest(unittest.TestCase): invocation_ticket = links.Ticket( test_operation_id, 0, test_group, test_method, links.Ticket.Subscription.FULL, test_constants.LONG_TIMEOUT, None, None, - None, None, None, None, None) + None, None, None, None, None, None) invocation_link.accept_ticket(invocation_ticket) requests = scenario.requests() for request_index, request in enumerate(requests): request_ticket = links.Ticket( test_operation_id, 1 + request_index, None, None, None, None, 1, None, - request, None, None, None, None) + request, None, None, None, None, None) invocation_link.accept_ticket(request_ticket) service_mate.block_until_tickets_satisfy( test_cases.at_least_n_payloads_received_predicate(1 + request_index)) response_ticket = links.Ticket( service_mate.tickets()[0].operation_id, request_index, None, None, None, None, 1, None, scenario.response_for_request(request), None, - None, None, None) + None, None, None, None) service_link.accept_ticket(response_ticket) invocation_mate.block_until_tickets_satisfy( test_cases.at_least_n_payloads_received_predicate(1 + request_index)) request_count = len(requests) invocation_completion_ticket = links.Ticket( test_operation_id, request_count + 1, None, None, None, None, None, - None, None, None, None, None, links.Ticket.Termination.COMPLETION) + None, None, None, None, None, links.Ticket.Termination.COMPLETION, + None) invocation_link.accept_ticket(invocation_completion_ticket) service_mate.block_until_tickets_satisfy(test_cases.terminated) service_completion_ticket = links.Ticket( service_mate.tickets()[0].operation_id, request_count, None, None, None, None, None, None, None, None, test_code, test_message, - links.Ticket.Termination.COMPLETION) + links.Ticket.Termination.COMPLETION, None) service_link.accept_ticket(service_completion_ticket) invocation_mate.block_until_tickets_satisfy(test_cases.terminated) diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_cases.py b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_cases.py index 1e575d1a9e..ecf49d9cdb 100644 --- a/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_cases.py +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_cases.py @@ -300,7 +300,7 @@ class TransmissionTest(object): invocation_operation_id, 0, _TRANSMISSION_GROUP, _TRANSMISSION_METHOD, links.Ticket.Subscription.FULL, timeout, 0, invocation_initial_metadata, invocation_payload, invocation_terminal_metadata, invocation_code, - invocation_message, links.Ticket.Termination.COMPLETION) + invocation_message, links.Ticket.Termination.COMPLETION, None) self._invocation_link.accept_ticket(original_invocation_ticket) self._service_mate.block_until_tickets_satisfy( @@ -317,7 +317,7 @@ class TransmissionTest(object): service_operation_id, 0, None, None, links.Ticket.Subscription.FULL, timeout, 0, service_initial_metadata, service_payload, service_terminal_metadata, service_code, service_message, - links.Ticket.Termination.COMPLETION) + links.Ticket.Termination.COMPLETION, None) self._service_link.accept_ticket(original_service_ticket) self._invocation_mate.block_until_tickets_satisfy(terminated) self._assert_is_valid_service_sequence( diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py index a2bd7107c1..39c7f2fc63 100644 --- a/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py @@ -64,7 +64,7 @@ def _safe_for_log_ticket(ticket): ticket.allowance, ticket.initial_metadata, '<payload of length {}>'.format(payload_length), ticket.terminal_metadata, ticket.code, ticket.message, - ticket.termination) + ticket.termination, None) class RecordingLink(links.Link): -- GitLab From fe5f25490d4e290ecf2fc52de64c1230429fd0a3 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Mon, 24 Aug 2015 12:33:05 -0700 Subject: [PATCH 152/178] Improvements to the grpc_channel_args_compression_algorithm_set_state api --- src/core/channel/channel_args.c | 11 +++++----- src/core/channel/channel_args.h | 7 +++++-- test/core/channel/channel_args_test.c | 29 ++++++++++++++++----------- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/core/channel/channel_args.c b/src/core/channel/channel_args.c index dc66de7dd6..54ee75af28 100644 --- a/src/core/channel/channel_args.c +++ b/src/core/channel/channel_args.c @@ -167,13 +167,13 @@ static int find_compression_algorithm_states_bitset( } grpc_channel_args *grpc_channel_args_compression_algorithm_set_state( - grpc_channel_args *a, + grpc_channel_args **a, grpc_compression_algorithm algorithm, int state) { int *states_arg; - grpc_channel_args *result = a; + grpc_channel_args *result = *a; const int states_arg_found = - find_compression_algorithm_states_bitset(a, &states_arg); + find_compression_algorithm_states_bitset(*a, &states_arg); if (states_arg_found) { if (state != 0) { @@ -193,8 +193,9 @@ grpc_channel_args *grpc_channel_args_compression_algorithm_set_state( } else { GPR_BITCLEAR(&tmp.value.integer, algorithm); } - result = grpc_channel_args_copy_and_add(a, &tmp, 1); - grpc_channel_args_destroy(a); + result = grpc_channel_args_copy_and_add(*a, &tmp, 1); + grpc_channel_args_destroy(*a); + *a = result; } return result; } diff --git a/src/core/channel/channel_args.h b/src/core/channel/channel_args.h index e557f9a9d9..06a6012dee 100644 --- a/src/core/channel/channel_args.h +++ b/src/core/channel/channel_args.h @@ -70,9 +70,12 @@ grpc_channel_args *grpc_channel_args_set_compression_algorithm( /** Sets the support for the given compression algorithm. By default, all * compression algorithms are enabled. It's an error to disable an algorithm set * by grpc_channel_args_set_compression_algorithm. - * */ + * + * Returns an instance will the updated algorithm states. The \a a pointer is + * modified to point to the returned instance (which may be different from the + * input value of \a a). */ grpc_channel_args *grpc_channel_args_compression_algorithm_set_state( - grpc_channel_args *a, + grpc_channel_args **a, grpc_compression_algorithm algorithm, int enabled); diff --git a/test/core/channel/channel_args_test.c b/test/core/channel/channel_args_test.c index 227cc1f415..87f006acde 100644 --- a/test/core/channel/channel_args_test.c +++ b/test/core/channel/channel_args_test.c @@ -45,7 +45,7 @@ static void test_create(void) { grpc_arg arg_string; grpc_arg to_add[2]; grpc_channel_args *ch_args; - + arg_int.key = "int_arg"; arg_int.type = GRPC_ARG_INTEGER; arg_int.value.integer = 123; @@ -57,7 +57,7 @@ static void test_create(void) { to_add[0] = arg_int; to_add[1] = arg_string; ch_args = grpc_channel_args_copy_and_add(NULL, to_add, 2); - + GPR_ASSERT(ch_args->num_args == 2); GPR_ASSERT(strcmp(ch_args->args[0].key, arg_int.key) == 0); GPR_ASSERT(ch_args->args[0].type == arg_int.type); @@ -84,7 +84,7 @@ static void test_set_compression_algorithm(void) { } static void test_compression_algorithm_states(void) { - grpc_channel_args *ch_args; + grpc_channel_args *ch_args, *ch_args_wo_gzip, *ch_args_wo_gzip_deflate; int states_bitset; size_t i; @@ -97,12 +97,15 @@ static void test_compression_algorithm_states(void) { } /* disable gzip and deflate */ - ch_args = grpc_channel_args_compression_algorithm_set_state( - ch_args, GRPC_COMPRESS_GZIP, 0); - ch_args = grpc_channel_args_compression_algorithm_set_state( - ch_args, GRPC_COMPRESS_DEFLATE, 0); - - states_bitset = grpc_channel_args_compression_algorithm_get_states(ch_args); + ch_args_wo_gzip = grpc_channel_args_compression_algorithm_set_state( + &ch_args, GRPC_COMPRESS_GZIP, 0); + GPR_ASSERT(ch_args == ch_args_wo_gzip); + ch_args_wo_gzip_deflate = grpc_channel_args_compression_algorithm_set_state( + &ch_args_wo_gzip, GRPC_COMPRESS_DEFLATE, 0); + GPR_ASSERT(ch_args_wo_gzip == ch_args_wo_gzip_deflate); + + states_bitset = grpc_channel_args_compression_algorithm_get_states( + ch_args_wo_gzip_deflate); for (i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) { if (i == GRPC_COMPRESS_GZIP || i == GRPC_COMPRESS_DEFLATE) { GPR_ASSERT(GPR_BITGET(states_bitset, i) == 0); @@ -112,10 +115,12 @@ static void test_compression_algorithm_states(void) { } /* re-enabled gzip only */ - ch_args = grpc_channel_args_compression_algorithm_set_state( - ch_args, GRPC_COMPRESS_GZIP, 1); + ch_args_wo_gzip = grpc_channel_args_compression_algorithm_set_state( + &ch_args_wo_gzip_deflate, GRPC_COMPRESS_GZIP, 1); + GPR_ASSERT(ch_args_wo_gzip == ch_args_wo_gzip_deflate); - states_bitset = grpc_channel_args_compression_algorithm_get_states(ch_args); + states_bitset = + grpc_channel_args_compression_algorithm_get_states(ch_args_wo_gzip); for (i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) { if (i == GRPC_COMPRESS_DEFLATE) { GPR_ASSERT(GPR_BITGET(states_bitset, i) == 0); -- GitLab From 2e49a355b64e2fec5f00995b8ba2dba1afef9700 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Mon, 24 Aug 2015 14:40:45 -0700 Subject: [PATCH 153/178] Fixed KVO test --- src/objective-c/tests/GRPCClientTests.m | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/objective-c/tests/GRPCClientTests.m b/src/objective-c/tests/GRPCClientTests.m index fa604211e2..09a55e0704 100644 --- a/src/objective-c/tests/GRPCClientTests.m +++ b/src/objective-c/tests/GRPCClientTests.m @@ -79,7 +79,7 @@ static ProtoMethod *kUnaryCallMethod; - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { _callback(keyPath, object, change); - [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + [object removeObserver:self forKeyPath:keyPath]; } @end @@ -219,16 +219,16 @@ static ProtoMethod *kUnaryCallMethod; __weak XCTestExpectation *completion = [self expectationWithDescription:@"Empty RPC completed."]; __weak XCTestExpectation *metadata = [self expectationWithDescription:@"Metadata changed."]; - PassthroughObserver *observer = [[PassthroughObserver alloc] initWithCallback:^(NSString *keypath, id object, NSDictionary * change) { - if (keypath == @"responseHeaders") { - [expectation fulfill]; - } - }] - GRPCCall *call = [[GRPCCall alloc] initWithHost:kHostAddress path:kEmptyCallMethod.HTTPPath requestsWriter:[GRXWriter writerWithValue:[NSData data]]]; + PassthroughObserver *observer = [[PassthroughObserver alloc] initWithCallback:^(NSString *keypath, id object, NSDictionary * change) { + if ([keypath isEqual: @"responseHeaders"]) { + [metadata fulfill]; + } + }]; + [call addObserver:observer forKeyPath:@"responseHeaders" options:0 context:NULL]; id<GRXWriteable> responsesWriteable = [[GRXWriteable alloc] initWithValueHandler:^(NSData *value) { -- GitLab From 1359a126a7d91ad827ccc39baad8ebf30d06c0f6 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Mon, 24 Aug 2015 14:43:32 -0700 Subject: [PATCH 154/178] Added some clarification --- include/grpc/grpc.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h index 860048711f..101fc88d8f 100644 --- a/include/grpc/grpc.h +++ b/include/grpc/grpc.h @@ -590,9 +590,11 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call *call, void grpc_call_destroy(grpc_call *call); /** Request notification of a new call. - Once a call is received in \a cq_bound_to_call, a notification tagged with - \a tag_new is added to \a cq_for_notification. \a call, \a details and \a - request_metadata are updated with the appropriate call information. + Once a call is received, a notification tagged with \a tag_new is added to + \a cq_for_notification. \a call, \a details and \a request_metadata are + updated with the appropriate call information. \a cq_bound_to_call is bound + to \a call, and batch operation notifications for that call will be posted + to \a cq_bound_to_call. Note that \a cq_for_notification must have been registered to the server via \a grpc_server_register_completion_queue. */ grpc_call_error grpc_server_request_call( -- GitLab From c9dc74b2cd8f57c1b6b1770c43c9f0e861c566c0 Mon Sep 17 00:00:00 2001 From: Nathaniel Manista <nathaniel@google.com> Date: Mon, 24 Aug 2015 21:59:03 +0000 Subject: [PATCH 155/178] Fix parameter reassignment defect This defect was introduced in 515b0a93526a. --- src/python/grpcio/grpc/_links/service.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/python/grpcio/grpc/_links/service.py b/src/python/grpcio/grpc/_links/service.py index 5c636d61ab..7aca36272d 100644 --- a/src/python/grpcio/grpc/_links/service.py +++ b/src/python/grpcio/grpc/_links/service.py @@ -257,11 +257,11 @@ class _Kernel(object): termination = None else: termination = links.Ticket.Termination.COMPLETION - ticket = links.Ticket( + early_read_ticket = links.Ticket( call, rpc_state.sequence_number, None, None, None, None, None, None, payload, None, None, None, termination) rpc_state.sequence_number += 1 - self._relay.add_value(ticket) + self._relay.add_value(early_read_ticket) if ticket.payload is not None: call.write(rpc_state.response_serializer(ticket.payload), call) -- GitLab From f637573b95b73400e81e038176451fb4c466e523 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Mon, 24 Aug 2015 15:12:39 -0700 Subject: [PATCH 156/178] make unneeded API internal-only, update docs --- src/csharp/Grpc.Core/AsyncClientStreamingCall.cs | 2 +- src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs | 2 +- src/csharp/Grpc.Core/AsyncServerStreamingCall.cs | 2 +- src/csharp/Grpc.Core/AsyncUnaryCall.cs | 2 +- src/csharp/Grpc.Core/Metadata.cs | 12 +++++------- 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs b/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs index dbaa3085c5..6036f4c7bb 100644 --- a/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs @@ -49,7 +49,7 @@ namespace Grpc.Core readonly Func<Metadata> getTrailersFunc; readonly Action disposeAction; - public AsyncClientStreamingCall(IClientStreamWriter<TRequest> requestStream, Task<TResponse> responseAsync, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) + internal AsyncClientStreamingCall(IClientStreamWriter<TRequest> requestStream, Task<TResponse> responseAsync, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) { this.requestStream = requestStream; this.responseAsync = responseAsync; diff --git a/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs b/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs index ee7ba29695..ea7cb4727b 100644 --- a/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs @@ -48,7 +48,7 @@ namespace Grpc.Core readonly Func<Metadata> getTrailersFunc; readonly Action disposeAction; - public AsyncDuplexStreamingCall(IClientStreamWriter<TRequest> requestStream, IAsyncStreamReader<TResponse> responseStream, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) + internal AsyncDuplexStreamingCall(IClientStreamWriter<TRequest> requestStream, IAsyncStreamReader<TResponse> responseStream, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) { this.requestStream = requestStream; this.responseStream = responseStream; diff --git a/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs b/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs index 2853a79ce6..d00fa8defd 100644 --- a/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs @@ -47,7 +47,7 @@ namespace Grpc.Core readonly Func<Metadata> getTrailersFunc; readonly Action disposeAction; - public AsyncServerStreamingCall(IAsyncStreamReader<TResponse> responseStream, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) + internal AsyncServerStreamingCall(IAsyncStreamReader<TResponse> responseStream, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) { this.responseStream = responseStream; this.responseHeadersAsync = responseHeadersAsync; diff --git a/src/csharp/Grpc.Core/AsyncUnaryCall.cs b/src/csharp/Grpc.Core/AsyncUnaryCall.cs index 154a17a33e..fb51bd65e7 100644 --- a/src/csharp/Grpc.Core/AsyncUnaryCall.cs +++ b/src/csharp/Grpc.Core/AsyncUnaryCall.cs @@ -48,7 +48,7 @@ namespace Grpc.Core readonly Func<Metadata> getTrailersFunc; readonly Action disposeAction; - public AsyncUnaryCall(Task<TResponse> responseAsync, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) + internal AsyncUnaryCall(Task<TResponse> responseAsync, Task<Metadata> responseHeadersAsync, Func<Status> getStatusFunc, Func<Metadata> getTrailersFunc, Action disposeAction) { this.responseAsync = responseAsync; this.responseHeadersAsync = responseHeadersAsync; diff --git a/src/csharp/Grpc.Core/Metadata.cs b/src/csharp/Grpc.Core/Metadata.cs index a589b50caa..79d25696a1 100644 --- a/src/csharp/Grpc.Core/Metadata.cs +++ b/src/csharp/Grpc.Core/Metadata.cs @@ -41,7 +41,7 @@ using Grpc.Core.Utils; namespace Grpc.Core { /// <summary> - /// Provides access to read and write metadata values to be exchanged during a call. + /// A collection of metadata entries that can be exchanged during a call. /// </summary> public sealed class Metadata : IList<Metadata.Entry> { @@ -58,21 +58,19 @@ namespace Grpc.Core readonly List<Entry> entries; bool readOnly; + /// <summary> + /// Initializes a new instance of <c>Metadata</c>. + /// </summary> public Metadata() { this.entries = new List<Entry>(); } - public Metadata(ICollection<Entry> entries) - { - this.entries = new List<Entry>(entries); - } - /// <summary> /// Makes this object read-only. /// </summary> /// <returns>this object</returns> - public Metadata Freeze() + internal Metadata Freeze() { this.readOnly = true; return this; -- GitLab From 9d1f0c4a0c31e18e21770cfaf5a29ed1db94da89 Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Mon, 24 Aug 2015 16:08:36 -0700 Subject: [PATCH 157/178] Fix merge failures --- BUILD | 4 ++-- build.json | 4 ++-- src/cpp/server/dynamic_thread_pool.h | 9 ++++----- src/cpp/server/fixed_size_thread_pool.h | 7 +++---- tools/run_tests/sources_and_headers.json | 8 ++++---- .../grpc_plugin_support/grpc_plugin_support.vcxproj | 4 ++-- 6 files changed, 17 insertions(+), 19 deletions(-) diff --git a/BUILD b/BUILD index f72106177f..257f12f152 100644 --- a/BUILD +++ b/BUILD @@ -854,8 +854,8 @@ cc_library( cc_library( name = "grpc_plugin_support", srcs = [ - "include/grpc++/config.h", - "include/grpc++/config_protobuf.h", + "include/grpc++/support/config.h", + "include/grpc++/support/config_protobuf.h", "src/compiler/config.h", "src/compiler/cpp_generator.h", "src/compiler/cpp_generator_helpers.h", diff --git a/build.json b/build.json index 17a99b6a1c..414b95795d 100644 --- a/build.json +++ b/build.json @@ -697,8 +697,8 @@ "build": "protoc", "language": "c++", "headers": [ - "include/grpc++/config.h", - "include/grpc++/config_protobuf.h", + "include/grpc++/support/config.h", + "include/grpc++/support/config_protobuf.h", "src/compiler/config.h", "src/compiler/cpp_generator.h", "src/compiler/cpp_generator_helpers.h", diff --git a/src/cpp/server/dynamic_thread_pool.h b/src/cpp/server/dynamic_thread_pool.h index a4683eefc4..5ba7533c05 100644 --- a/src/cpp/server/dynamic_thread_pool.h +++ b/src/cpp/server/dynamic_thread_pool.h @@ -34,15 +34,14 @@ #ifndef GRPC_INTERNAL_CPP_DYNAMIC_THREAD_POOL_H #define GRPC_INTERNAL_CPP_DYNAMIC_THREAD_POOL_H -#include <grpc++/config.h> - -#include <grpc++/impl/sync.h> -#include <grpc++/impl/thd.h> - #include <list> #include <memory> #include <queue> +#include <grpc++/impl/sync.h> +#include <grpc++/impl/thd.h> +#include <grpc++/support/config.h> + #include "src/cpp/server/thread_pool_interface.h" namespace grpc { diff --git a/src/cpp/server/fixed_size_thread_pool.h b/src/cpp/server/fixed_size_thread_pool.h index 65d3134ec4..394ae5821e 100644 --- a/src/cpp/server/fixed_size_thread_pool.h +++ b/src/cpp/server/fixed_size_thread_pool.h @@ -34,13 +34,12 @@ #ifndef GRPC_INTERNAL_CPP_FIXED_SIZE_THREAD_POOL_H #define GRPC_INTERNAL_CPP_FIXED_SIZE_THREAD_POOL_H -#include <grpc++/config.h> +#include <queue> +#include <vector> #include <grpc++/impl/sync.h> #include <grpc++/impl/thd.h> - -#include <queue> -#include <vector> +#include <grpc++/support/config.h> #include "src/cpp/server/thread_pool_interface.h" diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index f48e315865..0fe5f68d6a 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -13396,8 +13396,8 @@ { "deps": [], "headers": [ - "include/grpc++/config.h", - "include/grpc++/config_protobuf.h", + "include/grpc++/support/config.h", + "include/grpc++/support/config_protobuf.h", "src/compiler/config.h", "src/compiler/cpp_generator.h", "src/compiler/cpp_generator_helpers.h", @@ -13415,8 +13415,8 @@ "language": "c++", "name": "grpc_plugin_support", "src": [ - "include/grpc++/config.h", - "include/grpc++/config_protobuf.h", + "include/grpc++/support/config.h", + "include/grpc++/support/config_protobuf.h", "src/compiler/config.h", "src/compiler/cpp_generator.cc", "src/compiler/cpp_generator.h", diff --git a/vsprojects/grpc_plugin_support/grpc_plugin_support.vcxproj b/vsprojects/grpc_plugin_support/grpc_plugin_support.vcxproj index 444d796137..9f098d10a1 100644 --- a/vsprojects/grpc_plugin_support/grpc_plugin_support.vcxproj +++ b/vsprojects/grpc_plugin_support/grpc_plugin_support.vcxproj @@ -122,8 +122,8 @@ </Link> </ItemDefinitionGroup> <ItemGroup> - <ClInclude Include="..\..\include\grpc++\config.h" /> - <ClInclude Include="..\..\include\grpc++\config_protobuf.h" /> + <ClInclude Include="..\..\include\grpc++\support\config.h" /> + <ClInclude Include="..\..\include\grpc++\support\config_protobuf.h" /> <ClInclude Include="..\..\src\compiler\config.h" /> <ClInclude Include="..\..\src\compiler\cpp_generator.h" /> <ClInclude Include="..\..\src\compiler\cpp_generator_helpers.h" /> -- GitLab From 049e1dfd76e1453a77cd6435b24988e6090a13e4 Mon Sep 17 00:00:00 2001 From: murgatroid99 <mlumish@google.com> Date: Mon, 24 Aug 2015 16:27:21 -0700 Subject: [PATCH 158/178] Made udp_server.c compile for iOS --- src/core/iomgr/udp_server.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/iomgr/udp_server.c b/src/core/iomgr/udp_server.c index 16482c08f7..6429c38b28 100644 --- a/src/core/iomgr/udp_server.c +++ b/src/core/iomgr/udp_server.c @@ -235,8 +235,10 @@ static int prepare_socket(int fd, const struct sockaddr *addr, int addr_len) { rc = setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &get_local_ip, sizeof(get_local_ip)); if (rc == 0 && addr->sa_family == AF_INET6) { +#if !TARGET_OS_IPHONE rc = setsockopt(fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &get_local_ip, sizeof(get_local_ip)); +#endif } if (bind(fd, addr, addr_len) < 0) { -- GitLab From 16f6dac8e81a818f399b180c673d966cd40603c1 Mon Sep 17 00:00:00 2001 From: Craig Tiller <craig.tiller@gmail.com> Date: Mon, 24 Aug 2015 17:00:04 -0700 Subject: [PATCH 159/178] Make googletest a submodule --- .gitmodules | 3 +++ Makefile | 8 +++----- templates/Makefile.template | 8 +++----- third_party/googletest | 1 + 4 files changed, 10 insertions(+), 10 deletions(-) create mode 160000 third_party/googletest diff --git a/.gitmodules b/.gitmodules index a5cf3aaaee..434d01b3d5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -12,3 +12,6 @@ [submodule "third_party/gflags"] path = third_party/gflags url = https://github.com/gflags/gflags.git +[submodule "third_party/googletest"] + path = third_party/googletest + url = git://github.com/google/googletest diff --git a/Makefile b/Makefile index e5a7a2c7bf..1053c517fe 100644 --- a/Makefile +++ b/Makefile @@ -299,11 +299,7 @@ LIBS = m z pthread LDFLAGS += -pthread endif -ifneq ($(wildcard /usr/src/gtest/src/gtest-all.cc),) -GTEST_LIB = /usr/src/gtest/src/gtest-all.cc -I/usr/src/gtest -else -GTEST_LIB = -lgtest -endif +GTEST_LIB = -Ithird_party/googletest/include -Ithird_party/googletest third_party/googletest/src/gtest-all.cc GTEST_LIB += -lgflags ifeq ($(V),1) E = @: @@ -612,6 +608,8 @@ PROTOBUF_PKG_CONFIG = false PC_REQUIRES_GRPCXX = PC_LIBS_GRPCXX = +CPPFLAGS := -Ithird_party/googletest/include $(CPPFLAGS) + ifeq ($(HAS_SYSTEM_PROTOBUF),true) ifeq ($(HAS_PKG_CONFIG),true) PROTOBUF_PKG_CONFIG = true diff --git a/templates/Makefile.template b/templates/Makefile.template index 1b898efbdd..00582a22f8 100644 --- a/templates/Makefile.template +++ b/templates/Makefile.template @@ -313,11 +313,7 @@ LIBS = m z pthread LDFLAGS += -pthread endif -ifneq ($(wildcard /usr/src/gtest/src/gtest-all.cc),) -GTEST_LIB = /usr/src/gtest/src/gtest-all.cc -I/usr/src/gtest -else -GTEST_LIB = -lgtest -endif +GTEST_LIB = -Ithird_party/googletest/include -Ithird_party/googletest third_party/googletest/src/gtest-all.cc GTEST_LIB += -lgflags ifeq ($(V),1) E = @: @@ -637,6 +633,8 @@ PROTOBUF_PKG_CONFIG = false PC_REQUIRES_GRPCXX = PC_LIBS_GRPCXX = +CPPFLAGS := -Ithird_party/googletest/include $(CPPFLAGS) + ifeq ($(HAS_SYSTEM_PROTOBUF),true) ifeq ($(HAS_PKG_CONFIG),true) PROTOBUF_PKG_CONFIG = true diff --git a/third_party/googletest b/third_party/googletest new file mode 160000 index 0000000000..c80449247c --- /dev/null +++ b/third_party/googletest @@ -0,0 +1 @@ +Subproject commit c80449247c0e3032401297edf19a1be8078900cc -- GitLab From ef2e4d82082c3b41054c34641226cc138231eb33 Mon Sep 17 00:00:00 2001 From: Craig Tiller <craig.tiller@gmail.com> Date: Mon, 24 Aug 2015 17:12:38 -0700 Subject: [PATCH 160/178] Update sanity --- tools/run_tests/run_sanity.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/run_tests/run_sanity.sh b/tools/run_tests/run_sanity.sh index 18d5ba026e..8cd011b533 100755 --- a/tools/run_tests/run_sanity.sh +++ b/tools/run_tests/run_sanity.sh @@ -44,6 +44,7 @@ git submodule > $submodules diff -u $submodules - << EOF 05b155ff59114735ec8cd089f669c4c3d8f59029 third_party/gflags (v2.1.0-45-g05b155f) + c80449247c0e3032401297edf19a1be8078900cc third_party/googletest (heads/master) 33dd08320648ac71d7d9d732be774ed3818dccc5 third_party/openssl (OpenSSL_1_0_2d) 3e2c8a5dd79481e1d36572cdf65be93514ba6581 third_party/protobuf (v3.0.0-alpha-1-1048-g3e2c8a5) 50893291621658f355bc5b4d450a8d06a563053d third_party/zlib (v1.2.8) -- GitLab From 8d8a52cd586e75f2b93ad6eb321bf7d5ac4953f6 Mon Sep 17 00:00:00 2001 From: Craig Tiller <craig.tiller@gmail.com> Date: Mon, 24 Aug 2015 17:18:32 -0700 Subject: [PATCH 161/178] Update to v1.7 --- third_party/googletest | 2 +- tools/run_tests/run_sanity.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/googletest b/third_party/googletest index c80449247c..c99458533a 160000 --- a/third_party/googletest +++ b/third_party/googletest @@ -1 +1 @@ -Subproject commit c80449247c0e3032401297edf19a1be8078900cc +Subproject commit c99458533a9b4c743ed51537e25989ea55944908 diff --git a/tools/run_tests/run_sanity.sh b/tools/run_tests/run_sanity.sh index 8cd011b533..ac331b54d3 100755 --- a/tools/run_tests/run_sanity.sh +++ b/tools/run_tests/run_sanity.sh @@ -44,7 +44,7 @@ git submodule > $submodules diff -u $submodules - << EOF 05b155ff59114735ec8cd089f669c4c3d8f59029 third_party/gflags (v2.1.0-45-g05b155f) - c80449247c0e3032401297edf19a1be8078900cc third_party/googletest (heads/master) + c99458533a9b4c743ed51537e25989ea55944908 third_party/googletest (release-1.7.0) 33dd08320648ac71d7d9d732be774ed3818dccc5 third_party/openssl (OpenSSL_1_0_2d) 3e2c8a5dd79481e1d36572cdf65be93514ba6581 third_party/protobuf (v3.0.0-alpha-1-1048-g3e2c8a5) 50893291621658f355bc5b4d450a8d06a563053d third_party/zlib (v1.2.8) -- GitLab From 12855fc68201962311ba1474243809e2d3953964 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Mon, 24 Aug 2015 16:43:23 -0700 Subject: [PATCH 162/178] polishing public docs --- src/csharp/Grpc.Auth/AuthInterceptors.cs | 6 ++- .../Grpc.Core/AsyncClientStreamingCall.cs | 2 + .../Grpc.Core/AsyncDuplexStreamingCall.cs | 2 + .../Grpc.Core/AsyncServerStreamingCall.cs | 1 + src/csharp/Grpc.Core/AsyncUnaryCall.cs | 1 + src/csharp/Grpc.Core/CallInvocationDetails.cs | 10 ++-- src/csharp/Grpc.Core/CallOptions.cs | 3 ++ src/csharp/Grpc.Core/Calls.cs | 1 + src/csharp/Grpc.Core/Channel.cs | 5 +- src/csharp/Grpc.Core/ChannelOptions.cs | 24 ++++++++- src/csharp/Grpc.Core/ClientBase.cs | 9 ++++ .../Grpc.Core/ContextPropagationToken.cs | 8 +-- src/csharp/Grpc.Core/IAsyncStreamReader.cs | 2 +- src/csharp/Grpc.Core/IAsyncStreamWriter.cs | 4 +- src/csharp/Grpc.Core/IClientStreamWriter.cs | 2 +- .../Grpc.Core/Internal/CallSafeHandle.cs | 2 +- .../Internal/ChannelArgsSafeHandle.cs | 2 +- .../Grpc.Core/Internal/ChannelSafeHandle.cs | 2 +- .../Internal/CompletionQueueSafeHandle.cs | 2 +- .../Internal/CredentialsSafeHandle.cs | 2 +- .../Internal/MetadataArraySafeHandle.cs | 2 +- .../Internal/ServerCredentialsSafeHandle.cs | 2 +- src/csharp/Grpc.Core/Metadata.cs | 12 +++-- src/csharp/Grpc.Core/Method.cs | 2 + src/csharp/Grpc.Core/Server.cs | 8 ++- src/csharp/Grpc.Core/ServerCallContext.cs | 10 ++++ src/csharp/Grpc.Core/ServerMethods.cs | 8 +++ .../Grpc.Core/ServerServiceDefinition.cs | 50 +++++++++++++++++++ src/csharp/Grpc.Core/Utils/Preconditions.cs | 9 ++++ src/csharp/Grpc.Core/WriteOptions.cs | 7 +++ .../Grpc.HealthCheck/HealthServiceImpl.cs | 6 +++ src/csharp/doc/grpc_csharp_public.shfbproj | 12 ++++- 32 files changed, 191 insertions(+), 27 deletions(-) diff --git a/src/csharp/Grpc.Auth/AuthInterceptors.cs b/src/csharp/Grpc.Auth/AuthInterceptors.cs index 61338f7f0e..c8ab4d9af6 100644 --- a/src/csharp/Grpc.Auth/AuthInterceptors.cs +++ b/src/csharp/Grpc.Auth/AuthInterceptors.cs @@ -41,7 +41,8 @@ using Grpc.Core.Utils; namespace Grpc.Auth { /// <summary> - /// Factory methods to create authorization interceptors. + /// Factory methods to create authorization interceptors. Interceptors created can be registered with gRPC client classes (autogenerated client stubs that + /// inherit from <see cref="Grpc.Core.ClientBase"/>). /// </summary> public static class AuthInterceptors { @@ -52,6 +53,8 @@ namespace Grpc.Auth /// Creates interceptor that will obtain access token from any credential type that implements /// <c>ITokenAccess</c>. (e.g. <c>GoogleCredential</c>). /// </summary> + /// <param name="credential">The credential to use to obtain access tokens.</param> + /// <returns>The header interceptor.</returns> public static HeaderInterceptor FromCredential(ITokenAccess credential) { return new HeaderInterceptor((method, authUri, metadata) => @@ -67,6 +70,7 @@ namespace Grpc.Auth /// Creates OAuth2 interceptor that will use given access token as authorization. /// </summary> /// <param name="accessToken">OAuth2 access token.</param> + /// <returns>The header interceptor.</returns> public static HeaderInterceptor FromAccessToken(string accessToken) { Preconditions.CheckNotNull(accessToken); diff --git a/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs b/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs index 6036f4c7bb..5646fed3d9 100644 --- a/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncClientStreamingCall.cs @@ -40,6 +40,8 @@ namespace Grpc.Core /// <summary> /// Return type for client streaming calls. /// </summary> + /// <typeparam name="TRequest">Request message type for this call.</typeparam> + /// <typeparam name="TResponse">Response message type for this call.</typeparam> public sealed class AsyncClientStreamingCall<TRequest, TResponse> : IDisposable { readonly IClientStreamWriter<TRequest> requestStream; diff --git a/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs b/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs index ea7cb4727b..e75108c7e5 100644 --- a/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncDuplexStreamingCall.cs @@ -39,6 +39,8 @@ namespace Grpc.Core /// <summary> /// Return type for bidirectional streaming calls. /// </summary> + /// <typeparam name="TRequest">Request message type for this call.</typeparam> + /// <typeparam name="TResponse">Response message type for this call.</typeparam> public sealed class AsyncDuplexStreamingCall<TRequest, TResponse> : IDisposable { readonly IClientStreamWriter<TRequest> requestStream; diff --git a/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs b/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs index d00fa8defd..f953091984 100644 --- a/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs +++ b/src/csharp/Grpc.Core/AsyncServerStreamingCall.cs @@ -39,6 +39,7 @@ namespace Grpc.Core /// <summary> /// Return type for server streaming calls. /// </summary> + /// <typeparam name="TResponse">Response message type for this call.</typeparam> public sealed class AsyncServerStreamingCall<TResponse> : IDisposable { readonly IAsyncStreamReader<TResponse> responseStream; diff --git a/src/csharp/Grpc.Core/AsyncUnaryCall.cs b/src/csharp/Grpc.Core/AsyncUnaryCall.cs index fb51bd65e7..97df8f5e91 100644 --- a/src/csharp/Grpc.Core/AsyncUnaryCall.cs +++ b/src/csharp/Grpc.Core/AsyncUnaryCall.cs @@ -40,6 +40,7 @@ namespace Grpc.Core /// <summary> /// Return type for single request - single response call. /// </summary> + /// <typeparam name="TResponse">Response message type for this call.</typeparam> public sealed class AsyncUnaryCall<TResponse> : IDisposable { readonly Task<TResponse> responseAsync; diff --git a/src/csharp/Grpc.Core/CallInvocationDetails.cs b/src/csharp/Grpc.Core/CallInvocationDetails.cs index 6565073fc5..8228b8f317 100644 --- a/src/csharp/Grpc.Core/CallInvocationDetails.cs +++ b/src/csharp/Grpc.Core/CallInvocationDetails.cs @@ -40,6 +40,8 @@ namespace Grpc.Core /// <summary> /// Details about a client-side call to be invoked. /// </summary> + /// <typeparam name="TRequest">Request message type for the call.</typeparam> + /// <typeparam name="TResponse">Response message type for the call.</typeparam> public struct CallInvocationDetails<TRequest, TResponse> { readonly Channel channel; @@ -50,7 +52,7 @@ namespace Grpc.Core CallOptions options; /// <summary> - /// Initializes a new instance of the <see cref="Grpc.Core.CallInvocationDetails`2"/> struct. + /// Initializes a new instance of the <see cref="Grpc.Core.CallInvocationDetails{TRequest,TResponse}"/> struct. /// </summary> /// <param name="channel">Channel to use for this call.</param> /// <param name="method">Method to call.</param> @@ -61,7 +63,7 @@ namespace Grpc.Core } /// <summary> - /// Initializes a new instance of the <see cref="Grpc.Core.CallInvocationDetails`2"/> struct. + /// Initializes a new instance of the <see cref="Grpc.Core.CallInvocationDetails{TRequest,TResponse}"/> struct. /// </summary> /// <param name="channel">Channel to use for this call.</param> /// <param name="method">Method to call.</param> @@ -73,7 +75,7 @@ namespace Grpc.Core } /// <summary> - /// Initializes a new instance of the <see cref="Grpc.Core.CallInvocationDetails`2"/> struct. + /// Initializes a new instance of the <see cref="Grpc.Core.CallInvocationDetails{TRequest,TResponse}"/> struct. /// </summary> /// <param name="channel">Channel to use for this call.</param> /// <param name="method">Qualified method name.</param> @@ -158,7 +160,7 @@ namespace Grpc.Core } /// <summary> - /// Returns new instance of <see cref="CallInvocationDetails"/> with + /// Returns new instance of <see cref="CallInvocationDetails{TRequest, TResponse}"/> with /// <c>Options</c> set to the value provided. Values of all other fields are preserved. /// </summary> public CallInvocationDetails<TRequest, TResponse> WithOptions(CallOptions options) diff --git a/src/csharp/Grpc.Core/CallOptions.cs b/src/csharp/Grpc.Core/CallOptions.cs index 3dfe80b48c..c3bc9c3156 100644 --- a/src/csharp/Grpc.Core/CallOptions.cs +++ b/src/csharp/Grpc.Core/CallOptions.cs @@ -118,6 +118,7 @@ namespace Grpc.Core /// Returns new instance of <see cref="CallOptions"/> with /// <c>Headers</c> set to the value provided. Values of all other fields are preserved. /// </summary> + /// <param name="headers">The headers.</param> public CallOptions WithHeaders(Metadata headers) { var newOptions = this; @@ -129,6 +130,7 @@ namespace Grpc.Core /// Returns new instance of <see cref="CallOptions"/> with /// <c>Deadline</c> set to the value provided. Values of all other fields are preserved. /// </summary> + /// <param name="deadline">The deadline.</param> public CallOptions WithDeadline(DateTime deadline) { var newOptions = this; @@ -140,6 +142,7 @@ namespace Grpc.Core /// Returns new instance of <see cref="CallOptions"/> with /// <c>CancellationToken</c> set to the value provided. Values of all other fields are preserved. /// </summary> + /// <param name="cancellationToken">The cancellation token.</param> public CallOptions WithCancellationToken(CancellationToken cancellationToken) { var newOptions = this; diff --git a/src/csharp/Grpc.Core/Calls.cs b/src/csharp/Grpc.Core/Calls.cs index e57ac89db3..94b3c2fe65 100644 --- a/src/csharp/Grpc.Core/Calls.cs +++ b/src/csharp/Grpc.Core/Calls.cs @@ -100,6 +100,7 @@ namespace Grpc.Core /// Invokes a client streaming call asynchronously. /// In client streaming scenario, client sends a stream of requests and server responds with a single response. /// </summary> + /// <param name="call">The call defintion.</param> /// <returns>An awaitable call object providing access to the response.</returns> /// <typeparam name="TRequest">Type of request messages.</typeparam> /// <typeparam name="TResponse">The of response message.</typeparam> diff --git a/src/csharp/Grpc.Core/Channel.cs b/src/csharp/Grpc.Core/Channel.cs index c11b320a64..f1942727cd 100644 --- a/src/csharp/Grpc.Core/Channel.cs +++ b/src/csharp/Grpc.Core/Channel.cs @@ -43,7 +43,9 @@ using Grpc.Core.Utils; namespace Grpc.Core { /// <summary> - /// gRPC 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. /// </summary> public class Channel { @@ -161,6 +163,7 @@ namespace Grpc.Core /// 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. /// </summary> + /// <param name="deadline">The deadline. <c>null</c> indicates no deadline.</param> public async Task ConnectAsync(DateTime? deadline = null) { var currentState = handle.CheckConnectivityState(true); diff --git a/src/csharp/Grpc.Core/ChannelOptions.cs b/src/csharp/Grpc.Core/ChannelOptions.cs index ad54b46ad5..f5ef63af54 100644 --- a/src/csharp/Grpc.Core/ChannelOptions.cs +++ b/src/csharp/Grpc.Core/ChannelOptions.cs @@ -44,9 +44,19 @@ namespace Grpc.Core /// </summary> public sealed class ChannelOption { + /// <summary> + /// Type of <c>ChannelOption</c>. + /// </summary> public enum OptionType { + /// <summary> + /// Channel option with integer value. + /// </summary> Integer, + + /// <summary> + /// Channel option with string value. + /// </summary> String } @@ -79,6 +89,9 @@ namespace Grpc.Core this.intValue = intValue; } + /// <summary> + /// Gets the type of the <c>ChannelOption</c>. + /// </summary> public OptionType Type { get @@ -87,6 +100,9 @@ namespace Grpc.Core } } + /// <summary> + /// Gets the name of the <c>ChannelOption</c>. + /// </summary> public string Name { get @@ -95,6 +111,9 @@ namespace Grpc.Core } } + /// <summary> + /// Gets the integer value the <c>ChannelOption</c>. + /// </summary> public int IntValue { get @@ -104,6 +123,9 @@ namespace Grpc.Core } } + /// <summary> + /// Gets the string value the <c>ChannelOption</c>. + /// </summary> public string StringValue { get @@ -140,7 +162,7 @@ namespace Grpc.Core /// <summary>Primary user agent: goes at the start of the user-agent metadata</summary> public const string PrimaryUserAgentString = "grpc.primary_user_agent"; - /// <summary> Secondary user agent: goes at the end of the user-agent metadata</summary> + /// <summary>Secondary user agent: goes at the end of the user-agent metadata</summary> public const string SecondaryUserAgentString = "grpc.secondary_user_agent"; /// <summary> diff --git a/src/csharp/Grpc.Core/ClientBase.cs b/src/csharp/Grpc.Core/ClientBase.cs index 903449439b..f4533e735c 100644 --- a/src/csharp/Grpc.Core/ClientBase.cs +++ b/src/csharp/Grpc.Core/ClientBase.cs @@ -53,6 +53,10 @@ namespace Grpc.Core readonly Channel channel; readonly string authUriBase; + /// <summary> + /// Initializes a new instance of <c>ClientBase</c> class. + /// </summary> + /// <param name="channel">The channel to use for remote call invocation.</param> public ClientBase(Channel channel) { this.channel = channel; @@ -95,6 +99,11 @@ namespace Grpc.Core /// <summary> /// Creates a new call to given method. /// </summary> + /// <param name="method">The method to invoke.</param> + /// <param name="options">The call options.</param> + /// <typeparam name="TRequest">Request message type.</typeparam> + /// <typeparam name="TResponse">Response message type.</typeparam> + /// <returns>The call invocation details.</returns> protected CallInvocationDetails<TRequest, TResponse> CreateCall<TRequest, TResponse>(Method<TRequest, TResponse> method, CallOptions options) where TRequest : class where TResponse : class diff --git a/src/csharp/Grpc.Core/ContextPropagationToken.cs b/src/csharp/Grpc.Core/ContextPropagationToken.cs index a5bf1b5a70..1d899b97fd 100644 --- a/src/csharp/Grpc.Core/ContextPropagationToken.cs +++ b/src/csharp/Grpc.Core/ContextPropagationToken.cs @@ -44,8 +44,8 @@ namespace Grpc.Core /// 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. - /// C core provides some other contexts (like tracing context) that - /// are not accessible to C# layer, but this token still allows propagating them. + /// 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. /// </summary> public class ContextPropagationToken { @@ -143,13 +143,13 @@ namespace Grpc.Core this.propagateCancellation = propagateCancellation; } - /// <value><c>true</c> if parent call's deadline should be propagated to the child call.</value> + /// <summary><c>true</c> if parent call's deadline should be propagated to the child call.</summary> public bool IsPropagateDeadline { get { return this.propagateDeadline; } } - /// <value><c>true</c> if parent call's cancellation token should be propagated to the child call.</value> + /// <summary><c>true</c> if parent call's cancellation token should be propagated to the child call.</summary> public bool IsPropagateCancellation { get { return this.propagateCancellation; } diff --git a/src/csharp/Grpc.Core/IAsyncStreamReader.cs b/src/csharp/Grpc.Core/IAsyncStreamReader.cs index c0a0674e50..49e1ea7832 100644 --- a/src/csharp/Grpc.Core/IAsyncStreamReader.cs +++ b/src/csharp/Grpc.Core/IAsyncStreamReader.cs @@ -42,7 +42,7 @@ namespace Grpc.Core /// <summary> /// A stream of messages to be read. /// </summary> - /// <typeparam name="T"></typeparam> + /// <typeparam name="T">The message type.</typeparam> public interface IAsyncStreamReader<T> : IAsyncEnumerator<T> { // TODO(jtattermusch): consider just using IAsyncEnumerator instead of this interface. diff --git a/src/csharp/Grpc.Core/IAsyncStreamWriter.cs b/src/csharp/Grpc.Core/IAsyncStreamWriter.cs index 4e2acb9c71..9c0d2d312e 100644 --- a/src/csharp/Grpc.Core/IAsyncStreamWriter.cs +++ b/src/csharp/Grpc.Core/IAsyncStreamWriter.cs @@ -42,7 +42,7 @@ namespace Grpc.Core /// <summary> /// A writable stream of messages. /// </summary> - /// <typeparam name="T"></typeparam> + /// <typeparam name="T">The message type.</typeparam> public interface IAsyncStreamWriter<T> { /// <summary> @@ -56,7 +56,7 @@ namespace Grpc.Core /// If null, default options will be used. /// Once set, this property maintains its value across subsequent /// writes. - /// <value>The write options.</value> + /// </summary> WriteOptions WriteOptions { get; set; } } } diff --git a/src/csharp/Grpc.Core/IClientStreamWriter.cs b/src/csharp/Grpc.Core/IClientStreamWriter.cs index a3028bc374..3fd0774db5 100644 --- a/src/csharp/Grpc.Core/IClientStreamWriter.cs +++ b/src/csharp/Grpc.Core/IClientStreamWriter.cs @@ -42,7 +42,7 @@ namespace Grpc.Core /// <summary> /// Client-side writable stream of messages with Close capability. /// </summary> - /// <typeparam name="T"></typeparam> + /// <typeparam name="T">The message type.</typeparam> public interface IClientStreamWriter<T> : IAsyncStreamWriter<T> { /// <summary> diff --git a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs index 0f187529e8..c3611a7761 100644 --- a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs @@ -38,7 +38,7 @@ using Grpc.Core.Utils; namespace Grpc.Core.Internal { /// <summary> - /// grpc_call from <grpc/grpc.h> + /// grpc_call from <c>grpc/grpc.h</c> /// </summary> internal class CallSafeHandle : SafeHandleZeroIsInvalid, INativeCall { diff --git a/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs index c12aec5a3a..ea5b52374e 100644 --- a/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ChannelArgsSafeHandle.cs @@ -35,7 +35,7 @@ using System.Threading.Tasks; namespace Grpc.Core.Internal { /// <summary> - /// grpc_channel_args from <grpc/grpc.h> + /// grpc_channel_args from <c>grpc/grpc.h</c> /// </summary> internal class ChannelArgsSafeHandle : SafeHandleZeroIsInvalid { diff --git a/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs index 8cef566c14..7a1c6e3dac 100644 --- a/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ChannelSafeHandle.cs @@ -36,7 +36,7 @@ using System.Threading.Tasks; namespace Grpc.Core.Internal { /// <summary> - /// grpc_channel from <grpc/grpc.h> + /// grpc_channel from <c>grpc/grpc.h</c> /// </summary> internal class ChannelSafeHandle : SafeHandleZeroIsInvalid { diff --git a/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs index f64f3d4175..f7a3471bb4 100644 --- a/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CompletionQueueSafeHandle.cs @@ -35,7 +35,7 @@ using System.Threading.Tasks; namespace Grpc.Core.Internal { /// <summary> - /// grpc_completion_queue from <grpc/grpc.h> + /// grpc_completion_queue from <c>grpc/grpc.h</c> /// </summary> internal class CompletionQueueSafeHandle : SafeHandleZeroIsInvalid { diff --git a/src/csharp/Grpc.Core/Internal/CredentialsSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CredentialsSafeHandle.cs index 8b4fa85e5d..feed335362 100644 --- a/src/csharp/Grpc.Core/Internal/CredentialsSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/CredentialsSafeHandle.cs @@ -36,7 +36,7 @@ using System.Threading.Tasks; namespace Grpc.Core.Internal { /// <summary> - /// grpc_credentials from <grpc/grpc_security.h> + /// grpc_credentials from <c>grpc/grpc_security.h</c> /// </summary> internal class CredentialsSafeHandle : SafeHandleZeroIsInvalid { diff --git a/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs b/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs index 83994f6762..31b834c979 100644 --- a/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/MetadataArraySafeHandle.cs @@ -35,7 +35,7 @@ using System.Threading.Tasks; namespace Grpc.Core.Internal { /// <summary> - /// grpc_metadata_array from <grpc/grpc.h> + /// grpc_metadata_array from <c>grpc/grpc.h</c> /// </summary> internal class MetadataArraySafeHandle : SafeHandleZeroIsInvalid { diff --git a/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs b/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs index 37a4f5256b..51e352a18b 100644 --- a/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs +++ b/src/csharp/Grpc.Core/Internal/ServerCredentialsSafeHandle.cs @@ -37,7 +37,7 @@ using Grpc.Core.Utils; namespace Grpc.Core.Internal { /// <summary> - /// grpc_server_credentials from <grpc/grpc_security.h> + /// grpc_server_credentials from <c>grpc/grpc_security.h</c> /// </summary> internal class ServerCredentialsSafeHandle : SafeHandleZeroIsInvalid { diff --git a/src/csharp/Grpc.Core/Metadata.cs b/src/csharp/Grpc.Core/Metadata.cs index 79d25696a1..99fe0b5478 100644 --- a/src/csharp/Grpc.Core/Metadata.cs +++ b/src/csharp/Grpc.Core/Metadata.cs @@ -42,6 +42,12 @@ namespace Grpc.Core { /// <summary> /// A collection of metadata entries that can be exchanged during a call. + /// gRPC supports these types of metadata: + /// <list type="bullet"> + /// <item><term>Request headers</term><description>are sent by the client at the beginning of a remote call before any request messages are sent.</description></item> + /// <item><term>Response headers</term><description>are sent by the server at the beginning of a remote call handler before any response messages are sent.</description></item> + /// <item><term>Response trailers</term><description>are sent by the server at the end of a remote call along with resulting call status.</description></item> + /// </list> /// </summary> public sealed class Metadata : IList<Metadata.Entry> { @@ -195,7 +201,7 @@ namespace Grpc.Core } /// <summary> - /// Initializes a new instance of the <see cref="Grpc.Core.Metadata+Entry"/> struct with a binary value. + /// Initializes a new instance of the <see cref="Grpc.Core.Metadata.Entry"/> struct with a binary value. /// </summary> /// <param name="key">Metadata key, needs to have suffix indicating a binary valued metadata entry.</param> /// <param name="valueBytes">Value bytes.</param> @@ -211,7 +217,7 @@ namespace Grpc.Core } /// <summary> - /// Initializes a new instance of the <see cref="Grpc.Core.Metadata+Entry"/> struct holding an ASCII value. + /// Initializes a new instance of the <see cref="Grpc.Core.Metadata.Entry"/> struct holding an ASCII value. /// </summary> /// <param name="key">Metadata key, must not use suffix indicating a binary valued metadata entry.</param> /// <param name="value">Value string. Only ASCII characters are allowed.</param> @@ -278,7 +284,7 @@ namespace Grpc.Core } /// <summary> - /// Returns a <see cref="System.String"/> that represents the current <see cref="Grpc.Core.Metadata+Entry"/>. + /// Returns a <see cref="System.String"/> that represents the current <see cref="Grpc.Core.Metadata.Entry"/>. /// </summary> public override string ToString() { diff --git a/src/csharp/Grpc.Core/Method.cs b/src/csharp/Grpc.Core/Method.cs index 4c53285893..99162a7d5d 100644 --- a/src/csharp/Grpc.Core/Method.cs +++ b/src/csharp/Grpc.Core/Method.cs @@ -84,6 +84,8 @@ namespace Grpc.Core /// <summary> /// A description of a remote method. /// </summary> + /// <typeparam name="TRequest">Request message type for this method.</typeparam> + /// <typeparam name="TResponse">Response message type for this method.</typeparam> public class Method<TRequest, TResponse> : IMethod { readonly MethodType type; diff --git a/src/csharp/Grpc.Core/Server.cs b/src/csharp/Grpc.Core/Server.cs index 28f1686e20..7c94d21561 100644 --- a/src/csharp/Grpc.Core/Server.cs +++ b/src/csharp/Grpc.Core/Server.cs @@ -44,7 +44,7 @@ using Grpc.Core.Utils; namespace Grpc.Core { /// <summary> - /// A gRPC server. + /// gRPC server. A single server can server arbitrary number of services and can listen on more than one ports. /// </summary> public class Server { @@ -324,6 +324,9 @@ namespace Grpc.Core server.AddServiceDefinitionInternal(serviceDefinition); } + /// <summary> + /// Gets enumerator for this collection. + /// </summary> public IEnumerator<ServerServiceDefinition> GetEnumerator() { return server.serviceDefinitionsList.GetEnumerator(); @@ -369,6 +372,9 @@ namespace Grpc.Core return Add(new ServerPort(host, port, credentials)); } + /// <summary> + /// Gets enumerator for this collection. + /// </summary> public IEnumerator<ServerPort> GetEnumerator() { return server.serverPortList.GetEnumerator(); diff --git a/src/csharp/Grpc.Core/ServerCallContext.cs b/src/csharp/Grpc.Core/ServerCallContext.cs index 75d81c64f3..09a6b882a6 100644 --- a/src/csharp/Grpc.Core/ServerCallContext.cs +++ b/src/csharp/Grpc.Core/ServerCallContext.cs @@ -72,6 +72,13 @@ namespace Grpc.Core this.writeOptionsHolder = writeOptionsHolder; } + /// <summary> + /// 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 <c>WriteResponseHeadersAsync</c> haven't + /// been called yet. + /// </summary> + /// <param name="responseHeaders">The response headers to send.</param> + /// <returns>The task that finished once response headers have been written.</returns> public Task WriteResponseHeadersAsync(Metadata responseHeaders) { return writeHeadersFunc(responseHeaders); @@ -186,6 +193,9 @@ namespace Grpc.Core /// </summary> public interface IHasWriteOptions { + /// <summary> + /// Gets or sets the write options. + /// </summary> WriteOptions WriteOptions { get; set; } } } diff --git a/src/csharp/Grpc.Core/ServerMethods.cs b/src/csharp/Grpc.Core/ServerMethods.cs index 1f119a80ff..728f77cde5 100644 --- a/src/csharp/Grpc.Core/ServerMethods.cs +++ b/src/csharp/Grpc.Core/ServerMethods.cs @@ -38,6 +38,8 @@ namespace Grpc.Core /// <summary> /// Server-side handler for unary call. /// </summary> + /// <typeparam name="TRequest">Request message type for this method.</typeparam> + /// <typeparam name="TResponse">Response message type for this method.</typeparam> public delegate Task<TResponse> UnaryServerMethod<TRequest, TResponse>(TRequest request, ServerCallContext context) where TRequest : class where TResponse : class; @@ -45,6 +47,8 @@ namespace Grpc.Core /// <summary> /// Server-side handler for client streaming call. /// </summary> + /// <typeparam name="TRequest">Request message type for this method.</typeparam> + /// <typeparam name="TResponse">Response message type for this method.</typeparam> public delegate Task<TResponse> ClientStreamingServerMethod<TRequest, TResponse>(IAsyncStreamReader<TRequest> requestStream, ServerCallContext context) where TRequest : class where TResponse : class; @@ -52,6 +56,8 @@ namespace Grpc.Core /// <summary> /// Server-side handler for server streaming call. /// </summary> + /// <typeparam name="TRequest">Request message type for this method.</typeparam> + /// <typeparam name="TResponse">Response message type for this method.</typeparam> public delegate Task ServerStreamingServerMethod<TRequest, TResponse>(TRequest request, IServerStreamWriter<TResponse> responseStream, ServerCallContext context) where TRequest : class where TResponse : class; @@ -59,6 +65,8 @@ namespace Grpc.Core /// <summary> /// Server-side handler for bidi streaming call. /// </summary> + /// <typeparam name="TRequest">Request message type for this method.</typeparam> + /// <typeparam name="TResponse">Response message type for this method.</typeparam> public delegate Task DuplexStreamingServerMethod<TRequest, TResponse>(IAsyncStreamReader<TRequest> requestStream, IServerStreamWriter<TResponse> responseStream, ServerCallContext context) where TRequest : class where TResponse : class; diff --git a/src/csharp/Grpc.Core/ServerServiceDefinition.cs b/src/csharp/Grpc.Core/ServerServiceDefinition.cs index 94b0a320c3..deb1431ca3 100644 --- a/src/csharp/Grpc.Core/ServerServiceDefinition.cs +++ b/src/csharp/Grpc.Core/ServerServiceDefinition.cs @@ -40,6 +40,8 @@ namespace Grpc.Core { /// <summary> /// Mapping of method names to server call handlers. + /// Normally, the <c>ServerServiceDefinition</c> objects will be created by the <c>BindService</c> factory method + /// that is part of the autogenerated code for a protocol buffers service definition. /// </summary> public class ServerServiceDefinition { @@ -58,21 +60,41 @@ namespace Grpc.Core } } + /// <summary> + /// Creates a new builder object for <c>ServerServiceDefinition</c>. + /// </summary> + /// <param name="serviceName">The service name.</param> + /// <returns>The builder object.</returns> public static Builder CreateBuilder(string serviceName) { return new Builder(serviceName); } + /// <summary> + /// Builder class for <see cref="ServerServiceDefinition"/>. + /// </summary> public class Builder { readonly string serviceName; readonly Dictionary<string, IServerCallHandler> callHandlers = new Dictionary<string, IServerCallHandler>(); + /// <summary> + /// Creates a new instance of builder. + /// </summary> + /// <param name="serviceName">The service name.</param> public Builder(string serviceName) { this.serviceName = serviceName; } + /// <summary> + /// Adds a definitions for a single request - single response method. + /// </summary> + /// <typeparam name="TRequest">The request message class.</typeparam> + /// <typeparam name="TResponse">The response message class.</typeparam> + /// <param name="method">The method.</param> + /// <param name="handler">The method handler.</param> + /// <returns>This builder instance.</returns> public Builder AddMethod<TRequest, TResponse>( Method<TRequest, TResponse> method, UnaryServerMethod<TRequest, TResponse> handler) @@ -83,6 +105,14 @@ namespace Grpc.Core return this; } + /// <summary> + /// Adds a definitions for a client streaming method. + /// </summary> + /// <typeparam name="TRequest">The request message class.</typeparam> + /// <typeparam name="TResponse">The response message class.</typeparam> + /// <param name="method">The method.</param> + /// <param name="handler">The method handler.</param> + /// <returns>This builder instance.</returns> public Builder AddMethod<TRequest, TResponse>( Method<TRequest, TResponse> method, ClientStreamingServerMethod<TRequest, TResponse> handler) @@ -93,6 +123,14 @@ namespace Grpc.Core return this; } + /// <summary> + /// Adds a definitions for a server streaming method. + /// </summary> + /// <typeparam name="TRequest">The request message class.</typeparam> + /// <typeparam name="TResponse">The response message class.</typeparam> + /// <param name="method">The method.</param> + /// <param name="handler">The method handler.</param> + /// <returns>This builder instance.</returns> public Builder AddMethod<TRequest, TResponse>( Method<TRequest, TResponse> method, ServerStreamingServerMethod<TRequest, TResponse> handler) @@ -103,6 +141,14 @@ namespace Grpc.Core return this; } + /// <summary> + /// Adds a definitions for a bidirectional streaming method. + /// </summary> + /// <typeparam name="TRequest">The request message class.</typeparam> + /// <typeparam name="TResponse">The response message class.</typeparam> + /// <param name="method">The method.</param> + /// <param name="handler">The method handler.</param> + /// <returns>This builder instance.</returns> public Builder AddMethod<TRequest, TResponse>( Method<TRequest, TResponse> method, DuplexStreamingServerMethod<TRequest, TResponse> handler) @@ -113,6 +159,10 @@ namespace Grpc.Core return this; } + /// <summary> + /// Creates an immutable <c>ServerServiceDefinition</c> from this builder. + /// </summary> + /// <returns>The <c>ServerServiceDefinition</c> object.</returns> public ServerServiceDefinition Build() { return new ServerServiceDefinition(callHandlers); diff --git a/src/csharp/Grpc.Core/Utils/Preconditions.cs b/src/csharp/Grpc.Core/Utils/Preconditions.cs index 374262f87a..a8ab603391 100644 --- a/src/csharp/Grpc.Core/Utils/Preconditions.cs +++ b/src/csharp/Grpc.Core/Utils/Preconditions.cs @@ -43,6 +43,7 @@ namespace Grpc.Core.Utils /// <summary> /// Throws <see cref="ArgumentException"/> if condition is false. /// </summary> + /// <param name="condition">The condition.</param> public static void CheckArgument(bool condition) { if (!condition) @@ -54,6 +55,8 @@ namespace Grpc.Core.Utils /// <summary> /// Throws <see cref="ArgumentException"/> with given message if condition is false. /// </summary> + /// <param name="condition">The condition.</param> + /// <param name="errorMessage">The error message.</param> public static void CheckArgument(bool condition, string errorMessage) { if (!condition) @@ -65,6 +68,7 @@ namespace Grpc.Core.Utils /// <summary> /// Throws <see cref="ArgumentNullException"/> if reference is null. /// </summary> + /// <param name="reference">The reference.</param> public static T CheckNotNull<T>(T reference) { if (reference == null) @@ -77,6 +81,8 @@ namespace Grpc.Core.Utils /// <summary> /// Throws <see cref="ArgumentNullException"/> if reference is null. /// </summary> + /// <param name="reference">The reference.</param> + /// <param name="paramName">The parameter name.</param> public static T CheckNotNull<T>(T reference, string paramName) { if (reference == null) @@ -89,6 +95,7 @@ namespace Grpc.Core.Utils /// <summary> /// Throws <see cref="InvalidOperationException"/> if condition is false. /// </summary> + /// <param name="condition">The condition.</param> public static void CheckState(bool condition) { if (!condition) @@ -100,6 +107,8 @@ namespace Grpc.Core.Utils /// <summary> /// Throws <see cref="InvalidOperationException"/> with given message if condition is false. /// </summary> + /// <param name="condition">The condition.</param> + /// <param name="errorMessage">The error message.</param> public static void CheckState(bool condition, string errorMessage) { if (!condition) diff --git a/src/csharp/Grpc.Core/WriteOptions.cs b/src/csharp/Grpc.Core/WriteOptions.cs index 7ef3189d76..7523ada84a 100644 --- a/src/csharp/Grpc.Core/WriteOptions.cs +++ b/src/csharp/Grpc.Core/WriteOptions.cs @@ -66,11 +66,18 @@ namespace Grpc.Core private WriteFlags flags; + /// <summary> + /// Initializes a new instance of <c>WriteOptions</c> class. + /// </summary> + /// <param name="flags">The write flags.</param> public WriteOptions(WriteFlags flags = default(WriteFlags)) { this.flags = flags; } + /// <summary> + /// Gets the write flags. + /// </summary> public WriteFlags Flags { get diff --git a/src/csharp/Grpc.HealthCheck/HealthServiceImpl.cs b/src/csharp/Grpc.HealthCheck/HealthServiceImpl.cs index 3c3b9c35f1..8c04b43a86 100644 --- a/src/csharp/Grpc.HealthCheck/HealthServiceImpl.cs +++ b/src/csharp/Grpc.HealthCheck/HealthServiceImpl.cs @@ -95,6 +95,12 @@ namespace Grpc.HealthCheck } } + /// <summary> + /// Performs a health status check. + /// </summary> + /// <param name="request">The check request.</param> + /// <param name="context">The call context.</param> + /// <returns>The asynchronous response.</returns> public Task<HealthCheckResponse> Check(HealthCheckRequest request, ServerCallContext context) { lock (myLock) diff --git a/src/csharp/doc/grpc_csharp_public.shfbproj b/src/csharp/doc/grpc_csharp_public.shfbproj index 05c93f4a13..d9b9749819 100644 --- a/src/csharp/doc/grpc_csharp_public.shfbproj +++ b/src/csharp/doc/grpc_csharp_public.shfbproj @@ -18,7 +18,8 @@ <Language>en-US</Language> <DocumentationSources> <DocumentationSource sourceFile="..\Grpc.Auth\Grpc.Auth.csproj" /> -<DocumentationSource sourceFile="..\Grpc.Core\Grpc.Core.csproj" /></DocumentationSources> + <DocumentationSource sourceFile="..\Grpc.Core\Grpc.Core.csproj" /> + </DocumentationSources> <BuildAssemblerVerbosity>OnlyWarningsAndErrors</BuildAssemblerVerbosity> <HelpFileFormat>Website</HelpFileFormat> <IndentHtml>False</IndentHtml> @@ -37,6 +38,15 @@ <HelpTitle>gRPC C#</HelpTitle> <ContentPlacement>AboveNamespaces</ContentPlacement> <HtmlHelpName>Documentation</HtmlHelpName> + <NamespaceSummaries> + <NamespaceSummaryItem name="Grpc.Auth" isDocumented="True">Provides OAuth2 based authentication for gRPC. <c>Grpc.Auth</c> currently consists of a set of very lightweight wrappers and uses C# <a href="https://www.nuget.org/packages/Google.Apis.Auth/">Google.Apis.Auth</a> library.</NamespaceSummaryItem> +<NamespaceSummaryItem name="Grpc.Core" isDocumented="True">Main namespace for gRPC C# functionality. Contains concepts representing both client side and server side gRPC logic. + +<seealso cref="Grpc.Core.Channel"/> +<seealso cref="Grpc.Core.Server"/></NamespaceSummaryItem> +<NamespaceSummaryItem name="Grpc.Core.Logging" isDocumented="True">Provides functionality to redirect gRPC logs to application-specified destination.</NamespaceSummaryItem> +<NamespaceSummaryItem name="Grpc.Core.Utils" isDocumented="True">Various utilities for gRPC C#.</NamespaceSummaryItem></NamespaceSummaries> + <MissingTags>Summary, Parameter, AutoDocumentCtors, Namespace, TypeParameter, AutoDocumentDispose</MissingTags> </PropertyGroup> <!-- There are no properties for these groups. AnyCPU needs to appear in order for Visual Studio to perform the build. The others are optional common platform types that may appear. --> -- GitLab From f209c587033d333705fe40ab349dc5ddda18df3a Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Mon, 24 Aug 2015 17:47:35 -0700 Subject: [PATCH 163/178] added generated docs --- 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 | 18 + .../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 0 -> 618 bytes doc/ref/csharp/html/icons/AlertNote.png | Bin 0 -> 3236 bytes doc/ref/csharp/html/icons/AlertSecurity.png | Bin 0 -> 503 bytes doc/ref/csharp/html/icons/CFW.gif | Bin 0 -> 588 bytes doc/ref/csharp/html/icons/CodeExample.png | Bin 0 -> 196 bytes doc/ref/csharp/html/icons/Search.png | Bin 0 -> 343 bytes .../csharp/html/icons/SectionCollapsed.png | Bin 0 -> 229 bytes doc/ref/csharp/html/icons/SectionExpanded.png | Bin 0 -> 223 bytes doc/ref/csharp/html/icons/TocClose.gif | Bin 0 -> 893 bytes doc/ref/csharp/html/icons/TocCollapsed.gif | Bin 0 -> 838 bytes doc/ref/csharp/html/icons/TocExpanded.gif | Bin 0 -> 837 bytes doc/ref/csharp/html/icons/TocOpen.gif | Bin 0 -> 896 bytes doc/ref/csharp/html/icons/favicon.ico | Bin 0 -> 25094 bytes doc/ref/csharp/html/icons/privclass.gif | Bin 0 -> 621 bytes doc/ref/csharp/html/icons/privdelegate.gif | Bin 0 -> 1045 bytes doc/ref/csharp/html/icons/privenumeration.gif | Bin 0 -> 597 bytes doc/ref/csharp/html/icons/privevent.gif | Bin 0 -> 580 bytes doc/ref/csharp/html/icons/privextension.gif | Bin 0 -> 608 bytes doc/ref/csharp/html/icons/privfield.gif | Bin 0 -> 574 bytes doc/ref/csharp/html/icons/privinterface.gif | Bin 0 -> 585 bytes doc/ref/csharp/html/icons/privmethod.gif | Bin 0 -> 603 bytes doc/ref/csharp/html/icons/privproperty.gif | Bin 0 -> 1054 bytes doc/ref/csharp/html/icons/privstructure.gif | Bin 0 -> 630 bytes doc/ref/csharp/html/icons/protclass.gif | Bin 0 -> 600 bytes doc/ref/csharp/html/icons/protdelegate.gif | Bin 0 -> 1041 bytes doc/ref/csharp/html/icons/protenumeration.gif | Bin 0 -> 583 bytes doc/ref/csharp/html/icons/protevent.gif | Bin 0 -> 564 bytes doc/ref/csharp/html/icons/protextension.gif | Bin 0 -> 589 bytes doc/ref/csharp/html/icons/protfield.gif | Bin 0 -> 570 bytes doc/ref/csharp/html/icons/protinterface.gif | Bin 0 -> 562 bytes doc/ref/csharp/html/icons/protmethod.gif | Bin 0 -> 183 bytes doc/ref/csharp/html/icons/protoperator.gif | Bin 0 -> 547 bytes doc/ref/csharp/html/icons/protproperty.gif | Bin 0 -> 1039 bytes doc/ref/csharp/html/icons/protstructure.gif | Bin 0 -> 619 bytes doc/ref/csharp/html/icons/pubclass.gif | Bin 0 -> 368 bytes doc/ref/csharp/html/icons/pubdelegate.gif | Bin 0 -> 1041 bytes doc/ref/csharp/html/icons/pubenumeration.gif | Bin 0 -> 339 bytes doc/ref/csharp/html/icons/pubevent.gif | Bin 0 -> 314 bytes doc/ref/csharp/html/icons/pubextension.gif | Bin 0 -> 551 bytes doc/ref/csharp/html/icons/pubfield.gif | Bin 0 -> 311 bytes doc/ref/csharp/html/icons/pubinterface.gif | Bin 0 -> 314 bytes doc/ref/csharp/html/icons/pubmethod.gif | Bin 0 -> 329 bytes doc/ref/csharp/html/icons/puboperator.gif | Bin 0 -> 310 bytes doc/ref/csharp/html/icons/pubproperty.gif | Bin 0 -> 609 bytes doc/ref/csharp/html/icons/pubstructure.gif | Bin 0 -> 595 bytes doc/ref/csharp/html/icons/slMobile.gif | Bin 0 -> 909 bytes doc/ref/csharp/html/icons/static.gif | Bin 0 -> 879 bytes doc/ref/csharp/html/icons/xna.gif | Bin 0 -> 549 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, 8682 insertions(+) create mode 100644 doc/ref/csharp/.gitignore create mode 100644 doc/ref/csharp/html/SearchHelp.aspx create mode 100644 doc/ref/csharp/html/SearchHelp.inc.php create mode 100644 doc/ref/csharp/html/SearchHelp.php create mode 100644 doc/ref/csharp/html/Web.Config create mode 100644 doc/ref/csharp/html/WebKI.xml create mode 100644 doc/ref/csharp/html/WebTOC.xml create mode 100644 doc/ref/csharp/html/fti/FTI_100.json create mode 100644 doc/ref/csharp/html/fti/FTI_101.json create mode 100644 doc/ref/csharp/html/fti/FTI_102.json create mode 100644 doc/ref/csharp/html/fti/FTI_103.json create mode 100644 doc/ref/csharp/html/fti/FTI_104.json create mode 100644 doc/ref/csharp/html/fti/FTI_105.json create mode 100644 doc/ref/csharp/html/fti/FTI_107.json create mode 100644 doc/ref/csharp/html/fti/FTI_108.json create mode 100644 doc/ref/csharp/html/fti/FTI_109.json create mode 100644 doc/ref/csharp/html/fti/FTI_110.json create mode 100644 doc/ref/csharp/html/fti/FTI_111.json create mode 100644 doc/ref/csharp/html/fti/FTI_112.json create mode 100644 doc/ref/csharp/html/fti/FTI_113.json create mode 100644 doc/ref/csharp/html/fti/FTI_114.json create mode 100644 doc/ref/csharp/html/fti/FTI_115.json create mode 100644 doc/ref/csharp/html/fti/FTI_116.json create mode 100644 doc/ref/csharp/html/fti/FTI_117.json create mode 100644 doc/ref/csharp/html/fti/FTI_118.json create mode 100644 doc/ref/csharp/html/fti/FTI_119.json create mode 100644 doc/ref/csharp/html/fti/FTI_122.json create mode 100644 doc/ref/csharp/html/fti/FTI_97.json create mode 100644 doc/ref/csharp/html/fti/FTI_98.json create mode 100644 doc/ref/csharp/html/fti/FTI_99.json create mode 100644 doc/ref/csharp/html/fti/FTI_Files.json create mode 100644 doc/ref/csharp/html/html/Events_T_Grpc_Core_RpcException.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Census.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_DefaultAuthority.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxMessageLength.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ContextPropagationOptions_Default.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_Metadata_Empty.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ServerPort_PickUnused.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultCancelled.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultSuccess.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_VersionInfo_CurrentVersion.htm create mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_WriteOptions_Default.htm create mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_ChannelOptions.htm create mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_ContextPropagationOptions.htm create mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_Metadata.htm create mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_ServerPort.htm create mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_Status.htm create mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_VersionInfo.htm create mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_WriteOptions.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromCredential.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithCancellationToken.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithDeadline.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithHeaders.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallOptions__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Channel_ConnectAsync.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Channel_ShutdownAsync.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Channel_WaitForStateChangedAsync.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ClientBase_CreateCall__2.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ClientBase__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ContextPropagationOptions__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Credentials__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_GrpcEnvironment_SetLogger.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_KeyCertificatePair__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Debug.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Info.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Debug.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_ForType__1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Info.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Marshaller_1__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Marshallers_Create__1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_2.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Clear.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Contains.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_CopyTo.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry_ToString.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_GetEnumerator.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_IndexOf.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Insert.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Remove.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_RemoveAt.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Method_2__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerCredentials__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerPort__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_KillAsync.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ShutdownAsync.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_Start.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_2.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Status_ToString.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Status__ctor.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState_1.htm create mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_WriteOptions__ctor.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Auth_AuthInterceptors.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallOptions.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Calls.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Channel.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ChannelOption.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ClientBase.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationOptions.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationToken.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Credentials.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_GrpcEnvironment.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamReader_1.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_IServerStreamWriter_1.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_KeyCertificatePair.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ConsoleLogger.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ILogger.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshaller_1.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshallers.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata_Entry.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Method_2.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_RpcException.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCallContext.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCredentials.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerPort.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServerPortCollection.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslCredentials.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslServerCredentials.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Status.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_Preconditions.htm create mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_WriteOptions.htm create mode 100644 doc/ref/csharp/html/html/N_Grpc_Auth.htm create mode 100644 doc/ref/csharp/html/html/N_Grpc_Core.htm create mode 100644 doc/ref/csharp/html/html/N_Grpc_Core_Logging.htm create mode 100644 doc/ref/csharp/html/html/N_Grpc_Core_Utils.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_ChannelOption__ctor.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Channel__ctor.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Error.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Warning.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Add.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Entry__ctor.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_RpcException__ctor.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_SslCredentials__ctor.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_SslServerCredentials__ctor.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm create mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Host.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Method.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Options.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_CancellationToken.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Deadline.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Headers.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_PropagationToken.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_WriteOptions.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_IntValue.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Name.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_StringValue.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Type.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Channel_ResolvedTarget.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Channel_State.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Channel_Target.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Channel.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_HeaderInterceptor.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Host.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Credentials_Insecure.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_GrpcEnvironment_Logger.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IHasWriteOptions_WriteOptions.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IMethod_FullName.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Name.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IMethod_ServiceName.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Type.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_CertificateChain.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_PrivateKey.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Deserializer.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Serializer.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Marshallers_StringMarshaller.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Count.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_IsBinary.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Key.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Value.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_ValueBytes.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_IsReadOnly.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Item.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_FullName.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Name.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_RequestMarshaller.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ResponseMarshaller.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ServiceName.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Type.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_RpcException_Status.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_CancellationToken.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Deadline.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Host.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Method.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Peer.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_RequestHeaders.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_ResponseTrailers.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Status.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_WriteOptions.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCredentials_Insecure.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_BoundPort.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Credentials.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Host.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Port.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Server_Ports.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Server_Services.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Server_ShutdownTask.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_KeyCertificatePair.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_RootCertificates.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_RootCertificates.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Status_Detail.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Status_StatusCode.htm create mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_WriteOptions_Flags.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallOptions.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Channel.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ChannelOption.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ClientBase.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ContextPropagationOptions.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Credentials.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_GrpcEnvironment.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamReader_1.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IClientStreamWriter_1.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IHasWriteOptions.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IMethod.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IServerStreamWriter_1.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_KeyCertificatePair.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshaller_1.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshallers.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata_Entry.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Method_2.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_RpcException.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Server.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCallContext.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCredentials.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerPort.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslCredentials.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslServerCredentials.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Status.htm create mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_WriteOptions.htm create mode 100644 doc/ref/csharp/html/html/R_Project_Documentation.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Auth_AuthInterceptors.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_AsyncClientStreamingCall_2.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_AsyncServerStreamingCall_1.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_AsyncUnaryCall_1.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_CallInvocationDetails_2.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_CallOptions.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Calls.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Channel.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption_OptionType.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ChannelOptions.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ChannelState.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ClientBase.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ClientStreamingServerMethod_2.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_CompressionLevel.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationOptions.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationToken.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Credentials.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_GrpcEnvironment.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_HeaderInterceptor.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamReader_1.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamWriter_1.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IClientStreamWriter_1.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IHasWriteOptions.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IMethod.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IServerStreamWriter_1.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_KeyCertificatePair.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Logging_ConsoleLogger.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Logging_ILogger.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Marshaller_1.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Marshallers.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Metadata.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Metadata_Entry.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_MethodType.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Method_2.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_RpcException.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Server.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerCallContext.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerCredentials.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerPort.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition_Builder.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerStreamingServerMethod_2.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Server_ServerPortCollection.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_SslCredentials.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_SslServerCredentials.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Status.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_StatusCode.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_UnaryServerMethod_2.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Utils_BenchmarkUtil.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Utils_Preconditions.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_VersionInfo.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_WriteFlags.htm create mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_WriteOptions.htm create mode 100644 doc/ref/csharp/html/icons/AlertCaution.png create mode 100644 doc/ref/csharp/html/icons/AlertNote.png create mode 100644 doc/ref/csharp/html/icons/AlertSecurity.png create mode 100644 doc/ref/csharp/html/icons/CFW.gif create mode 100644 doc/ref/csharp/html/icons/CodeExample.png create mode 100644 doc/ref/csharp/html/icons/Search.png create mode 100644 doc/ref/csharp/html/icons/SectionCollapsed.png create mode 100644 doc/ref/csharp/html/icons/SectionExpanded.png create mode 100644 doc/ref/csharp/html/icons/TocClose.gif create mode 100644 doc/ref/csharp/html/icons/TocCollapsed.gif create mode 100644 doc/ref/csharp/html/icons/TocExpanded.gif create mode 100644 doc/ref/csharp/html/icons/TocOpen.gif create mode 100644 doc/ref/csharp/html/icons/favicon.ico create mode 100644 doc/ref/csharp/html/icons/privclass.gif create mode 100644 doc/ref/csharp/html/icons/privdelegate.gif create mode 100644 doc/ref/csharp/html/icons/privenumeration.gif create mode 100644 doc/ref/csharp/html/icons/privevent.gif create mode 100644 doc/ref/csharp/html/icons/privextension.gif create mode 100644 doc/ref/csharp/html/icons/privfield.gif create mode 100644 doc/ref/csharp/html/icons/privinterface.gif create mode 100644 doc/ref/csharp/html/icons/privmethod.gif create mode 100644 doc/ref/csharp/html/icons/privproperty.gif create mode 100644 doc/ref/csharp/html/icons/privstructure.gif create mode 100644 doc/ref/csharp/html/icons/protclass.gif create mode 100644 doc/ref/csharp/html/icons/protdelegate.gif create mode 100644 doc/ref/csharp/html/icons/protenumeration.gif create mode 100644 doc/ref/csharp/html/icons/protevent.gif create mode 100644 doc/ref/csharp/html/icons/protextension.gif create mode 100644 doc/ref/csharp/html/icons/protfield.gif create mode 100644 doc/ref/csharp/html/icons/protinterface.gif create mode 100644 doc/ref/csharp/html/icons/protmethod.gif create mode 100644 doc/ref/csharp/html/icons/protoperator.gif create mode 100644 doc/ref/csharp/html/icons/protproperty.gif create mode 100644 doc/ref/csharp/html/icons/protstructure.gif create mode 100644 doc/ref/csharp/html/icons/pubclass.gif create mode 100644 doc/ref/csharp/html/icons/pubdelegate.gif create mode 100644 doc/ref/csharp/html/icons/pubenumeration.gif create mode 100644 doc/ref/csharp/html/icons/pubevent.gif create mode 100644 doc/ref/csharp/html/icons/pubextension.gif create mode 100644 doc/ref/csharp/html/icons/pubfield.gif create mode 100644 doc/ref/csharp/html/icons/pubinterface.gif create mode 100644 doc/ref/csharp/html/icons/pubmethod.gif create mode 100644 doc/ref/csharp/html/icons/puboperator.gif create mode 100644 doc/ref/csharp/html/icons/pubproperty.gif create mode 100644 doc/ref/csharp/html/icons/pubstructure.gif create mode 100644 doc/ref/csharp/html/icons/slMobile.gif create mode 100644 doc/ref/csharp/html/icons/static.gif create mode 100644 doc/ref/csharp/html/icons/xna.gif create mode 100644 doc/ref/csharp/html/index.html create mode 100644 doc/ref/csharp/html/scripts/branding-Website.js create mode 100644 doc/ref/csharp/html/scripts/branding.js create mode 100644 doc/ref/csharp/html/scripts/jquery-1.11.0.min.js create mode 100644 doc/ref/csharp/html/search.html create mode 100644 doc/ref/csharp/html/styles/branding-Help1.css create mode 100644 doc/ref/csharp/html/styles/branding-HelpViewer.css create mode 100644 doc/ref/csharp/html/styles/branding-Website.css create mode 100644 doc/ref/csharp/html/styles/branding-cs-CZ.css create mode 100644 doc/ref/csharp/html/styles/branding-de-DE.css create mode 100644 doc/ref/csharp/html/styles/branding-en-US.css create mode 100644 doc/ref/csharp/html/styles/branding-es-ES.css create mode 100644 doc/ref/csharp/html/styles/branding-fr-FR.css create mode 100644 doc/ref/csharp/html/styles/branding-it-IT.css create mode 100644 doc/ref/csharp/html/styles/branding-ja-JP.css create mode 100644 doc/ref/csharp/html/styles/branding-ko-KR.css create mode 100644 doc/ref/csharp/html/styles/branding-pl-PL.css create mode 100644 doc/ref/csharp/html/styles/branding-pt-BR.css create mode 100644 doc/ref/csharp/html/styles/branding-ru-RU.css create mode 100644 doc/ref/csharp/html/styles/branding-tr-TR.css create mode 100644 doc/ref/csharp/html/styles/branding-zh-CN.css create mode 100644 doc/ref/csharp/html/styles/branding-zh-TW.css create mode 100644 doc/ref/csharp/html/styles/branding.css create mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ChannelOptions.xml create mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ContextPropagationOptions.xml create mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Metadata.xml create mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ServerPort.xml create mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Status.xml create mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_VersionInfo.xml create mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_WriteOptions.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Auth_AuthInterceptors.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncUnaryCall_1.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallInvocationDetails_2.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallOptions.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Calls.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Channel.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ClientBase.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_GrpcEnvironment.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IAsyncStreamWriter_1.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IClientStreamWriter_1.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ConsoleLogger.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ILogger.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Marshallers.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata_Entry.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerCallContext.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServerPortCollection.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Status.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_BenchmarkUtil.xml create mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_Preconditions.xml create mode 100644 doc/ref/csharp/html/toc/N_Grpc_Auth.xml create mode 100644 doc/ref/csharp/html/toc/N_Grpc_Core.xml create mode 100644 doc/ref/csharp/html/toc/N_Grpc_Core_Logging.xml create mode 100644 doc/ref/csharp/html/toc/N_Grpc_Core_Utils.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_CallInvocationDetails_2__ctor.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_ChannelOption__ctor.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Channel__ctor.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Error.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Error.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Warning.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Add.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Entry__ctor.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_RpcException__ctor.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Server_ServerPortCollection_Add.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_SslCredentials__ctor.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_SslServerCredentials__ctor.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.xml create mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckState.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncUnaryCall_1.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallInvocationDetails_2.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallOptions.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Channel.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ChannelOption.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ClientBase.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ContextPropagationOptions.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Credentials.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_GrpcEnvironment.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IAsyncStreamWriter_1.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IHasWriteOptions.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IMethod.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_KeyCertificatePair.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshaller_1.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshallers.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata_Entry.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Method_2.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_RpcException.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Server.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCallContext.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCredentials.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerPort.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslCredentials.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslServerCredentials.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Status.xml create mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_WriteOptions.xml create mode 100644 doc/ref/csharp/html/toc/R_Project_Documentation.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Auth_AuthInterceptors.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_AsyncClientStreamingCall_2.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_AsyncDuplexStreamingCall_2.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_AsyncServerStreamingCall_1.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_AsyncUnaryCall_1.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_CallInvocationDetails_2.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_CallOptions.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Calls.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Channel.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOption.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOptions.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ClientBase.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationOptions.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationToken.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Credentials.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_GrpcEnvironment.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamReader_1.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamWriter_1.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IClientStreamWriter_1.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IHasWriteOptions.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IMethod.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IServerStreamWriter_1.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_KeyCertificatePair.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ConsoleLogger.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ILogger.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Marshaller_1.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Marshallers.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Metadata.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Metadata_Entry.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Method_2.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_RpcException.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Server.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ServerCallContext.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ServerCredentials.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ServerPort.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition_Builder.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServerPortCollection.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServiceDefinitionCollection.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_SslCredentials.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_SslServerCredentials.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Status.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Utils_AsyncStreamExtensions.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Utils_BenchmarkUtil.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Utils_Preconditions.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_VersionInfo.xml create mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_WriteOptions.xml create mode 100644 doc/ref/csharp/html/toc/roottoc.xml diff --git a/doc/ref/csharp/.gitignore b/doc/ref/csharp/.gitignore new file mode 100644 index 0000000000..809997171c --- /dev/null +++ b/doc/ref/csharp/.gitignore @@ -0,0 +1 @@ +LastBuild.log diff --git a/doc/ref/csharp/html/SearchHelp.aspx b/doc/ref/csharp/html/SearchHelp.aspx new file mode 100644 index 0000000000..6e2a17b6ab --- /dev/null +++ b/doc/ref/csharp/html/SearchHelp.aspx @@ -0,0 +1,233 @@ +<%@ Page Language="C#" EnableViewState="False" %> + +<script runat="server"> +//=============================================================================================================== +// System : Sandcastle Help File Builder +// File : SearchHelp.aspx +// Author : Eric Woodruff (Eric@EWoodruff.us) +// Updated : 05/15/2014 +// Note : Copyright 2007-2015, Eric Woodruff, All rights reserved +// Compiler: Microsoft C# +// +// This file contains the code used to search for keywords within the help topics using the full-text index +// files created by the help file builder. +// +// 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 +// ============================================================================================================== +// 06/24/2007 EFW Created the code +// 02/17/2012 EFW Switched to JSON serialization to support websites that use something other than ASP.NET +// such as PHP. +// 05/15/2014 EFW Updated for use with the lightweight website presentation styles +//=============================================================================================================== + +/// <summary> +/// This class is used to track the results and their rankings +/// </summary> +private class Ranking +{ + public string Filename, PageTitle; + public int Rank; + + public Ranking(string file, string title, int rank) + { + Filename = file; + PageTitle = title; + Rank = rank; + } +} + +/// <summary> +/// Render the search results +/// </summary> +/// <param name="writer">The writer to which the results are written</param> +protected override void Render(HtmlTextWriter writer) +{ + JavaScriptSerializer jss = new JavaScriptSerializer(); + string searchText, ftiFile; + char letter; + bool sortByTitle = false; + + jss.MaxJsonLength = Int32.MaxValue; + + // The keywords for which to search should be passed in the query string + searchText = this.Request.QueryString["Keywords"]; + + if(String.IsNullOrEmpty(searchText)) + { + writer.Write("<strong>Nothing found</strong>"); + return; + } + + // An optional SortByTitle option can also be specified + if(this.Request.QueryString["SortByTitle"] != null) + sortByTitle = Convert.ToBoolean(this.Request.QueryString["SortByTitle"]); + + List<string> keywords = this.ParseKeywords(searchText); + List<char> letters = new List<char>(); + List<string> fileList; + Dictionary<string, List<long>> ftiWords, wordDictionary = new Dictionary<string,List<long>>(); + + // Load the file index + using(StreamReader sr = new StreamReader(Server.MapPath("fti/FTI_Files.json"))) + { + fileList = jss.Deserialize<List<string>>(sr.ReadToEnd()); + } + + // Load the required word index files + foreach(string word in keywords) + { + letter = word[0]; + + if(!letters.Contains(letter)) + { + letters.Add(letter); + ftiFile = Server.MapPath(String.Format(CultureInfo.InvariantCulture, "fti/FTI_{0}.json", (int)letter)); + + if(File.Exists(ftiFile)) + { + using(StreamReader sr = new StreamReader(ftiFile)) + { + ftiWords = jss.Deserialize<Dictionary<string, List<long>>>(sr.ReadToEnd()); + } + + foreach(string ftiWord in ftiWords.Keys) + wordDictionary.Add(ftiWord, ftiWords[ftiWord]); + } + } + } + + // Perform the search and return the results as a block of HTML + writer.Write(this.Search(keywords, fileList, wordDictionary, sortByTitle)); +} + +/// <summary> +/// Split the search text up into keywords +/// </summary> +/// <param name="keywords">The keywords to parse</param> +/// <returns>A list containing the words for which to search</returns> +private List<string> ParseKeywords(string keywords) +{ + List<string> keywordList = new List<string>(); + string checkWord; + string[] words = Regex.Split(keywords, @"\W+"); + + foreach(string word in words) + { + checkWord = word.ToLower(CultureInfo.InvariantCulture); + + if(checkWord.Length > 2 && !Char.IsDigit(checkWord[0]) && !keywordList.Contains(checkWord)) + keywordList.Add(checkWord); + } + + return keywordList; +} + +/// <summary> +/// Search for the specified keywords and return the results as a block of HTML +/// </summary> +/// <param name="keywords">The keywords for which to search</param> +/// <param name="fileInfo">The file list</param> +/// <param name="wordDictionary">The dictionary used to find the words</param> +/// <param name="sortByTitle">True to sort by title, false to sort by ranking</param> +/// <returns>A block of HTML representing the search results</returns> +private string Search(List<string> keywords, List<string> fileInfo, + Dictionary<string, List<long>> wordDictionary, bool sortByTitle) +{ + StringBuilder sb = new StringBuilder(10240); + Dictionary<string, List<long>> matches = new Dictionary<string, List<long>>(); + List<long> occurrences; + List<int> matchingFileIndices = new List<int>(), occurrenceIndices = new List<int>(); + List<Ranking> rankings = new List<Ranking>(); + + string filename, title; + string[] fileIndex; + bool isFirst = true; + int idx, wordCount, matchCount; + + foreach(string word in keywords) + { + if(!wordDictionary.TryGetValue(word, out occurrences)) + return "<strong>Nothing found</strong>"; + + matches.Add(word, occurrences); + occurrenceIndices.Clear(); + + // Get a list of the file indices for this match + foreach(long entry in occurrences) + occurrenceIndices.Add((int)(entry >> 16)); + + if(isFirst) + { + isFirst = false; + matchingFileIndices.AddRange(occurrenceIndices); + } + else + { + // After the first match, remove files that do not appear for + // all found keywords. + for(idx = 0; idx < matchingFileIndices.Count; idx++) + if(!occurrenceIndices.Contains(matchingFileIndices[idx])) + { + matchingFileIndices.RemoveAt(idx); + idx--; + } + } + } + + if(matchingFileIndices.Count == 0) + return "<strong>Nothing found</strong>"; + + // Rank the files based on the number of times the words occurs + foreach(int index in matchingFileIndices) + { + // Split out the title, filename, and word count + fileIndex = fileInfo[index].Split('\x0'); + + title = fileIndex[0]; + filename = fileIndex[1]; + wordCount = Convert.ToInt32(fileIndex[2]); + matchCount = 0; + + foreach(string word in keywords) + { + occurrences = matches[word]; + + foreach(long entry in occurrences) + if((int)(entry >> 16) == index) + matchCount += (int)(entry & 0xFFFF); + } + + rankings.Add(new Ranking(filename, title, matchCount * 1000 / wordCount)); + + if(rankings.Count > 99) + break; + } + + // Sort by rank in descending order or by page title in ascending order + rankings.Sort(delegate (Ranking x, Ranking y) + { + if(!sortByTitle) + return y.Rank - x.Rank; + + return x.PageTitle.CompareTo(y.PageTitle); + }); + + // Format the file list and return the results + sb.Append("<ol>"); + + foreach(Ranking r in rankings) + sb.AppendFormat("<li><a href=\"{0}\" target=\"_blank\">{1}</a></li>", r.Filename, r.PageTitle); + + sb.Append("</ol>"); + + if(rankings.Count < matchingFileIndices.Count) + sb.AppendFormat("<p>Omitted {0} more results</p>", matchingFileIndices.Count - rankings.Count); + + return sb.ToString(); +} +</script> diff --git a/doc/ref/csharp/html/SearchHelp.inc.php b/doc/ref/csharp/html/SearchHelp.inc.php new file mode 100644 index 0000000000..b905e130cf --- /dev/null +++ b/doc/ref/csharp/html/SearchHelp.inc.php @@ -0,0 +1,173 @@ +<? +// 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; + } +} + + +/// <summary> +/// Split the search text up into keywords +/// </summary> +/// <param name="keywords">The keywords to parse</param> +/// <returns>A list containing the words for which to search</returns> +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; +} + + +/// <summary> +/// Search for the specified keywords and return the results as a block of +/// HTML. +/// </summary> +/// <param name="keywords">The keywords for which to search</param> +/// <param name="fileInfo">The file list</param> +/// <param name="wordDictionary">The dictionary used to find the words</param> +/// <param name="sortByTitle">True to sort by title, false to sort by +/// ranking</param> +/// <returns>A block of HTML representing the search results.</returns> +function Search($keywords, $fileInfo, $wordDictionary, $sortByTitle) +{ + $sb = "<ol>"; + $matches = array(); + $matchingFileIndices = array(); + $rankings = array(); + + $isFirst = true; + + foreach($keywords as $word) + { + if (!array_key_exists($word, $wordDictionary)) + { + return "<strong>Nothing found</strong>"; + } + $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 "<strong>Nothing found</strong>"; + } + + // 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 .= "<li><a href=\"$f\" target=\"_blank\">$t</a></li>"; + } + + $sb .= "</ol"; + + if(count($rankings) < count($matchingFileIndices)) + { + $c = count(matchingFileIndices) - count(rankings); + $sb .= "<p>Omitted $c more results</p>"; + } + + 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 new file mode 100644 index 0000000000..eaa1e117f9 --- /dev/null +++ b/doc/ref/csharp/html/SearchHelp.php @@ -0,0 +1,58 @@ +<? +// 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)) + { + ?> + <strong>Nothing found</strong> + <? + 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 new file mode 100644 index 0000000000..26672e8189 --- /dev/null +++ b/doc/ref/csharp/html/Web.Config @@ -0,0 +1,31 @@ +<?xml version="1.0"?> +<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> + <system.web> + <compilation debug="false"> + <assemblies> + <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> + </assemblies> + </compilation> + <pages> + <namespaces> + <add namespace="System"/> + <add namespace="System.Collections.Generic"/> + <add namespace="System.Globalization"/> + <add namespace="System.IO"/> + <add namespace="System.Text"/> + <add namespace="System.Text.RegularExpressions"/> + <add namespace="System.Web"/> + <add namespace="System.Web.Script.Serialization"/> + <add namespace="System.Web.UI"/> + <add namespace="System.Xml"/> + <add namespace="System.Xml.Serialization" /> + <add namespace="System.Xml.XPath"/> + </namespaces> + </pages> + </system.web> + <appSettings> + <!-- Increase this value if you get an "Operation is not valid due to the current state of the object" error + when using the search page. --> + <add key="aspnet:MaxJsonDeserializerMembers" value="100000" /> + </appSettings> +</configuration> diff --git a/doc/ref/csharp/html/WebKI.xml b/doc/ref/csharp/html/WebKI.xml new file mode 100644 index 0000000000..1318ed5f17 --- /dev/null +++ b/doc/ref/csharp/html/WebKI.xml @@ -0,0 +1,1005 @@ +<?xml version="1.0" encoding="utf-8"?> +<HelpKI> + <HelpKINode Title="Aborted enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="Add method"> + <HelpKINode Title="Metadata.Add Method " Url="html/Overload_Grpc_Core_Metadata_Add.htm" /> + <HelpKINode Title="Server.ServiceDefinitionCollection.Add Method " Url="html/M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm" /> + <HelpKINode Title="ServerPortCollection.Add Method " Url="html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm" /> + </HelpKINode> + <HelpKINode Title="AddMethod method" Url="html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm" /> + <HelpKINode Title="AlreadyExists enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="AsyncClientStreamingCall(Of TRequest, TResponse) class"> + <HelpKINode Title="AsyncClientStreamingCall(TRequest, TResponse) Class" Url="html/T_Grpc_Core_AsyncClientStreamingCall_2.htm" /> + <HelpKINode Title="about AsyncClientStreamingCall(Of TRequest, TResponse) class" Url="html/T_Grpc_Core_AsyncClientStreamingCall_2.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm" /> + </HelpKINode> + <HelpKINode Title="AsyncClientStreamingCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" /> + <HelpKINode Title="AsyncClientStreamingCall(Of TRequest, TResponse).Dispose method" Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm" /> + <HelpKINode Title="AsyncClientStreamingCall(Of TRequest, TResponse).GetAwaiter method" Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm" /> + <HelpKINode Title="AsyncClientStreamingCall(Of TRequest, TResponse).GetStatus method" Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm" /> + <HelpKINode Title="AsyncClientStreamingCall(Of TRequest, TResponse).GetTrailers method" Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm" /> + <HelpKINode Title="AsyncClientStreamingCall(Of TRequest, TResponse).RequestStream property" Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm" /> + <HelpKINode Title="AsyncClientStreamingCall(Of TRequest, TResponse).ResponseAsync property" Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm" /> + <HelpKINode Title="AsyncClientStreamingCall(Of TRequest, TResponse).ResponseHeadersAsync property" Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm" /> + <HelpKINode Title="AsyncClientStreamingCall<TRequest, TResponse> class"> + <HelpKINode Title="AsyncClientStreamingCall(TRequest, TResponse) Class" Url="html/T_Grpc_Core_AsyncClientStreamingCall_2.htm" /> + <HelpKINode Title="about AsyncClientStreamingCall<TRequest, TResponse> class" Url="html/T_Grpc_Core_AsyncClientStreamingCall_2.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm" /> + </HelpKINode> + <HelpKINode Title="AsyncClientStreamingCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" /> + <HelpKINode Title="AsyncClientStreamingCall<TRequest, TResponse>.Dispose method" Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm" /> + <HelpKINode Title="AsyncClientStreamingCall<TRequest, TResponse>.GetAwaiter method" Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm" /> + <HelpKINode Title="AsyncClientStreamingCall<TRequest, TResponse>.GetStatus method" Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm" /> + <HelpKINode Title="AsyncClientStreamingCall<TRequest, TResponse>.GetTrailers method" Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm" /> + <HelpKINode Title="AsyncClientStreamingCall<TRequest, TResponse>.RequestStream property" Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm" /> + <HelpKINode Title="AsyncClientStreamingCall<TRequest, TResponse>.ResponseAsync property" Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm" /> + <HelpKINode Title="AsyncClientStreamingCall<TRequest, TResponse>.ResponseHeadersAsync property" Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(Of TRequest, TResponse) class"> + <HelpKINode Title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" Url="html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" /> + <HelpKINode Title="about AsyncDuplexStreamingCall(Of TRequest, TResponse) class" Url="html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" /> + </HelpKINode> + <HelpKINode Title="AsyncDuplexStreamingCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(Of TRequest, TResponse).Dispose method" Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(Of TRequest, TResponse).GetStatus method" Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(Of TRequest, TResponse).GetTrailers method" Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(Of TRequest, TResponse).RequestStream property" Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(Of TRequest, TResponse).ResponseHeadersAsync property" Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(Of TRequest, TResponse).ResponseStream property" Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall<TRequest, TResponse> class"> + <HelpKINode Title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" Url="html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" /> + <HelpKINode Title="about AsyncDuplexStreamingCall<TRequest, TResponse> class" Url="html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" /> + </HelpKINode> + <HelpKINode Title="AsyncDuplexStreamingCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall<TRequest, TResponse>.Dispose method" Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall<TRequest, TResponse>.GetStatus method" Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall<TRequest, TResponse>.GetTrailers method" Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall<TRequest, TResponse>.RequestStream property" Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall<TRequest, TResponse>.ResponseHeadersAsync property" Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall<TRequest, TResponse>.ResponseStream property" Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm" /> + <HelpKINode Title="AsyncServerStreamingCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" /> + <HelpKINode Title="AsyncServerStreamingCall(Of TResponse) class"> + <HelpKINode Title="AsyncServerStreamingCall(TResponse) Class" Url="html/T_Grpc_Core_AsyncServerStreamingCall_1.htm" /> + <HelpKINode Title="about AsyncServerStreamingCall(Of TResponse) class" Url="html/T_Grpc_Core_AsyncServerStreamingCall_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm" /> + </HelpKINode> + <HelpKINode Title="AsyncServerStreamingCall(Of TResponse).Dispose method" Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm" /> + <HelpKINode Title="AsyncServerStreamingCall(Of TResponse).GetStatus method" Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm" /> + <HelpKINode Title="AsyncServerStreamingCall(Of TResponse).GetTrailers method" Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm" /> + <HelpKINode Title="AsyncServerStreamingCall(Of TResponse).ResponseHeadersAsync property" Url="html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm" /> + <HelpKINode Title="AsyncServerStreamingCall(Of TResponse).ResponseStream property" Url="html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm" /> + <HelpKINode Title="AsyncServerStreamingCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" /> + <HelpKINode Title="AsyncServerStreamingCall<TResponse> class"> + <HelpKINode Title="AsyncServerStreamingCall(TResponse) Class" Url="html/T_Grpc_Core_AsyncServerStreamingCall_1.htm" /> + <HelpKINode Title="about AsyncServerStreamingCall<TResponse> class" Url="html/T_Grpc_Core_AsyncServerStreamingCall_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm" /> + </HelpKINode> + <HelpKINode Title="AsyncServerStreamingCall<TResponse>.Dispose method" Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm" /> + <HelpKINode Title="AsyncServerStreamingCall<TResponse>.GetStatus method" Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm" /> + <HelpKINode Title="AsyncServerStreamingCall<TResponse>.GetTrailers method" Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm" /> + <HelpKINode Title="AsyncServerStreamingCall<TResponse>.ResponseHeadersAsync property" Url="html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm" /> + <HelpKINode Title="AsyncServerStreamingCall<TResponse>.ResponseStream property" Url="html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm" /> + <HelpKINode Title="AsyncStreamExtensions class"> + <HelpKINode Title="AsyncStreamExtensions Class" Url="html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm" /> + <HelpKINode Title="about AsyncStreamExtensions class" Url="html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm" /> + </HelpKINode> + <HelpKINode Title="AsyncStreamExtensions.ForEachAsync(Of T) method" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm" /> + <HelpKINode Title="AsyncStreamExtensions.ForEachAsync<T> method" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm" /> + <HelpKINode Title="AsyncStreamExtensions.ToListAsync(Of T) method" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm" /> + <HelpKINode Title="AsyncStreamExtensions.ToListAsync<T> method" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm" /> + <HelpKINode Title="AsyncStreamExtensions.WriteAllAsync method" Url="html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm" /> + <HelpKINode Title="AsyncUnaryCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" /> + <HelpKINode Title="AsyncUnaryCall(Of TResponse) class"> + <HelpKINode Title="AsyncUnaryCall(TResponse) Class" Url="html/T_Grpc_Core_AsyncUnaryCall_1.htm" /> + <HelpKINode Title="about AsyncUnaryCall(Of TResponse) class" Url="html/T_Grpc_Core_AsyncUnaryCall_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm" /> + </HelpKINode> + <HelpKINode Title="AsyncUnaryCall(Of TResponse).Dispose method" Url="html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm" /> + <HelpKINode Title="AsyncUnaryCall(Of TResponse).GetAwaiter method" Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm" /> + <HelpKINode Title="AsyncUnaryCall(Of TResponse).GetStatus method" Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm" /> + <HelpKINode Title="AsyncUnaryCall(Of TResponse).GetTrailers method" Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm" /> + <HelpKINode Title="AsyncUnaryCall(Of TResponse).ResponseAsync property" Url="html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm" /> + <HelpKINode Title="AsyncUnaryCall(Of TResponse).ResponseHeadersAsync property" Url="html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm" /> + <HelpKINode Title="AsyncUnaryCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" /> + <HelpKINode Title="AsyncUnaryCall<TResponse> class"> + <HelpKINode Title="AsyncUnaryCall(TResponse) Class" Url="html/T_Grpc_Core_AsyncUnaryCall_1.htm" /> + <HelpKINode Title="about AsyncUnaryCall<TResponse> class" Url="html/T_Grpc_Core_AsyncUnaryCall_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm" /> + </HelpKINode> + <HelpKINode Title="AsyncUnaryCall<TResponse>.Dispose method" Url="html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm" /> + <HelpKINode Title="AsyncUnaryCall<TResponse>.GetAwaiter method" Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm" /> + <HelpKINode Title="AsyncUnaryCall<TResponse>.GetStatus method" Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm" /> + <HelpKINode Title="AsyncUnaryCall<TResponse>.GetTrailers method" Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm" /> + <HelpKINode Title="AsyncUnaryCall<TResponse>.ResponseAsync property" Url="html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm" /> + <HelpKINode Title="AsyncUnaryCall<TResponse>.ResponseHeadersAsync property" Url="html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm" /> + <HelpKINode Title="AuthInterceptors class"> + <HelpKINode Title="AuthInterceptors Class" Url="html/T_Grpc_Auth_AuthInterceptors.htm" /> + <HelpKINode Title="about AuthInterceptors class" Url="html/T_Grpc_Auth_AuthInterceptors.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Auth_AuthInterceptors.htm" /> + </HelpKINode> + <HelpKINode Title="AuthInterceptors.FromAccessToken method" Url="html/M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm" /> + <HelpKINode Title="AuthInterceptors.FromCredential method" Url="html/M_Grpc_Auth_AuthInterceptors_FromCredential.htm" /> + <HelpKINode Title="BenchmarkUtil class"> + <HelpKINode Title="BenchmarkUtil Class" Url="html/T_Grpc_Core_Utils_BenchmarkUtil.htm" /> + <HelpKINode Title="about BenchmarkUtil class" Url="html/T_Grpc_Core_Utils_BenchmarkUtil.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm" /> + </HelpKINode> + <HelpKINode Title="BenchmarkUtil.RunBenchmark method" Url="html/M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm" /> + <HelpKINode Title="BinaryHeaderSuffix field" Url="html/F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm" /> + <HelpKINode Title="BlockingUnaryCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" /> + <HelpKINode Title="BlockingUnaryCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" /> + <HelpKINode Title="BoundPort property" Url="html/P_Grpc_Core_ServerPort_BoundPort.htm" /> + <HelpKINode Title="BufferHint enumeration member" Url="html/T_Grpc_Core_WriteFlags.htm" /> + <HelpKINode Title="Build method" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm" /> + <HelpKINode Title="Builder class"> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm" /> + </HelpKINode> + <HelpKINode Title="CallInvocationDetails(Of TRequest, TResponse) structure"> + <HelpKINode Title="CallInvocationDetails(TRequest, TResponse) Structure" Url="html/T_Grpc_Core_CallInvocationDetails_2.htm" /> + <HelpKINode Title="about CallInvocationDetails(Of TRequest, TResponse) structure" Url="html/T_Grpc_Core_CallInvocationDetails_2.htm" /> + <HelpKINode Title="constructor" Url="html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm" /> + </HelpKINode> + <HelpKINode Title="CallInvocationDetails(Of TRequest, TResponse).CallInvocationDetails constructor" Url="html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm" /> + <HelpKINode Title="CallInvocationDetails(Of TRequest, TResponse).Channel property" Url="html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm" /> + <HelpKINode Title="CallInvocationDetails(Of TRequest, TResponse).Host property" Url="html/P_Grpc_Core_CallInvocationDetails_2_Host.htm" /> + <HelpKINode Title="CallInvocationDetails(Of TRequest, TResponse).Method property" Url="html/P_Grpc_Core_CallInvocationDetails_2_Method.htm" /> + <HelpKINode Title="CallInvocationDetails(Of TRequest, TResponse).Options property" Url="html/P_Grpc_Core_CallInvocationDetails_2_Options.htm" /> + <HelpKINode Title="CallInvocationDetails(Of TRequest, TResponse).RequestMarshaller property" Url="html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" /> + <HelpKINode Title="CallInvocationDetails(Of TRequest, TResponse).ResponseMarshaller property" Url="html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" /> + <HelpKINode Title="CallInvocationDetails(Of TRequest, TResponse).WithOptions method" Url="html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm" /> + <HelpKINode Title="CallInvocationDetails<TRequest, TResponse> structure"> + <HelpKINode Title="CallInvocationDetails(TRequest, TResponse) Structure" Url="html/T_Grpc_Core_CallInvocationDetails_2.htm" /> + <HelpKINode Title="about CallInvocationDetails<TRequest, TResponse> structure" Url="html/T_Grpc_Core_CallInvocationDetails_2.htm" /> + <HelpKINode Title="constructor" Url="html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm" /> + </HelpKINode> + <HelpKINode Title="CallInvocationDetails<TRequest, TResponse>.CallInvocationDetails constructor" Url="html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm" /> + <HelpKINode Title="CallInvocationDetails<TRequest, TResponse>.Channel property" Url="html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm" /> + <HelpKINode Title="CallInvocationDetails<TRequest, TResponse>.Host property" Url="html/P_Grpc_Core_CallInvocationDetails_2_Host.htm" /> + <HelpKINode Title="CallInvocationDetails<TRequest, TResponse>.Method property" Url="html/P_Grpc_Core_CallInvocationDetails_2_Method.htm" /> + <HelpKINode Title="CallInvocationDetails<TRequest, TResponse>.Options property" Url="html/P_Grpc_Core_CallInvocationDetails_2_Options.htm" /> + <HelpKINode Title="CallInvocationDetails<TRequest, TResponse>.RequestMarshaller property" Url="html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" /> + <HelpKINode Title="CallInvocationDetails<TRequest, TResponse>.ResponseMarshaller property" Url="html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" /> + <HelpKINode Title="CallInvocationDetails<TRequest, TResponse>.WithOptions method" Url="html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm" /> + <HelpKINode Title="CallOptions structure"> + <HelpKINode Title="CallOptions Structure" Url="html/T_Grpc_Core_CallOptions.htm" /> + <HelpKINode Title="about CallOptions structure" Url="html/T_Grpc_Core_CallOptions.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_CallOptions__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_CallOptions.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_CallOptions.htm" /> + </HelpKINode> + <HelpKINode Title="CallOptions.CallOptions constructor" Url="html/M_Grpc_Core_CallOptions__ctor.htm" /> + <HelpKINode Title="CallOptions.CancellationToken property" Url="html/P_Grpc_Core_CallOptions_CancellationToken.htm" /> + <HelpKINode Title="CallOptions.Deadline property" Url="html/P_Grpc_Core_CallOptions_Deadline.htm" /> + <HelpKINode Title="CallOptions.Headers property" Url="html/P_Grpc_Core_CallOptions_Headers.htm" /> + <HelpKINode Title="CallOptions.PropagationToken property" Url="html/P_Grpc_Core_CallOptions_PropagationToken.htm" /> + <HelpKINode Title="CallOptions.WithCancellationToken method" Url="html/M_Grpc_Core_CallOptions_WithCancellationToken.htm" /> + <HelpKINode Title="CallOptions.WithDeadline method" Url="html/M_Grpc_Core_CallOptions_WithDeadline.htm" /> + <HelpKINode Title="CallOptions.WithHeaders method" Url="html/M_Grpc_Core_CallOptions_WithHeaders.htm" /> + <HelpKINode Title="CallOptions.WriteOptions property" Url="html/P_Grpc_Core_CallOptions_WriteOptions.htm" /> + <HelpKINode Title="Calls class"> + <HelpKINode Title="Calls Class" Url="html/T_Grpc_Core_Calls.htm" /> + <HelpKINode Title="about Calls class" Url="html/T_Grpc_Core_Calls.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Calls.htm" /> + </HelpKINode> + <HelpKINode Title="Calls.AsyncClientStreamingCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" /> + <HelpKINode Title="Calls.AsyncClientStreamingCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" /> + <HelpKINode Title="Calls.AsyncDuplexStreamingCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" /> + <HelpKINode Title="Calls.AsyncDuplexStreamingCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" /> + <HelpKINode Title="Calls.AsyncServerStreamingCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" /> + <HelpKINode Title="Calls.AsyncServerStreamingCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" /> + <HelpKINode Title="Calls.AsyncUnaryCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" /> + <HelpKINode Title="Calls.AsyncUnaryCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" /> + <HelpKINode Title="Calls.BlockingUnaryCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" /> + <HelpKINode Title="Calls.BlockingUnaryCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" /> + <HelpKINode Title="CancellationToken property"> + <HelpKINode Title="CallOptions.CancellationToken Property " Url="html/P_Grpc_Core_CallOptions_CancellationToken.htm" /> + <HelpKINode Title="ServerCallContext.CancellationToken Property " Url="html/P_Grpc_Core_ServerCallContext_CancellationToken.htm" /> + </HelpKINode> + <HelpKINode Title="Cancelled enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="Census field" Url="html/F_Grpc_Core_ChannelOptions_Census.htm" /> + <HelpKINode Title="CertificateChain property" Url="html/P_Grpc_Core_KeyCertificatePair_CertificateChain.htm" /> + <HelpKINode Title="Channel class"> + <HelpKINode Title="Channel Class" Url="html/T_Grpc_Core_Channel.htm" /> + <HelpKINode Title="about Channel class" Url="html/T_Grpc_Core_Channel.htm" /> + <HelpKINode Title="constructor" Url="html/Overload_Grpc_Core_Channel__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Channel.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_Channel.htm" /> + </HelpKINode> + <HelpKINode Title="Channel property"> + <HelpKINode Title="CallInvocationDetails(TRequest, TResponse).Channel Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm" /> + <HelpKINode Title="ClientBase.Channel Property " Url="html/P_Grpc_Core_ClientBase_Channel.htm" /> + </HelpKINode> + <HelpKINode Title="Channel.Channel constructor" Url="html/Overload_Grpc_Core_Channel__ctor.htm" /> + <HelpKINode Title="Channel.ConnectAsync method" Url="html/M_Grpc_Core_Channel_ConnectAsync.htm" /> + <HelpKINode Title="Channel.ResolvedTarget property" Url="html/P_Grpc_Core_Channel_ResolvedTarget.htm" /> + <HelpKINode Title="Channel.ShutdownAsync method" Url="html/M_Grpc_Core_Channel_ShutdownAsync.htm" /> + <HelpKINode Title="Channel.State property" Url="html/P_Grpc_Core_Channel_State.htm" /> + <HelpKINode Title="Channel.Target property" Url="html/P_Grpc_Core_Channel_Target.htm" /> + <HelpKINode Title="Channel.WaitForStateChangedAsync method" Url="html/M_Grpc_Core_Channel_WaitForStateChangedAsync.htm" /> + <HelpKINode Title="ChannelOption class"> + <HelpKINode Title="ChannelOption Class" Url="html/T_Grpc_Core_ChannelOption.htm" /> + <HelpKINode Title="about ChannelOption class" Url="html/T_Grpc_Core_ChannelOption.htm" /> + <HelpKINode Title="constructor" Url="html/Overload_Grpc_Core_ChannelOption__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_ChannelOption.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_ChannelOption.htm" /> + </HelpKINode> + <HelpKINode Title="ChannelOption.ChannelOption constructor" Url="html/Overload_Grpc_Core_ChannelOption__ctor.htm" /> + <HelpKINode Title="ChannelOption.IntValue property" Url="html/P_Grpc_Core_ChannelOption_IntValue.htm" /> + <HelpKINode Title="ChannelOption.Name property" Url="html/P_Grpc_Core_ChannelOption_Name.htm" /> + <HelpKINode Title="ChannelOption.OptionType enumeration" Url="html/T_Grpc_Core_ChannelOption_OptionType.htm" /> + <HelpKINode Title="ChannelOption.StringValue property" Url="html/P_Grpc_Core_ChannelOption_StringValue.htm" /> + <HelpKINode Title="ChannelOption.Type property" Url="html/P_Grpc_Core_ChannelOption_Type.htm" /> + <HelpKINode Title="ChannelOptions class"> + <HelpKINode Title="ChannelOptions Class" Url="html/T_Grpc_Core_ChannelOptions.htm" /> + <HelpKINode Title="about ChannelOptions class" Url="html/T_Grpc_Core_ChannelOptions.htm" /> + <HelpKINode Title="fields" Url="html/Fields_T_Grpc_Core_ChannelOptions.htm" /> + </HelpKINode> + <HelpKINode Title="ChannelOptions.Census field" Url="html/F_Grpc_Core_ChannelOptions_Census.htm" /> + <HelpKINode Title="ChannelOptions.DefaultAuthority field" Url="html/F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" /> + <HelpKINode Title="ChannelOptions.Http2InitialSequenceNumber field" Url="html/F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" /> + <HelpKINode Title="ChannelOptions.MaxConcurrentStreams field" Url="html/F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" /> + <HelpKINode Title="ChannelOptions.MaxMessageLength field" Url="html/F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" /> + <HelpKINode Title="ChannelOptions.PrimaryUserAgentString field" Url="html/F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" /> + <HelpKINode Title="ChannelOptions.SecondaryUserAgentString field" Url="html/F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" /> + <HelpKINode Title="ChannelOptions.SslTargetNameOverride field" Url="html/F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" /> + <HelpKINode Title="ChannelState enumeration" Url="html/T_Grpc_Core_ChannelState.htm" /> + <HelpKINode Title="CheckArgument method" Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm" /> + <HelpKINode Title="CheckNotNull method" Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm" /> + <HelpKINode Title="CheckState method" Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm" /> + <HelpKINode Title="Clear method" Url="html/M_Grpc_Core_Metadata_Clear.htm" /> + <HelpKINode Title="ClientBase class"> + <HelpKINode Title="ClientBase Class" Url="html/T_Grpc_Core_ClientBase.htm" /> + <HelpKINode Title="about ClientBase class" Url="html/T_Grpc_Core_ClientBase.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_ClientBase__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_ClientBase.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_ClientBase.htm" /> + </HelpKINode> + <HelpKINode Title="ClientBase.Channel property" Url="html/P_Grpc_Core_ClientBase_Channel.htm" /> + <HelpKINode Title="ClientBase.ClientBase constructor" Url="html/M_Grpc_Core_ClientBase__ctor.htm" /> + <HelpKINode Title="ClientBase.CreateCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_ClientBase_CreateCall__2.htm" /> + <HelpKINode Title="ClientBase.CreateCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_ClientBase_CreateCall__2.htm" /> + <HelpKINode Title="ClientBase.HeaderInterceptor property" Url="html/P_Grpc_Core_ClientBase_HeaderInterceptor.htm" /> + <HelpKINode Title="ClientBase.Host property" Url="html/P_Grpc_Core_ClientBase_Host.htm" /> + <HelpKINode Title="ClientStreaming enumeration member" Url="html/T_Grpc_Core_MethodType.htm" /> + <HelpKINode Title="ClientStreamingServerMethod(Of TRequest, TResponse) delegate" Url="html/T_Grpc_Core_ClientStreamingServerMethod_2.htm" /> + <HelpKINode Title="ClientStreamingServerMethod<TRequest, TResponse> delegate" Url="html/T_Grpc_Core_ClientStreamingServerMethod_2.htm" /> + <HelpKINode Title="CompleteAsync method" Url="html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm" /> + <HelpKINode Title="CompressionLevel enumeration" Url="html/T_Grpc_Core_CompressionLevel.htm" /> + <HelpKINode Title="ConnectAsync method" Url="html/M_Grpc_Core_Channel_ConnectAsync.htm" /> + <HelpKINode Title="Connecting enumeration member" Url="html/T_Grpc_Core_ChannelState.htm" /> + <HelpKINode Title="ConsoleLogger class"> + <HelpKINode Title="ConsoleLogger Class" Url="html/T_Grpc_Core_Logging_ConsoleLogger.htm" /> + <HelpKINode Title="about ConsoleLogger class" Url="html/T_Grpc_Core_Logging_ConsoleLogger.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_Logging_ConsoleLogger__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" /> + </HelpKINode> + <HelpKINode Title="ConsoleLogger.ConsoleLogger constructor" Url="html/M_Grpc_Core_Logging_ConsoleLogger__ctor.htm" /> + <HelpKINode Title="ConsoleLogger.Debug method" Url="html/M_Grpc_Core_Logging_ConsoleLogger_Debug.htm" /> + <HelpKINode Title="ConsoleLogger.Error method" Url="html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm" /> + <HelpKINode Title="ConsoleLogger.ForType(Of T) method" Url="html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm" /> + <HelpKINode Title="ConsoleLogger.ForType<T> method" Url="html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm" /> + <HelpKINode Title="ConsoleLogger.Info method" Url="html/M_Grpc_Core_Logging_ConsoleLogger_Info.htm" /> + <HelpKINode Title="ConsoleLogger.Warning method" Url="html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm" /> + <HelpKINode Title="Contains method" Url="html/M_Grpc_Core_Metadata_Contains.htm" /> + <HelpKINode Title="ContextPropagationOptions class"> + <HelpKINode Title="ContextPropagationOptions Class" Url="html/T_Grpc_Core_ContextPropagationOptions.htm" /> + <HelpKINode Title="about ContextPropagationOptions class" Url="html/T_Grpc_Core_ContextPropagationOptions.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_ContextPropagationOptions__ctor.htm" /> + <HelpKINode Title="fields" Url="html/Fields_T_Grpc_Core_ContextPropagationOptions.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_ContextPropagationOptions.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_ContextPropagationOptions.htm" /> + </HelpKINode> + <HelpKINode Title="ContextPropagationOptions.ContextPropagationOptions constructor" Url="html/M_Grpc_Core_ContextPropagationOptions__ctor.htm" /> + <HelpKINode Title="ContextPropagationOptions.Default field" Url="html/F_Grpc_Core_ContextPropagationOptions_Default.htm" /> + <HelpKINode Title="ContextPropagationOptions.IsPropagateCancellation property" Url="html/P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm" /> + <HelpKINode Title="ContextPropagationOptions.IsPropagateDeadline property" Url="html/P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm" /> + <HelpKINode Title="ContextPropagationToken class"> + <HelpKINode Title="ContextPropagationToken Class" Url="html/T_Grpc_Core_ContextPropagationToken.htm" /> + <HelpKINode Title="about ContextPropagationToken class" Url="html/T_Grpc_Core_ContextPropagationToken.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_ContextPropagationToken.htm" /> + </HelpKINode> + <HelpKINode Title="CopyTo method" Url="html/M_Grpc_Core_Metadata_CopyTo.htm" /> + <HelpKINode Title="Count property" Url="html/P_Grpc_Core_Metadata_Count.htm" /> + <HelpKINode Title="Create(Of T) method" Url="html/M_Grpc_Core_Marshallers_Create__1.htm" /> + <HelpKINode Title="Create<T> method" Url="html/M_Grpc_Core_Marshallers_Create__1.htm" /> + <HelpKINode Title="CreateBuilder method" Url="html/M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm" /> + <HelpKINode Title="CreateCall(Of TRequest, TResponse) method" Url="html/M_Grpc_Core_ClientBase_CreateCall__2.htm" /> + <HelpKINode Title="CreateCall<TRequest, TResponse> method" Url="html/M_Grpc_Core_ClientBase_CreateCall__2.htm" /> + <HelpKINode Title="CreatePropagationToken method" Url="html/M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm" /> + <HelpKINode Title="Credentials class"> + <HelpKINode Title="Credentials Class" Url="html/T_Grpc_Core_Credentials.htm" /> + <HelpKINode Title="about Credentials class" Url="html/T_Grpc_Core_Credentials.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_Credentials__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Credentials.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_Credentials.htm" /> + </HelpKINode> + <HelpKINode Title="Credentials property" Url="html/P_Grpc_Core_ServerPort_Credentials.htm" /> + <HelpKINode Title="Credentials.Credentials constructor" Url="html/M_Grpc_Core_Credentials__ctor.htm" /> + <HelpKINode Title="Credentials.Insecure property" Url="html/P_Grpc_Core_Credentials_Insecure.htm" /> + <HelpKINode Title="CurrentVersion field" Url="html/F_Grpc_Core_VersionInfo_CurrentVersion.htm" /> + <HelpKINode Title="DataLoss enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="Deadline property"> + <HelpKINode Title="CallOptions.Deadline Property " Url="html/P_Grpc_Core_CallOptions_Deadline.htm" /> + <HelpKINode Title="ServerCallContext.Deadline Property " Url="html/P_Grpc_Core_ServerCallContext_Deadline.htm" /> + </HelpKINode> + <HelpKINode Title="DeadlineExceeded enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="Debug method"> + <HelpKINode Title="ConsoleLogger.Debug Method " Url="html/M_Grpc_Core_Logging_ConsoleLogger_Debug.htm" /> + <HelpKINode Title="ILogger.Debug Method " Url="html/M_Grpc_Core_Logging_ILogger_Debug.htm" /> + </HelpKINode> + <HelpKINode Title="Default field"> + <HelpKINode Title="ContextPropagationOptions.Default Field" Url="html/F_Grpc_Core_ContextPropagationOptions_Default.htm" /> + <HelpKINode Title="WriteOptions.Default Field" Url="html/F_Grpc_Core_WriteOptions_Default.htm" /> + </HelpKINode> + <HelpKINode Title="DefaultAuthority field" Url="html/F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" /> + <HelpKINode Title="DefaultCancelled field" Url="html/F_Grpc_Core_Status_DefaultCancelled.htm" /> + <HelpKINode Title="DefaultSuccess field" Url="html/F_Grpc_Core_Status_DefaultSuccess.htm" /> + <HelpKINode Title="Deserializer property" Url="html/P_Grpc_Core_Marshaller_1_Deserializer.htm" /> + <HelpKINode Title="Detail property" Url="html/P_Grpc_Core_Status_Detail.htm" /> + <HelpKINode Title="Dispose method"> + <HelpKINode Title="AsyncClientStreamingCall(TRequest, TResponse).Dispose Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(TRequest, TResponse).Dispose Method " Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm" /> + <HelpKINode Title="AsyncServerStreamingCall(TResponse).Dispose Method " Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm" /> + <HelpKINode Title="AsyncUnaryCall(TResponse).Dispose Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm" /> + </HelpKINode> + <HelpKINode Title="DuplexStreaming enumeration member" Url="html/T_Grpc_Core_MethodType.htm" /> + <HelpKINode Title="DuplexStreamingServerMethod(Of TRequest, TResponse) delegate" Url="html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm" /> + <HelpKINode Title="DuplexStreamingServerMethod<TRequest, TResponse> delegate" Url="html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm" /> + <HelpKINode Title="Empty field" Url="html/F_Grpc_Core_Metadata_Empty.htm" /> + <HelpKINode Title="Entry structure"> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Metadata_Entry.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_Metadata_Entry.htm" /> + </HelpKINode> + <HelpKINode Title="Error method"> + <HelpKINode Title="ConsoleLogger.Error Method " Url="html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm" /> + <HelpKINode Title="ILogger.Error Method " Url="html/Overload_Grpc_Core_Logging_ILogger_Error.htm" /> + </HelpKINode> + <HelpKINode Title="FailedPrecondition enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="FatalFailure enumeration member" Url="html/T_Grpc_Core_ChannelState.htm" /> + <HelpKINode Title="Flags property" Url="html/P_Grpc_Core_WriteOptions_Flags.htm" /> + <HelpKINode Title="ForceClientAuthentication property" Url="html/P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm" /> + <HelpKINode Title="ForEachAsync(Of T) method" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm" /> + <HelpKINode Title="ForEachAsync<T> method" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm" /> + <HelpKINode Title="ForType(Of T) method"> + <HelpKINode Title="ConsoleLogger.ForType(T) Method " Url="html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm" /> + <HelpKINode Title="ILogger.ForType(T) Method " Url="html/M_Grpc_Core_Logging_ILogger_ForType__1.htm" /> + </HelpKINode> + <HelpKINode Title="ForType<T> method"> + <HelpKINode Title="ConsoleLogger.ForType(T) Method " Url="html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm" /> + <HelpKINode Title="ILogger.ForType(T) Method " Url="html/M_Grpc_Core_Logging_ILogger_ForType__1.htm" /> + </HelpKINode> + <HelpKINode Title="FromAccessToken method" Url="html/M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm" /> + <HelpKINode Title="FromCredential method" Url="html/M_Grpc_Auth_AuthInterceptors_FromCredential.htm" /> + <HelpKINode Title="FullName property"> + <HelpKINode Title="IMethod.FullName Property " Url="html/P_Grpc_Core_IMethod_FullName.htm" /> + <HelpKINode Title="Method(TRequest, TResponse).FullName Property " Url="html/P_Grpc_Core_Method_2_FullName.htm" /> + </HelpKINode> + <HelpKINode Title="GetAwaiter method"> + <HelpKINode Title="AsyncClientStreamingCall(TRequest, TResponse).GetAwaiter Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm" /> + <HelpKINode Title="AsyncUnaryCall(TResponse).GetAwaiter Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm" /> + </HelpKINode> + <HelpKINode Title="GetEnumerator method"> + <HelpKINode Title="Metadata.GetEnumerator Method " Url="html/M_Grpc_Core_Metadata_GetEnumerator.htm" /> + <HelpKINode Title="Server.ServerPortCollection.GetEnumerator Method " Url="html/M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm" /> + <HelpKINode Title="Server.ServiceDefinitionCollection.GetEnumerator Method " Url="html/M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm" /> + </HelpKINode> + <HelpKINode Title="GetStatus method"> + <HelpKINode Title="AsyncClientStreamingCall(TRequest, TResponse).GetStatus Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(TRequest, TResponse).GetStatus Method " Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm" /> + <HelpKINode Title="AsyncServerStreamingCall(TResponse).GetStatus Method " Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm" /> + <HelpKINode Title="AsyncUnaryCall(TResponse).GetStatus Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm" /> + </HelpKINode> + <HelpKINode Title="GetTrailers method"> + <HelpKINode Title="AsyncClientStreamingCall(TRequest, TResponse).GetTrailers Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(TRequest, TResponse).GetTrailers Method " Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm" /> + <HelpKINode Title="AsyncServerStreamingCall(TResponse).GetTrailers Method " Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm" /> + <HelpKINode Title="AsyncUnaryCall(TResponse).GetTrailers Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm" /> + </HelpKINode> + <HelpKINode Title="Grpc.Auth namespace" Url="html/N_Grpc_Auth.htm" /> + <HelpKINode Title="Grpc.Auth.AuthInterceptors class" Url="html/T_Grpc_Auth_AuthInterceptors.htm" /> + <HelpKINode Title="Grpc.Core namespace" Url="html/N_Grpc_Core.htm" /> + <HelpKINode Title="Grpc.Core.AsyncClientStreamingCall(Of TRequest, TResponse) class" Url="html/T_Grpc_Core_AsyncClientStreamingCall_2.htm" /> + <HelpKINode Title="Grpc.Core.AsyncClientStreamingCall<TRequest, TResponse> class" Url="html/T_Grpc_Core_AsyncClientStreamingCall_2.htm" /> + <HelpKINode Title="Grpc.Core.AsyncDuplexStreamingCall(Of TRequest, TResponse) class" Url="html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" /> + <HelpKINode Title="Grpc.Core.AsyncDuplexStreamingCall<TRequest, TResponse> class" Url="html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" /> + <HelpKINode Title="Grpc.Core.AsyncServerStreamingCall(Of TResponse) class" Url="html/T_Grpc_Core_AsyncServerStreamingCall_1.htm" /> + <HelpKINode Title="Grpc.Core.AsyncServerStreamingCall<TResponse> class" Url="html/T_Grpc_Core_AsyncServerStreamingCall_1.htm" /> + <HelpKINode Title="Grpc.Core.AsyncUnaryCall(Of TResponse) class" Url="html/T_Grpc_Core_AsyncUnaryCall_1.htm" /> + <HelpKINode Title="Grpc.Core.AsyncUnaryCall<TResponse> class" Url="html/T_Grpc_Core_AsyncUnaryCall_1.htm" /> + <HelpKINode Title="Grpc.Core.CallInvocationDetails(Of TRequest, TResponse) structure" Url="html/T_Grpc_Core_CallInvocationDetails_2.htm" /> + <HelpKINode Title="Grpc.Core.CallInvocationDetails<TRequest, TResponse> structure" Url="html/T_Grpc_Core_CallInvocationDetails_2.htm" /> + <HelpKINode Title="Grpc.Core.CallOptions structure" Url="html/T_Grpc_Core_CallOptions.htm" /> + <HelpKINode Title="Grpc.Core.Calls class" Url="html/T_Grpc_Core_Calls.htm" /> + <HelpKINode Title="Grpc.Core.Channel class" Url="html/T_Grpc_Core_Channel.htm" /> + <HelpKINode Title="Grpc.Core.ChannelOption class" Url="html/T_Grpc_Core_ChannelOption.htm" /> + <HelpKINode Title="Grpc.Core.ChannelOption.OptionType enumeration" Url="html/T_Grpc_Core_ChannelOption_OptionType.htm" /> + <HelpKINode Title="Grpc.Core.ChannelOptions class" Url="html/T_Grpc_Core_ChannelOptions.htm" /> + <HelpKINode Title="Grpc.Core.ChannelState enumeration" Url="html/T_Grpc_Core_ChannelState.htm" /> + <HelpKINode Title="Grpc.Core.ClientBase class" Url="html/T_Grpc_Core_ClientBase.htm" /> + <HelpKINode Title="Grpc.Core.ClientStreamingServerMethod(Of TRequest, TResponse) delegate" Url="html/T_Grpc_Core_ClientStreamingServerMethod_2.htm" /> + <HelpKINode Title="Grpc.Core.ClientStreamingServerMethod<TRequest, TResponse> delegate" Url="html/T_Grpc_Core_ClientStreamingServerMethod_2.htm" /> + <HelpKINode Title="Grpc.Core.CompressionLevel enumeration" Url="html/T_Grpc_Core_CompressionLevel.htm" /> + <HelpKINode Title="Grpc.Core.ContextPropagationOptions class" Url="html/T_Grpc_Core_ContextPropagationOptions.htm" /> + <HelpKINode Title="Grpc.Core.ContextPropagationToken class" Url="html/T_Grpc_Core_ContextPropagationToken.htm" /> + <HelpKINode Title="Grpc.Core.Credentials class" Url="html/T_Grpc_Core_Credentials.htm" /> + <HelpKINode Title="Grpc.Core.DuplexStreamingServerMethod(Of TRequest, TResponse) delegate" Url="html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm" /> + <HelpKINode Title="Grpc.Core.DuplexStreamingServerMethod<TRequest, TResponse> delegate" Url="html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm" /> + <HelpKINode Title="Grpc.Core.GrpcEnvironment class" Url="html/T_Grpc_Core_GrpcEnvironment.htm" /> + <HelpKINode Title="Grpc.Core.HeaderInterceptor delegate" Url="html/T_Grpc_Core_HeaderInterceptor.htm" /> + <HelpKINode Title="Grpc.Core.IAsyncStreamReader(Of T) interface" Url="html/T_Grpc_Core_IAsyncStreamReader_1.htm" /> + <HelpKINode Title="Grpc.Core.IAsyncStreamReader<T> interface" Url="html/T_Grpc_Core_IAsyncStreamReader_1.htm" /> + <HelpKINode Title="Grpc.Core.IAsyncStreamWriter(Of T) interface" Url="html/T_Grpc_Core_IAsyncStreamWriter_1.htm" /> + <HelpKINode Title="Grpc.Core.IAsyncStreamWriter<T> interface" Url="html/T_Grpc_Core_IAsyncStreamWriter_1.htm" /> + <HelpKINode Title="Grpc.Core.IClientStreamWriter(Of T) interface" Url="html/T_Grpc_Core_IClientStreamWriter_1.htm" /> + <HelpKINode Title="Grpc.Core.IClientStreamWriter<T> interface" Url="html/T_Grpc_Core_IClientStreamWriter_1.htm" /> + <HelpKINode Title="Grpc.Core.IHasWriteOptions interface" Url="html/T_Grpc_Core_IHasWriteOptions.htm" /> + <HelpKINode Title="Grpc.Core.IMethod interface" Url="html/T_Grpc_Core_IMethod.htm" /> + <HelpKINode Title="Grpc.Core.IServerStreamWriter(Of T) interface" Url="html/T_Grpc_Core_IServerStreamWriter_1.htm" /> + <HelpKINode Title="Grpc.Core.IServerStreamWriter<T> interface" Url="html/T_Grpc_Core_IServerStreamWriter_1.htm" /> + <HelpKINode Title="Grpc.Core.KeyCertificatePair class" Url="html/T_Grpc_Core_KeyCertificatePair.htm" /> + <HelpKINode Title="Grpc.Core.Logging namespace" Url="html/N_Grpc_Core_Logging.htm" /> + <HelpKINode Title="Grpc.Core.Logging.ConsoleLogger class" Url="html/T_Grpc_Core_Logging_ConsoleLogger.htm" /> + <HelpKINode Title="Grpc.Core.Logging.ILogger interface" Url="html/T_Grpc_Core_Logging_ILogger.htm" /> + <HelpKINode Title="Grpc.Core.Marshaller(Of T) structure" Url="html/T_Grpc_Core_Marshaller_1.htm" /> + <HelpKINode Title="Grpc.Core.Marshaller<T> structure" Url="html/T_Grpc_Core_Marshaller_1.htm" /> + <HelpKINode Title="Grpc.Core.Marshallers class" Url="html/T_Grpc_Core_Marshallers.htm" /> + <HelpKINode Title="Grpc.Core.Metadata class" Url="html/T_Grpc_Core_Metadata.htm" /> + <HelpKINode Title="Grpc.Core.Metadata.Entry structure" Url="html/T_Grpc_Core_Metadata_Entry.htm" /> + <HelpKINode Title="Grpc.Core.Method(Of TRequest, TResponse) class" Url="html/T_Grpc_Core_Method_2.htm" /> + <HelpKINode Title="Grpc.Core.Method<TRequest, TResponse> class" Url="html/T_Grpc_Core_Method_2.htm" /> + <HelpKINode Title="Grpc.Core.MethodType enumeration" Url="html/T_Grpc_Core_MethodType.htm" /> + <HelpKINode Title="Grpc.Core.RpcException class" Url="html/T_Grpc_Core_RpcException.htm" /> + <HelpKINode Title="Grpc.Core.Server class" Url="html/T_Grpc_Core_Server.htm" /> + <HelpKINode Title="Grpc.Core.Server.ServerPortCollection class" Url="html/T_Grpc_Core_Server_ServerPortCollection.htm" /> + <HelpKINode Title="Grpc.Core.Server.ServiceDefinitionCollection class" Url="html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm" /> + <HelpKINode Title="Grpc.Core.ServerCallContext class" Url="html/T_Grpc_Core_ServerCallContext.htm" /> + <HelpKINode Title="Grpc.Core.ServerCredentials class" Url="html/T_Grpc_Core_ServerCredentials.htm" /> + <HelpKINode Title="Grpc.Core.ServerPort class" Url="html/T_Grpc_Core_ServerPort.htm" /> + <HelpKINode Title="Grpc.Core.ServerServiceDefinition class" Url="html/T_Grpc_Core_ServerServiceDefinition.htm" /> + <HelpKINode Title="Grpc.Core.ServerServiceDefinition.Builder class" Url="html/T_Grpc_Core_ServerServiceDefinition_Builder.htm" /> + <HelpKINode Title="Grpc.Core.ServerStreamingServerMethod(Of TRequest, TResponse) delegate" Url="html/T_Grpc_Core_ServerStreamingServerMethod_2.htm" /> + <HelpKINode Title="Grpc.Core.ServerStreamingServerMethod<TRequest, TResponse> delegate" Url="html/T_Grpc_Core_ServerStreamingServerMethod_2.htm" /> + <HelpKINode Title="Grpc.Core.SslCredentials class" Url="html/T_Grpc_Core_SslCredentials.htm" /> + <HelpKINode Title="Grpc.Core.SslServerCredentials class" Url="html/T_Grpc_Core_SslServerCredentials.htm" /> + <HelpKINode Title="Grpc.Core.Status structure" Url="html/T_Grpc_Core_Status.htm" /> + <HelpKINode Title="Grpc.Core.StatusCode enumeration" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="Grpc.Core.UnaryServerMethod(Of TRequest, TResponse) delegate" Url="html/T_Grpc_Core_UnaryServerMethod_2.htm" /> + <HelpKINode Title="Grpc.Core.UnaryServerMethod<TRequest, TResponse> delegate" Url="html/T_Grpc_Core_UnaryServerMethod_2.htm" /> + <HelpKINode Title="Grpc.Core.Utils namespace" Url="html/N_Grpc_Core_Utils.htm" /> + <HelpKINode Title="Grpc.Core.Utils.AsyncStreamExtensions class" Url="html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm" /> + <HelpKINode Title="Grpc.Core.Utils.BenchmarkUtil class" Url="html/T_Grpc_Core_Utils_BenchmarkUtil.htm" /> + <HelpKINode Title="Grpc.Core.Utils.Preconditions class" Url="html/T_Grpc_Core_Utils_Preconditions.htm" /> + <HelpKINode Title="Grpc.Core.VersionInfo class" Url="html/T_Grpc_Core_VersionInfo.htm" /> + <HelpKINode Title="Grpc.Core.WriteFlags enumeration" Url="html/T_Grpc_Core_WriteFlags.htm" /> + <HelpKINode Title="Grpc.Core.WriteOptions class" Url="html/T_Grpc_Core_WriteOptions.htm" /> + <HelpKINode Title="GrpcEnvironment class"> + <HelpKINode Title="GrpcEnvironment Class" Url="html/T_Grpc_Core_GrpcEnvironment.htm" /> + <HelpKINode Title="about GrpcEnvironment class" Url="html/T_Grpc_Core_GrpcEnvironment.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_GrpcEnvironment.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_GrpcEnvironment.htm" /> + </HelpKINode> + <HelpKINode Title="GrpcEnvironment.Logger property" Url="html/P_Grpc_Core_GrpcEnvironment_Logger.htm" /> + <HelpKINode Title="GrpcEnvironment.SetLogger method" Url="html/M_Grpc_Core_GrpcEnvironment_SetLogger.htm" /> + <HelpKINode Title="HeaderInterceptor delegate" Url="html/T_Grpc_Core_HeaderInterceptor.htm" /> + <HelpKINode Title="HeaderInterceptor property" Url="html/P_Grpc_Core_ClientBase_HeaderInterceptor.htm" /> + <HelpKINode Title="Headers property" Url="html/P_Grpc_Core_CallOptions_Headers.htm" /> + <HelpKINode Title="High enumeration member" Url="html/T_Grpc_Core_CompressionLevel.htm" /> + <HelpKINode Title="Host property"> + <HelpKINode Title="CallInvocationDetails(TRequest, TResponse).Host Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_Host.htm" /> + <HelpKINode Title="ClientBase.Host Property " Url="html/P_Grpc_Core_ClientBase_Host.htm" /> + <HelpKINode Title="ServerCallContext.Host Property " Url="html/P_Grpc_Core_ServerCallContext_Host.htm" /> + <HelpKINode Title="ServerPort.Host Property " Url="html/P_Grpc_Core_ServerPort_Host.htm" /> + </HelpKINode> + <HelpKINode Title="Http2InitialSequenceNumber field" Url="html/F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" /> + <HelpKINode Title="IAsyncStreamReader(Of T) interface"> + <HelpKINode Title="IAsyncStreamReader(T) Interface" Url="html/T_Grpc_Core_IAsyncStreamReader_1.htm" /> + <HelpKINode Title="about IAsyncStreamReader(Of T) interface" Url="html/T_Grpc_Core_IAsyncStreamReader_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_IAsyncStreamReader_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_IAsyncStreamReader_1.htm" /> + </HelpKINode> + <HelpKINode Title="IAsyncStreamReader<T> interface"> + <HelpKINode Title="IAsyncStreamReader(T) Interface" Url="html/T_Grpc_Core_IAsyncStreamReader_1.htm" /> + <HelpKINode Title="about IAsyncStreamReader<T> interface" Url="html/T_Grpc_Core_IAsyncStreamReader_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_IAsyncStreamReader_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_IAsyncStreamReader_1.htm" /> + </HelpKINode> + <HelpKINode Title="IAsyncStreamWriter(Of T) interface"> + <HelpKINode Title="IAsyncStreamWriter(T) Interface" Url="html/T_Grpc_Core_IAsyncStreamWriter_1.htm" /> + <HelpKINode Title="about IAsyncStreamWriter(Of T) interface" Url="html/T_Grpc_Core_IAsyncStreamWriter_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm" /> + </HelpKINode> + <HelpKINode Title="IAsyncStreamWriter(Of T).WriteAsync method" Url="html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm" /> + <HelpKINode Title="IAsyncStreamWriter(Of T).WriteOptions property" Url="html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm" /> + <HelpKINode Title="IAsyncStreamWriter<T> interface"> + <HelpKINode Title="IAsyncStreamWriter(T) Interface" Url="html/T_Grpc_Core_IAsyncStreamWriter_1.htm" /> + <HelpKINode Title="about IAsyncStreamWriter<T> interface" Url="html/T_Grpc_Core_IAsyncStreamWriter_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm" /> + </HelpKINode> + <HelpKINode Title="IAsyncStreamWriter<T>.WriteAsync method" Url="html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm" /> + <HelpKINode Title="IAsyncStreamWriter<T>.WriteOptions property" Url="html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm" /> + <HelpKINode Title="IClientStreamWriter(Of T) interface"> + <HelpKINode Title="IClientStreamWriter(T) Interface" Url="html/T_Grpc_Core_IClientStreamWriter_1.htm" /> + <HelpKINode Title="about IClientStreamWriter(Of T) interface" Url="html/T_Grpc_Core_IClientStreamWriter_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_IClientStreamWriter_1.htm" /> + </HelpKINode> + <HelpKINode Title="IClientStreamWriter(Of T).CompleteAsync method" Url="html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm" /> + <HelpKINode Title="IClientStreamWriter<T> interface"> + <HelpKINode Title="IClientStreamWriter(T) Interface" Url="html/T_Grpc_Core_IClientStreamWriter_1.htm" /> + <HelpKINode Title="about IClientStreamWriter<T> interface" Url="html/T_Grpc_Core_IClientStreamWriter_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_IClientStreamWriter_1.htm" /> + </HelpKINode> + <HelpKINode Title="IClientStreamWriter<T>.CompleteAsync method" Url="html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm" /> + <HelpKINode Title="Idle enumeration member" Url="html/T_Grpc_Core_ChannelState.htm" /> + <HelpKINode Title="IHasWriteOptions interface"> + <HelpKINode Title="IHasWriteOptions Interface" Url="html/T_Grpc_Core_IHasWriteOptions.htm" /> + <HelpKINode Title="about IHasWriteOptions interface" Url="html/T_Grpc_Core_IHasWriteOptions.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_IHasWriteOptions.htm" /> + </HelpKINode> + <HelpKINode Title="IHasWriteOptions.WriteOptions property" Url="html/P_Grpc_Core_IHasWriteOptions_WriteOptions.htm" /> + <HelpKINode Title="ILogger interface"> + <HelpKINode Title="ILogger Interface" Url="html/T_Grpc_Core_Logging_ILogger.htm" /> + <HelpKINode Title="about ILogger interface" Url="html/T_Grpc_Core_Logging_ILogger.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Logging_ILogger.htm" /> + </HelpKINode> + <HelpKINode Title="ILogger.Debug method" Url="html/M_Grpc_Core_Logging_ILogger_Debug.htm" /> + <HelpKINode Title="ILogger.Error method" Url="html/Overload_Grpc_Core_Logging_ILogger_Error.htm" /> + <HelpKINode Title="ILogger.ForType(Of T) method" Url="html/M_Grpc_Core_Logging_ILogger_ForType__1.htm" /> + <HelpKINode Title="ILogger.ForType<T> method" Url="html/M_Grpc_Core_Logging_ILogger_ForType__1.htm" /> + <HelpKINode Title="ILogger.Info method" Url="html/M_Grpc_Core_Logging_ILogger_Info.htm" /> + <HelpKINode Title="ILogger.Warning method" Url="html/Overload_Grpc_Core_Logging_ILogger_Warning.htm" /> + <HelpKINode Title="IMethod interface"> + <HelpKINode Title="IMethod Interface" Url="html/T_Grpc_Core_IMethod.htm" /> + <HelpKINode Title="about IMethod interface" Url="html/T_Grpc_Core_IMethod.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_IMethod.htm" /> + </HelpKINode> + <HelpKINode Title="IMethod.FullName property" Url="html/P_Grpc_Core_IMethod_FullName.htm" /> + <HelpKINode Title="IMethod.Name property" Url="html/P_Grpc_Core_IMethod_Name.htm" /> + <HelpKINode Title="IMethod.ServiceName property" Url="html/P_Grpc_Core_IMethod_ServiceName.htm" /> + <HelpKINode Title="IMethod.Type property" Url="html/P_Grpc_Core_IMethod_Type.htm" /> + <HelpKINode Title="IndexOf method" Url="html/M_Grpc_Core_Metadata_IndexOf.htm" /> + <HelpKINode Title="Info method"> + <HelpKINode Title="ConsoleLogger.Info Method " Url="html/M_Grpc_Core_Logging_ConsoleLogger_Info.htm" /> + <HelpKINode Title="ILogger.Info Method " Url="html/M_Grpc_Core_Logging_ILogger_Info.htm" /> + </HelpKINode> + <HelpKINode Title="Insecure property"> + <HelpKINode Title="Credentials.Insecure Property " Url="html/P_Grpc_Core_Credentials_Insecure.htm" /> + <HelpKINode Title="ServerCredentials.Insecure Property " Url="html/P_Grpc_Core_ServerCredentials_Insecure.htm" /> + </HelpKINode> + <HelpKINode Title="Insert method" Url="html/M_Grpc_Core_Metadata_Insert.htm" /> + <HelpKINode Title="Integer enumeration member" Url="html/T_Grpc_Core_ChannelOption_OptionType.htm" /> + <HelpKINode Title="Internal enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="IntValue property" Url="html/P_Grpc_Core_ChannelOption_IntValue.htm" /> + <HelpKINode Title="InvalidArgument enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="IsBinary property" Url="html/P_Grpc_Core_Metadata_Entry_IsBinary.htm" /> + <HelpKINode Title="IServerStreamWriter(Of T) interface"> + <HelpKINode Title="IServerStreamWriter(T) Interface" Url="html/T_Grpc_Core_IServerStreamWriter_1.htm" /> + <HelpKINode Title="about IServerStreamWriter(Of T) interface" Url="html/T_Grpc_Core_IServerStreamWriter_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_IServerStreamWriter_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_IServerStreamWriter_1.htm" /> + </HelpKINode> + <HelpKINode Title="IServerStreamWriter<T> interface"> + <HelpKINode Title="IServerStreamWriter(T) Interface" Url="html/T_Grpc_Core_IServerStreamWriter_1.htm" /> + <HelpKINode Title="about IServerStreamWriter<T> interface" Url="html/T_Grpc_Core_IServerStreamWriter_1.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_IServerStreamWriter_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_IServerStreamWriter_1.htm" /> + </HelpKINode> + <HelpKINode Title="IsPropagateCancellation property" Url="html/P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm" /> + <HelpKINode Title="IsPropagateDeadline property" Url="html/P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm" /> + <HelpKINode Title="IsReadOnly property" Url="html/P_Grpc_Core_Metadata_IsReadOnly.htm" /> + <HelpKINode Title="Item property" Url="html/P_Grpc_Core_Metadata_Item.htm" /> + <HelpKINode Title="Key property" Url="html/P_Grpc_Core_Metadata_Entry_Key.htm" /> + <HelpKINode Title="KeyCertificatePair class"> + <HelpKINode Title="KeyCertificatePair Class" Url="html/T_Grpc_Core_KeyCertificatePair.htm" /> + <HelpKINode Title="about KeyCertificatePair class" Url="html/T_Grpc_Core_KeyCertificatePair.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_KeyCertificatePair__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_KeyCertificatePair.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_KeyCertificatePair.htm" /> + </HelpKINode> + <HelpKINode Title="KeyCertificatePair property" Url="html/P_Grpc_Core_SslCredentials_KeyCertificatePair.htm" /> + <HelpKINode Title="KeyCertificatePair.CertificateChain property" Url="html/P_Grpc_Core_KeyCertificatePair_CertificateChain.htm" /> + <HelpKINode Title="KeyCertificatePair.KeyCertificatePair constructor" Url="html/M_Grpc_Core_KeyCertificatePair__ctor.htm" /> + <HelpKINode Title="KeyCertificatePair.PrivateKey property" Url="html/P_Grpc_Core_KeyCertificatePair_PrivateKey.htm" /> + <HelpKINode Title="KeyCertificatePairs property" Url="html/P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm" /> + <HelpKINode Title="KillAsync method" Url="html/M_Grpc_Core_Server_KillAsync.htm" /> + <HelpKINode Title="Logger property" Url="html/P_Grpc_Core_GrpcEnvironment_Logger.htm" /> + <HelpKINode Title="Low enumeration member" Url="html/T_Grpc_Core_CompressionLevel.htm" /> + <HelpKINode Title="Marshaller(Of T) structure"> + <HelpKINode Title="Marshaller(T) Structure" Url="html/T_Grpc_Core_Marshaller_1.htm" /> + <HelpKINode Title="about Marshaller(Of T) structure" Url="html/T_Grpc_Core_Marshaller_1.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_Marshaller_1__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Marshaller_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_Marshaller_1.htm" /> + </HelpKINode> + <HelpKINode Title="Marshaller(Of T).Deserializer property" Url="html/P_Grpc_Core_Marshaller_1_Deserializer.htm" /> + <HelpKINode Title="Marshaller(Of T).Marshaller constructor" Url="html/M_Grpc_Core_Marshaller_1__ctor.htm" /> + <HelpKINode Title="Marshaller(Of T).Serializer property" Url="html/P_Grpc_Core_Marshaller_1_Serializer.htm" /> + <HelpKINode Title="Marshaller<T> structure"> + <HelpKINode Title="Marshaller(T) Structure" Url="html/T_Grpc_Core_Marshaller_1.htm" /> + <HelpKINode Title="about Marshaller<T> structure" Url="html/T_Grpc_Core_Marshaller_1.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_Marshaller_1__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Marshaller_1.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_Marshaller_1.htm" /> + </HelpKINode> + <HelpKINode Title="Marshaller<T>.Deserializer property" Url="html/P_Grpc_Core_Marshaller_1_Deserializer.htm" /> + <HelpKINode Title="Marshaller<T>.Marshaller constructor" Url="html/M_Grpc_Core_Marshaller_1__ctor.htm" /> + <HelpKINode Title="Marshaller<T>.Serializer property" Url="html/P_Grpc_Core_Marshaller_1_Serializer.htm" /> + <HelpKINode Title="Marshallers class"> + <HelpKINode Title="Marshallers Class" Url="html/T_Grpc_Core_Marshallers.htm" /> + <HelpKINode Title="about Marshallers class" Url="html/T_Grpc_Core_Marshallers.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Marshallers.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_Marshallers.htm" /> + </HelpKINode> + <HelpKINode Title="Marshallers.Create(Of T) method" Url="html/M_Grpc_Core_Marshallers_Create__1.htm" /> + <HelpKINode Title="Marshallers.Create<T> method" Url="html/M_Grpc_Core_Marshallers_Create__1.htm" /> + <HelpKINode Title="Marshallers.StringMarshaller property" Url="html/P_Grpc_Core_Marshallers_StringMarshaller.htm" /> + <HelpKINode Title="MaxConcurrentStreams field" Url="html/F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" /> + <HelpKINode Title="MaxMessageLength field" Url="html/F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" /> + <HelpKINode Title="Medium enumeration member" Url="html/T_Grpc_Core_CompressionLevel.htm" /> + <HelpKINode Title="Metadata class"> + <HelpKINode Title="Metadata Class" Url="html/T_Grpc_Core_Metadata.htm" /> + <HelpKINode Title="about Metadata class" Url="html/T_Grpc_Core_Metadata.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_Metadata__ctor.htm" /> + <HelpKINode Title="fields" Url="html/Fields_T_Grpc_Core_Metadata.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Metadata.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_Metadata.htm" /> + </HelpKINode> + <HelpKINode Title="Metadata.Add method" Url="html/Overload_Grpc_Core_Metadata_Add.htm" /> + <HelpKINode Title="Metadata.BinaryHeaderSuffix field" Url="html/F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm" /> + <HelpKINode Title="Metadata.Clear method" Url="html/M_Grpc_Core_Metadata_Clear.htm" /> + <HelpKINode Title="Metadata.Contains method" Url="html/M_Grpc_Core_Metadata_Contains.htm" /> + <HelpKINode Title="Metadata.CopyTo method" Url="html/M_Grpc_Core_Metadata_CopyTo.htm" /> + <HelpKINode Title="Metadata.Count property" Url="html/P_Grpc_Core_Metadata_Count.htm" /> + <HelpKINode Title="Metadata.Empty field" Url="html/F_Grpc_Core_Metadata_Empty.htm" /> + <HelpKINode Title="Metadata.Entry structure"> + <HelpKINode Title="Metadata.Entry Structure" Url="html/T_Grpc_Core_Metadata_Entry.htm" /> + <HelpKINode Title="about Metadata.Entry structure" Url="html/T_Grpc_Core_Metadata_Entry.htm" /> + <HelpKINode Title="constructor" Url="html/Overload_Grpc_Core_Metadata_Entry__ctor.htm" /> + </HelpKINode> + <HelpKINode Title="Metadata.Entry.Entry constructor" Url="html/Overload_Grpc_Core_Metadata_Entry__ctor.htm" /> + <HelpKINode Title="Metadata.Entry.IsBinary property" Url="html/P_Grpc_Core_Metadata_Entry_IsBinary.htm" /> + <HelpKINode Title="Metadata.Entry.Key property" Url="html/P_Grpc_Core_Metadata_Entry_Key.htm" /> + <HelpKINode Title="Metadata.Entry.ToString method" Url="html/M_Grpc_Core_Metadata_Entry_ToString.htm" /> + <HelpKINode Title="Metadata.Entry.Value property" Url="html/P_Grpc_Core_Metadata_Entry_Value.htm" /> + <HelpKINode Title="Metadata.Entry.ValueBytes property" Url="html/P_Grpc_Core_Metadata_Entry_ValueBytes.htm" /> + <HelpKINode Title="Metadata.GetEnumerator method" Url="html/M_Grpc_Core_Metadata_GetEnumerator.htm" /> + <HelpKINode Title="Metadata.IndexOf method" Url="html/M_Grpc_Core_Metadata_IndexOf.htm" /> + <HelpKINode Title="Metadata.Insert method" Url="html/M_Grpc_Core_Metadata_Insert.htm" /> + <HelpKINode Title="Metadata.IsReadOnly property" Url="html/P_Grpc_Core_Metadata_IsReadOnly.htm" /> + <HelpKINode Title="Metadata.Item property" Url="html/P_Grpc_Core_Metadata_Item.htm" /> + <HelpKINode Title="Metadata.Metadata constructor" Url="html/M_Grpc_Core_Metadata__ctor.htm" /> + <HelpKINode Title="Metadata.Remove method" Url="html/M_Grpc_Core_Metadata_Remove.htm" /> + <HelpKINode Title="Metadata.RemoveAt method" Url="html/M_Grpc_Core_Metadata_RemoveAt.htm" /> + <HelpKINode Title="Method property"> + <HelpKINode Title="CallInvocationDetails(TRequest, TResponse).Method Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_Method.htm" /> + <HelpKINode Title="ServerCallContext.Method Property " Url="html/P_Grpc_Core_ServerCallContext_Method.htm" /> + </HelpKINode> + <HelpKINode Title="Method(Of TRequest, TResponse) class"> + <HelpKINode Title="Method(TRequest, TResponse) Class" Url="html/T_Grpc_Core_Method_2.htm" /> + <HelpKINode Title="about Method(Of TRequest, TResponse) class" Url="html/T_Grpc_Core_Method_2.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_Method_2__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Method_2.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_Method_2.htm" /> + </HelpKINode> + <HelpKINode Title="Method(Of TRequest, TResponse).FullName property" Url="html/P_Grpc_Core_Method_2_FullName.htm" /> + <HelpKINode Title="Method(Of TRequest, TResponse).Method constructor" Url="html/M_Grpc_Core_Method_2__ctor.htm" /> + <HelpKINode Title="Method(Of TRequest, TResponse).Name property" Url="html/P_Grpc_Core_Method_2_Name.htm" /> + <HelpKINode Title="Method(Of TRequest, TResponse).RequestMarshaller property" Url="html/P_Grpc_Core_Method_2_RequestMarshaller.htm" /> + <HelpKINode Title="Method(Of TRequest, TResponse).ResponseMarshaller property" Url="html/P_Grpc_Core_Method_2_ResponseMarshaller.htm" /> + <HelpKINode Title="Method(Of TRequest, TResponse).ServiceName property" Url="html/P_Grpc_Core_Method_2_ServiceName.htm" /> + <HelpKINode Title="Method(Of TRequest, TResponse).Type property" Url="html/P_Grpc_Core_Method_2_Type.htm" /> + <HelpKINode Title="Method<TRequest, TResponse> class"> + <HelpKINode Title="Method(TRequest, TResponse) Class" Url="html/T_Grpc_Core_Method_2.htm" /> + <HelpKINode Title="about Method<TRequest, TResponse> class" Url="html/T_Grpc_Core_Method_2.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_Method_2__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Method_2.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_Method_2.htm" /> + </HelpKINode> + <HelpKINode Title="Method<TRequest, TResponse>.FullName property" Url="html/P_Grpc_Core_Method_2_FullName.htm" /> + <HelpKINode Title="Method<TRequest, TResponse>.Method constructor" Url="html/M_Grpc_Core_Method_2__ctor.htm" /> + <HelpKINode Title="Method<TRequest, TResponse>.Name property" Url="html/P_Grpc_Core_Method_2_Name.htm" /> + <HelpKINode Title="Method<TRequest, TResponse>.RequestMarshaller property" Url="html/P_Grpc_Core_Method_2_RequestMarshaller.htm" /> + <HelpKINode Title="Method<TRequest, TResponse>.ResponseMarshaller property" Url="html/P_Grpc_Core_Method_2_ResponseMarshaller.htm" /> + <HelpKINode Title="Method<TRequest, TResponse>.ServiceName property" Url="html/P_Grpc_Core_Method_2_ServiceName.htm" /> + <HelpKINode Title="Method<TRequest, TResponse>.Type property" Url="html/P_Grpc_Core_Method_2_Type.htm" /> + <HelpKINode Title="MethodType enumeration" Url="html/T_Grpc_Core_MethodType.htm" /> + <HelpKINode Title="Name property"> + <HelpKINode Title="ChannelOption.Name Property " Url="html/P_Grpc_Core_ChannelOption_Name.htm" /> + <HelpKINode Title="IMethod.Name Property " Url="html/P_Grpc_Core_IMethod_Name.htm" /> + <HelpKINode Title="Method(TRequest, TResponse).Name Property " Url="html/P_Grpc_Core_Method_2_Name.htm" /> + </HelpKINode> + <HelpKINode Title="NoCompress enumeration member" Url="html/T_Grpc_Core_WriteFlags.htm" /> + <HelpKINode Title="None enumeration member" Url="html/T_Grpc_Core_CompressionLevel.htm" /> + <HelpKINode Title="NotFound enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="OK enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="Options property" Url="html/P_Grpc_Core_CallInvocationDetails_2_Options.htm" /> + <HelpKINode Title="OutOfRange enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="Peer property" Url="html/P_Grpc_Core_ServerCallContext_Peer.htm" /> + <HelpKINode Title="PermissionDenied enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="PickUnused field" Url="html/F_Grpc_Core_ServerPort_PickUnused.htm" /> + <HelpKINode Title="Port property" Url="html/P_Grpc_Core_ServerPort_Port.htm" /> + <HelpKINode Title="Ports property" Url="html/P_Grpc_Core_Server_Ports.htm" /> + <HelpKINode Title="Preconditions class"> + <HelpKINode Title="Preconditions Class" Url="html/T_Grpc_Core_Utils_Preconditions.htm" /> + <HelpKINode Title="about Preconditions class" Url="html/T_Grpc_Core_Utils_Preconditions.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Utils_Preconditions.htm" /> + </HelpKINode> + <HelpKINode Title="Preconditions.CheckArgument method" Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm" /> + <HelpKINode Title="Preconditions.CheckNotNull method" Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm" /> + <HelpKINode Title="Preconditions.CheckState method" Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm" /> + <HelpKINode Title="PrimaryUserAgentString field" Url="html/F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" /> + <HelpKINode Title="PrivateKey property" Url="html/P_Grpc_Core_KeyCertificatePair_PrivateKey.htm" /> + <HelpKINode Title="PropagationToken property" Url="html/P_Grpc_Core_CallOptions_PropagationToken.htm" /> + <HelpKINode Title="Ready enumeration member" Url="html/T_Grpc_Core_ChannelState.htm" /> + <HelpKINode Title="Remove method" Url="html/M_Grpc_Core_Metadata_Remove.htm" /> + <HelpKINode Title="RemoveAt method" Url="html/M_Grpc_Core_Metadata_RemoveAt.htm" /> + <HelpKINode Title="RequestHeaders property" Url="html/P_Grpc_Core_ServerCallContext_RequestHeaders.htm" /> + <HelpKINode Title="RequestMarshaller property"> + <HelpKINode Title="CallInvocationDetails(TRequest, TResponse).RequestMarshaller Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" /> + <HelpKINode Title="Method(TRequest, TResponse).RequestMarshaller Property " Url="html/P_Grpc_Core_Method_2_RequestMarshaller.htm" /> + </HelpKINode> + <HelpKINode Title="RequestStream property"> + <HelpKINode Title="AsyncClientStreamingCall(TRequest, TResponse).RequestStream Property " Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(TRequest, TResponse).RequestStream Property " Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm" /> + </HelpKINode> + <HelpKINode Title="ResolvedTarget property" Url="html/P_Grpc_Core_Channel_ResolvedTarget.htm" /> + <HelpKINode Title="ResourceExhausted enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="ResponseAsync property"> + <HelpKINode Title="AsyncClientStreamingCall(TRequest, TResponse).ResponseAsync Property " Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm" /> + <HelpKINode Title="AsyncUnaryCall(TResponse).ResponseAsync Property " Url="html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm" /> + </HelpKINode> + <HelpKINode Title="ResponseHeadersAsync property"> + <HelpKINode Title="AsyncClientStreamingCall(TRequest, TResponse).ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm" /> + <HelpKINode Title="AsyncDuplexStreamingCall(TRequest, TResponse).ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm" /> + <HelpKINode Title="AsyncServerStreamingCall(TResponse).ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm" /> + <HelpKINode Title="AsyncUnaryCall(TResponse).ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm" /> + </HelpKINode> + <HelpKINode Title="ResponseMarshaller property"> + <HelpKINode Title="CallInvocationDetails(TRequest, TResponse).ResponseMarshaller Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" /> + <HelpKINode Title="Method(TRequest, TResponse).ResponseMarshaller Property " Url="html/P_Grpc_Core_Method_2_ResponseMarshaller.htm" /> + </HelpKINode> + <HelpKINode Title="ResponseStream property"> + <HelpKINode Title="AsyncDuplexStreamingCall(TRequest, TResponse).ResponseStream Property " Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm" /> + <HelpKINode Title="AsyncServerStreamingCall(TResponse).ResponseStream Property " Url="html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm" /> + </HelpKINode> + <HelpKINode Title="ResponseTrailers property" Url="html/P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" /> + <HelpKINode Title="RootCertificates property"> + <HelpKINode Title="SslCredentials.RootCertificates Property " Url="html/P_Grpc_Core_SslCredentials_RootCertificates.htm" /> + <HelpKINode Title="SslServerCredentials.RootCertificates Property " Url="html/P_Grpc_Core_SslServerCredentials_RootCertificates.htm" /> + </HelpKINode> + <HelpKINode Title="RpcException class"> + <HelpKINode Title="RpcException Class" Url="html/T_Grpc_Core_RpcException.htm" /> + <HelpKINode Title="about RpcException class" Url="html/T_Grpc_Core_RpcException.htm" /> + <HelpKINode Title="constructor" Url="html/Overload_Grpc_Core_RpcException__ctor.htm" /> + <HelpKINode Title="events" Url="html/Events_T_Grpc_Core_RpcException.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_RpcException.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_RpcException.htm" /> + </HelpKINode> + <HelpKINode Title="RpcException.RpcException constructor" Url="html/Overload_Grpc_Core_RpcException__ctor.htm" /> + <HelpKINode Title="RpcException.Status property" Url="html/P_Grpc_Core_RpcException_Status.htm" /> + <HelpKINode Title="RunBenchmark method" Url="html/M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm" /> + <HelpKINode Title="SecondaryUserAgentString field" Url="html/F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" /> + <HelpKINode Title="Serializer property" Url="html/P_Grpc_Core_Marshaller_1_Serializer.htm" /> + <HelpKINode Title="Server class"> + <HelpKINode Title="Server Class" Url="html/T_Grpc_Core_Server.htm" /> + <HelpKINode Title="about Server class" Url="html/T_Grpc_Core_Server.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_Server__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Server.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_Server.htm" /> + </HelpKINode> + <HelpKINode Title="Server.KillAsync method" Url="html/M_Grpc_Core_Server_KillAsync.htm" /> + <HelpKINode Title="Server.Ports property" Url="html/P_Grpc_Core_Server_Ports.htm" /> + <HelpKINode Title="Server.Server constructor" Url="html/M_Grpc_Core_Server__ctor.htm" /> + <HelpKINode Title="Server.ServerPortCollection class"> + <HelpKINode Title="Server.ServerPortCollection Class" Url="html/T_Grpc_Core_Server_ServerPortCollection.htm" /> + <HelpKINode Title="about Server.ServerPortCollection class" Url="html/T_Grpc_Core_Server_ServerPortCollection.htm" /> + </HelpKINode> + <HelpKINode Title="Server.ServerPortCollection.Add method" Url="html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm" /> + <HelpKINode Title="Server.ServerPortCollection.GetEnumerator method" Url="html/M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm" /> + <HelpKINode Title="Server.ServiceDefinitionCollection class"> + <HelpKINode Title="Server.ServiceDefinitionCollection Class" Url="html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm" /> + <HelpKINode Title="about Server.ServiceDefinitionCollection class" Url="html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm" /> + </HelpKINode> + <HelpKINode Title="Server.ServiceDefinitionCollection.Add method" Url="html/M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm" /> + <HelpKINode Title="Server.ServiceDefinitionCollection.GetEnumerator method" Url="html/M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm" /> + <HelpKINode Title="Server.Services property" Url="html/P_Grpc_Core_Server_Services.htm" /> + <HelpKINode Title="Server.ShutdownAsync method" Url="html/M_Grpc_Core_Server_ShutdownAsync.htm" /> + <HelpKINode Title="Server.ShutdownTask property" Url="html/P_Grpc_Core_Server_ShutdownTask.htm" /> + <HelpKINode Title="Server.Start method" Url="html/M_Grpc_Core_Server_Start.htm" /> + <HelpKINode Title="ServerCallContext class"> + <HelpKINode Title="ServerCallContext Class" Url="html/T_Grpc_Core_ServerCallContext.htm" /> + <HelpKINode Title="about ServerCallContext class" Url="html/T_Grpc_Core_ServerCallContext.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_ServerCallContext.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_ServerCallContext.htm" /> + </HelpKINode> + <HelpKINode Title="ServerCallContext.CancellationToken property" Url="html/P_Grpc_Core_ServerCallContext_CancellationToken.htm" /> + <HelpKINode Title="ServerCallContext.CreatePropagationToken method" Url="html/M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm" /> + <HelpKINode Title="ServerCallContext.Deadline property" Url="html/P_Grpc_Core_ServerCallContext_Deadline.htm" /> + <HelpKINode Title="ServerCallContext.Host property" Url="html/P_Grpc_Core_ServerCallContext_Host.htm" /> + <HelpKINode Title="ServerCallContext.Method property" Url="html/P_Grpc_Core_ServerCallContext_Method.htm" /> + <HelpKINode Title="ServerCallContext.Peer property" Url="html/P_Grpc_Core_ServerCallContext_Peer.htm" /> + <HelpKINode Title="ServerCallContext.RequestHeaders property" Url="html/P_Grpc_Core_ServerCallContext_RequestHeaders.htm" /> + <HelpKINode Title="ServerCallContext.ResponseTrailers property" Url="html/P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" /> + <HelpKINode Title="ServerCallContext.Status property" Url="html/P_Grpc_Core_ServerCallContext_Status.htm" /> + <HelpKINode Title="ServerCallContext.WriteOptions property" Url="html/P_Grpc_Core_ServerCallContext_WriteOptions.htm" /> + <HelpKINode Title="ServerCallContext.WriteResponseHeadersAsync method" Url="html/M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm" /> + <HelpKINode Title="ServerCredentials class"> + <HelpKINode Title="ServerCredentials Class" Url="html/T_Grpc_Core_ServerCredentials.htm" /> + <HelpKINode Title="about ServerCredentials class" Url="html/T_Grpc_Core_ServerCredentials.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_ServerCredentials__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_ServerCredentials.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_ServerCredentials.htm" /> + </HelpKINode> + <HelpKINode Title="ServerCredentials.Insecure property" Url="html/P_Grpc_Core_ServerCredentials_Insecure.htm" /> + <HelpKINode Title="ServerCredentials.ServerCredentials constructor" Url="html/M_Grpc_Core_ServerCredentials__ctor.htm" /> + <HelpKINode Title="ServerPort class"> + <HelpKINode Title="ServerPort Class" Url="html/T_Grpc_Core_ServerPort.htm" /> + <HelpKINode Title="about ServerPort class" Url="html/T_Grpc_Core_ServerPort.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_ServerPort__ctor.htm" /> + <HelpKINode Title="fields" Url="html/Fields_T_Grpc_Core_ServerPort.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_ServerPort.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_ServerPort.htm" /> + </HelpKINode> + <HelpKINode Title="ServerPort.BoundPort property" Url="html/P_Grpc_Core_ServerPort_BoundPort.htm" /> + <HelpKINode Title="ServerPort.Credentials property" Url="html/P_Grpc_Core_ServerPort_Credentials.htm" /> + <HelpKINode Title="ServerPort.Host property" Url="html/P_Grpc_Core_ServerPort_Host.htm" /> + <HelpKINode Title="ServerPort.PickUnused field" Url="html/F_Grpc_Core_ServerPort_PickUnused.htm" /> + <HelpKINode Title="ServerPort.Port property" Url="html/P_Grpc_Core_ServerPort_Port.htm" /> + <HelpKINode Title="ServerPort.ServerPort constructor" Url="html/M_Grpc_Core_ServerPort__ctor.htm" /> + <HelpKINode Title="ServerPortCollection class"> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Server_ServerPortCollection.htm" /> + </HelpKINode> + <HelpKINode Title="ServerServiceDefinition class"> + <HelpKINode Title="ServerServiceDefinition Class" Url="html/T_Grpc_Core_ServerServiceDefinition.htm" /> + <HelpKINode Title="about ServerServiceDefinition class" Url="html/T_Grpc_Core_ServerServiceDefinition.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_ServerServiceDefinition.htm" /> + </HelpKINode> + <HelpKINode Title="ServerServiceDefinition.Builder class"> + <HelpKINode Title="ServerServiceDefinition.Builder Class" Url="html/T_Grpc_Core_ServerServiceDefinition_Builder.htm" /> + <HelpKINode Title="about ServerServiceDefinition.Builder class" Url="html/T_Grpc_Core_ServerServiceDefinition_Builder.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm" /> + </HelpKINode> + <HelpKINode Title="ServerServiceDefinition.Builder.AddMethod method" Url="html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm" /> + <HelpKINode Title="ServerServiceDefinition.Builder.Build method" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm" /> + <HelpKINode Title="ServerServiceDefinition.Builder.Builder constructor" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm" /> + <HelpKINode Title="ServerServiceDefinition.CreateBuilder method" Url="html/M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm" /> + <HelpKINode Title="ServerStreaming enumeration member" Url="html/T_Grpc_Core_MethodType.htm" /> + <HelpKINode Title="ServerStreamingServerMethod(Of TRequest, TResponse) delegate" Url="html/T_Grpc_Core_ServerStreamingServerMethod_2.htm" /> + <HelpKINode Title="ServerStreamingServerMethod<TRequest, TResponse> delegate" Url="html/T_Grpc_Core_ServerStreamingServerMethod_2.htm" /> + <HelpKINode Title="ServiceDefinitionCollection class"> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm" /> + </HelpKINode> + <HelpKINode Title="ServiceName property"> + <HelpKINode Title="IMethod.ServiceName Property " Url="html/P_Grpc_Core_IMethod_ServiceName.htm" /> + <HelpKINode Title="Method(TRequest, TResponse).ServiceName Property " Url="html/P_Grpc_Core_Method_2_ServiceName.htm" /> + </HelpKINode> + <HelpKINode Title="Services property" Url="html/P_Grpc_Core_Server_Services.htm" /> + <HelpKINode Title="SetLogger method" Url="html/M_Grpc_Core_GrpcEnvironment_SetLogger.htm" /> + <HelpKINode Title="ShutdownAsync method"> + <HelpKINode Title="Channel.ShutdownAsync Method " Url="html/M_Grpc_Core_Channel_ShutdownAsync.htm" /> + <HelpKINode Title="Server.ShutdownAsync Method " Url="html/M_Grpc_Core_Server_ShutdownAsync.htm" /> + </HelpKINode> + <HelpKINode Title="ShutdownTask property" Url="html/P_Grpc_Core_Server_ShutdownTask.htm" /> + <HelpKINode Title="SslCredentials class"> + <HelpKINode Title="SslCredentials Class" Url="html/T_Grpc_Core_SslCredentials.htm" /> + <HelpKINode Title="about SslCredentials class" Url="html/T_Grpc_Core_SslCredentials.htm" /> + <HelpKINode Title="constructor" Url="html/Overload_Grpc_Core_SslCredentials__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_SslCredentials.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_SslCredentials.htm" /> + </HelpKINode> + <HelpKINode Title="SslCredentials.KeyCertificatePair property" Url="html/P_Grpc_Core_SslCredentials_KeyCertificatePair.htm" /> + <HelpKINode Title="SslCredentials.RootCertificates property" Url="html/P_Grpc_Core_SslCredentials_RootCertificates.htm" /> + <HelpKINode Title="SslCredentials.SslCredentials constructor" Url="html/Overload_Grpc_Core_SslCredentials__ctor.htm" /> + <HelpKINode Title="SslServerCredentials class"> + <HelpKINode Title="SslServerCredentials Class" Url="html/T_Grpc_Core_SslServerCredentials.htm" /> + <HelpKINode Title="about SslServerCredentials class" Url="html/T_Grpc_Core_SslServerCredentials.htm" /> + <HelpKINode Title="constructor" Url="html/Overload_Grpc_Core_SslServerCredentials__ctor.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_SslServerCredentials.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_SslServerCredentials.htm" /> + </HelpKINode> + <HelpKINode Title="SslServerCredentials.ForceClientAuthentication property" Url="html/P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm" /> + <HelpKINode Title="SslServerCredentials.KeyCertificatePairs property" Url="html/P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm" /> + <HelpKINode Title="SslServerCredentials.RootCertificates property" Url="html/P_Grpc_Core_SslServerCredentials_RootCertificates.htm" /> + <HelpKINode Title="SslServerCredentials.SslServerCredentials constructor" Url="html/Overload_Grpc_Core_SslServerCredentials__ctor.htm" /> + <HelpKINode Title="SslTargetNameOverride field" Url="html/F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" /> + <HelpKINode Title="Start method" Url="html/M_Grpc_Core_Server_Start.htm" /> + <HelpKINode Title="State property" Url="html/P_Grpc_Core_Channel_State.htm" /> + <HelpKINode Title="Status property"> + <HelpKINode Title="RpcException.Status Property " Url="html/P_Grpc_Core_RpcException_Status.htm" /> + <HelpKINode Title="ServerCallContext.Status Property " Url="html/P_Grpc_Core_ServerCallContext_Status.htm" /> + </HelpKINode> + <HelpKINode Title="Status structure"> + <HelpKINode Title="Status Structure" Url="html/T_Grpc_Core_Status.htm" /> + <HelpKINode Title="about Status structure" Url="html/T_Grpc_Core_Status.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_Status__ctor.htm" /> + <HelpKINode Title="fields" Url="html/Fields_T_Grpc_Core_Status.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_Status.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_Status.htm" /> + </HelpKINode> + <HelpKINode Title="Status.DefaultCancelled field" Url="html/F_Grpc_Core_Status_DefaultCancelled.htm" /> + <HelpKINode Title="Status.DefaultSuccess field" Url="html/F_Grpc_Core_Status_DefaultSuccess.htm" /> + <HelpKINode Title="Status.Detail property" Url="html/P_Grpc_Core_Status_Detail.htm" /> + <HelpKINode Title="Status.Status constructor" Url="html/M_Grpc_Core_Status__ctor.htm" /> + <HelpKINode Title="Status.StatusCode property" Url="html/P_Grpc_Core_Status_StatusCode.htm" /> + <HelpKINode Title="Status.ToString method" Url="html/M_Grpc_Core_Status_ToString.htm" /> + <HelpKINode Title="StatusCode enumeration" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="StatusCode property" Url="html/P_Grpc_Core_Status_StatusCode.htm" /> + <HelpKINode Title="String enumeration member" Url="html/T_Grpc_Core_ChannelOption_OptionType.htm" /> + <HelpKINode Title="StringMarshaller property" Url="html/P_Grpc_Core_Marshallers_StringMarshaller.htm" /> + <HelpKINode Title="StringValue property" Url="html/P_Grpc_Core_ChannelOption_StringValue.htm" /> + <HelpKINode Title="Target property" Url="html/P_Grpc_Core_Channel_Target.htm" /> + <HelpKINode Title="ToListAsync(Of T) method" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm" /> + <HelpKINode Title="ToListAsync<T> method" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm" /> + <HelpKINode Title="ToString method"> + <HelpKINode Title="Metadata.Entry.ToString Method " Url="html/M_Grpc_Core_Metadata_Entry_ToString.htm" /> + <HelpKINode Title="Status.ToString Method " Url="html/M_Grpc_Core_Status_ToString.htm" /> + </HelpKINode> + <HelpKINode Title="TransientFailure enumeration member" Url="html/T_Grpc_Core_ChannelState.htm" /> + <HelpKINode Title="Type property"> + <HelpKINode Title="ChannelOption.Type Property " Url="html/P_Grpc_Core_ChannelOption_Type.htm" /> + <HelpKINode Title="IMethod.Type Property " Url="html/P_Grpc_Core_IMethod_Type.htm" /> + <HelpKINode Title="Method(TRequest, TResponse).Type Property " Url="html/P_Grpc_Core_Method_2_Type.htm" /> + </HelpKINode> + <HelpKINode Title="Unary enumeration member" Url="html/T_Grpc_Core_MethodType.htm" /> + <HelpKINode Title="UnaryServerMethod(Of TRequest, TResponse) delegate" Url="html/T_Grpc_Core_UnaryServerMethod_2.htm" /> + <HelpKINode Title="UnaryServerMethod<TRequest, TResponse> delegate" Url="html/T_Grpc_Core_UnaryServerMethod_2.htm" /> + <HelpKINode Title="Unauthenticated enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="Unavailable enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="Unimplemented enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="Unknown enumeration member" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpKINode Title="Value property" Url="html/P_Grpc_Core_Metadata_Entry_Value.htm" /> + <HelpKINode Title="ValueBytes property" Url="html/P_Grpc_Core_Metadata_Entry_ValueBytes.htm" /> + <HelpKINode Title="VersionInfo class"> + <HelpKINode Title="VersionInfo Class" Url="html/T_Grpc_Core_VersionInfo.htm" /> + <HelpKINode Title="about VersionInfo class" Url="html/T_Grpc_Core_VersionInfo.htm" /> + <HelpKINode Title="fields" Url="html/Fields_T_Grpc_Core_VersionInfo.htm" /> + </HelpKINode> + <HelpKINode Title="VersionInfo.CurrentVersion field" Url="html/F_Grpc_Core_VersionInfo_CurrentVersion.htm" /> + <HelpKINode Title="WaitForStateChangedAsync method" Url="html/M_Grpc_Core_Channel_WaitForStateChangedAsync.htm" /> + <HelpKINode Title="Warning method"> + <HelpKINode Title="ConsoleLogger.Warning Method " Url="html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm" /> + <HelpKINode Title="ILogger.Warning Method " Url="html/Overload_Grpc_Core_Logging_ILogger_Warning.htm" /> + </HelpKINode> + <HelpKINode Title="WithCancellationToken method" Url="html/M_Grpc_Core_CallOptions_WithCancellationToken.htm" /> + <HelpKINode Title="WithDeadline method" Url="html/M_Grpc_Core_CallOptions_WithDeadline.htm" /> + <HelpKINode Title="WithHeaders method" Url="html/M_Grpc_Core_CallOptions_WithHeaders.htm" /> + <HelpKINode Title="WithOptions method" Url="html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm" /> + <HelpKINode Title="WriteAllAsync method" Url="html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm" /> + <HelpKINode Title="WriteAsync method" Url="html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm" /> + <HelpKINode Title="WriteFlags enumeration" Url="html/T_Grpc_Core_WriteFlags.htm" /> + <HelpKINode Title="WriteOptions class"> + <HelpKINode Title="WriteOptions Class" Url="html/T_Grpc_Core_WriteOptions.htm" /> + <HelpKINode Title="about WriteOptions class" Url="html/T_Grpc_Core_WriteOptions.htm" /> + <HelpKINode Title="constructor" Url="html/M_Grpc_Core_WriteOptions__ctor.htm" /> + <HelpKINode Title="fields" Url="html/Fields_T_Grpc_Core_WriteOptions.htm" /> + <HelpKINode Title="methods" Url="html/Methods_T_Grpc_Core_WriteOptions.htm" /> + <HelpKINode Title="properties" Url="html/Properties_T_Grpc_Core_WriteOptions.htm" /> + </HelpKINode> + <HelpKINode Title="WriteOptions property"> + <HelpKINode Title="CallOptions.WriteOptions Property " Url="html/P_Grpc_Core_CallOptions_WriteOptions.htm" /> + <HelpKINode Title="IAsyncStreamWriter(T).WriteOptions Property " Url="html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm" /> + <HelpKINode Title="IHasWriteOptions.WriteOptions Property " Url="html/P_Grpc_Core_IHasWriteOptions_WriteOptions.htm" /> + <HelpKINode Title="ServerCallContext.WriteOptions Property " Url="html/P_Grpc_Core_ServerCallContext_WriteOptions.htm" /> + </HelpKINode> + <HelpKINode Title="WriteOptions.Default field" Url="html/F_Grpc_Core_WriteOptions_Default.htm" /> + <HelpKINode Title="WriteOptions.Flags property" Url="html/P_Grpc_Core_WriteOptions_Flags.htm" /> + <HelpKINode Title="WriteOptions.WriteOptions constructor" Url="html/M_Grpc_Core_WriteOptions__ctor.htm" /> + <HelpKINode Title="WriteResponseHeadersAsync method" Url="html/M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm" /> +</HelpKI> diff --git a/doc/ref/csharp/html/WebTOC.xml b/doc/ref/csharp/html/WebTOC.xml new file mode 100644 index 0000000000..63da550f44 --- /dev/null +++ b/doc/ref/csharp/html/WebTOC.xml @@ -0,0 +1,523 @@ +<?xml version="1.0" encoding="utf-8"?> +<HelpTOC> + + <HelpTOCNode Id="99ef1ac3-191d-4e4f-9bc8-74352a862ec4" Title="Namespaces" Url="html/R_Project_Documentation.htm"> + <HelpTOCNode Id="4fb087a0-0c31-4543-8b29-7b9740334f73" Title="Grpc.Auth" Url="html/N_Grpc_Auth.htm"> + <HelpTOCNode Id="1987ce1f-94cc-4bce-8e43-19759c74132b" Title="AuthInterceptors Class" Url="html/T_Grpc_Auth_AuthInterceptors.htm"> + <HelpTOCNode Id="0703fe79-f006-463e-b258-6896e18413c8" Title="AuthInterceptors Methods" Url="html/Methods_T_Grpc_Auth_AuthInterceptors.htm"> + <HelpTOCNode Title="FromAccessToken Method " Url="html/M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm" /> + <HelpTOCNode Title="FromCredential Method " Url="html/M_Grpc_Auth_AuthInterceptors_FromCredential.htm" /> + </HelpTOCNode> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="b7d00d8c-ddae-4df5-ae4a-9c6b14a57519" Title="Grpc.Core" Url="html/N_Grpc_Core.htm"> + <HelpTOCNode Id="25ef63ae-1bf8-411e-9808-e60ff5c27062" Title="AsyncClientStreamingCall(TRequest, TResponse) Class" Url="html/T_Grpc_Core_AsyncClientStreamingCall_2.htm"> + <HelpTOCNode Id="3c82f904-a574-4811-9151-bd9bd00550d6" Title="AsyncClientStreamingCall(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm"> + <HelpTOCNode Title="RequestStream Property " Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm" /> + <HelpTOCNode Title="ResponseAsync Property " Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm" /> + <HelpTOCNode Title="ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="01928221-e085-4913-8a55-ab2003c07b52" Title="AsyncClientStreamingCall(TRequest, TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm"> + <HelpTOCNode Title="Dispose Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm" /> + <HelpTOCNode Title="GetAwaiter Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm" /> + <HelpTOCNode Title="GetStatus Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm" /> + <HelpTOCNode Title="GetTrailers Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="64d758f3-3b89-4445-b9fe-864a1f4ecc09" Title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" Url="html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm"> + <HelpTOCNode Id="03ecf596-76d4-4e4b-8aa7-35c74f9c2a4d" Title="AsyncDuplexStreamingCall(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm"> + <HelpTOCNode Title="RequestStream Property " Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm" /> + <HelpTOCNode Title="ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm" /> + <HelpTOCNode Title="ResponseStream Property " Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="918a83fd-570e-4e4e-a673-d2df2a41090a" Title="AsyncDuplexStreamingCall(TRequest, TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm"> + <HelpTOCNode Title="Dispose Method " Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm" /> + <HelpTOCNode Title="GetStatus Method " Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm" /> + <HelpTOCNode Title="GetTrailers Method " Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="db112032-ef26-407a-8aef-4bd5e9e51b30" Title="AsyncServerStreamingCall(TResponse) Class" Url="html/T_Grpc_Core_AsyncServerStreamingCall_1.htm"> + <HelpTOCNode Id="d3f8a1be-8ffe-44d1-9c21-361a77a59f26" Title="AsyncServerStreamingCall(TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm"> + <HelpTOCNode Title="ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm" /> + <HelpTOCNode Title="ResponseStream Property " Url="html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="b5c92c91-96d0-4cb5-9ca2-7e2bde39e47c" Title="AsyncServerStreamingCall(TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm"> + <HelpTOCNode Title="Dispose Method " Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm" /> + <HelpTOCNode Title="GetStatus Method " Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm" /> + <HelpTOCNode Title="GetTrailers Method " Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="d2ddfcd9-ebc5-43f2-9054-1697572874d5" Title="AsyncUnaryCall(TResponse) Class" Url="html/T_Grpc_Core_AsyncUnaryCall_1.htm"> + <HelpTOCNode Id="e6d76953-ca0c-4211-82e5-116c69e5b43e" Title="AsyncUnaryCall(TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm"> + <HelpTOCNode Title="ResponseAsync Property " Url="html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm" /> + <HelpTOCNode Title="ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="36ce22b5-b6c2-4601-9037-adfe892ed976" Title="AsyncUnaryCall(TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm"> + <HelpTOCNode Title="Dispose Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm" /> + <HelpTOCNode Title="GetAwaiter Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm" /> + <HelpTOCNode Title="GetStatus Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm" /> + <HelpTOCNode Title="GetTrailers Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="e272cc27-608b-46e6-abe7-9655e6d90df0" Title="CallInvocationDetails(TRequest, TResponse) Structure" Url="html/T_Grpc_Core_CallInvocationDetails_2.htm"> + <HelpTOCNode Id="c29d79be-04d1-448c-b6b8-cdd08ebe3d4a" Title="CallInvocationDetails(TRequest, TResponse) Constructor " Url="html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm"> + <HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)" Url="html/M_Grpc_Core_CallInvocationDetails_2__ctor.htm" /> + <HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)" Url="html/M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm" /> + <HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)" Url="html/M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="473238e3-f673-4b5e-8f28-856e23613981" Title="CallInvocationDetails(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm"> + <HelpTOCNode Title="Channel Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm" /> + <HelpTOCNode Title="Host Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_Host.htm" /> + <HelpTOCNode Title="Method Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_Method.htm" /> + <HelpTOCNode Title="Options Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_Options.htm" /> + <HelpTOCNode Title="RequestMarshaller Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" /> + <HelpTOCNode Title="ResponseMarshaller Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="62c7468b-9b2b-4869-8de0-412744a4da91" Title="CallInvocationDetails(TRequest, TResponse) Methods" Url="html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm"> + <HelpTOCNode Title="WithOptions Method " Url="html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="24946a6a-fd6f-4c40-85ec-50f0fc3f4ffb" Title="CallOptions Structure" Url="html/T_Grpc_Core_CallOptions.htm"> + <HelpTOCNode Title="CallOptions Constructor " Url="html/M_Grpc_Core_CallOptions__ctor.htm" /> + <HelpTOCNode Id="a687274d-aad6-48e2-8013-ecf468e6ef2d" Title="CallOptions Properties" Url="html/Properties_T_Grpc_Core_CallOptions.htm"> + <HelpTOCNode Title="CancellationToken Property " Url="html/P_Grpc_Core_CallOptions_CancellationToken.htm" /> + <HelpTOCNode Title="Deadline Property " Url="html/P_Grpc_Core_CallOptions_Deadline.htm" /> + <HelpTOCNode Title="Headers Property " Url="html/P_Grpc_Core_CallOptions_Headers.htm" /> + <HelpTOCNode Title="PropagationToken Property " Url="html/P_Grpc_Core_CallOptions_PropagationToken.htm" /> + <HelpTOCNode Title="WriteOptions Property " Url="html/P_Grpc_Core_CallOptions_WriteOptions.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="d9305a3f-a129-407b-9456-492e3a2228a0" Title="CallOptions Methods" Url="html/Methods_T_Grpc_Core_CallOptions.htm"> + <HelpTOCNode Title="WithCancellationToken Method " Url="html/M_Grpc_Core_CallOptions_WithCancellationToken.htm" /> + <HelpTOCNode Title="WithDeadline Method " Url="html/M_Grpc_Core_CallOptions_WithDeadline.htm" /> + <HelpTOCNode Title="WithHeaders Method " Url="html/M_Grpc_Core_CallOptions_WithHeaders.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="ab223075-d269-49b4-92d7-ce69d4ca4b4e" Title="Calls Class" Url="html/T_Grpc_Core_Calls.htm"> + <HelpTOCNode Id="0706d54b-54c4-44d5-90cf-8ba232d1965a" Title="Calls Methods" Url="html/Methods_T_Grpc_Core_Calls.htm"> + <HelpTOCNode Title="AsyncClientStreamingCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" /> + <HelpTOCNode Title="AsyncDuplexStreamingCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" /> + <HelpTOCNode Title="AsyncServerStreamingCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" /> + <HelpTOCNode Title="AsyncUnaryCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" /> + <HelpTOCNode Title="BlockingUnaryCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="d862ceb3-3a34-47c5-b3aa-2f5616e3cad4" Title="Channel Class" Url="html/T_Grpc_Core_Channel.htm"> + <HelpTOCNode Id="18933ee0-95a7-4a12-acdb-05803845efc8" Title="Channel Constructor " Url="html/Overload_Grpc_Core_Channel__ctor.htm"> + <HelpTOCNode Title="Channel Constructor (String, Credentials, IEnumerable(ChannelOption))" Url="html/M_Grpc_Core_Channel__ctor.htm" /> + <HelpTOCNode Title="Channel Constructor (String, Int32, Credentials, IEnumerable(ChannelOption))" Url="html/M_Grpc_Core_Channel__ctor_1.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="e9257938-4557-4035-8c2d-9d7e8aedd598" Title="Channel Properties" Url="html/Properties_T_Grpc_Core_Channel.htm"> + <HelpTOCNode Title="ResolvedTarget Property " Url="html/P_Grpc_Core_Channel_ResolvedTarget.htm" /> + <HelpTOCNode Title="State Property " Url="html/P_Grpc_Core_Channel_State.htm" /> + <HelpTOCNode Title="Target Property " Url="html/P_Grpc_Core_Channel_Target.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="897e0ff0-8820-47d2-860a-4ca3602f836c" Title="Channel Methods" Url="html/Methods_T_Grpc_Core_Channel.htm"> + <HelpTOCNode Title="ConnectAsync Method " Url="html/M_Grpc_Core_Channel_ConnectAsync.htm" /> + <HelpTOCNode Title="ShutdownAsync Method " Url="html/M_Grpc_Core_Channel_ShutdownAsync.htm" /> + <HelpTOCNode Title="WaitForStateChangedAsync Method " Url="html/M_Grpc_Core_Channel_WaitForStateChangedAsync.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="f0103838-be43-46f6-a022-647b30d4a3df" Title="ChannelOption Class" Url="html/T_Grpc_Core_ChannelOption.htm"> + <HelpTOCNode Id="419e7c87-a890-494e-a5e0-74e5820f5925" Title="ChannelOption Constructor " Url="html/Overload_Grpc_Core_ChannelOption__ctor.htm"> + <HelpTOCNode Title="ChannelOption Constructor (String, Int32)" Url="html/M_Grpc_Core_ChannelOption__ctor.htm" /> + <HelpTOCNode Title="ChannelOption Constructor (String, String)" Url="html/M_Grpc_Core_ChannelOption__ctor_1.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="00f94e4d-e531-4677-bb8d-54a71fe94bd5" Title="ChannelOption Properties" Url="html/Properties_T_Grpc_Core_ChannelOption.htm"> + <HelpTOCNode Title="IntValue Property " Url="html/P_Grpc_Core_ChannelOption_IntValue.htm" /> + <HelpTOCNode Title="Name Property " Url="html/P_Grpc_Core_ChannelOption_Name.htm" /> + <HelpTOCNode Title="StringValue Property " Url="html/P_Grpc_Core_ChannelOption_StringValue.htm" /> + <HelpTOCNode Title="Type Property " Url="html/P_Grpc_Core_ChannelOption_Type.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="ChannelOption Methods" Url="html/Methods_T_Grpc_Core_ChannelOption.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="ChannelOption.OptionType Enumeration" Url="html/T_Grpc_Core_ChannelOption_OptionType.htm" /> + <HelpTOCNode Id="f20d85db-61c5-4b58-a949-f1f2cd9df295" Title="ChannelOptions Class" Url="html/T_Grpc_Core_ChannelOptions.htm"> + <HelpTOCNode Id="0b243553-4a9e-41ff-baa3-9a7872003252" Title="ChannelOptions Fields" Url="html/Fields_T_Grpc_Core_ChannelOptions.htm"> + <HelpTOCNode Title="Census Field" Url="html/F_Grpc_Core_ChannelOptions_Census.htm" /> + <HelpTOCNode Title="DefaultAuthority Field" Url="html/F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" /> + <HelpTOCNode Title="Http2InitialSequenceNumber Field" Url="html/F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" /> + <HelpTOCNode Title="MaxConcurrentStreams Field" Url="html/F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" /> + <HelpTOCNode Title="MaxMessageLength Field" Url="html/F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" /> + <HelpTOCNode Title="PrimaryUserAgentString Field" Url="html/F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" /> + <HelpTOCNode Title="SecondaryUserAgentString Field" Url="html/F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" /> + <HelpTOCNode Title="SslTargetNameOverride Field" Url="html/F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Title="ChannelState Enumeration" Url="html/T_Grpc_Core_ChannelState.htm" /> + <HelpTOCNode Id="1ad15b1e-abc8-4dda-860c-22a4462a9c41" Title="ClientBase Class" Url="html/T_Grpc_Core_ClientBase.htm"> + <HelpTOCNode Title="ClientBase Constructor " Url="html/M_Grpc_Core_ClientBase__ctor.htm" /> + <HelpTOCNode Id="c304c5ea-13cf-4a02-b3a2-3c2273cba628" Title="ClientBase Properties" Url="html/Properties_T_Grpc_Core_ClientBase.htm"> + <HelpTOCNode Title="Channel Property " Url="html/P_Grpc_Core_ClientBase_Channel.htm" /> + <HelpTOCNode Title="HeaderInterceptor Property " Url="html/P_Grpc_Core_ClientBase_HeaderInterceptor.htm" /> + <HelpTOCNode Title="Host Property " Url="html/P_Grpc_Core_ClientBase_Host.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="a640e9d6-9acc-4fa9-95b7-a4aac2862c65" Title="ClientBase Methods" Url="html/Methods_T_Grpc_Core_ClientBase.htm"> + <HelpTOCNode Title="CreateCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_ClientBase_CreateCall__2.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" Url="html/T_Grpc_Core_ClientStreamingServerMethod_2.htm" /> + <HelpTOCNode Title="CompressionLevel Enumeration" Url="html/T_Grpc_Core_CompressionLevel.htm" /> + <HelpTOCNode Id="dbd91489-e56f-4cd2-8039-a10c0da5ff4c" Title="ContextPropagationOptions Class" Url="html/T_Grpc_Core_ContextPropagationOptions.htm"> + <HelpTOCNode Title="ContextPropagationOptions Constructor " Url="html/M_Grpc_Core_ContextPropagationOptions__ctor.htm" /> + <HelpTOCNode Id="69b7c88c-670e-435c-a274-7aca7e48090f" Title="ContextPropagationOptions Properties" Url="html/Properties_T_Grpc_Core_ContextPropagationOptions.htm"> + <HelpTOCNode Title="IsPropagateCancellation Property " Url="html/P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm" /> + <HelpTOCNode Title="IsPropagateDeadline Property " Url="html/P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="ContextPropagationOptions Methods" Url="html/Methods_T_Grpc_Core_ContextPropagationOptions.htm" /> + <HelpTOCNode Id="0b020f8b-4de1-4f03-834b-00e7c8dc8352" Title="ContextPropagationOptions Fields" Url="html/Fields_T_Grpc_Core_ContextPropagationOptions.htm"> + <HelpTOCNode Title="Default Field" Url="html/F_Grpc_Core_ContextPropagationOptions_Default.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="d40552a2-3013-4004-bade-17e9d4760b86" Title="ContextPropagationToken Class" Url="html/T_Grpc_Core_ContextPropagationToken.htm"> + <HelpTOCNode Title="ContextPropagationToken Methods" Url="html/Methods_T_Grpc_Core_ContextPropagationToken.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="e5d569d9-b865-4283-8085-20b02c8fe61c" Title="Credentials Class" Url="html/T_Grpc_Core_Credentials.htm"> + <HelpTOCNode Title="Credentials Constructor " Url="html/M_Grpc_Core_Credentials__ctor.htm" /> + <HelpTOCNode Id="254817e8-86c9-4ee7-ad0f-7b5e4545e975" Title="Credentials Properties" Url="html/Properties_T_Grpc_Core_Credentials.htm"> + <HelpTOCNode Title="Insecure Property " Url="html/P_Grpc_Core_Credentials_Insecure.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="Credentials Methods" Url="html/Methods_T_Grpc_Core_Credentials.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" Url="html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm" /> + <HelpTOCNode Id="4d583c99-71d3-4807-8c5b-70b084b23f04" Title="GrpcEnvironment Class" Url="html/T_Grpc_Core_GrpcEnvironment.htm"> + <HelpTOCNode Id="629e105c-2323-458d-826e-7e1ca31a6ca2" Title="GrpcEnvironment Properties" Url="html/Properties_T_Grpc_Core_GrpcEnvironment.htm"> + <HelpTOCNode Title="Logger Property " Url="html/P_Grpc_Core_GrpcEnvironment_Logger.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="a9a95b9f-e072-48ae-9a7a-d88fead5e886" Title="GrpcEnvironment Methods" Url="html/Methods_T_Grpc_Core_GrpcEnvironment.htm"> + <HelpTOCNode Title="SetLogger Method " Url="html/M_Grpc_Core_GrpcEnvironment_SetLogger.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Title="HeaderInterceptor Delegate" Url="html/T_Grpc_Core_HeaderInterceptor.htm" /> + <HelpTOCNode Id="18206bb0-344f-430d-83b0-c82a855bfc4b" Title="IAsyncStreamReader(T) Interface" Url="html/T_Grpc_Core_IAsyncStreamReader_1.htm"> + <HelpTOCNode Title="IAsyncStreamReader(T) Properties" Url="html/Properties_T_Grpc_Core_IAsyncStreamReader_1.htm" /> + <HelpTOCNode Title="IAsyncStreamReader(T) Methods" Url="html/Methods_T_Grpc_Core_IAsyncStreamReader_1.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="63fc9314-b1a0-406c-8474-5f3b7e692d38" Title="IAsyncStreamWriter(T) Interface" Url="html/T_Grpc_Core_IAsyncStreamWriter_1.htm"> + <HelpTOCNode Id="e6af8f5c-023a-456a-8686-3f9bdf051dec" Title="IAsyncStreamWriter(T) Properties" Url="html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm"> + <HelpTOCNode Title="WriteOptions Property " Url="html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="f26cd3eb-e88d-45cd-8a92-2b25fd90fde9" Title="IAsyncStreamWriter(T) Methods" Url="html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm"> + <HelpTOCNode Title="WriteAsync Method " Url="html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="e5d1afb7-12fa-4ff2-9b22-cb459e04879c" Title="IClientStreamWriter(T) Interface" Url="html/T_Grpc_Core_IClientStreamWriter_1.htm"> + <HelpTOCNode Title="IClientStreamWriter(T) Properties" Url="html/Properties_T_Grpc_Core_IClientStreamWriter_1.htm" /> + <HelpTOCNode Id="08735fdd-2533-4dd3-ac72-1868c2b17b66" Title="IClientStreamWriter(T) Methods" Url="html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm"> + <HelpTOCNode Title="CompleteAsync Method " Url="html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="42c38dfb-6ad6-4c8e-a8d0-301c86a4cad3" Title="IHasWriteOptions Interface" Url="html/T_Grpc_Core_IHasWriteOptions.htm"> + <HelpTOCNode Id="1f8fb9be-416e-4276-89d4-960d38df861e" Title="IHasWriteOptions Properties" Url="html/Properties_T_Grpc_Core_IHasWriteOptions.htm"> + <HelpTOCNode Title="WriteOptions Property " Url="html/P_Grpc_Core_IHasWriteOptions_WriteOptions.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="68a8090b-42dd-4c11-9dc9-d4cf0a0be858" Title="IMethod Interface" Url="html/T_Grpc_Core_IMethod.htm"> + <HelpTOCNode Id="5d6514b6-f61c-48ba-a888-9c688660d323" Title="IMethod Properties" Url="html/Properties_T_Grpc_Core_IMethod.htm"> + <HelpTOCNode Title="FullName Property " Url="html/P_Grpc_Core_IMethod_FullName.htm" /> + <HelpTOCNode Title="Name Property " Url="html/P_Grpc_Core_IMethod_Name.htm" /> + <HelpTOCNode Title="ServiceName Property " Url="html/P_Grpc_Core_IMethod_ServiceName.htm" /> + <HelpTOCNode Title="Type Property " Url="html/P_Grpc_Core_IMethod_Type.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="e07e09e1-8b9c-4c33-a6d1-fb0e7988fba7" Title="IServerStreamWriter(T) Interface" Url="html/T_Grpc_Core_IServerStreamWriter_1.htm"> + <HelpTOCNode Title="IServerStreamWriter(T) Properties" Url="html/Properties_T_Grpc_Core_IServerStreamWriter_1.htm" /> + <HelpTOCNode Title="IServerStreamWriter(T) Methods" Url="html/Methods_T_Grpc_Core_IServerStreamWriter_1.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="37cb53e6-d613-48d3-86ff-f948208ffaa9" Title="KeyCertificatePair Class" Url="html/T_Grpc_Core_KeyCertificatePair.htm"> + <HelpTOCNode Title="KeyCertificatePair Constructor " Url="html/M_Grpc_Core_KeyCertificatePair__ctor.htm" /> + <HelpTOCNode Id="51709b36-11b6-46ef-a59e-807eadf88071" Title="KeyCertificatePair Properties" Url="html/Properties_T_Grpc_Core_KeyCertificatePair.htm"> + <HelpTOCNode Title="CertificateChain Property " Url="html/P_Grpc_Core_KeyCertificatePair_CertificateChain.htm" /> + <HelpTOCNode Title="PrivateKey Property " Url="html/P_Grpc_Core_KeyCertificatePair_PrivateKey.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="KeyCertificatePair Methods" Url="html/Methods_T_Grpc_Core_KeyCertificatePair.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="f4008ea4-7966-4c4e-9ffd-05192b1b664d" Title="Marshaller(T) Structure" Url="html/T_Grpc_Core_Marshaller_1.htm"> + <HelpTOCNode Title="Marshaller(T) Constructor " Url="html/M_Grpc_Core_Marshaller_1__ctor.htm" /> + <HelpTOCNode Id="2eeb7e1f-3bb9-465a-aff6-6f1941dbad6d" Title="Marshaller(T) Properties" Url="html/Properties_T_Grpc_Core_Marshaller_1.htm"> + <HelpTOCNode Title="Deserializer Property " Url="html/P_Grpc_Core_Marshaller_1_Deserializer.htm" /> + <HelpTOCNode Title="Serializer Property " Url="html/P_Grpc_Core_Marshaller_1_Serializer.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="Marshaller(T) Methods" Url="html/Methods_T_Grpc_Core_Marshaller_1.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="c89b726d-3eed-4293-95f6-eae2890c18d2" Title="Marshallers Class" Url="html/T_Grpc_Core_Marshallers.htm"> + <HelpTOCNode Id="9f6c3cdf-93f2-40e9-bedf-e8fac4307920" Title="Marshallers Properties" Url="html/Properties_T_Grpc_Core_Marshallers.htm"> + <HelpTOCNode Title="StringMarshaller Property " Url="html/P_Grpc_Core_Marshallers_StringMarshaller.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="24d998e8-0231-430a-ad63-2f71d1f2d83a" Title="Marshallers Methods" Url="html/Methods_T_Grpc_Core_Marshallers.htm"> + <HelpTOCNode Title="Create(T) Method " Url="html/M_Grpc_Core_Marshallers_Create__1.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="21a41266-1f68-47c3-baf5-4a2f7c282328" Title="Metadata Class" Url="html/T_Grpc_Core_Metadata.htm"> + <HelpTOCNode Title="Metadata Constructor " Url="html/M_Grpc_Core_Metadata__ctor.htm" /> + <HelpTOCNode Id="2415b35c-f7b2-41e1-b3ed-1f5f5c134864" Title="Metadata Properties" Url="html/Properties_T_Grpc_Core_Metadata.htm"> + <HelpTOCNode Title="Count Property " Url="html/P_Grpc_Core_Metadata_Count.htm" /> + <HelpTOCNode Title="IsReadOnly Property " Url="html/P_Grpc_Core_Metadata_IsReadOnly.htm" /> + <HelpTOCNode Title="Item Property " Url="html/P_Grpc_Core_Metadata_Item.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="3357228b-5529-42b9-87a4-22ad19c9002c" Title="Metadata Methods" Url="html/Methods_T_Grpc_Core_Metadata.htm"> + <HelpTOCNode Id="00a82ec2-19f4-476d-9222-17260e2233fe" Title="Add Method " Url="html/Overload_Grpc_Core_Metadata_Add.htm"> + <HelpTOCNode Title="Add Method (Metadata.Entry)" Url="html/M_Grpc_Core_Metadata_Add.htm" /> + <HelpTOCNode Title="Add Method (String, Byte[])" Url="html/M_Grpc_Core_Metadata_Add_1.htm" /> + <HelpTOCNode Title="Add Method (String, String)" Url="html/M_Grpc_Core_Metadata_Add_2.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="Clear Method " Url="html/M_Grpc_Core_Metadata_Clear.htm" /> + <HelpTOCNode Title="Contains Method " Url="html/M_Grpc_Core_Metadata_Contains.htm" /> + <HelpTOCNode Title="CopyTo Method " Url="html/M_Grpc_Core_Metadata_CopyTo.htm" /> + <HelpTOCNode Title="GetEnumerator Method " Url="html/M_Grpc_Core_Metadata_GetEnumerator.htm" /> + <HelpTOCNode Title="IndexOf Method " Url="html/M_Grpc_Core_Metadata_IndexOf.htm" /> + <HelpTOCNode Title="Insert Method " Url="html/M_Grpc_Core_Metadata_Insert.htm" /> + <HelpTOCNode Title="Remove Method " Url="html/M_Grpc_Core_Metadata_Remove.htm" /> + <HelpTOCNode Title="RemoveAt Method " Url="html/M_Grpc_Core_Metadata_RemoveAt.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="a07312cd-d18c-47f7-9ee3-860b003e328d" Title="Metadata Fields" Url="html/Fields_T_Grpc_Core_Metadata.htm"> + <HelpTOCNode Title="BinaryHeaderSuffix Field" Url="html/F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm" /> + <HelpTOCNode Title="Empty Field" Url="html/F_Grpc_Core_Metadata_Empty.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="3083edee-34c1-40dc-a1b9-f14274557eb2" Title="Metadata.Entry Structure" Url="html/T_Grpc_Core_Metadata_Entry.htm"> + <HelpTOCNode Id="b610d7f5-a63e-4aad-a2f5-7eaf43d66800" Title="Entry Constructor " Url="html/Overload_Grpc_Core_Metadata_Entry__ctor.htm"> + <HelpTOCNode Title="Metadata.Entry Constructor (String, Byte[])" Url="html/M_Grpc_Core_Metadata_Entry__ctor.htm" /> + <HelpTOCNode Title="Metadata.Entry Constructor (String, String)" Url="html/M_Grpc_Core_Metadata_Entry__ctor_1.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="8e497e7c-3c8c-48ab-b6d4-c2d72597e88b" Title="Entry Properties" Url="html/Properties_T_Grpc_Core_Metadata_Entry.htm"> + <HelpTOCNode Title="IsBinary Property " Url="html/P_Grpc_Core_Metadata_Entry_IsBinary.htm" /> + <HelpTOCNode Title="Key Property " Url="html/P_Grpc_Core_Metadata_Entry_Key.htm" /> + <HelpTOCNode Title="Value Property " Url="html/P_Grpc_Core_Metadata_Entry_Value.htm" /> + <HelpTOCNode Title="ValueBytes Property " Url="html/P_Grpc_Core_Metadata_Entry_ValueBytes.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="d0af8c70-509b-4855-81dc-d83bf51b18bf" Title="Entry Methods" Url="html/Methods_T_Grpc_Core_Metadata_Entry.htm"> + <HelpTOCNode Title="ToString Method " Url="html/M_Grpc_Core_Metadata_Entry_ToString.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="bb42405f-111a-4fb4-a7c0-202e4be0e870" Title="Method(TRequest, TResponse) Class" Url="html/T_Grpc_Core_Method_2.htm"> + <HelpTOCNode Title="Method(TRequest, TResponse) Constructor " Url="html/M_Grpc_Core_Method_2__ctor.htm" /> + <HelpTOCNode Id="07799a75-fe79-4c7e-82b2-4d386580bd52" Title="Method(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_Method_2.htm"> + <HelpTOCNode Title="FullName Property " Url="html/P_Grpc_Core_Method_2_FullName.htm" /> + <HelpTOCNode Title="Name Property " Url="html/P_Grpc_Core_Method_2_Name.htm" /> + <HelpTOCNode Title="RequestMarshaller Property " Url="html/P_Grpc_Core_Method_2_RequestMarshaller.htm" /> + <HelpTOCNode Title="ResponseMarshaller Property " Url="html/P_Grpc_Core_Method_2_ResponseMarshaller.htm" /> + <HelpTOCNode Title="ServiceName Property " Url="html/P_Grpc_Core_Method_2_ServiceName.htm" /> + <HelpTOCNode Title="Type Property " Url="html/P_Grpc_Core_Method_2_Type.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="Method(TRequest, TResponse) Methods" Url="html/Methods_T_Grpc_Core_Method_2.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="MethodType Enumeration" Url="html/T_Grpc_Core_MethodType.htm" /> + <HelpTOCNode Id="996a6829-32fa-4328-8425-a7e36dc06547" Title="RpcException Class" Url="html/T_Grpc_Core_RpcException.htm"> + <HelpTOCNode Id="ecd3031d-500b-455b-b9e6-e7460c1196d3" Title="RpcException Constructor " Url="html/Overload_Grpc_Core_RpcException__ctor.htm"> + <HelpTOCNode Title="RpcException Constructor (Status)" Url="html/M_Grpc_Core_RpcException__ctor.htm" /> + <HelpTOCNode Title="RpcException Constructor (Status, String)" Url="html/M_Grpc_Core_RpcException__ctor_1.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="49925b06-a5ef-4208-aa58-97d01d83ca5a" Title="RpcException Properties" Url="html/Properties_T_Grpc_Core_RpcException.htm"> + <HelpTOCNode Title="Status Property " Url="html/P_Grpc_Core_RpcException_Status.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="RpcException Methods" Url="html/Methods_T_Grpc_Core_RpcException.htm" /> + <HelpTOCNode Title="RpcException Events" Url="html/Events_T_Grpc_Core_RpcException.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="202eecd5-04b7-4a5b-bca1-0fc2c886e7e8" Title="Server Class" Url="html/T_Grpc_Core_Server.htm"> + <HelpTOCNode Title="Server Constructor " Url="html/M_Grpc_Core_Server__ctor.htm" /> + <HelpTOCNode Id="9597ee15-8833-44e3-9709-3011e02061a3" Title="Server Properties" Url="html/Properties_T_Grpc_Core_Server.htm"> + <HelpTOCNode Title="Ports Property " Url="html/P_Grpc_Core_Server_Ports.htm" /> + <HelpTOCNode Title="Services Property " Url="html/P_Grpc_Core_Server_Services.htm" /> + <HelpTOCNode Title="ShutdownTask Property " Url="html/P_Grpc_Core_Server_ShutdownTask.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="055d4e37-55d1-4272-8ea7-c5c98c597a0b" Title="Server Methods" Url="html/Methods_T_Grpc_Core_Server.htm"> + <HelpTOCNode Title="KillAsync Method " Url="html/M_Grpc_Core_Server_KillAsync.htm" /> + <HelpTOCNode Title="ShutdownAsync Method " Url="html/M_Grpc_Core_Server_ShutdownAsync.htm" /> + <HelpTOCNode Title="Start Method " Url="html/M_Grpc_Core_Server_Start.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="179c4759-49e6-4cde-ad6c-ecbd24f28825" Title="Server.ServerPortCollection Class" Url="html/T_Grpc_Core_Server_ServerPortCollection.htm"> + <HelpTOCNode Id="5ceab319-6c73-4c06-9f5f-91f96caa185c" Title="ServerPortCollection Methods" Url="html/Methods_T_Grpc_Core_Server_ServerPortCollection.htm"> + <HelpTOCNode Id="fb5a924b-0557-480a-ac52-69eb05641c43" Title="Add Method " Url="html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm"> + <HelpTOCNode Title="Add Method (ServerPort)" Url="html/M_Grpc_Core_Server_ServerPortCollection_Add.htm" /> + <HelpTOCNode Title="Add Method (String, Int32, ServerCredentials)" Url="html/M_Grpc_Core_Server_ServerPortCollection_Add_1.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="GetEnumerator Method " Url="html/M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="6a73d058-4abc-434e-955a-5dbb5319982f" Title="Server.ServiceDefinitionCollection Class" Url="html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm"> + <HelpTOCNode Id="86683dc1-34bc-4c25-b9c5-d66e88ca16d4" Title="ServiceDefinitionCollection Methods" Url="html/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm"> + <HelpTOCNode Title="Add Method " Url="html/M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm" /> + <HelpTOCNode Title="GetEnumerator Method " Url="html/M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="1eeadbd8-d9fb-4b0d-a569-2e94a2daa1a6" Title="ServerCallContext Class" Url="html/T_Grpc_Core_ServerCallContext.htm"> + <HelpTOCNode Id="ff06e313-73f4-4c5b-bcdf-f47c0d4226fd" Title="ServerCallContext Properties" Url="html/Properties_T_Grpc_Core_ServerCallContext.htm"> + <HelpTOCNode Title="CancellationToken Property " Url="html/P_Grpc_Core_ServerCallContext_CancellationToken.htm" /> + <HelpTOCNode Title="Deadline Property " Url="html/P_Grpc_Core_ServerCallContext_Deadline.htm" /> + <HelpTOCNode Title="Host Property " Url="html/P_Grpc_Core_ServerCallContext_Host.htm" /> + <HelpTOCNode Title="Method Property " Url="html/P_Grpc_Core_ServerCallContext_Method.htm" /> + <HelpTOCNode Title="Peer Property " Url="html/P_Grpc_Core_ServerCallContext_Peer.htm" /> + <HelpTOCNode Title="RequestHeaders Property " Url="html/P_Grpc_Core_ServerCallContext_RequestHeaders.htm" /> + <HelpTOCNode Title="ResponseTrailers Property " Url="html/P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" /> + <HelpTOCNode Title="Status Property " Url="html/P_Grpc_Core_ServerCallContext_Status.htm" /> + <HelpTOCNode Title="WriteOptions Property " Url="html/P_Grpc_Core_ServerCallContext_WriteOptions.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="69bad7dd-c1d2-4641-86bc-3207683a8f9e" Title="ServerCallContext Methods" Url="html/Methods_T_Grpc_Core_ServerCallContext.htm"> + <HelpTOCNode Title="CreatePropagationToken Method " Url="html/M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm" /> + <HelpTOCNode Title="WriteResponseHeadersAsync Method " Url="html/M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="3fcaac14-82dd-4676-8372-ce9b3a432adf" Title="ServerCredentials Class" Url="html/T_Grpc_Core_ServerCredentials.htm"> + <HelpTOCNode Title="ServerCredentials Constructor " Url="html/M_Grpc_Core_ServerCredentials__ctor.htm" /> + <HelpTOCNode Id="260ab535-2687-4ca4-92e1-04f880f5b866" Title="ServerCredentials Properties" Url="html/Properties_T_Grpc_Core_ServerCredentials.htm"> + <HelpTOCNode Title="Insecure Property " Url="html/P_Grpc_Core_ServerCredentials_Insecure.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="ServerCredentials Methods" Url="html/Methods_T_Grpc_Core_ServerCredentials.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="431525c2-7485-4749-96b4-4b780307e33a" Title="ServerPort Class" Url="html/T_Grpc_Core_ServerPort.htm"> + <HelpTOCNode Title="ServerPort Constructor " Url="html/M_Grpc_Core_ServerPort__ctor.htm" /> + <HelpTOCNode Id="63488e69-090c-4dfb-a0ee-b78525f0d6b9" Title="ServerPort Properties" Url="html/Properties_T_Grpc_Core_ServerPort.htm"> + <HelpTOCNode Title="BoundPort Property " Url="html/P_Grpc_Core_ServerPort_BoundPort.htm" /> + <HelpTOCNode Title="Credentials Property " Url="html/P_Grpc_Core_ServerPort_Credentials.htm" /> + <HelpTOCNode Title="Host Property " Url="html/P_Grpc_Core_ServerPort_Host.htm" /> + <HelpTOCNode Title="Port Property " Url="html/P_Grpc_Core_ServerPort_Port.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="ServerPort Methods" Url="html/Methods_T_Grpc_Core_ServerPort.htm" /> + <HelpTOCNode Id="57a93a50-77d0-4e95-b56a-f7dd5b7c36d7" Title="ServerPort Fields" Url="html/Fields_T_Grpc_Core_ServerPort.htm"> + <HelpTOCNode Title="PickUnused Field" Url="html/F_Grpc_Core_ServerPort_PickUnused.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="f016d58e-e22a-4270-9804-17e820acbeee" Title="ServerServiceDefinition Class" Url="html/T_Grpc_Core_ServerServiceDefinition.htm"> + <HelpTOCNode Id="770302a4-5ce7-4c0f-ba09-2917367fb33f" Title="ServerServiceDefinition Methods" Url="html/Methods_T_Grpc_Core_ServerServiceDefinition.htm"> + <HelpTOCNode Title="CreateBuilder Method " Url="html/M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="746c68c2-783d-41b6-a100-d16b10e6101e" Title="ServerServiceDefinition.Builder Class" Url="html/T_Grpc_Core_ServerServiceDefinition_Builder.htm"> + <HelpTOCNode Title="ServerServiceDefinition.Builder Constructor " Url="html/M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm" /> + <HelpTOCNode Id="31b26957-e71e-450c-b081-ddfb89858ae6" Title="Builder Methods" Url="html/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm"> + <HelpTOCNode Id="cdf7da25-dd67-4470-87b6-e6338d8af19c" Title="AddMethod Method " Url="html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm"> + <HelpTOCNode Title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm" /> + <HelpTOCNode Title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm" /> + <HelpTOCNode Title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm" /> + <HelpTOCNode Title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="Build Method " Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" Url="html/T_Grpc_Core_ServerStreamingServerMethod_2.htm" /> + <HelpTOCNode Id="9360e278-6622-41e9-973b-2dda4a3f4191" Title="SslCredentials Class" Url="html/T_Grpc_Core_SslCredentials.htm"> + <HelpTOCNode Id="db94bec2-b656-41a5-9a1e-f6e8e30aba61" Title="SslCredentials Constructor " Url="html/Overload_Grpc_Core_SslCredentials__ctor.htm"> + <HelpTOCNode Title="SslCredentials Constructor " Url="html/M_Grpc_Core_SslCredentials__ctor.htm" /> + <HelpTOCNode Title="SslCredentials Constructor (String)" Url="html/M_Grpc_Core_SslCredentials__ctor_1.htm" /> + <HelpTOCNode Title="SslCredentials Constructor (String, KeyCertificatePair)" Url="html/M_Grpc_Core_SslCredentials__ctor_2.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="8676f362-61a4-45ae-98a1-72dc543e45ff" Title="SslCredentials Properties" Url="html/Properties_T_Grpc_Core_SslCredentials.htm"> + <HelpTOCNode Title="KeyCertificatePair Property " Url="html/P_Grpc_Core_SslCredentials_KeyCertificatePair.htm" /> + <HelpTOCNode Title="RootCertificates Property " Url="html/P_Grpc_Core_SslCredentials_RootCertificates.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="SslCredentials Methods" Url="html/Methods_T_Grpc_Core_SslCredentials.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="c42c9874-4efa-4021-ab51-38fca112ee60" Title="SslServerCredentials Class" Url="html/T_Grpc_Core_SslServerCredentials.htm"> + <HelpTOCNode Id="a21a5287-ba71-4eff-8fb9-ae8df70b4e61" Title="SslServerCredentials Constructor " Url="html/Overload_Grpc_Core_SslServerCredentials__ctor.htm"> + <HelpTOCNode Title="SslServerCredentials Constructor (IEnumerable(KeyCertificatePair))" Url="html/M_Grpc_Core_SslServerCredentials__ctor.htm" /> + <HelpTOCNode Title="SslServerCredentials Constructor (IEnumerable(KeyCertificatePair), String, Boolean)" Url="html/M_Grpc_Core_SslServerCredentials__ctor_1.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="612006fc-3a12-48c3-aaf9-1e8f9427fda8" Title="SslServerCredentials Properties" Url="html/Properties_T_Grpc_Core_SslServerCredentials.htm"> + <HelpTOCNode Title="ForceClientAuthentication Property " Url="html/P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm" /> + <HelpTOCNode Title="KeyCertificatePairs Property " Url="html/P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm" /> + <HelpTOCNode Title="RootCertificates Property " Url="html/P_Grpc_Core_SslServerCredentials_RootCertificates.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="SslServerCredentials Methods" Url="html/Methods_T_Grpc_Core_SslServerCredentials.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="9c94fbdf-19a0-4fc6-9a3c-78ce85d6d998" Title="Status Structure" Url="html/T_Grpc_Core_Status.htm"> + <HelpTOCNode Title="Status Constructor " Url="html/M_Grpc_Core_Status__ctor.htm" /> + <HelpTOCNode Id="b3e3e1c9-aa35-462d-aedb-0223a78f3c38" Title="Status Properties" Url="html/Properties_T_Grpc_Core_Status.htm"> + <HelpTOCNode Title="Detail Property " Url="html/P_Grpc_Core_Status_Detail.htm" /> + <HelpTOCNode Title="StatusCode Property " Url="html/P_Grpc_Core_Status_StatusCode.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="8c29ff31-266b-41f7-9ac1-06d2c14f87b6" Title="Status Methods" Url="html/Methods_T_Grpc_Core_Status.htm"> + <HelpTOCNode Title="ToString Method " Url="html/M_Grpc_Core_Status_ToString.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="31c222e3-a41d-442c-b990-9792abbaec79" Title="Status Fields" Url="html/Fields_T_Grpc_Core_Status.htm"> + <HelpTOCNode Title="DefaultCancelled Field" Url="html/F_Grpc_Core_Status_DefaultCancelled.htm" /> + <HelpTOCNode Title="DefaultSuccess Field" Url="html/F_Grpc_Core_Status_DefaultSuccess.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Title="StatusCode Enumeration" Url="html/T_Grpc_Core_StatusCode.htm" /> + <HelpTOCNode Title="UnaryServerMethod(TRequest, TResponse) Delegate" Url="html/T_Grpc_Core_UnaryServerMethod_2.htm" /> + <HelpTOCNode Id="cbb63ce8-468c-4123-aae2-5114a6fedb48" Title="VersionInfo Class" Url="html/T_Grpc_Core_VersionInfo.htm"> + <HelpTOCNode Id="1a7b3c5b-faed-4100-9519-f8009ce9047c" Title="VersionInfo Fields" Url="html/Fields_T_Grpc_Core_VersionInfo.htm"> + <HelpTOCNode Title="CurrentVersion Field" Url="html/F_Grpc_Core_VersionInfo_CurrentVersion.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Title="WriteFlags Enumeration" Url="html/T_Grpc_Core_WriteFlags.htm" /> + <HelpTOCNode Id="ed6a008f-6472-49d1-9d53-9dc4bafb3cbf" Title="WriteOptions Class" Url="html/T_Grpc_Core_WriteOptions.htm"> + <HelpTOCNode Title="WriteOptions Constructor " Url="html/M_Grpc_Core_WriteOptions__ctor.htm" /> + <HelpTOCNode Id="4e281091-67c5-43a9-be15-83ab0d2c0640" Title="WriteOptions Properties" Url="html/Properties_T_Grpc_Core_WriteOptions.htm"> + <HelpTOCNode Title="Flags Property " Url="html/P_Grpc_Core_WriteOptions_Flags.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="WriteOptions Methods" Url="html/Methods_T_Grpc_Core_WriteOptions.htm" /> + <HelpTOCNode Id="804b2351-b339-4fd2-9887-05f7471372db" Title="WriteOptions Fields" Url="html/Fields_T_Grpc_Core_WriteOptions.htm"> + <HelpTOCNode Title="Default Field" Url="html/F_Grpc_Core_WriteOptions_Default.htm" /> + </HelpTOCNode> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="e20dd797-c523-4164-bada-14a079905483" Title="Grpc.Core.Logging" Url="html/N_Grpc_Core_Logging.htm"> + <HelpTOCNode Id="d2413897-cd8c-4913-bf51-fd7f08781540" Title="ConsoleLogger Class" Url="html/T_Grpc_Core_Logging_ConsoleLogger.htm"> + <HelpTOCNode Title="ConsoleLogger Constructor " Url="html/M_Grpc_Core_Logging_ConsoleLogger__ctor.htm" /> + <HelpTOCNode Id="3d43197c-0f15-46df-b00a-741576b080d1" Title="ConsoleLogger Methods" Url="html/Methods_T_Grpc_Core_Logging_ConsoleLogger.htm"> + <HelpTOCNode Title="Debug Method " Url="html/M_Grpc_Core_Logging_ConsoleLogger_Debug.htm" /> + <HelpTOCNode Id="78f9a0e7-0817-40ae-8fa6-73b1c2fb0d43" Title="Error Method " Url="html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm"> + <HelpTOCNode Title="Error Method (String, Object[])" Url="html/M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm" /> + <HelpTOCNode Title="Error Method (Exception, String, Object[])" Url="html/M_Grpc_Core_Logging_ConsoleLogger_Error.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="ForType(T) Method " Url="html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm" /> + <HelpTOCNode Title="Info Method " Url="html/M_Grpc_Core_Logging_ConsoleLogger_Info.htm" /> + <HelpTOCNode Id="a501df56-0e95-4469-95fb-dc2a7a411789" Title="Warning Method " Url="html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm"> + <HelpTOCNode Title="Warning Method (String, Object[])" Url="html/M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm" /> + <HelpTOCNode Title="Warning Method (Exception, String, Object[])" Url="html/M_Grpc_Core_Logging_ConsoleLogger_Warning.htm" /> + </HelpTOCNode> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="1a278148-d563-4e6e-8078-7403300baf11" Title="ILogger Interface" Url="html/T_Grpc_Core_Logging_ILogger.htm"> + <HelpTOCNode Id="dbabf9d7-57ca-49ea-b64b-6bcb2d5673e1" Title="ILogger Methods" Url="html/Methods_T_Grpc_Core_Logging_ILogger.htm"> + <HelpTOCNode Title="Debug Method " Url="html/M_Grpc_Core_Logging_ILogger_Debug.htm" /> + <HelpTOCNode Id="c7415d61-5774-4b68-8031-e8dc427a0b53" Title="Error Method " Url="html/Overload_Grpc_Core_Logging_ILogger_Error.htm"> + <HelpTOCNode Title="Error Method (String, Object[])" Url="html/M_Grpc_Core_Logging_ILogger_Error_1.htm" /> + <HelpTOCNode Title="Error Method (Exception, String, Object[])" Url="html/M_Grpc_Core_Logging_ILogger_Error.htm" /> + </HelpTOCNode> + <HelpTOCNode Title="ForType(T) Method " Url="html/M_Grpc_Core_Logging_ILogger_ForType__1.htm" /> + <HelpTOCNode Title="Info Method " Url="html/M_Grpc_Core_Logging_ILogger_Info.htm" /> + <HelpTOCNode Id="a91057c3-122e-485f-a239-28bf44d29b64" Title="Warning Method " Url="html/Overload_Grpc_Core_Logging_ILogger_Warning.htm"> + <HelpTOCNode Title="Warning Method (String, Object[])" Url="html/M_Grpc_Core_Logging_ILogger_Warning_1.htm" /> + <HelpTOCNode Title="Warning Method (Exception, String, Object[])" Url="html/M_Grpc_Core_Logging_ILogger_Warning.htm" /> + </HelpTOCNode> + </HelpTOCNode> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="f0dcb251-b955-480a-b500-65a4a8317630" Title="Grpc.Core.Utils" Url="html/N_Grpc_Core_Utils.htm"> + <HelpTOCNode Id="befb20b1-8faf-4ffe-a273-986cdd5039d3" Title="AsyncStreamExtensions Class" Url="html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm"> + <HelpTOCNode Id="e1514b3a-0bc6-4f66-8e7b-2e1b87770636" Title="AsyncStreamExtensions Methods" Url="html/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm"> + <HelpTOCNode Title="ForEachAsync(T) Method " Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm" /> + <HelpTOCNode Title="ToListAsync(T) Method " Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm" /> + <HelpTOCNode Id="bd2e67b9-87fa-44e9-a9df-b8beda377897" Title="WriteAllAsync Method " Url="html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm"> + <HelpTOCNode Title="WriteAllAsync(T) Method (IServerStreamWriter(T), IEnumerable(T))" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm" /> + <HelpTOCNode Title="WriteAllAsync(T) Method (IClientStreamWriter(T), IEnumerable(T), Boolean)" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm" /> + </HelpTOCNode> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="8a71d51b-3f4c-4d05-a5c2-372210e58c58" Title="BenchmarkUtil Class" Url="html/T_Grpc_Core_Utils_BenchmarkUtil.htm"> + <HelpTOCNode Id="0c4af2e1-c86f-47a4-b01c-f69e701f998b" Title="BenchmarkUtil Methods" Url="html/Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm"> + <HelpTOCNode Title="RunBenchmark Method " Url="html/M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm" /> + </HelpTOCNode> + </HelpTOCNode> + <HelpTOCNode Id="c19e0a3c-734c-43b4-8513-6e9883ffc724" Title="Preconditions Class" Url="html/T_Grpc_Core_Utils_Preconditions.htm"> + <HelpTOCNode Id="28a6deae-d1b8-45da-8627-258fd43f02e5" Title="Preconditions Methods" Url="html/Methods_T_Grpc_Core_Utils_Preconditions.htm"> + <HelpTOCNode Id="82b41eef-bc6a-4830-99d0-fb7bc0278bdf" Title="CheckArgument Method " Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm"> + <HelpTOCNode Title="CheckArgument Method (Boolean)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckArgument.htm" /> + <HelpTOCNode Title="CheckArgument Method (Boolean, String)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="519f0480-dfb2-477e-bc76-678bd0c977f8" Title="CheckNotNull Method " Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm"> + <HelpTOCNode Title="CheckNotNull(T) Method (T)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm" /> + <HelpTOCNode Title="CheckNotNull(T) Method (T, String)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm" /> + </HelpTOCNode> + <HelpTOCNode Id="b124a5b0-114e-475a-b01d-ffd879af66e7" Title="CheckState Method " Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm"> + <HelpTOCNode Title="CheckState Method (Boolean)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckState.htm" /> + <HelpTOCNode Title="CheckState Method (Boolean, String)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckState_1.htm" /> + </HelpTOCNode> + </HelpTOCNode> + </HelpTOCNode> + </HelpTOCNode> + </HelpTOCNode> +</HelpTOC> diff --git a/doc/ref/csharp/html/fti/FTI_100.json b/doc/ref/csharp/html/fti/FTI_100.json new file mode 100644 index 0000000000..e9e948d71c --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_100.json @@ -0,0 +1 @@ +{"default":[1,196609,262146,458754,589826,720897,1179654,1441793,1507329,1638406,1769473,1835009,1900545,1966081,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,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,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,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,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 new file mode 100644 index 0000000000..f1e9b9f803 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_101.json @@ -0,0 +1 @@ +{"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 new file mode 100644 index 0000000000..a1d03f68e2 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_102.json @@ -0,0 +1 @@ +{"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,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,23592962,23658497,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24838145,25231361],"fully":[1835009,1900545,2031617,2097153,3211265,4915201,5111809,14745601,15204353,18284545,19333121,21626881,21692417,21823489,21889025,23199745,23592961,23855105],"fashion":[2162689,6356993,21954561],"fatalfailure":[2228225,6553601,22020097,22282241],"finalize":[2228225,2359297,2424833,2490369,2555905,2621441,3014657,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25231361],"free":[2228225,2359297,2424833,2490369,2555905,2621441,3014657,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,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 new file mode 100644 index 0000000000..398e827a53 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_103.json @@ -0,0 +1 @@ +{"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,23592966,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,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,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 new file mode 100644 index 0000000000..4c30282ae7 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_104.json @@ -0,0 +1 @@ +{"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,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 new file mode 100644 index 0000000000..d521afa4a0 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_105.json @@ -0,0 +1 @@ +{"inherited":[131073,1769476,1835012,1900548,1966084,2031620,2097156,2228230,2293764,2359302,2424838,2490374,2555910,2621446,2686978,2818049,2883585,2949124,3014662,3211268,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,23592964,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,3211268,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,23592964,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,3211265,3342337,4194305,6553601,15728641,21299201,21823489,21889025,23592961,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,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 new file mode 100644 index 0000000000..6ce520d796 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_107.json @@ -0,0 +1 @@ +{"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 new file mode 100644 index 0000000000..0e8d26a239 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_108.json @@ -0,0 +1 @@ +{"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 new file mode 100644 index 0000000000..6c114c9ab6 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_109.json @@ -0,0 +1 @@ +{"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,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,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,23592969,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 new file mode 100644 index 0000000000..4df2bf7fde --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_110.json @@ -0,0 +1 @@ +{"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 new file mode 100644 index 0000000000..d6598433cd --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_111.json @@ -0,0 +1 @@ +{"occurs":[131073,2228225,6684673,22020097,23920641],"object":[131073,1769480,1835015,1900551,1966088,2031618,2097154,2228235,2293767,2359307,2424843,2490379,2555915,2621451,2949127,3014671,3080196,3211266,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,23592962,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,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,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 new file mode 100644 index 0000000000..f8b685b9ef --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_112.json @@ -0,0 +1 @@ +{"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,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,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 new file mode 100644 index 0000000000..50cc318bdf --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_113.json @@ -0,0 +1 @@ +{"qualified":[2031617,2097153,3211265,5767169,14745601,15204353,18284545,19333121,21823489,21889025,23199745,23592961,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 new file mode 100644 index 0000000000..eb0e8484e8 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_114.json @@ -0,0 +1 @@ +{"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,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,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,3211266,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,23592962,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,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,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,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,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,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 new file mode 100644 index 0000000000..37245fd262 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_115.json @@ -0,0 +1 @@ +{"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,3211265,3342337,4194305,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,8454145,8912897,8978433,9043969,11337729,11403265,12320769,12517377,13041665,13959169,14024705,15007745,15138817,15728641,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,18743297,18808833,18939905,19005441,19070977,19136513,21233665,21299201,21823490,21889026,23592962,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,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,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,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,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,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,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,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,23592962,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],"supports":[12320769,14221313,17825793,22347777,23658497],"services":[12320769,15335426,20774918,23986179],"structures":[12320769],"serializing":[12320769,23592961],"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,23592961,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 new file mode 100644 index 0000000000..5e6f03ef40 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_116.json @@ -0,0 +1 @@ +{"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,3211267,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,23592965,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,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,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 new file mode 100644 index 0000000000..d53c17bcd0 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_117.json @@ -0,0 +1 @@ +{"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 new file mode 100644 index 0000000000..934344f41f --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_118.json @@ -0,0 +1 @@ +{"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,23592961,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,3211267,3342339,4194307,21823491,21889027,23592963,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 new file mode 100644 index 0000000000..ee9112dc18 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_119.json @@ -0,0 +1 @@ +{"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 new file mode 100644 index 0000000000..6a0eef704a --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_122.json @@ -0,0 +1 @@ +{"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 new file mode 100644 index 0000000000..2a75124bdf --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_97.json @@ -0,0 +1 @@ +{"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,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,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 new file mode 100644 index 0000000000..aa09b59f12 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_98.json @@ -0,0 +1 @@ +{"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 new file mode 100644 index 0000000000..a53458d4f3 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_99.json @@ -0,0 +1 @@ +{"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,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,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,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,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,23592961,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,23592965,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,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,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,3211265,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,23592961,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,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,23592961,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,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,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,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,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,3211265,3342337,4194305,11403265,12320769,12451841,15728641,21299201,21823489,21889025,23592961,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 new file mode 100644 index 0000000000..7439f6f829 --- /dev/null +++ b/doc/ref/csharp/html/fti/FTI_Files.json @@ -0,0 +1 @@ +["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\u000032","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\u000079","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\u0000100","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\u0000317","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\u0000390","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\u0000270","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\u0000124","CallInvocationDetails(TRequest, TResponse).ResponseMarshaller Property\u0000html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm\u0000124","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\u0000137","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\u0000125","Method(TRequest, TResponse).ResponseMarshaller Property\u0000html/P_Grpc_Core_Method_2_ResponseMarshaller.htm\u0000125","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) Structure\u0000html/T_Grpc_Core_Marshaller_1.htm\u0000226","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\u0000109","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 new file mode 100644 index 0000000000..e24bbc2c7e --- /dev/null +++ b/doc/ref/csharp/html/html/Events_T_Grpc_Core_RpcException.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RpcException Events</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RpcException class, events" /><meta name="Microsoft.Help.Id" content="Events.T:Grpc.Core.RpcException" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Events_T_Grpc_Core_RpcException" /><meta name="guid" content="Events_T_Grpc_Core_RpcException" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_RpcException__ctor.htm" title="RpcException Constructor " tocid="Overload_Grpc_Core_RpcException__ctor">RpcException Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_RpcException.htm" title="RpcException Properties" tocid="Properties_T_Grpc_Core_RpcException">RpcException Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_RpcException.htm" title="RpcException Methods" tocid="Methods_T_Grpc_Core_RpcException">RpcException Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Events_T_Grpc_Core_RpcException.htm" title="RpcException Events" tocid="Events_T_Grpc_Core_RpcException">RpcException Events</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">RpcException Events</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_RpcException.htm">RpcException</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Events</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protevent.gif" alt="Protected event" title="Protected event" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/ee332915" target="_blank">SerializeObjectState</a></td><td><div class="summary">Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_RpcException.htm">RpcException Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ed73663360 --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Census.htm @@ -0,0 +1,2 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOptions.Census Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Census field" /><meta name="System.Keywords" content="ChannelOptions.Census field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOptions.Census" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.ChannelOptions.Census" /><meta name="Description" content="Enable census for tracing and stats collection" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_ChannelOptions_Census" /><meta name="guid" content="F_Grpc_Core_ChannelOptions_Census" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Fields" tocid="Fields_T_Grpc_Core_ChannelOptions">ChannelOptions Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Census.htm" title="Census Field" tocid="F_Grpc_Core_ChannelOptions_Census">Census Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" title="DefaultAuthority Field" tocid="F_Grpc_Core_ChannelOptions_DefaultAuthority">DefaultAuthority Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" title="Http2InitialSequenceNumber Field" tocid="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber">Http2InitialSequenceNumber Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" title="MaxConcurrentStreams Field" tocid="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams">MaxConcurrentStreams Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" title="MaxMessageLength Field" tocid="F_Grpc_Core_ChannelOptions_MaxMessageLength">MaxMessageLength Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" title="PrimaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString">PrimaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" title="SecondaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString">SecondaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" title="SslTargetNameOverride Field" tocid="F_Grpc_Core_ChannelOptions_SslTargetNameOverride">SslTargetNameOverride Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOptions<span id="LST19A8F96D_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST19A8F96D_0?cpp=::|nu=.");</script>Census Field</td></tr></table><span class="introStyle"></span><div class="summary">Enable census for tracing and stats collection</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">const</span> <span class="identifier">string</span> <span class="identifier">Census</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Const</span> <span class="identifier">Census</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">literal</span> <span class="identifier">String</span>^ <span class="identifier">Census</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="keyword">mutable</span> <span class="identifier">Census</span>: <span class="identifier">string</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOptions.htm">ChannelOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..25b96ead2a --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_DefaultAuthority.htm @@ -0,0 +1,2 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOptions.DefaultAuthority Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="DefaultAuthority field" /><meta name="System.Keywords" content="ChannelOptions.DefaultAuthority field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOptions.DefaultAuthority" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.ChannelOptions.DefaultAuthority" /><meta name="Description" content="Default authority for calls." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_ChannelOptions_DefaultAuthority" /><meta name="guid" content="F_Grpc_Core_ChannelOptions_DefaultAuthority" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Fields" tocid="Fields_T_Grpc_Core_ChannelOptions">ChannelOptions Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Census.htm" title="Census Field" tocid="F_Grpc_Core_ChannelOptions_Census">Census Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" title="DefaultAuthority Field" tocid="F_Grpc_Core_ChannelOptions_DefaultAuthority">DefaultAuthority Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" title="Http2InitialSequenceNumber Field" tocid="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber">Http2InitialSequenceNumber Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" title="MaxConcurrentStreams Field" tocid="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams">MaxConcurrentStreams Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" title="MaxMessageLength Field" tocid="F_Grpc_Core_ChannelOptions_MaxMessageLength">MaxMessageLength Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" title="PrimaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString">PrimaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" title="SecondaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString">SecondaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" title="SslTargetNameOverride Field" tocid="F_Grpc_Core_ChannelOptions_SslTargetNameOverride">SslTargetNameOverride Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOptions<span id="LSTC41464EC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC41464EC_0?cpp=::|nu=.");</script>DefaultAuthority Field</td></tr></table><span class="introStyle"></span><div class="summary">Default authority for calls.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">const</span> <span class="identifier">string</span> <span class="identifier">DefaultAuthority</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Const</span> <span class="identifier">DefaultAuthority</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">literal</span> <span class="identifier">String</span>^ <span class="identifier">DefaultAuthority</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="keyword">mutable</span> <span class="identifier">DefaultAuthority</span>: <span class="identifier">string</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOptions.htm">ChannelOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..02a7dbba25 --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm @@ -0,0 +1,2 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOptions.Http2InitialSequenceNumber Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Http2InitialSequenceNumber field" /><meta name="System.Keywords" content="ChannelOptions.Http2InitialSequenceNumber field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOptions.Http2InitialSequenceNumber" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.ChannelOptions.Http2InitialSequenceNumber" /><meta name="Description" content="Initial sequence number for http2 transports" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber" /><meta name="guid" content="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Fields" tocid="Fields_T_Grpc_Core_ChannelOptions">ChannelOptions Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Census.htm" title="Census Field" tocid="F_Grpc_Core_ChannelOptions_Census">Census Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" title="DefaultAuthority Field" tocid="F_Grpc_Core_ChannelOptions_DefaultAuthority">DefaultAuthority Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" title="Http2InitialSequenceNumber Field" tocid="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber">Http2InitialSequenceNumber Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" title="MaxConcurrentStreams Field" tocid="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams">MaxConcurrentStreams Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" title="MaxMessageLength Field" tocid="F_Grpc_Core_ChannelOptions_MaxMessageLength">MaxMessageLength Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" title="PrimaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString">PrimaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" title="SecondaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString">SecondaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" title="SslTargetNameOverride Field" tocid="F_Grpc_Core_ChannelOptions_SslTargetNameOverride">SslTargetNameOverride Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOptions<span id="LST3698CF40_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3698CF40_0?cpp=::|nu=.");</script>Http2InitialSequenceNumber Field</td></tr></table><span class="introStyle"></span><div class="summary">Initial sequence number for http2 transports</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">const</span> <span class="identifier">string</span> <span class="identifier">Http2InitialSequenceNumber</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Const</span> <span class="identifier">Http2InitialSequenceNumber</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">literal</span> <span class="identifier">String</span>^ <span class="identifier">Http2InitialSequenceNumber</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="keyword">mutable</span> <span class="identifier">Http2InitialSequenceNumber</span>: <span class="identifier">string</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOptions.htm">ChannelOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b68c6b35bd --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm @@ -0,0 +1,2 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOptions.MaxConcurrentStreams Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="MaxConcurrentStreams field" /><meta name="System.Keywords" content="ChannelOptions.MaxConcurrentStreams field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOptions.MaxConcurrentStreams" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.ChannelOptions.MaxConcurrentStreams" /><meta name="Description" content="Maximum number of concurrent incoming streams to allow on a http2 connection" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams" /><meta name="guid" content="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Fields" tocid="Fields_T_Grpc_Core_ChannelOptions">ChannelOptions Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Census.htm" title="Census Field" tocid="F_Grpc_Core_ChannelOptions_Census">Census Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" title="DefaultAuthority Field" tocid="F_Grpc_Core_ChannelOptions_DefaultAuthority">DefaultAuthority Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" title="Http2InitialSequenceNumber Field" tocid="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber">Http2InitialSequenceNumber Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" title="MaxConcurrentStreams Field" tocid="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams">MaxConcurrentStreams Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" title="MaxMessageLength Field" tocid="F_Grpc_Core_ChannelOptions_MaxMessageLength">MaxMessageLength Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" title="PrimaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString">PrimaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" title="SecondaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString">SecondaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" title="SslTargetNameOverride Field" tocid="F_Grpc_Core_ChannelOptions_SslTargetNameOverride">SslTargetNameOverride Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOptions<span id="LSTF66C263E_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF66C263E_0?cpp=::|nu=.");</script>MaxConcurrentStreams Field</td></tr></table><span class="introStyle"></span><div class="summary">Maximum number of concurrent incoming streams to allow on a http2 connection</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">const</span> <span class="identifier">string</span> <span class="identifier">MaxConcurrentStreams</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Const</span> <span class="identifier">MaxConcurrentStreams</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">literal</span> <span class="identifier">String</span>^ <span class="identifier">MaxConcurrentStreams</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="keyword">mutable</span> <span class="identifier">MaxConcurrentStreams</span>: <span class="identifier">string</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOptions.htm">ChannelOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..fd8731373c --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxMessageLength.htm @@ -0,0 +1,2 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOptions.MaxMessageLength Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="MaxMessageLength field" /><meta name="System.Keywords" content="ChannelOptions.MaxMessageLength field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOptions.MaxMessageLength" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.ChannelOptions.MaxMessageLength" /><meta name="Description" content="Maximum message length that the channel can receive" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_ChannelOptions_MaxMessageLength" /><meta name="guid" content="F_Grpc_Core_ChannelOptions_MaxMessageLength" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Fields" tocid="Fields_T_Grpc_Core_ChannelOptions">ChannelOptions Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Census.htm" title="Census Field" tocid="F_Grpc_Core_ChannelOptions_Census">Census Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" title="DefaultAuthority Field" tocid="F_Grpc_Core_ChannelOptions_DefaultAuthority">DefaultAuthority Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" title="Http2InitialSequenceNumber Field" tocid="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber">Http2InitialSequenceNumber Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" title="MaxConcurrentStreams Field" tocid="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams">MaxConcurrentStreams Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" title="MaxMessageLength Field" tocid="F_Grpc_Core_ChannelOptions_MaxMessageLength">MaxMessageLength Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" title="PrimaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString">PrimaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" title="SecondaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString">SecondaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" title="SslTargetNameOverride Field" tocid="F_Grpc_Core_ChannelOptions_SslTargetNameOverride">SslTargetNameOverride Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOptions<span id="LST88F6C5B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST88F6C5B_0?cpp=::|nu=.");</script>MaxMessageLength Field</td></tr></table><span class="introStyle"></span><div class="summary">Maximum message length that the channel can receive</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">const</span> <span class="identifier">string</span> <span class="identifier">MaxMessageLength</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Const</span> <span class="identifier">MaxMessageLength</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">literal</span> <span class="identifier">String</span>^ <span class="identifier">MaxMessageLength</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="keyword">mutable</span> <span class="identifier">MaxMessageLength</span>: <span class="identifier">string</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOptions.htm">ChannelOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..1e0f197ef2 --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm @@ -0,0 +1,2 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOptions.PrimaryUserAgentString Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="PrimaryUserAgentString field" /><meta name="System.Keywords" content="ChannelOptions.PrimaryUserAgentString field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOptions.PrimaryUserAgentString" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.ChannelOptions.PrimaryUserAgentString" /><meta name="Description" content="Primary user agent: goes at the start of the user-agent metadata" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString" /><meta name="guid" content="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Fields" tocid="Fields_T_Grpc_Core_ChannelOptions">ChannelOptions Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Census.htm" title="Census Field" tocid="F_Grpc_Core_ChannelOptions_Census">Census Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" title="DefaultAuthority Field" tocid="F_Grpc_Core_ChannelOptions_DefaultAuthority">DefaultAuthority Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" title="Http2InitialSequenceNumber Field" tocid="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber">Http2InitialSequenceNumber Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" title="MaxConcurrentStreams Field" tocid="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams">MaxConcurrentStreams Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" title="MaxMessageLength Field" tocid="F_Grpc_Core_ChannelOptions_MaxMessageLength">MaxMessageLength Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" title="PrimaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString">PrimaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" title="SecondaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString">SecondaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" title="SslTargetNameOverride Field" tocid="F_Grpc_Core_ChannelOptions_SslTargetNameOverride">SslTargetNameOverride Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOptions<span id="LST6F321D1D_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6F321D1D_0?cpp=::|nu=.");</script>PrimaryUserAgentString Field</td></tr></table><span class="introStyle"></span><div class="summary">Primary user agent: goes at the start of the user-agent metadata</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">const</span> <span class="identifier">string</span> <span class="identifier">PrimaryUserAgentString</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Const</span> <span class="identifier">PrimaryUserAgentString</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">literal</span> <span class="identifier">String</span>^ <span class="identifier">PrimaryUserAgentString</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="keyword">mutable</span> <span class="identifier">PrimaryUserAgentString</span>: <span class="identifier">string</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOptions.htm">ChannelOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..1ab07bbcc9 --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm @@ -0,0 +1,2 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOptions.SecondaryUserAgentString Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="SecondaryUserAgentString field" /><meta name="System.Keywords" content="ChannelOptions.SecondaryUserAgentString field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOptions.SecondaryUserAgentString" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.ChannelOptions.SecondaryUserAgentString" /><meta name="Description" content="Secondary user agent: goes at the end of the user-agent metadata" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString" /><meta name="guid" content="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Fields" tocid="Fields_T_Grpc_Core_ChannelOptions">ChannelOptions Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Census.htm" title="Census Field" tocid="F_Grpc_Core_ChannelOptions_Census">Census Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" title="DefaultAuthority Field" tocid="F_Grpc_Core_ChannelOptions_DefaultAuthority">DefaultAuthority Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" title="Http2InitialSequenceNumber Field" tocid="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber">Http2InitialSequenceNumber Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" title="MaxConcurrentStreams Field" tocid="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams">MaxConcurrentStreams Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" title="MaxMessageLength Field" tocid="F_Grpc_Core_ChannelOptions_MaxMessageLength">MaxMessageLength Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" title="PrimaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString">PrimaryUserAgentString Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" title="SecondaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString">SecondaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" title="SslTargetNameOverride Field" tocid="F_Grpc_Core_ChannelOptions_SslTargetNameOverride">SslTargetNameOverride Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOptions<span id="LST1C8754B3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1C8754B3_0?cpp=::|nu=.");</script>SecondaryUserAgentString Field</td></tr></table><span class="introStyle"></span><div class="summary">Secondary user agent: goes at the end of the user-agent metadata</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">const</span> <span class="identifier">string</span> <span class="identifier">SecondaryUserAgentString</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Const</span> <span class="identifier">SecondaryUserAgentString</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">literal</span> <span class="identifier">String</span>^ <span class="identifier">SecondaryUserAgentString</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="keyword">mutable</span> <span class="identifier">SecondaryUserAgentString</span>: <span class="identifier">string</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOptions.htm">ChannelOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..45c372a061 --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm @@ -0,0 +1,2 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOptions.SslTargetNameOverride Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="SslTargetNameOverride field" /><meta name="System.Keywords" content="ChannelOptions.SslTargetNameOverride field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOptions.SslTargetNameOverride" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.ChannelOptions.SslTargetNameOverride" /><meta name="Description" content="Override SSL target check. Only to be used for testing." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_ChannelOptions_SslTargetNameOverride" /><meta name="guid" content="F_Grpc_Core_ChannelOptions_SslTargetNameOverride" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Fields" tocid="Fields_T_Grpc_Core_ChannelOptions">ChannelOptions Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Census.htm" title="Census Field" tocid="F_Grpc_Core_ChannelOptions_Census">Census Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" title="DefaultAuthority Field" tocid="F_Grpc_Core_ChannelOptions_DefaultAuthority">DefaultAuthority Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" title="Http2InitialSequenceNumber Field" tocid="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber">Http2InitialSequenceNumber Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" title="MaxConcurrentStreams Field" tocid="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams">MaxConcurrentStreams Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" title="MaxMessageLength Field" tocid="F_Grpc_Core_ChannelOptions_MaxMessageLength">MaxMessageLength Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" title="PrimaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString">PrimaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" title="SecondaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString">SecondaryUserAgentString Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" title="SslTargetNameOverride Field" tocid="F_Grpc_Core_ChannelOptions_SslTargetNameOverride">SslTargetNameOverride Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOptions<span id="LSTA9D274CA_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9D274CA_0?cpp=::|nu=.");</script>SslTargetNameOverride Field</td></tr></table><span class="introStyle"></span><div class="summary">Override SSL target check. Only to be used for testing.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">const</span> <span class="identifier">string</span> <span class="identifier">SslTargetNameOverride</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Const</span> <span class="identifier">SslTargetNameOverride</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">literal</span> <span class="identifier">String</span>^ <span class="identifier">SslTargetNameOverride</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="keyword">mutable</span> <span class="identifier">SslTargetNameOverride</span>: <span class="identifier">string</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOptions.htm">ChannelOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..da24244691 --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_ContextPropagationOptions_Default.htm @@ -0,0 +1,4 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ContextPropagationOptions.Default Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Default field" /><meta name="System.Keywords" content="ContextPropagationOptions.Default field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ContextPropagationOptions.Default" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.ContextPropagationOptions.Default" /><meta name="Description" content="The context propagation options that will be used by default." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_ContextPropagationOptions_Default" /><meta name="guid" content="F_Grpc_Core_ContextPropagationOptions_Default" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Fields" tocid="Fields_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ContextPropagationOptions_Default.htm" title="Default Field" tocid="F_Grpc_Core_ContextPropagationOptions_Default">Default Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ContextPropagationOptions<span id="LST98CFD07D_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST98CFD07D_0?cpp=::|nu=.");</script>Default Field</td></tr></table><span class="introStyle"></span><div class="summary"> + The context propagation options that will be used by default. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">readonly</span> <span class="identifier">ContextPropagationOptions</span> <span class="identifier">Default</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">ReadOnly</span> <span class="identifier">Default</span> <span class="keyword">As</span> <span class="identifier">ContextPropagationOptions</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">initonly</span> <span class="identifier">ContextPropagationOptions</span>^ <span class="identifier">Default</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="identifier">Default</span>: <span class="identifier">ContextPropagationOptions</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a38b7a906d --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm @@ -0,0 +1,4 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.BinaryHeaderSuffix Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="BinaryHeaderSuffix field" /><meta name="System.Keywords" content="Metadata.BinaryHeaderSuffix field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.BinaryHeaderSuffix" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.Metadata.BinaryHeaderSuffix" /><meta name="Description" content="All binary headers should have this suffix." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_Metadata_BinaryHeaderSuffix" /><meta name="guid" content="F_Grpc_Core_Metadata_BinaryHeaderSuffix" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_Metadata.htm" title="Metadata Fields" tocid="Fields_T_Grpc_Core_Metadata">Metadata Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm" title="BinaryHeaderSuffix Field" tocid="F_Grpc_Core_Metadata_BinaryHeaderSuffix">BinaryHeaderSuffix Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Metadata_Empty.htm" title="Empty Field" tocid="F_Grpc_Core_Metadata_Empty">Empty Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST36E3D9E5_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36E3D9E5_0?cpp=::|nu=.");</script>BinaryHeaderSuffix Field</td></tr></table><span class="introStyle"></span><div class="summary"> + All binary headers should have this suffix. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">const</span> <span class="identifier">string</span> <span class="identifier">BinaryHeaderSuffix</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Const</span> <span class="identifier">BinaryHeaderSuffix</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">literal</span> <span class="identifier">String</span>^ <span class="identifier">BinaryHeaderSuffix</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="keyword">mutable</span> <span class="identifier">BinaryHeaderSuffix</span>: <span class="identifier">string</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..eec5d71768 --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_Metadata_Empty.htm @@ -0,0 +1,4 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Empty Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Empty field" /><meta name="System.Keywords" content="Metadata.Empty field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Empty" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.Metadata.Empty" /><meta name="Description" content="An read-only instance of metadata containing no entries." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_Metadata_Empty" /><meta name="guid" content="F_Grpc_Core_Metadata_Empty" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_Metadata.htm" title="Metadata Fields" tocid="Fields_T_Grpc_Core_Metadata">Metadata Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm" title="BinaryHeaderSuffix Field" tocid="F_Grpc_Core_Metadata_BinaryHeaderSuffix">BinaryHeaderSuffix Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Metadata_Empty.htm" title="Empty Field" tocid="F_Grpc_Core_Metadata_Empty">Empty Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST6D2EC74B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6D2EC74B_0?cpp=::|nu=.");</script>Empty Field</td></tr></table><span class="introStyle"></span><div class="summary"> + An read-only instance of metadata containing no entries. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">readonly</span> <span class="identifier">Metadata</span> <span class="identifier">Empty</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">ReadOnly</span> <span class="identifier">Empty</span> <span class="keyword">As</span> <span class="identifier">Metadata</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">initonly</span> <span class="identifier">Metadata</span>^ <span class="identifier">Empty</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="identifier">Empty</span>: <span class="identifier">Metadata</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="T_Grpc_Core_Metadata.htm">Metadata</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..200823cc86 --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_ServerPort_PickUnused.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPort.PickUnused Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="PickUnused field" /><meta name="System.Keywords" content="ServerPort.PickUnused field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort.PickUnused" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.ServerPort.PickUnused" /><meta name="Description" content="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 property." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_ServerPort_PickUnused" /><meta name="guid" content="F_Grpc_Core_ServerPort_PickUnused" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ServerPort.htm" title="ServerPort Fields" tocid="Fields_T_Grpc_Core_ServerPort">ServerPort Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ServerPort_PickUnused.htm" title="PickUnused Field" tocid="F_Grpc_Core_ServerPort_PickUnused">PickUnused Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPort<span id="LSTB36E3D14_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB36E3D14_0?cpp=::|nu=.");</script>PickUnused Field</td></tr></table><span class="introStyle"></span><div class="summary"> + 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 <a href="P_Grpc_Core_ServerPort_BoundPort.htm">BoundPort</a> property. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">const</span> <span class="identifier">int</span> <span class="identifier">PickUnused</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Const</span> <span class="identifier">PickUnused</span> <span class="keyword">As</span> <span class="identifier">Integer</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">literal</span> <span class="identifier">int</span> <span class="identifier">PickUnused</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="keyword">mutable</span> <span class="identifier">PickUnused</span>: <span class="identifier">int</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">Int32</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerPort.htm">ServerPort Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ebb3349100 --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultCancelled.htm @@ -0,0 +1,4 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Status.DefaultCancelled Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="DefaultCancelled field" /><meta name="System.Keywords" content="Status.DefaultCancelled field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Status.DefaultCancelled" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.Status.DefaultCancelled" /><meta name="Description" content="Default result of a cancelled RPC. StatusCode=Cancelled, empty details message." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_Status_DefaultCancelled" /><meta name="guid" content="F_Grpc_Core_Status_DefaultCancelled" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_Status.htm" title="Status Fields" tocid="Fields_T_Grpc_Core_Status">Status Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Status_DefaultCancelled.htm" title="DefaultCancelled Field" tocid="F_Grpc_Core_Status_DefaultCancelled">DefaultCancelled Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Status_DefaultSuccess.htm" title="DefaultSuccess Field" tocid="F_Grpc_Core_Status_DefaultSuccess">DefaultSuccess Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Status<span id="LSTF9F514E3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF9F514E3_0?cpp=::|nu=.");</script>DefaultCancelled Field</td></tr></table><span class="introStyle"></span><div class="summary"> + Default result of a cancelled RPC. StatusCode=Cancelled, empty details message. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">readonly</span> <span class="identifier">Status</span> <span class="identifier">DefaultCancelled</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">ReadOnly</span> <span class="identifier">DefaultCancelled</span> <span class="keyword">As</span> <span class="identifier">Status</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">initonly</span> <span class="identifier">Status</span> <span class="identifier">DefaultCancelled</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="identifier">DefaultCancelled</span>: <span class="identifier">Status</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="T_Grpc_Core_Status.htm">Status</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Status.htm">Status Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..683f4e09fd --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultSuccess.htm @@ -0,0 +1,4 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Status.DefaultSuccess Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="DefaultSuccess field" /><meta name="System.Keywords" content="Status.DefaultSuccess field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Status.DefaultSuccess" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.Status.DefaultSuccess" /><meta name="Description" content="Default result of a successful RPC. StatusCode=OK, empty details message." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_Status_DefaultSuccess" /><meta name="guid" content="F_Grpc_Core_Status_DefaultSuccess" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_Status.htm" title="Status Fields" tocid="Fields_T_Grpc_Core_Status">Status Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Status_DefaultCancelled.htm" title="DefaultCancelled Field" tocid="F_Grpc_Core_Status_DefaultCancelled">DefaultCancelled Field</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Status_DefaultSuccess.htm" title="DefaultSuccess Field" tocid="F_Grpc_Core_Status_DefaultSuccess">DefaultSuccess Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Status<span id="LST30C4FE4B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST30C4FE4B_0?cpp=::|nu=.");</script>DefaultSuccess Field</td></tr></table><span class="introStyle"></span><div class="summary"> + Default result of a successful RPC. StatusCode=OK, empty details message. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">readonly</span> <span class="identifier">Status</span> <span class="identifier">DefaultSuccess</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">ReadOnly</span> <span class="identifier">DefaultSuccess</span> <span class="keyword">As</span> <span class="identifier">Status</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">initonly</span> <span class="identifier">Status</span> <span class="identifier">DefaultSuccess</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="identifier">DefaultSuccess</span>: <span class="identifier">Status</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="T_Grpc_Core_Status.htm">Status</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Status.htm">Status Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..fd0b2c5e8d --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_VersionInfo_CurrentVersion.htm @@ -0,0 +1,4 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>VersionInfo.CurrentVersion Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CurrentVersion field" /><meta name="System.Keywords" content="VersionInfo.CurrentVersion field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.VersionInfo.CurrentVersion" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.VersionInfo.CurrentVersion" /><meta name="Description" content="Current version of gRPC" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_VersionInfo_CurrentVersion" /><meta name="guid" content="F_Grpc_Core_VersionInfo_CurrentVersion" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_VersionInfo.htm" title="VersionInfo Fields" tocid="Fields_T_Grpc_Core_VersionInfo">VersionInfo Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_VersionInfo_CurrentVersion.htm" title="CurrentVersion Field" tocid="F_Grpc_Core_VersionInfo_CurrentVersion">CurrentVersion Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">VersionInfo<span id="LST79E8CE1A_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79E8CE1A_0?cpp=::|nu=.");</script>CurrentVersion Field</td></tr></table><span class="introStyle"></span><div class="summary"> + Current version of gRPC + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">const</span> <span class="identifier">string</span> <span class="identifier">CurrentVersion</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Const</span> <span class="identifier">CurrentVersion</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">literal</span> <span class="identifier">String</span>^ <span class="identifier">CurrentVersion</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="keyword">mutable</span> <span class="identifier">CurrentVersion</span>: <span class="identifier">string</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_VersionInfo.htm">VersionInfo Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..89ab161c53 --- /dev/null +++ b/doc/ref/csharp/html/html/F_Grpc_Core_WriteOptions_Default.htm @@ -0,0 +1,4 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>WriteOptions.Default Field</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Default field" /><meta name="System.Keywords" content="WriteOptions.Default field" /><meta name="Microsoft.Help.F1" content="Grpc.Core.WriteOptions.Default" /><meta name="Microsoft.Help.Id" content="F:Grpc.Core.WriteOptions.Default" /><meta name="Description" content="Default write options." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="F_Grpc_Core_WriteOptions_Default" /><meta name="guid" content="F_Grpc_Core_WriteOptions_Default" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Fields" tocid="Fields_T_Grpc_Core_WriteOptions">WriteOptions Fields</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_WriteOptions_Default.htm" title="Default Field" tocid="F_Grpc_Core_WriteOptions_Default">Default Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">WriteOptions<span id="LSTCBEB6BB9_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCBEB6BB9_0?cpp=::|nu=.");</script>Default Field</td></tr></table><span class="introStyle"></span><div class="summary"> + Default write options. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">readonly</span> <span class="identifier">WriteOptions</span> <span class="identifier">Default</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">ReadOnly</span> <span class="identifier">Default</span> <span class="keyword">As</span> <span class="identifier">WriteOptions</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">initonly</span> <span class="identifier">WriteOptions</span>^ <span class="identifier">Default</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">val</span> <span class="identifier">Default</span>: <span class="identifier">WriteOptions</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Field Value</h4>Type: <a href="T_Grpc_Core_WriteOptions.htm">WriteOptions</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_WriteOptions.htm">WriteOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..8c995989ff --- /dev/null +++ b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ChannelOptions.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOptions Fields</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ChannelOptions class, fields" /><meta name="Microsoft.Help.Id" content="Fields.T:Grpc.Core.ChannelOptions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Fields_T_Grpc_Core_ChannelOptions" /><meta name="guid" content="Fields_T_Grpc_Core_ChannelOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Fields" tocid="Fields_T_Grpc_Core_ChannelOptions">ChannelOptions Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Census.htm" title="Census Field" tocid="F_Grpc_Core_ChannelOptions_Census">Census Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" title="DefaultAuthority Field" tocid="F_Grpc_Core_ChannelOptions_DefaultAuthority">DefaultAuthority Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" title="Http2InitialSequenceNumber Field" tocid="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber">Http2InitialSequenceNumber Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" title="MaxConcurrentStreams Field" tocid="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams">MaxConcurrentStreams Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" title="MaxMessageLength Field" tocid="F_Grpc_Core_ChannelOptions_MaxMessageLength">MaxMessageLength Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" title="PrimaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString">PrimaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" title="SecondaryUserAgentString Field" tocid="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString">SecondaryUserAgentString Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" title="SslTargetNameOverride Field" tocid="F_Grpc_Core_ChannelOptions_SslTargetNameOverride">SslTargetNameOverride Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOptions Fields</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ChannelOptions.htm">ChannelOptions</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_Census.htm">Census</a></td><td><div class="summary">Enable census for tracing and stats collection</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_DefaultAuthority.htm">DefaultAuthority</a></td><td><div class="summary">Default authority for calls.</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm">Http2InitialSequenceNumber</a></td><td><div class="summary">Initial sequence number for http2 transports</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm">MaxConcurrentStreams</a></td><td><div class="summary">Maximum number of concurrent incoming streams to allow on a http2 connection</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_MaxMessageLength.htm">MaxMessageLength</a></td><td><div class="summary">Maximum message length that the channel can receive</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm">PrimaryUserAgentString</a></td><td><div class="summary">Primary user agent: goes at the start of the user-agent metadata</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm">SecondaryUserAgentString</a></td><td><div class="summary">Secondary user agent: goes at the end of the user-agent metadata</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm">SslTargetNameOverride</a></td><td><div class="summary">Override SSL target check. Only to be used for testing.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOptions.htm">ChannelOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..06d95f3831 --- /dev/null +++ b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ContextPropagationOptions.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ContextPropagationOptions Fields</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ContextPropagationOptions class, fields" /><meta name="Microsoft.Help.Id" content="Fields.T:Grpc.Core.ContextPropagationOptions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Fields_T_Grpc_Core_ContextPropagationOptions" /><meta name="guid" content="Fields_T_Grpc_Core_ContextPropagationOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Fields" tocid="Fields_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ContextPropagationOptions_Default.htm" title="Default Field" tocid="F_Grpc_Core_ContextPropagationOptions_Default">Default Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ContextPropagationOptions Fields</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ContextPropagationOptions_Default.htm">Default</a></td><td><div class="summary"> + The context propagation options that will be used by default. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..4949c9f7b0 --- /dev/null +++ b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_Metadata.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata Fields</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Metadata class, fields" /><meta name="Microsoft.Help.Id" content="Fields.T:Grpc.Core.Metadata" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Fields_T_Grpc_Core_Metadata" /><meta name="guid" content="Fields_T_Grpc_Core_Metadata" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_Metadata.htm" title="Metadata Fields" tocid="Fields_T_Grpc_Core_Metadata">Metadata Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm" title="BinaryHeaderSuffix Field" tocid="F_Grpc_Core_Metadata_BinaryHeaderSuffix">BinaryHeaderSuffix Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Metadata_Empty.htm" title="Empty Field" tocid="F_Grpc_Core_Metadata_Empty">Empty Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata Fields</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Metadata.htm">Metadata</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm">BinaryHeaderSuffix</a></td><td><div class="summary"> + All binary headers should have this suffix. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_Metadata_Empty.htm">Empty</a></td><td><div class="summary"> + An read-only instance of metadata containing no entries. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..6c8b60e209 --- /dev/null +++ b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ServerPort.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPort Fields</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerPort class, fields" /><meta name="Microsoft.Help.Id" content="Fields.T:Grpc.Core.ServerPort" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Fields_T_Grpc_Core_ServerPort" /><meta name="guid" content="Fields_T_Grpc_Core_ServerPort" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ServerPort.htm" title="ServerPort Fields" tocid="Fields_T_Grpc_Core_ServerPort">ServerPort Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_ServerPort_PickUnused.htm" title="PickUnused Field" tocid="F_Grpc_Core_ServerPort_PickUnused">PickUnused Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPort Fields</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ServerPort.htm">ServerPort</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ServerPort_PickUnused.htm">PickUnused</a></td><td><div class="summary"> + 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 <a href="P_Grpc_Core_ServerPort_BoundPort.htm">BoundPort</a> property. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerPort.htm">ServerPort Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..824fb06367 --- /dev/null +++ b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_Status.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Status Fields</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Status structure, fields" /><meta name="Microsoft.Help.Id" content="Fields.T:Grpc.Core.Status" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Fields_T_Grpc_Core_Status" /><meta name="guid" content="Fields_T_Grpc_Core_Status" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_Status.htm" title="Status Fields" tocid="Fields_T_Grpc_Core_Status">Status Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Status_DefaultCancelled.htm" title="DefaultCancelled Field" tocid="F_Grpc_Core_Status_DefaultCancelled">DefaultCancelled Field</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_Status_DefaultSuccess.htm" title="DefaultSuccess Field" tocid="F_Grpc_Core_Status_DefaultSuccess">DefaultSuccess Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Status Fields</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Status.htm">Status</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_Status_DefaultCancelled.htm">DefaultCancelled</a></td><td><div class="summary"> + Default result of a cancelled RPC. StatusCode=Cancelled, empty details message. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_Status_DefaultSuccess.htm">DefaultSuccess</a></td><td><div class="summary"> + Default result of a successful RPC. StatusCode=OK, empty details message. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Status.htm">Status Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5373a4af50 --- /dev/null +++ b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_VersionInfo.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>VersionInfo Fields</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="VersionInfo class, fields" /><meta name="Microsoft.Help.Id" content="Fields.T:Grpc.Core.VersionInfo" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Fields_T_Grpc_Core_VersionInfo" /><meta name="guid" content="Fields_T_Grpc_Core_VersionInfo" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_VersionInfo.htm" title="VersionInfo Fields" tocid="Fields_T_Grpc_Core_VersionInfo">VersionInfo Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_VersionInfo_CurrentVersion.htm" title="CurrentVersion Field" tocid="F_Grpc_Core_VersionInfo_CurrentVersion">CurrentVersion Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">VersionInfo Fields</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_VersionInfo.htm">VersionInfo</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_VersionInfo_CurrentVersion.htm">CurrentVersion</a></td><td><div class="summary"> + Current version of gRPC + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_VersionInfo.htm">VersionInfo Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..cf412e42ab --- /dev/null +++ b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_WriteOptions.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>WriteOptions Fields</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteOptions class, fields" /><meta name="Microsoft.Help.Id" content="Fields.T:Grpc.Core.WriteOptions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Fields_T_Grpc_Core_WriteOptions" /><meta name="guid" content="Fields_T_Grpc_Core_WriteOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Fields" tocid="Fields_T_Grpc_Core_WriteOptions">WriteOptions Fields</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="F_Grpc_Core_WriteOptions_Default.htm" title="Default Field" tocid="F_Grpc_Core_WriteOptions_Default">Default Field</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">WriteOptions Fields</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_WriteOptions.htm">WriteOptions</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_WriteOptions_Default.htm">Default</a></td><td><div class="summary"> + Default write options. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_WriteOptions.htm">WriteOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..7d1f9d636b --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AuthInterceptors.FromAccessToken Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="FromAccessToken method" /><meta name="System.Keywords" content="AuthInterceptors.FromAccessToken method" /><meta name="Microsoft.Help.F1" content="Grpc.Auth.AuthInterceptors.FromAccessToken" /><meta name="Microsoft.Help.Id" content="M:Grpc.Auth.AuthInterceptors.FromAccessToken(System.String)" /><meta name="Description" content="Creates OAuth2 interceptor that will use given access token as authorization." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Auth" /><meta name="file" content="M_Grpc_Auth_AuthInterceptors_FromAccessToken" /><meta name="guid" content="M_Grpc_Auth_AuthInterceptors_FromAccessToken" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Auth.htm" title="Grpc.Auth" tocid="N_Grpc_Auth">Grpc.Auth</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Auth_AuthInterceptors.htm" title="AuthInterceptors Class" tocid="T_Grpc_Auth_AuthInterceptors">AuthInterceptors Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Auth_AuthInterceptors.htm" title="AuthInterceptors Methods" tocid="Methods_T_Grpc_Auth_AuthInterceptors">AuthInterceptors Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm" title="FromAccessToken Method " tocid="M_Grpc_Auth_AuthInterceptors_FromAccessToken">FromAccessToken Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Auth_AuthInterceptors_FromCredential.htm" title="FromCredential Method " tocid="M_Grpc_Auth_AuthInterceptors_FromCredential">FromCredential Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AuthInterceptors<span id="LST9EFB2ED9_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9EFB2ED9_0?cpp=::|nu=.");</script>FromAccessToken Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates OAuth2 interceptor that will use given access token as authorization. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Auth.htm">Grpc.Auth</a><br /><strong>Assembly:</strong> Grpc.Auth (in Grpc.Auth.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">HeaderInterceptor</span> <span class="identifier">FromAccessToken</span>( + <span class="identifier">string</span> <span class="parameter">accessToken</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">FromAccessToken</span> ( + <span class="parameter">accessToken</span> <span class="keyword">As</span> <span class="identifier">String</span> +) <span class="keyword">As</span> <span class="identifier">HeaderInterceptor</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="identifier">HeaderInterceptor</span>^ <span class="identifier">FromAccessToken</span>( + <span class="identifier">String</span>^ <span class="parameter">accessToken</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">FromAccessToken</span> : + <span class="parameter">accessToken</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="identifier">HeaderInterceptor</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">accessToken</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST9EFB2ED9_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9EFB2ED9_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />OAuth2 access token.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_HeaderInterceptor.htm">HeaderInterceptor</a><br />The header interceptor.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Auth_AuthInterceptors.htm">AuthInterceptors Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Auth.htm">Grpc.Auth Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..6c42a93dfa --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromCredential.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AuthInterceptors.FromCredential Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="FromCredential method" /><meta name="System.Keywords" content="AuthInterceptors.FromCredential method" /><meta name="Microsoft.Help.F1" content="Grpc.Auth.AuthInterceptors.FromCredential" /><meta name="Microsoft.Help.Id" content="M:Grpc.Auth.AuthInterceptors.FromCredential(Google.Apis.Auth.OAuth2.ITokenAccess)" /><meta name="Description" content="Creates interceptor that will obtain access token from any credential type that implements ITokenAccess. (e.g. GoogleCredential)." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Auth" /><meta name="file" content="M_Grpc_Auth_AuthInterceptors_FromCredential" /><meta name="guid" content="M_Grpc_Auth_AuthInterceptors_FromCredential" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Auth.htm" title="Grpc.Auth" tocid="N_Grpc_Auth">Grpc.Auth</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Auth_AuthInterceptors.htm" title="AuthInterceptors Class" tocid="T_Grpc_Auth_AuthInterceptors">AuthInterceptors Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Auth_AuthInterceptors.htm" title="AuthInterceptors Methods" tocid="Methods_T_Grpc_Auth_AuthInterceptors">AuthInterceptors Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm" title="FromAccessToken Method " tocid="M_Grpc_Auth_AuthInterceptors_FromAccessToken">FromAccessToken Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Auth_AuthInterceptors_FromCredential.htm" title="FromCredential Method " tocid="M_Grpc_Auth_AuthInterceptors_FromCredential">FromCredential Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AuthInterceptors<span id="LST65A86DE0_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST65A86DE0_0?cpp=::|nu=.");</script>FromCredential Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates interceptor that will obtain access token from any credential type that implements + <span class="code">ITokenAccess</span>. (e.g. <span class="code">GoogleCredential</span>). + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Auth.htm">Grpc.Auth</a><br /><strong>Assembly:</strong> Grpc.Auth (in Grpc.Auth.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">HeaderInterceptor</span> <span class="identifier">FromCredential</span>( + <span class="identifier">ITokenAccess</span> <span class="parameter">credential</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">FromCredential</span> ( + <span class="parameter">credential</span> <span class="keyword">As</span> <span class="identifier">ITokenAccess</span> +) <span class="keyword">As</span> <span class="identifier">HeaderInterceptor</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="identifier">HeaderInterceptor</span>^ <span class="identifier">FromCredential</span>( + <span class="identifier">ITokenAccess</span>^ <span class="parameter">credential</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">FromCredential</span> : + <span class="parameter">credential</span> : <span class="identifier">ITokenAccess</span> <span class="keyword">-></span> <span class="identifier">HeaderInterceptor</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">credential</span></dt><dd>Type: <span class="nolink">ITokenAccess</span><br />The credential to use to obtain access tokens.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_HeaderInterceptor.htm">HeaderInterceptor</a><br />The header interceptor.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Auth_AuthInterceptors.htm">AuthInterceptors Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Auth.htm">Grpc.Auth Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..206999e0f4 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncClientStreamingCall(TRequest, TResponse).Dispose Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Dispose method" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E.Dispose method" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse).Dispose method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncClientStreamingCall`2.Dispose" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncClientStreamingCall`2.Dispose" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose" /><meta name="guid" content="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm" title="GetAwaiter Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter">GetAwaiter Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncClientStreamingCall<span id="LSTD14F2818_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD14F2818_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTD14F2818_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD14F2818_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTD14F2818_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD14F2818_2?cpp=::|nu=.");</script>Dispose Method </td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Dispose</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Dispose</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Dispose</span>() <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Dispose</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Dispose</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/es4s3w1d" target="_blank">IDisposable<span id="LSTD14F2818_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD14F2818_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Dispose<span id="LSTD14F2818_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD14F2818_4?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LSTD14F2818_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD14F2818_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTD14F2818_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD14F2818_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..581f356f70 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncClientStreamingCall(TRequest, TResponse).GetAwaiter Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetAwaiter method" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E.GetAwaiter method" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse).GetAwaiter method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncClientStreamingCall`2.GetAwaiter" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncClientStreamingCall`2.GetAwaiter" /><meta name="Description" content="Allows awaiting this object directly." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter" /><meta name="guid" content="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose">Dispose Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm" title="GetAwaiter Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter">GetAwaiter Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncClientStreamingCall<span id="LST5658EDC2_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5658EDC2_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST5658EDC2_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5658EDC2_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST5658EDC2_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5658EDC2_2?cpp=::|nu=.");</script>GetAwaiter Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Allows awaiting this object directly. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">TaskAwaiter</span><TResponse> <span class="identifier">GetAwaiter</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetAwaiter</span> <span class="keyword">As</span> <span class="identifier">TaskAwaiter</span>(<span class="keyword">Of</span> TResponse)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">TaskAwaiter</span><TResponse> <span class="identifier">GetAwaiter</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">GetAwaiter</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">TaskAwaiter</span><'TResponse> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/hh138386" target="_blank">TaskAwaiter</a><span id="LST5658EDC2_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5658EDC2_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm"><span class="typeparameter">TResponse</span></a><span id="LST5658EDC2_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5658EDC2_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LST5658EDC2_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5658EDC2_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST5658EDC2_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5658EDC2_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f3b2899b0c --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncClientStreamingCall(TRequest, TResponse).GetStatus Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetStatus method" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E.GetStatus method" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse).GetStatus method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncClientStreamingCall`2.GetStatus" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncClientStreamingCall`2.GetStatus" /><meta name="Description" content="Gets the call status if the call has already finished. Throws InvalidOperationException otherwise." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus" /><meta name="guid" content="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm" title="GetAwaiter Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter">GetAwaiter Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncClientStreamingCall<span id="LST98F66E49_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST98F66E49_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST98F66E49_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST98F66E49_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST98F66E49_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST98F66E49_2?cpp=::|nu=.");</script>GetStatus Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Status</span> <span class="identifier">GetStatus</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetStatus</span> <span class="keyword">As</span> <span class="identifier">Status</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Status</span> <span class="identifier">GetStatus</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">GetStatus</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Status</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_Status.htm">Status</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LST98F66E49_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST98F66E49_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST98F66E49_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST98F66E49_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..981d605565 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncClientStreamingCall(TRequest, TResponse).GetTrailers Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetTrailers method" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E.GetTrailers method" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse).GetTrailers method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncClientStreamingCall`2.GetTrailers" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncClientStreamingCall`2.GetTrailers" /><meta name="Description" content="Gets the call trailing metadata if the call has already finished. Throws InvalidOperationException otherwise." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers" /><meta name="guid" content="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm" title="GetAwaiter Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter">GetAwaiter Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus">GetStatus Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncClientStreamingCall<span id="LST542B02C3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST542B02C3_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST542B02C3_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST542B02C3_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST542B02C3_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST542B02C3_2?cpp=::|nu=.");</script>GetTrailers Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Metadata</span> <span class="identifier">GetTrailers</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetTrailers</span> <span class="keyword">As</span> <span class="identifier">Metadata</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Metadata</span>^ <span class="identifier">GetTrailers</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">GetTrailers</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Metadata</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_Metadata.htm">Metadata</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LST542B02C3_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST542B02C3_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST542B02C3_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST542B02C3_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..652274451b --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncDuplexStreamingCall(TRequest, TResponse).Dispose Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Dispose method" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E.Dispose method" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall(Of TRequest%2C TResponse).Dispose method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncDuplexStreamingCall`2.Dispose" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncDuplexStreamingCall`2.Dispose" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose" /><meta name="guid" content="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncDuplexStreamingCall<span id="LST915D6D4D_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST915D6D4D_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST915D6D4D_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST915D6D4D_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST915D6D4D_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST915D6D4D_2?cpp=::|nu=.");</script>Dispose Method </td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Dispose</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Dispose</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Dispose</span>() <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Dispose</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Dispose</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/es4s3w1d" target="_blank">IDisposable<span id="LST915D6D4D_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST915D6D4D_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Dispose<span id="LST915D6D4D_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST915D6D4D_4?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall<span id="LST915D6D4D_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST915D6D4D_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST915D6D4D_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST915D6D4D_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ba96ac35f5 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncDuplexStreamingCall(TRequest, TResponse).GetStatus Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetStatus method" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E.GetStatus method" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall(Of TRequest%2C TResponse).GetStatus method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncDuplexStreamingCall`2.GetStatus" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncDuplexStreamingCall`2.GetStatus" /><meta name="Description" content="Gets the call status if the call has already finished. Throws InvalidOperationException otherwise." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus" /><meta name="guid" content="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose">Dispose Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncDuplexStreamingCall<span id="LST6A81DDCC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6A81DDCC_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST6A81DDCC_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6A81DDCC_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST6A81DDCC_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6A81DDCC_2?cpp=::|nu=.");</script>GetStatus Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Status</span> <span class="identifier">GetStatus</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetStatus</span> <span class="keyword">As</span> <span class="identifier">Status</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Status</span> <span class="identifier">GetStatus</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">GetStatus</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Status</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_Status.htm">Status</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall<span id="LST6A81DDCC_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6A81DDCC_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST6A81DDCC_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6A81DDCC_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..3b9acfe363 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncDuplexStreamingCall(TRequest, TResponse).GetTrailers Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetTrailers method" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E.GetTrailers method" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall(Of TRequest%2C TResponse).GetTrailers method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncDuplexStreamingCall`2.GetTrailers" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncDuplexStreamingCall`2.GetTrailers" /><meta name="Description" content="Gets the call trailing metadata if the call has already finished. Throws InvalidOperationException otherwise." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers" /><meta name="guid" content="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus">GetStatus Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncDuplexStreamingCall<span id="LSTC5BE90B6_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC5BE90B6_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTC5BE90B6_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC5BE90B6_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTC5BE90B6_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC5BE90B6_2?cpp=::|nu=.");</script>GetTrailers Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Metadata</span> <span class="identifier">GetTrailers</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetTrailers</span> <span class="keyword">As</span> <span class="identifier">Metadata</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Metadata</span>^ <span class="identifier">GetTrailers</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">GetTrailers</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Metadata</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_Metadata.htm">Metadata</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall<span id="LSTC5BE90B6_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC5BE90B6_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC5BE90B6_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC5BE90B6_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..452b70ad2e --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncServerStreamingCall(TResponse).Dispose Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Dispose method" /><meta name="System.Keywords" content="AsyncServerStreamingCall%3CTResponse%3E.Dispose method" /><meta name="System.Keywords" content="AsyncServerStreamingCall(Of TResponse).Dispose method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncServerStreamingCall`1.Dispose" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncServerStreamingCall`1.Dispose" /><meta name="Description" content="Provides means to cleanup after the call. If the call has already finished normally (response stream has been fully read), doesn't do anything." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose" /><meta name="guid" content="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncServerStreamingCall<span id="LSTBC1CEF5B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1CEF5B_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LSTBC1CEF5B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1CEF5B_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTBC1CEF5B_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1CEF5B_2?cpp=::|nu=.");</script>Dispose Method </td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Dispose</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Dispose</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Dispose</span>() <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Dispose</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Dispose</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/es4s3w1d" target="_blank">IDisposable<span id="LSTBC1CEF5B_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1CEF5B_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Dispose<span id="LSTBC1CEF5B_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1CEF5B_4?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm">AsyncServerStreamingCall<span id="LSTBC1CEF5B_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1CEF5B_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LSTBC1CEF5B_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1CEF5B_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a61665e401 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncServerStreamingCall(TResponse).GetStatus Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetStatus method" /><meta name="System.Keywords" content="AsyncServerStreamingCall%3CTResponse%3E.GetStatus method" /><meta name="System.Keywords" content="AsyncServerStreamingCall(Of TResponse).GetStatus method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncServerStreamingCall`1.GetStatus" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncServerStreamingCall`1.GetStatus" /><meta name="Description" content="Gets the call status if the call has already finished. Throws InvalidOperationException otherwise." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus" /><meta name="guid" content="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose">Dispose Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncServerStreamingCall<span id="LSTE2827012_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE2827012_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LSTE2827012_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE2827012_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTE2827012_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE2827012_2?cpp=::|nu=.");</script>GetStatus Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Status</span> <span class="identifier">GetStatus</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetStatus</span> <span class="keyword">As</span> <span class="identifier">Status</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Status</span> <span class="identifier">GetStatus</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">GetStatus</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Status</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_Status.htm">Status</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm">AsyncServerStreamingCall<span id="LSTE2827012_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE2827012_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LSTE2827012_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE2827012_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..e1cb9b8231 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncServerStreamingCall(TResponse).GetTrailers Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetTrailers method" /><meta name="System.Keywords" content="AsyncServerStreamingCall%3CTResponse%3E.GetTrailers method" /><meta name="System.Keywords" content="AsyncServerStreamingCall(Of TResponse).GetTrailers method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncServerStreamingCall`1.GetTrailers" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncServerStreamingCall`1.GetTrailers" /><meta name="Description" content="Gets the call trailing metadata if the call has already finished. Throws InvalidOperationException otherwise." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers" /><meta name="guid" content="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus">GetStatus Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncServerStreamingCall<span id="LST13CA9BB0_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13CA9BB0_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LST13CA9BB0_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13CA9BB0_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST13CA9BB0_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13CA9BB0_2?cpp=::|nu=.");</script>GetTrailers Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Metadata</span> <span class="identifier">GetTrailers</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetTrailers</span> <span class="keyword">As</span> <span class="identifier">Metadata</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Metadata</span>^ <span class="identifier">GetTrailers</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">GetTrailers</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Metadata</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_Metadata.htm">Metadata</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm">AsyncServerStreamingCall<span id="LST13CA9BB0_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13CA9BB0_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST13CA9BB0_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13CA9BB0_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..190d28d010 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncUnaryCall(TResponse).Dispose Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Dispose method" /><meta name="System.Keywords" content="AsyncUnaryCall%3CTResponse%3E.Dispose method" /><meta name="System.Keywords" content="AsyncUnaryCall(Of TResponse).Dispose method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncUnaryCall`1.Dispose" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncUnaryCall`1.Dispose" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncUnaryCall_1_Dispose" /><meta name="guid" content="M_Grpc_Core_AsyncUnaryCall_1_Dispose" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm" title="GetAwaiter Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter">GetAwaiter Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncUnaryCall<span id="LST7E559D57_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7E559D57_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LST7E559D57_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7E559D57_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST7E559D57_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7E559D57_2?cpp=::|nu=.");</script>Dispose Method </td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Dispose</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Dispose</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Dispose</span>() <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Dispose</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Dispose</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/es4s3w1d" target="_blank">IDisposable<span id="LST7E559D57_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7E559D57_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Dispose<span id="LST7E559D57_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7E559D57_4?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall<span id="LST7E559D57_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7E559D57_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST7E559D57_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7E559D57_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..4d12b2a9f9 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncUnaryCall(TResponse).GetAwaiter Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetAwaiter method" /><meta name="System.Keywords" content="AsyncUnaryCall%3CTResponse%3E.GetAwaiter method" /><meta name="System.Keywords" content="AsyncUnaryCall(Of TResponse).GetAwaiter method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncUnaryCall`1.GetAwaiter" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncUnaryCall`1.GetAwaiter" /><meta name="Description" content="Allows awaiting this object directly." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter" /><meta name="guid" content="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_Dispose">Dispose Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm" title="GetAwaiter Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter">GetAwaiter Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncUnaryCall<span id="LSTA96933A7_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA96933A7_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LSTA96933A7_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA96933A7_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTA96933A7_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA96933A7_2?cpp=::|nu=.");</script>GetAwaiter Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Allows awaiting this object directly. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">TaskAwaiter</span><TResponse> <span class="identifier">GetAwaiter</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetAwaiter</span> <span class="keyword">As</span> <span class="identifier">TaskAwaiter</span>(<span class="keyword">Of</span> TResponse)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">TaskAwaiter</span><TResponse> <span class="identifier">GetAwaiter</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">GetAwaiter</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">TaskAwaiter</span><'TResponse> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/hh138386" target="_blank">TaskAwaiter</a><span id="LSTA96933A7_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA96933A7_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_AsyncUnaryCall_1.htm"><span class="typeparameter">TResponse</span></a><span id="LSTA96933A7_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA96933A7_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall<span id="LSTA96933A7_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA96933A7_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LSTA96933A7_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA96933A7_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..9c6bc1bce3 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncUnaryCall(TResponse).GetStatus Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetStatus method" /><meta name="System.Keywords" content="AsyncUnaryCall%3CTResponse%3E.GetStatus method" /><meta name="System.Keywords" content="AsyncUnaryCall(Of TResponse).GetStatus method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncUnaryCall`1.GetStatus" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncUnaryCall`1.GetStatus" /><meta name="Description" content="Gets the call status if the call has already finished. Throws InvalidOperationException otherwise." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncUnaryCall_1_GetStatus" /><meta name="guid" content="M_Grpc_Core_AsyncUnaryCall_1_GetStatus" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm" title="GetAwaiter Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter">GetAwaiter Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncUnaryCall<span id="LST691ACF10_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST691ACF10_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LST691ACF10_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST691ACF10_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST691ACF10_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST691ACF10_2?cpp=::|nu=.");</script>GetStatus Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Status</span> <span class="identifier">GetStatus</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetStatus</span> <span class="keyword">As</span> <span class="identifier">Status</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Status</span> <span class="identifier">GetStatus</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">GetStatus</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Status</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_Status.htm">Status</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall<span id="LST691ACF10_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST691ACF10_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST691ACF10_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST691ACF10_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b78100c95e --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncUnaryCall(TResponse).GetTrailers Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetTrailers method" /><meta name="System.Keywords" content="AsyncUnaryCall%3CTResponse%3E.GetTrailers method" /><meta name="System.Keywords" content="AsyncUnaryCall(Of TResponse).GetTrailers method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncUnaryCall`1.GetTrailers" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.AsyncUnaryCall`1.GetTrailers" /><meta name="Description" content="Gets the call trailing metadata if the call has already finished. Throws InvalidOperationException otherwise." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers" /><meta name="guid" content="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm" title="GetAwaiter Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter">GetAwaiter Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetStatus">GetStatus Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncUnaryCall<span id="LST8E834442_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E834442_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LST8E834442_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E834442_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST8E834442_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E834442_2?cpp=::|nu=.");</script>GetTrailers Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Metadata</span> <span class="identifier">GetTrailers</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetTrailers</span> <span class="keyword">As</span> <span class="identifier">Metadata</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Metadata</span>^ <span class="identifier">GetTrailers</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">GetTrailers</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Metadata</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_Metadata.htm">Metadata</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall<span id="LST8E834442_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E834442_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST8E834442_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E834442_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..e7f9826e8f --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse).WithOptions Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WithOptions method" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E.WithOptions method" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse).WithOptions method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.WithOptions" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.CallInvocationDetails`2.WithOptions(Grpc.Core.CallOptions)" /><meta name="Description" content="Returns new instance of with Options set to the value provided. Values of all other fields are preserved." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_CallInvocationDetails_2_WithOptions" /><meta name="guid" content="M_Grpc_Core_CallInvocationDetails_2_WithOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm" title="WithOptions Method " tocid="M_Grpc_Core_CallInvocationDetails_2_WithOptions">WithOptions Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LST9BD2CC8A_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9BD2CC8A_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST9BD2CC8A_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9BD2CC8A_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST9BD2CC8A_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9BD2CC8A_2?cpp=::|nu=.");</script>WithOptions Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Returns new instance of <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST9BD2CC8A_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9BD2CC8A_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9BD2CC8A_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9BD2CC8A_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> with + <span class="code">Options</span> set to the value provided. Values of all other fields are preserved. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="identifier">WithOptions</span>( + <span class="identifier">CallOptions</span> <span class="parameter">options</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">WithOptions</span> ( + <span class="parameter">options</span> <span class="keyword">As</span> <span class="identifier">CallOptions</span> +) <span class="keyword">As</span> <span class="identifier">CallInvocationDetails</span>(<span class="keyword">Of</span> TRequest, TResponse)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="identifier">WithOptions</span>( + <span class="identifier">CallOptions</span> <span class="parameter">options</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">WithOptions</span> : + <span class="parameter">options</span> : <span class="identifier">CallOptions</span> <span class="keyword">-></span> <span class="identifier">CallInvocationDetails</span><'TRequest, 'TResponse> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">options</span></dt><dd>Type: <a href="T_Grpc_Core_CallOptions.htm">Grpc.Core<span id="LST9BD2CC8A_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9BD2CC8A_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CallOptions</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="options"/> documentation for "M:Grpc.Core.CallInvocationDetails`2.WithOptions(Grpc.Core.CallOptions)"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails</a><span id="LST9BD2CC8A_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9BD2CC8A_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_CallInvocationDetails_2.htm"><span class="typeparameter">TRequest</span></a>, <a href="T_Grpc_Core_CallInvocationDetails_2.htm"><span class="typeparameter">TResponse</span></a><span id="LST9BD2CC8A_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9BD2CC8A_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST9BD2CC8A_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9BD2CC8A_8?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9BD2CC8A_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9BD2CC8A_9?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..1b3b2d3218 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor.htm @@ -0,0 +1,19 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.CallInvocationDetails`2.#ctor(Grpc.Core.Channel,Grpc.Core.Method{`0,`1},Grpc.Core.CallOptions)" /><meta name="Description" content="Initializes a new instance of the struct." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_CallInvocationDetails_2__ctor" /><meta name="guid" content="M_Grpc_Core_CallInvocationDetails_2__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor " tocid="Overload_Grpc_Core_CallInvocationDetails_2__ctor">CallInvocationDetails(TRequest, TResponse) Constructor </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor_1">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor_2">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LST2F856D14_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST2F856D14_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Constructor (Channel, Method<span id="LST2F856D14_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST2F856D14_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, CallOptions)</td></tr></table><span class="introStyle"></span><div class="summary"> + Initializes a new instance of the <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST2F856D14_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST2F856D14_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> struct. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">CallInvocationDetails</span>( + <span class="identifier">Channel</span> <span class="parameter">channel</span>, + <span class="identifier">Method</span><TRequest, TResponse> <span class="parameter">method</span>, + <span class="identifier">CallOptions</span> <span class="parameter">options</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">channel</span> <span class="keyword">As</span> <span class="identifier">Channel</span>, + <span class="parameter">method</span> <span class="keyword">As</span> <span class="identifier">Method</span>(<span class="keyword">Of</span> TRequest, TResponse), + <span class="parameter">options</span> <span class="keyword">As</span> <span class="identifier">CallOptions</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">CallInvocationDetails</span>( + <span class="identifier">Channel</span>^ <span class="parameter">channel</span>, + <span class="identifier">Method</span><TRequest, TResponse>^ <span class="parameter">method</span>, + <span class="identifier">CallOptions</span> <span class="parameter">options</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">channel</span> : <span class="identifier">Channel</span> * + <span class="parameter">method</span> : <span class="identifier">Method</span><'TRequest, 'TResponse> * + <span class="parameter">options</span> : <span class="identifier">CallOptions</span> <span class="keyword">-></span> <span class="identifier">CallInvocationDetails</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">channel</span></dt><dd>Type: <a href="T_Grpc_Core_Channel.htm">Grpc.Core<span id="LST2F856D14_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Channel</a><br />Channel to use for this call.</dd><dt><span class="parameter">method</span></dt><dd>Type: <a href="T_Grpc_Core_Method_2.htm">Grpc.Core<span id="LST2F856D14_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Method</a><span id="LST2F856D14_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_CallInvocationDetails_2.htm"><span class="typeparameter">TRequest</span></a>, <a href="T_Grpc_Core_CallInvocationDetails_2.htm"><span class="typeparameter">TResponse</span></a><span id="LST2F856D14_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Method to call.</dd><dt><span class="parameter">options</span></dt><dd>Type: <a href="T_Grpc_Core_CallOptions.htm">Grpc.Core<span id="LST2F856D14_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CallOptions</a><br />Call options.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST2F856D14_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_11?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST2F856D14_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_12?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm">CallInvocationDetails<span id="LST2F856D14_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_13?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST2F856D14_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2F856D14_14?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f8caf7e06a --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm @@ -0,0 +1,23 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.CallInvocationDetails`2.#ctor(Grpc.Core.Channel,Grpc.Core.Method{`0,`1},System.String,Grpc.Core.CallOptions)" /><meta name="Description" content="Initializes a new instance of the struct." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_CallInvocationDetails_2__ctor_1" /><meta name="guid" content="M_Grpc_Core_CallInvocationDetails_2__ctor_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor " tocid="Overload_Grpc_Core_CallInvocationDetails_2__ctor">CallInvocationDetails(TRequest, TResponse) Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor_1">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor_2">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LSTA9732474_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTA9732474_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Constructor (Channel, Method<span id="LSTA9732474_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTA9732474_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, String, CallOptions)</td></tr></table><span class="introStyle"></span><div class="summary"> + Initializes a new instance of the <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LSTA9732474_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA9732474_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> struct. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">CallInvocationDetails</span>( + <span class="identifier">Channel</span> <span class="parameter">channel</span>, + <span class="identifier">Method</span><TRequest, TResponse> <span class="parameter">method</span>, + <span class="identifier">string</span> <span class="parameter">host</span>, + <span class="identifier">CallOptions</span> <span class="parameter">options</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">channel</span> <span class="keyword">As</span> <span class="identifier">Channel</span>, + <span class="parameter">method</span> <span class="keyword">As</span> <span class="identifier">Method</span>(<span class="keyword">Of</span> TRequest, TResponse), + <span class="parameter">host</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">options</span> <span class="keyword">As</span> <span class="identifier">CallOptions</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">CallInvocationDetails</span>( + <span class="identifier">Channel</span>^ <span class="parameter">channel</span>, + <span class="identifier">Method</span><TRequest, TResponse>^ <span class="parameter">method</span>, + <span class="identifier">String</span>^ <span class="parameter">host</span>, + <span class="identifier">CallOptions</span> <span class="parameter">options</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">channel</span> : <span class="identifier">Channel</span> * + <span class="parameter">method</span> : <span class="identifier">Method</span><'TRequest, 'TResponse> * + <span class="parameter">host</span> : <span class="identifier">string</span> * + <span class="parameter">options</span> : <span class="identifier">CallOptions</span> <span class="keyword">-></span> <span class="identifier">CallInvocationDetails</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">channel</span></dt><dd>Type: <a href="T_Grpc_Core_Channel.htm">Grpc.Core<span id="LSTA9732474_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Channel</a><br />Channel to use for this call.</dd><dt><span class="parameter">method</span></dt><dd>Type: <a href="T_Grpc_Core_Method_2.htm">Grpc.Core<span id="LSTA9732474_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Method</a><span id="LSTA9732474_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_CallInvocationDetails_2.htm"><span class="typeparameter">TRequest</span></a>, <a href="T_Grpc_Core_CallInvocationDetails_2.htm"><span class="typeparameter">TResponse</span></a><span id="LSTA9732474_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Method to call.</dd><dt><span class="parameter">host</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTA9732474_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Host that contains the method. if <span class="code">null</span>, default host will be used.</dd><dt><span class="parameter">options</span></dt><dd>Type: <a href="T_Grpc_Core_CallOptions.htm">Grpc.Core<span id="LSTA9732474_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_11?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CallOptions</a><br />Call options.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LSTA9732474_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_12?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA9732474_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_13?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm">CallInvocationDetails<span id="LSTA9732474_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_14?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA9732474_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9732474_15?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..52738bfc45 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm @@ -0,0 +1,31 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.CallInvocationDetails`2.#ctor(Grpc.Core.Channel,System.String,System.String,Grpc.Core.Marshaller{`0},Grpc.Core.Marshaller{`1},Grpc.Core.CallOptions)" /><meta name="Description" content="Initializes a new instance of the struct." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_CallInvocationDetails_2__ctor_2" /><meta name="guid" content="M_Grpc_Core_CallInvocationDetails_2__ctor_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor " tocid="Overload_Grpc_Core_CallInvocationDetails_2__ctor">CallInvocationDetails(TRequest, TResponse) Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor_1">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor_2">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LST8DF8F0A2_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST8DF8F0A2_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Constructor (Channel, String, String, Marshaller<span id="LST8DF8F0A2_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span><span id="LST8DF8F0A2_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, Marshaller<span id="LST8DF8F0A2_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LST8DF8F0A2_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, CallOptions)</td></tr></table><span class="introStyle"></span><div class="summary"> + Initializes a new instance of the <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST8DF8F0A2_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST8DF8F0A2_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> struct. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">CallInvocationDetails</span>( + <span class="identifier">Channel</span> <span class="parameter">channel</span>, + <span class="identifier">string</span> <span class="parameter">method</span>, + <span class="identifier">string</span> <span class="parameter">host</span>, + <span class="identifier">Marshaller</span><TRequest> <span class="parameter">requestMarshaller</span>, + <span class="identifier">Marshaller</span><TResponse> <span class="parameter">responseMarshaller</span>, + <span class="identifier">CallOptions</span> <span class="parameter">options</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">channel</span> <span class="keyword">As</span> <span class="identifier">Channel</span>, + <span class="parameter">method</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">host</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">requestMarshaller</span> <span class="keyword">As</span> <span class="identifier">Marshaller</span>(<span class="keyword">Of</span> TRequest), + <span class="parameter">responseMarshaller</span> <span class="keyword">As</span> <span class="identifier">Marshaller</span>(<span class="keyword">Of</span> TResponse), + <span class="parameter">options</span> <span class="keyword">As</span> <span class="identifier">CallOptions</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">CallInvocationDetails</span>( + <span class="identifier">Channel</span>^ <span class="parameter">channel</span>, + <span class="identifier">String</span>^ <span class="parameter">method</span>, + <span class="identifier">String</span>^ <span class="parameter">host</span>, + <span class="identifier">Marshaller</span><TRequest> <span class="parameter">requestMarshaller</span>, + <span class="identifier">Marshaller</span><TResponse> <span class="parameter">responseMarshaller</span>, + <span class="identifier">CallOptions</span> <span class="parameter">options</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">channel</span> : <span class="identifier">Channel</span> * + <span class="parameter">method</span> : <span class="identifier">string</span> * + <span class="parameter">host</span> : <span class="identifier">string</span> * + <span class="parameter">requestMarshaller</span> : <span class="identifier">Marshaller</span><'TRequest> * + <span class="parameter">responseMarshaller</span> : <span class="identifier">Marshaller</span><'TResponse> * + <span class="parameter">options</span> : <span class="identifier">CallOptions</span> <span class="keyword">-></span> <span class="identifier">CallInvocationDetails</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">channel</span></dt><dd>Type: <a href="T_Grpc_Core_Channel.htm">Grpc.Core<span id="LST8DF8F0A2_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Channel</a><br />Channel to use for this call.</dd><dt><span class="parameter">method</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST8DF8F0A2_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_9?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Qualified method name.</dd><dt><span class="parameter">host</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST8DF8F0A2_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Host that contains the method.</dd><dt><span class="parameter">requestMarshaller</span></dt><dd>Type: <a href="T_Grpc_Core_Marshaller_1.htm">Grpc.Core<span id="LST8DF8F0A2_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_11?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Marshaller</a><span id="LST8DF8F0A2_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_12?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_CallInvocationDetails_2.htm"><span class="typeparameter">TRequest</span></a><span id="LST8DF8F0A2_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_13?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Request marshaller.</dd><dt><span class="parameter">responseMarshaller</span></dt><dd>Type: <a href="T_Grpc_Core_Marshaller_1.htm">Grpc.Core<span id="LST8DF8F0A2_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_14?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Marshaller</a><span id="LST8DF8F0A2_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_15?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_CallInvocationDetails_2.htm"><span class="typeparameter">TResponse</span></a><span id="LST8DF8F0A2_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_16?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Response marshaller.</dd><dt><span class="parameter">options</span></dt><dd>Type: <a href="T_Grpc_Core_CallOptions.htm">Grpc.Core<span id="LST8DF8F0A2_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_17?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CallOptions</a><br />Call options.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST8DF8F0A2_18"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_18?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST8DF8F0A2_19"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_19?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm">CallInvocationDetails<span id="LST8DF8F0A2_20"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_20?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST8DF8F0A2_21"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8DF8F0A2_21?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..e5bbc4eaae --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithCancellationToken.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions.WithCancellationToken Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WithCancellationToken method" /><meta name="System.Keywords" content="CallOptions.WithCancellationToken method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.WithCancellationToken" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.CallOptions.WithCancellationToken(System.Threading.CancellationToken)" /><meta name="Description" content="Returns new instance of with CancellationToken set to the value provided. Values of all other fields are preserved." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_CallOptions_WithCancellationToken" /><meta name="guid" content="M_Grpc_Core_CallOptions_WithCancellationToken" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_CallOptions.htm" title="CallOptions Methods" tocid="Methods_T_Grpc_Core_CallOptions">CallOptions Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithCancellationToken.htm" title="WithCancellationToken Method " tocid="M_Grpc_Core_CallOptions_WithCancellationToken">WithCancellationToken Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithDeadline.htm" title="WithDeadline Method " tocid="M_Grpc_Core_CallOptions_WithDeadline">WithDeadline Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithHeaders.htm" title="WithHeaders Method " tocid="M_Grpc_Core_CallOptions_WithHeaders">WithHeaders Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions<span id="LST77C31AE4_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77C31AE4_0?cpp=::|nu=.");</script>WithCancellationToken Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Returns new instance of <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a> with + <span class="code">CancellationToken</span> set to the value provided. Values of all other fields are preserved. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">CallOptions</span> <span class="identifier">WithCancellationToken</span>( + <span class="identifier">CancellationToken</span> <span class="parameter">cancellationToken</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">WithCancellationToken</span> ( + <span class="parameter">cancellationToken</span> <span class="keyword">As</span> <span class="identifier">CancellationToken</span> +) <span class="keyword">As</span> <span class="identifier">CallOptions</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">CallOptions</span> <span class="identifier">WithCancellationToken</span>( + <span class="identifier">CancellationToken</span> <span class="parameter">cancellationToken</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">WithCancellationToken</span> : + <span class="parameter">cancellationToken</span> : <span class="identifier">CancellationToken</span> <span class="keyword">-></span> <span class="identifier">CallOptions</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">cancellationToken</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd384802" target="_blank">System.Threading<span id="LST77C31AE4_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77C31AE4_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CancellationToken</a><br />The cancellation token.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallOptions.htm">CallOptions Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..9d7e0d2dcb --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithDeadline.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions.WithDeadline Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WithDeadline method" /><meta name="System.Keywords" content="CallOptions.WithDeadline method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.WithDeadline" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.CallOptions.WithDeadline(System.DateTime)" /><meta name="Description" content="Returns new instance of with Deadline set to the value provided. Values of all other fields are preserved." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_CallOptions_WithDeadline" /><meta name="guid" content="M_Grpc_Core_CallOptions_WithDeadline" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_CallOptions.htm" title="CallOptions Methods" tocid="Methods_T_Grpc_Core_CallOptions">CallOptions Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithCancellationToken.htm" title="WithCancellationToken Method " tocid="M_Grpc_Core_CallOptions_WithCancellationToken">WithCancellationToken Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithDeadline.htm" title="WithDeadline Method " tocid="M_Grpc_Core_CallOptions_WithDeadline">WithDeadline Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithHeaders.htm" title="WithHeaders Method " tocid="M_Grpc_Core_CallOptions_WithHeaders">WithHeaders Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions<span id="LST18357B11_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18357B11_0?cpp=::|nu=.");</script>WithDeadline Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Returns new instance of <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a> with + <span class="code">Deadline</span> set to the value provided. Values of all other fields are preserved. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">CallOptions</span> <span class="identifier">WithDeadline</span>( + <span class="identifier">DateTime</span> <span class="parameter">deadline</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">WithDeadline</span> ( + <span class="parameter">deadline</span> <span class="keyword">As</span> <span class="identifier">DateTime</span> +) <span class="keyword">As</span> <span class="identifier">CallOptions</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">CallOptions</span> <span class="identifier">WithDeadline</span>( + <span class="identifier">DateTime</span> <span class="parameter">deadline</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">WithDeadline</span> : + <span class="parameter">deadline</span> : <span class="identifier">DateTime</span> <span class="keyword">-></span> <span class="identifier">CallOptions</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">deadline</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/03ybds8y" target="_blank">System<span id="LST18357B11_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18357B11_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>DateTime</a><br />The deadline.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallOptions.htm">CallOptions Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..6d65f8330e --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithHeaders.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions.WithHeaders Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WithHeaders method" /><meta name="System.Keywords" content="CallOptions.WithHeaders method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.WithHeaders" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.CallOptions.WithHeaders(Grpc.Core.Metadata)" /><meta name="Description" content="Returns new instance of with Headers set to the value provided. Values of all other fields are preserved." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_CallOptions_WithHeaders" /><meta name="guid" content="M_Grpc_Core_CallOptions_WithHeaders" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_CallOptions.htm" title="CallOptions Methods" tocid="Methods_T_Grpc_Core_CallOptions">CallOptions Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithCancellationToken.htm" title="WithCancellationToken Method " tocid="M_Grpc_Core_CallOptions_WithCancellationToken">WithCancellationToken Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithDeadline.htm" title="WithDeadline Method " tocid="M_Grpc_Core_CallOptions_WithDeadline">WithDeadline Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithHeaders.htm" title="WithHeaders Method " tocid="M_Grpc_Core_CallOptions_WithHeaders">WithHeaders Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions<span id="LST9B3F2FE5_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B3F2FE5_0?cpp=::|nu=.");</script>WithHeaders Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Returns new instance of <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a> with + <span class="code">Headers</span> set to the value provided. Values of all other fields are preserved. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">CallOptions</span> <span class="identifier">WithHeaders</span>( + <span class="identifier">Metadata</span> <span class="parameter">headers</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">WithHeaders</span> ( + <span class="parameter">headers</span> <span class="keyword">As</span> <span class="identifier">Metadata</span> +) <span class="keyword">As</span> <span class="identifier">CallOptions</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">CallOptions</span> <span class="identifier">WithHeaders</span>( + <span class="identifier">Metadata</span>^ <span class="parameter">headers</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">WithHeaders</span> : + <span class="parameter">headers</span> : <span class="identifier">Metadata</span> <span class="keyword">-></span> <span class="identifier">CallOptions</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">headers</span></dt><dd>Type: <a href="T_Grpc_Core_Metadata.htm">Grpc.Core<span id="LST9B3F2FE5_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B3F2FE5_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Metadata</a><br />The headers.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallOptions.htm">CallOptions Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ee9c631edb --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions__ctor.htm @@ -0,0 +1,35 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CallOptions structure, constructor" /><meta name="System.Keywords" content="CallOptions.CallOptions constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.CallOptions" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.CallOptions.#ctor(Grpc.Core.Metadata,System.Nullable{System.DateTime},System.Threading.CancellationToken,Grpc.Core.WriteOptions,Grpc.Core.ContextPropagationToken)" /><meta name="Description" content="Creates a new instance of CallOptions struct." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_CallOptions__ctor" /><meta name="guid" content="M_Grpc_Core_CallOptions__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions__ctor.htm" title="CallOptions Constructor " tocid="M_Grpc_Core_CallOptions__ctor">CallOptions Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallOptions.htm" title="CallOptions Properties" tocid="Properties_T_Grpc_Core_CallOptions">CallOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_CallOptions.htm" title="CallOptions Methods" tocid="Methods_T_Grpc_Core_CallOptions">CallOptions Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a new instance of <span class="code">CallOptions</span> struct. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">CallOptions</span>( + <span class="identifier">Metadata</span> <span class="parameter">headers</span> = <span class="keyword">null</span>, + <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> <span class="parameter">deadline</span> = <span class="keyword">null</span>, + <span class="identifier">CancellationToken</span> <span class="parameter">cancellationToken</span> = <span class="keyword">null</span>, + <span class="identifier">WriteOptions</span> <span class="parameter">writeOptions</span> = <span class="keyword">null</span>, + <span class="identifier">ContextPropagationToken</span> <span class="parameter">propagationToken</span> = <span class="keyword">null</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + Optional <span class="parameter">headers</span> <span class="keyword">As</span> <span class="identifier">Metadata</span> = <span class="keyword">Nothing</span>, + Optional <span class="parameter">deadline</span> <span class="keyword">As</span> <span class="identifier">Nullable</span>(<span class="keyword">Of</span> <span class="identifier">DateTime</span>) = <span class="keyword">Nothing</span>, + Optional <span class="parameter">cancellationToken</span> <span class="keyword">As</span> <span class="identifier">CancellationToken</span> = <span class="keyword">Nothing</span>, + Optional <span class="parameter">writeOptions</span> <span class="keyword">As</span> <span class="identifier">WriteOptions</span> = <span class="keyword">Nothing</span>, + Optional <span class="parameter">propagationToken</span> <span class="keyword">As</span> <span class="identifier">ContextPropagationToken</span> = <span class="keyword">Nothing</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">CallOptions</span>( + <span class="identifier">Metadata</span>^ <span class="parameter">headers</span> = <span class="keyword">nullptr</span>, + <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> <span class="parameter">deadline</span> = <span class="keyword">nullptr</span>, + <span class="identifier">CancellationToken</span> <span class="parameter">cancellationToken</span> = <span class="keyword">nullptr</span>, + <span class="identifier">WriteOptions</span>^ <span class="parameter">writeOptions</span> = <span class="keyword">nullptr</span>, + <span class="identifier">ContextPropagationToken</span>^ <span class="parameter">propagationToken</span> = <span class="keyword">nullptr</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + ?<span class="parameter">headers</span> : <span class="identifier">Metadata</span> * + ?<span class="parameter">deadline</span> : <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> * + ?<span class="parameter">cancellationToken</span> : <span class="identifier">CancellationToken</span> * + ?<span class="parameter">writeOptions</span> : <span class="identifier">WriteOptions</span> * + ?<span class="parameter">propagationToken</span> : <span class="identifier">ContextPropagationToken</span> +(* Defaults: + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">headers</span> = defaultArg <span class="identifier">headers</span> <span class="keyword">null</span> + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">deadline</span> = defaultArg <span class="identifier">deadline</span> <span class="keyword">null</span> + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">cancellationToken</span> = defaultArg <span class="identifier">cancellationToken</span> <span class="keyword">null</span> + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">writeOptions</span> = defaultArg <span class="identifier">writeOptions</span> <span class="keyword">null</span> + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">propagationToken</span> = defaultArg <span class="identifier">propagationToken</span> <span class="keyword">null</span> +*) +<span class="keyword">-></span> <span class="identifier">CallOptions</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">headers</span> (Optional)</dt><dd>Type: <a href="T_Grpc_Core_Metadata.htm">Grpc.Core<span id="LST883CC382_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST883CC382_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Metadata</a><br />Headers to be sent with the call.</dd><dt><span class="parameter">deadline</span> (Optional)</dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/b3h38hb0" target="_blank">System<span id="LST883CC382_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST883CC382_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Nullable</a><span id="LST883CC382_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST883CC382_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="http://msdn2.microsoft.com/en-us/library/03ybds8y" target="_blank">DateTime</a><span id="LST883CC382_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST883CC382_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Deadline for the call to finish. null means no deadline.</dd><dt><span class="parameter">cancellationToken</span> (Optional)</dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd384802" target="_blank">System.Threading<span id="LST883CC382_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST883CC382_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CancellationToken</a><br />Can be used to request cancellation of the call.</dd><dt><span class="parameter">writeOptions</span> (Optional)</dt><dd>Type: <a href="T_Grpc_Core_WriteOptions.htm">Grpc.Core<span id="LST883CC382_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST883CC382_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>WriteOptions</a><br />Write options that will be used for this call.</dd><dt><span class="parameter">propagationToken</span> (Optional)</dt><dd>Type: <a href="T_Grpc_Core_ContextPropagationToken.htm">Grpc.Core<span id="LST883CC382_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST883CC382_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ContextPropagationToken</a><br />Context propagation token obtained from <a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext</a>.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallOptions.htm">CallOptions Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f1a9131a2a --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm @@ -0,0 +1,19 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Calls.AsyncClientStreamingCall(TRequest, TResponse) Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse) method" /><meta name="System.Keywords" content="Calls.AsyncClientStreamingCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="Calls.AsyncClientStreamingCall(Of TRequest%2C TResponse) method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Calls.AsyncClientStreamingCall``2" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Calls.AsyncClientStreamingCall``2(Grpc.Core.CallInvocationDetails{``0,``1})" /><meta name="Description" content="Invokes a client streaming call asynchronously. In client streaming scenario, client sends a stream of requests and server responds with a single response." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Calls_AsyncClientStreamingCall__2" /><meta name="guid" content="M_Grpc_Core_Calls_AsyncClientStreamingCall__2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Calls.htm" title="Calls Methods" tocid="Methods_T_Grpc_Core_Calls">Calls Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncClientStreamingCall__2">AsyncClientStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2">AsyncDuplexStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" title="AsyncServerStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncServerStreamingCall__2">AsyncServerStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" title="AsyncUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncUnaryCall__2">AsyncUnaryCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" title="BlockingUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_BlockingUnaryCall__2">BlockingUnaryCall(TRequest, TResponse) Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Calls<span id="LST79B5F655_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79B5F655_0?cpp=::|nu=.");</script>AsyncClientStreamingCall<span id="LST79B5F655_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79B5F655_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST79B5F655_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79B5F655_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Invokes a client streaming call asynchronously. + In client streaming scenario, client sends a stream of requests and server responds with a single response. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">AsyncClientStreamingCall</span><TRequest, TResponse> <span class="identifier">AsyncClientStreamingCall</span><TRequest, TResponse>( + <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="parameter">call</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">AsyncClientStreamingCall</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">call</span> <span class="keyword">As</span> <span class="identifier">CallInvocationDetails</span>(<span class="keyword">Of</span> TRequest, TResponse) +) <span class="keyword">As</span> <span class="identifier">AsyncClientStreamingCall</span>(<span class="keyword">Of</span> TRequest, TResponse)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="keyword">static</span> <span class="identifier">AsyncClientStreamingCall</span><TRequest, TResponse>^ <span class="identifier">AsyncClientStreamingCall</span>( + <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="parameter">call</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">AsyncClientStreamingCall</span> : + <span class="parameter">call</span> : <span class="identifier">CallInvocationDetails</span><'TRequest, 'TResponse> <span class="keyword">-></span> <span class="identifier">AsyncClientStreamingCall</span><'TRequest, 'TResponse> <span class="keyword">when</span> 'TRequest : <span class="keyword">not struct</span> <span class="keyword">when</span> 'TResponse : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">call</span></dt><dd>Type: <a href="T_Grpc_Core_CallInvocationDetails_2.htm">Grpc.Core<span id="LST79B5F655_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79B5F655_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CallInvocationDetails</a><span id="LST79B5F655_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79B5F655_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST79B5F655_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79B5F655_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The call defintion.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Type of request messages.</dd><dt><span class="parameter">TResponse</span></dt><dd>The of response message.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall</a><span id="LST79B5F655_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79B5F655_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST79B5F655_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79B5F655_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />An awaitable call object providing access to the response.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Calls.htm">Calls Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..6dba139ab8 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm @@ -0,0 +1,20 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Calls.AsyncDuplexStreamingCall(TRequest, TResponse) Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall(Of TRequest%2C TResponse) method" /><meta name="System.Keywords" content="Calls.AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="Calls.AsyncDuplexStreamingCall(Of TRequest%2C TResponse) method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Calls.AsyncDuplexStreamingCall``2" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Calls.AsyncDuplexStreamingCall``2(Grpc.Core.CallInvocationDetails{``0,``1})" /><meta name="Description" content="Invokes a duplex streaming call asynchronously. In duplex streaming scenario, client sends a stream of requests and server responds with a stream of responses." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2" /><meta name="guid" content="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Calls.htm" title="Calls Methods" tocid="Methods_T_Grpc_Core_Calls">Calls Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncClientStreamingCall__2">AsyncClientStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2">AsyncDuplexStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" title="AsyncServerStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncServerStreamingCall__2">AsyncServerStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" title="AsyncUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncUnaryCall__2">AsyncUnaryCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" title="BlockingUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_BlockingUnaryCall__2">BlockingUnaryCall(TRequest, TResponse) Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Calls<span id="LST2586B34A_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2586B34A_0?cpp=::|nu=.");</script>AsyncDuplexStreamingCall<span id="LST2586B34A_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2586B34A_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST2586B34A_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2586B34A_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method </td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">AsyncDuplexStreamingCall</span><TRequest, TResponse> <span class="identifier">AsyncDuplexStreamingCall</span><TRequest, TResponse>( + <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="parameter">call</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">AsyncDuplexStreamingCall</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">call</span> <span class="keyword">As</span> <span class="identifier">CallInvocationDetails</span>(<span class="keyword">Of</span> TRequest, TResponse) +) <span class="keyword">As</span> <span class="identifier">AsyncDuplexStreamingCall</span>(<span class="keyword">Of</span> TRequest, TResponse)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="keyword">static</span> <span class="identifier">AsyncDuplexStreamingCall</span><TRequest, TResponse>^ <span class="identifier">AsyncDuplexStreamingCall</span>( + <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="parameter">call</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">AsyncDuplexStreamingCall</span> : + <span class="parameter">call</span> : <span class="identifier">CallInvocationDetails</span><'TRequest, 'TResponse> <span class="keyword">-></span> <span class="identifier">AsyncDuplexStreamingCall</span><'TRequest, 'TResponse> <span class="keyword">when</span> 'TRequest : <span class="keyword">not struct</span> <span class="keyword">when</span> 'TResponse : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">call</span></dt><dd>Type: <a href="T_Grpc_Core_CallInvocationDetails_2.htm">Grpc.Core<span id="LST2586B34A_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2586B34A_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CallInvocationDetails</a><span id="LST2586B34A_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2586B34A_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST2586B34A_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2586B34A_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The call definition.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Type of request messages.</dd><dt><span class="parameter">TResponse</span></dt><dd>Type of reponse messages.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall</a><span id="LST2586B34A_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2586B34A_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST2586B34A_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2586B34A_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />A call object providing access to the asynchronous request and response streams.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Calls.htm">Calls Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b5ac0db6c5 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm @@ -0,0 +1,23 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Calls.AsyncServerStreamingCall(TRequest, TResponse) Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncServerStreamingCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="AsyncServerStreamingCall(Of TRequest%2C TResponse) method" /><meta name="System.Keywords" content="Calls.AsyncServerStreamingCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="Calls.AsyncServerStreamingCall(Of TRequest%2C TResponse) method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Calls.AsyncServerStreamingCall``2" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Calls.AsyncServerStreamingCall``2(Grpc.Core.CallInvocationDetails{``0,``1},``0)" /><meta name="Description" content="Invokes a server streaming call asynchronously. In server streaming scenario, client sends on request and server responds with a stream of responses." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Calls_AsyncServerStreamingCall__2" /><meta name="guid" content="M_Grpc_Core_Calls_AsyncServerStreamingCall__2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Calls.htm" title="Calls Methods" tocid="Methods_T_Grpc_Core_Calls">Calls Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncClientStreamingCall__2">AsyncClientStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2">AsyncDuplexStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" title="AsyncServerStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncServerStreamingCall__2">AsyncServerStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" title="AsyncUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncUnaryCall__2">AsyncUnaryCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" title="BlockingUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_BlockingUnaryCall__2">BlockingUnaryCall(TRequest, TResponse) Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Calls<span id="LST97B8A915_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97B8A915_0?cpp=::|nu=.");</script>AsyncServerStreamingCall<span id="LST97B8A915_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97B8A915_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST97B8A915_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97B8A915_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Invokes a server streaming call asynchronously. + In server streaming scenario, client sends on request and server responds with a stream of responses. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">AsyncServerStreamingCall</span><TResponse> <span class="identifier">AsyncServerStreamingCall</span><TRequest, TResponse>( + <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="parameter">call</span>, + TRequest <span class="parameter">req</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">AsyncServerStreamingCall</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">call</span> <span class="keyword">As</span> <span class="identifier">CallInvocationDetails</span>(<span class="keyword">Of</span> TRequest, TResponse), + <span class="parameter">req</span> <span class="keyword">As</span> TRequest +) <span class="keyword">As</span> <span class="identifier">AsyncServerStreamingCall</span>(<span class="keyword">Of</span> TResponse)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="keyword">static</span> <span class="identifier">AsyncServerStreamingCall</span><TResponse>^ <span class="identifier">AsyncServerStreamingCall</span>( + <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="parameter">call</span>, + TRequest <span class="parameter">req</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">AsyncServerStreamingCall</span> : + <span class="parameter">call</span> : <span class="identifier">CallInvocationDetails</span><'TRequest, 'TResponse> * + <span class="parameter">req</span> : 'TRequest <span class="keyword">-></span> <span class="identifier">AsyncServerStreamingCall</span><'TResponse> <span class="keyword">when</span> 'TRequest : <span class="keyword">not struct</span> <span class="keyword">when</span> 'TResponse : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">call</span></dt><dd>Type: <a href="T_Grpc_Core_CallInvocationDetails_2.htm">Grpc.Core<span id="LST97B8A915_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97B8A915_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CallInvocationDetails</a><span id="LST97B8A915_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97B8A915_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST97B8A915_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97B8A915_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The call defintion.</dd><dt><span class="parameter">req</span></dt><dd>Type: <span class="selflink"><span class="typeparameter">TRequest</span></span><br />Request message.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Type of request message.</dd><dt><span class="parameter">TResponse</span></dt><dd>The of response messages.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm">AsyncServerStreamingCall</a><span id="LST97B8A915_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97B8A915_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST97B8A915_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97B8A915_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />A call object providing access to the asynchronous response stream.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Calls.htm">Calls Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..233475428a --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm @@ -0,0 +1,22 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Calls.AsyncUnaryCall(TRequest, TResponse) Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncUnaryCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="AsyncUnaryCall(Of TRequest%2C TResponse) method" /><meta name="System.Keywords" content="Calls.AsyncUnaryCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="Calls.AsyncUnaryCall(Of TRequest%2C TResponse) method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Calls.AsyncUnaryCall``2" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Calls.AsyncUnaryCall``2(Grpc.Core.CallInvocationDetails{``0,``1},``0)" /><meta name="Description" content="Invokes a simple remote call asynchronously." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Calls_AsyncUnaryCall__2" /><meta name="guid" content="M_Grpc_Core_Calls_AsyncUnaryCall__2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Calls.htm" title="Calls Methods" tocid="Methods_T_Grpc_Core_Calls">Calls Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncClientStreamingCall__2">AsyncClientStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2">AsyncDuplexStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" title="AsyncServerStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncServerStreamingCall__2">AsyncServerStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" title="AsyncUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncUnaryCall__2">AsyncUnaryCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" title="BlockingUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_BlockingUnaryCall__2">BlockingUnaryCall(TRequest, TResponse) Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Calls<span id="LSTD45096DD_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD45096DD_0?cpp=::|nu=.");</script>AsyncUnaryCall<span id="LSTD45096DD_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD45096DD_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTD45096DD_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD45096DD_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Invokes a simple remote call asynchronously. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">AsyncUnaryCall</span><TResponse> <span class="identifier">AsyncUnaryCall</span><TRequest, TResponse>( + <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="parameter">call</span>, + TRequest <span class="parameter">req</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">AsyncUnaryCall</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">call</span> <span class="keyword">As</span> <span class="identifier">CallInvocationDetails</span>(<span class="keyword">Of</span> TRequest, TResponse), + <span class="parameter">req</span> <span class="keyword">As</span> TRequest +) <span class="keyword">As</span> <span class="identifier">AsyncUnaryCall</span>(<span class="keyword">Of</span> TResponse)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="keyword">static</span> <span class="identifier">AsyncUnaryCall</span><TResponse>^ <span class="identifier">AsyncUnaryCall</span>( + <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="parameter">call</span>, + TRequest <span class="parameter">req</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">AsyncUnaryCall</span> : + <span class="parameter">call</span> : <span class="identifier">CallInvocationDetails</span><'TRequest, 'TResponse> * + <span class="parameter">req</span> : 'TRequest <span class="keyword">-></span> <span class="identifier">AsyncUnaryCall</span><'TResponse> <span class="keyword">when</span> 'TRequest : <span class="keyword">not struct</span> <span class="keyword">when</span> 'TResponse : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">call</span></dt><dd>Type: <a href="T_Grpc_Core_CallInvocationDetails_2.htm">Grpc.Core<span id="LSTD45096DD_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD45096DD_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CallInvocationDetails</a><span id="LSTD45096DD_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD45096DD_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LSTD45096DD_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD45096DD_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The call defintion.</dd><dt><span class="parameter">req</span></dt><dd>Type: <span class="selflink"><span class="typeparameter">TRequest</span></span><br />Request message.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Type of request message.</dd><dt><span class="parameter">TResponse</span></dt><dd>The of response message.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall</a><span id="LSTD45096DD_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD45096DD_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LSTD45096DD_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD45096DD_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />An awaitable call object providing access to the response.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Calls.htm">Calls Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..438ef1d39c --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm @@ -0,0 +1,22 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Calls.BlockingUnaryCall(TRequest, TResponse) Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="BlockingUnaryCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="BlockingUnaryCall(Of TRequest%2C TResponse) method" /><meta name="System.Keywords" content="Calls.BlockingUnaryCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="Calls.BlockingUnaryCall(Of TRequest%2C TResponse) method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Calls.BlockingUnaryCall``2" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Calls.BlockingUnaryCall``2(Grpc.Core.CallInvocationDetails{``0,``1},``0)" /><meta name="Description" content="Invokes a simple remote call in a blocking fashion." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Calls_BlockingUnaryCall__2" /><meta name="guid" content="M_Grpc_Core_Calls_BlockingUnaryCall__2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Calls.htm" title="Calls Methods" tocid="Methods_T_Grpc_Core_Calls">Calls Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncClientStreamingCall__2">AsyncClientStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2">AsyncDuplexStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" title="AsyncServerStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncServerStreamingCall__2">AsyncServerStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" title="AsyncUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncUnaryCall__2">AsyncUnaryCall(TRequest, TResponse) Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" title="BlockingUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_BlockingUnaryCall__2">BlockingUnaryCall(TRequest, TResponse) Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Calls<span id="LST96EE894_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST96EE894_0?cpp=::|nu=.");</script>BlockingUnaryCall<span id="LST96EE894_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST96EE894_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST96EE894_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST96EE894_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Invokes a simple remote call in a blocking fashion. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> TResponse <span class="identifier">BlockingUnaryCall</span><TRequest, TResponse>( + <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="parameter">call</span>, + TRequest <span class="parameter">req</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">BlockingUnaryCall</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">call</span> <span class="keyword">As</span> <span class="identifier">CallInvocationDetails</span>(<span class="keyword">Of</span> TRequest, TResponse), + <span class="parameter">req</span> <span class="keyword">As</span> TRequest +) <span class="keyword">As</span> TResponse</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="keyword">static</span> TResponse <span class="identifier">BlockingUnaryCall</span>( + <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="parameter">call</span>, + TRequest <span class="parameter">req</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">BlockingUnaryCall</span> : + <span class="parameter">call</span> : <span class="identifier">CallInvocationDetails</span><'TRequest, 'TResponse> * + <span class="parameter">req</span> : 'TRequest <span class="keyword">-></span> 'TResponse <span class="keyword">when</span> 'TRequest : <span class="keyword">not struct</span> <span class="keyword">when</span> 'TResponse : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">call</span></dt><dd>Type: <a href="T_Grpc_Core_CallInvocationDetails_2.htm">Grpc.Core<span id="LST96EE894_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST96EE894_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CallInvocationDetails</a><span id="LST96EE894_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST96EE894_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST96EE894_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST96EE894_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The call defintion.</dd><dt><span class="parameter">req</span></dt><dd>Type: <span class="selflink"><span class="typeparameter">TRequest</span></span><br />Request message.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Type of request message.</dd><dt><span class="parameter">TResponse</span></dt><dd>The of response message.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <span class="selflink"><span class="typeparameter">TResponse</span></span><br />The response.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Calls.htm">Calls Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..2cf5522f32 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOption Constructor (String, Int32)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ChannelOption.#ctor(System.String,System.Int32)" /><meta name="Description" content="Creates a channel option with an integer value." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ChannelOption__ctor" /><meta name="guid" content="M_Grpc_Core_ChannelOption__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ChannelOption__ctor.htm" title="ChannelOption Constructor " tocid="Overload_Grpc_Core_ChannelOption__ctor">ChannelOption Constructor </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ChannelOption__ctor.htm" title="ChannelOption Constructor (String, Int32)" tocid="M_Grpc_Core_ChannelOption__ctor">ChannelOption Constructor (String, Int32)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ChannelOption__ctor_1.htm" title="ChannelOption Constructor (String, String)" tocid="M_Grpc_Core_ChannelOption__ctor_1">ChannelOption Constructor (String, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOption Constructor (String, Int32)</td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a channel option with an integer value. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ChannelOption</span>( + <span class="identifier">string</span> <span class="parameter">name</span>, + <span class="identifier">int</span> <span class="parameter">intValue</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">name</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">intValue</span> <span class="keyword">As</span> <span class="identifier">Integer</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">ChannelOption</span>( + <span class="identifier">String</span>^ <span class="parameter">name</span>, + <span class="identifier">int</span> <span class="parameter">intValue</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">name</span> : <span class="identifier">string</span> * + <span class="parameter">intValue</span> : <span class="identifier">int</span> <span class="keyword">-></span> <span class="identifier">ChannelOption</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">name</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTB54A1247_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB54A1247_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Name.</dd><dt><span class="parameter">intValue</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LSTB54A1247_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB54A1247_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br />Integer value.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_ChannelOption__ctor.htm">ChannelOption Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0cb44f83e9 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor_1.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOption Constructor (String, String)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ChannelOption.#ctor(System.String,System.String)" /><meta name="Description" content="Creates a channel option with a string value." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ChannelOption__ctor_1" /><meta name="guid" content="M_Grpc_Core_ChannelOption__ctor_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ChannelOption__ctor.htm" title="ChannelOption Constructor " tocid="Overload_Grpc_Core_ChannelOption__ctor">ChannelOption Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ChannelOption__ctor.htm" title="ChannelOption Constructor (String, Int32)" tocid="M_Grpc_Core_ChannelOption__ctor">ChannelOption Constructor (String, Int32)</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ChannelOption__ctor_1.htm" title="ChannelOption Constructor (String, String)" tocid="M_Grpc_Core_ChannelOption__ctor_1">ChannelOption Constructor (String, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOption Constructor (String, String)</td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a channel option with a string value. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ChannelOption</span>( + <span class="identifier">string</span> <span class="parameter">name</span>, + <span class="identifier">string</span> <span class="parameter">stringValue</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">name</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">stringValue</span> <span class="keyword">As</span> <span class="identifier">String</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">ChannelOption</span>( + <span class="identifier">String</span>^ <span class="parameter">name</span>, + <span class="identifier">String</span>^ <span class="parameter">stringValue</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">name</span> : <span class="identifier">string</span> * + <span class="parameter">stringValue</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="identifier">ChannelOption</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">name</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST345CD76_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST345CD76_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Name.</dd><dt><span class="parameter">stringValue</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST345CD76_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST345CD76_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />String value.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_ChannelOption__ctor.htm">ChannelOption Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c3dc1a1577 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Channel_ConnectAsync.htm @@ -0,0 +1,20 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel.ConnectAsync Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ConnectAsync method" /><meta name="System.Keywords" content="Channel.ConnectAsync method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel.ConnectAsync" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Channel.ConnectAsync(System.Nullable{System.DateTime})" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Channel_ConnectAsync" /><meta name="guid" content="M_Grpc_Core_Channel_ConnectAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Channel.htm" title="Channel Methods" tocid="Methods_T_Grpc_Core_Channel">Channel Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_ConnectAsync.htm" title="ConnectAsync Method " tocid="M_Grpc_Core_Channel_ConnectAsync">ConnectAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_ShutdownAsync.htm" title="ShutdownAsync Method " tocid="M_Grpc_Core_Channel_ShutdownAsync">ShutdownAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_WaitForStateChangedAsync.htm" title="WaitForStateChangedAsync Method " tocid="M_Grpc_Core_Channel_WaitForStateChangedAsync">WaitForStateChangedAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel<span id="LST9E4D95F4_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9E4D95F4_0?cpp=::|nu=.");</script>ConnectAsync Method </td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span> <span class="identifier">ConnectAsync</span>( + <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> <span class="parameter">deadline</span> = <span class="keyword">null</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">ConnectAsync</span> ( + Optional <span class="parameter">deadline</span> <span class="keyword">As</span> <span class="identifier">Nullable</span>(<span class="keyword">Of</span> <span class="identifier">DateTime</span>) = <span class="keyword">Nothing</span> +) <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Task</span>^ <span class="identifier">ConnectAsync</span>( + <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> <span class="parameter">deadline</span> = <span class="keyword">nullptr</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ConnectAsync</span> : + ?<span class="parameter">deadline</span> : <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> +(* Defaults: + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">deadline</span> = defaultArg <span class="identifier">deadline</span> <span class="keyword">null</span> +*) +<span class="keyword">-></span> <span class="identifier">Task</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">deadline</span> (Optional)</dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/b3h38hb0" target="_blank">System<span id="LST9E4D95F4_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9E4D95F4_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Nullable</a><span id="LST9E4D95F4_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9E4D95F4_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="http://msdn2.microsoft.com/en-us/library/03ybds8y" target="_blank">DateTime</a><span id="LST9E4D95F4_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9E4D95F4_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The deadline. <span class="code">null</span> indicates no deadline.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f8a04d4f8c --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Channel_ShutdownAsync.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel.ShutdownAsync Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ShutdownAsync method" /><meta name="System.Keywords" content="Channel.ShutdownAsync method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel.ShutdownAsync" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Channel.ShutdownAsync" /><meta name="Description" content="Waits until there are no more active calls for this channel and then cleans up resources used by this channel." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Channel_ShutdownAsync" /><meta name="guid" content="M_Grpc_Core_Channel_ShutdownAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Channel.htm" title="Channel Methods" tocid="Methods_T_Grpc_Core_Channel">Channel Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_ConnectAsync.htm" title="ConnectAsync Method " tocid="M_Grpc_Core_Channel_ConnectAsync">ConnectAsync Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_ShutdownAsync.htm" title="ShutdownAsync Method " tocid="M_Grpc_Core_Channel_ShutdownAsync">ShutdownAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_WaitForStateChangedAsync.htm" title="WaitForStateChangedAsync Method " tocid="M_Grpc_Core_Channel_WaitForStateChangedAsync">WaitForStateChangedAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel<span id="LST85C37DE1_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST85C37DE1_0?cpp=::|nu=.");</script>ShutdownAsync Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Waits until there are no more active calls for this channel and then cleans up + resources used by this channel. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span> <span class="identifier">ShutdownAsync</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">ShutdownAsync</span> <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Task</span>^ <span class="identifier">ShutdownAsync</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ShutdownAsync</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Task</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..92b613f8b6 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Channel_WaitForStateChangedAsync.htm @@ -0,0 +1,22 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel.WaitForStateChangedAsync Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WaitForStateChangedAsync method" /><meta name="System.Keywords" content="Channel.WaitForStateChangedAsync method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel.WaitForStateChangedAsync" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Channel.WaitForStateChangedAsync(Grpc.Core.ChannelState,System.Nullable{System.DateTime})" /><meta name="Description" content="Returned tasks completes once channel state has become different from given lastObservedState. If deadline is reached or and error occurs, returned task is cancelled." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Channel_WaitForStateChangedAsync" /><meta name="guid" content="M_Grpc_Core_Channel_WaitForStateChangedAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Channel.htm" title="Channel Methods" tocid="Methods_T_Grpc_Core_Channel">Channel Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_ConnectAsync.htm" title="ConnectAsync Method " tocid="M_Grpc_Core_Channel_ConnectAsync">ConnectAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_ShutdownAsync.htm" title="ShutdownAsync Method " tocid="M_Grpc_Core_Channel_ShutdownAsync">ShutdownAsync Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_WaitForStateChangedAsync.htm" title="WaitForStateChangedAsync Method " tocid="M_Grpc_Core_Channel_WaitForStateChangedAsync">WaitForStateChangedAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel<span id="LST5691ABAE_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5691ABAE_0?cpp=::|nu=.");</script>WaitForStateChangedAsync Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Returned tasks completes once channel state has become different from + given lastObservedState. + If deadline is reached or and error occurs, returned task is cancelled. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span> <span class="identifier">WaitForStateChangedAsync</span>( + <span class="identifier">ChannelState</span> <span class="parameter">lastObservedState</span>, + <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> <span class="parameter">deadline</span> = <span class="keyword">null</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">WaitForStateChangedAsync</span> ( + <span class="parameter">lastObservedState</span> <span class="keyword">As</span> <span class="identifier">ChannelState</span>, + Optional <span class="parameter">deadline</span> <span class="keyword">As</span> <span class="identifier">Nullable</span>(<span class="keyword">Of</span> <span class="identifier">DateTime</span>) = <span class="keyword">Nothing</span> +) <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Task</span>^ <span class="identifier">WaitForStateChangedAsync</span>( + <span class="identifier">ChannelState</span> <span class="parameter">lastObservedState</span>, + <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> <span class="parameter">deadline</span> = <span class="keyword">nullptr</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">WaitForStateChangedAsync</span> : + <span class="parameter">lastObservedState</span> : <span class="identifier">ChannelState</span> * + ?<span class="parameter">deadline</span> : <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> +(* Defaults: + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">deadline</span> = defaultArg <span class="identifier">deadline</span> <span class="keyword">null</span> +*) +<span class="keyword">-></span> <span class="identifier">Task</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">lastObservedState</span></dt><dd>Type: <a href="T_Grpc_Core_ChannelState.htm">Grpc.Core<span id="LST5691ABAE_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5691ABAE_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ChannelState</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="lastObservedState"/> documentation for "M:Grpc.Core.Channel.WaitForStateChangedAsync(Grpc.Core.ChannelState,System.Nullable{System.DateTime})"]</p></dd><dt><span class="parameter">deadline</span> (Optional)</dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/b3h38hb0" target="_blank">System<span id="LST5691ABAE_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5691ABAE_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Nullable</a><span id="LST5691ABAE_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5691ABAE_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="http://msdn2.microsoft.com/en-us/library/03ybds8y" target="_blank">DateTime</a><span id="LST5691ABAE_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5691ABAE_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="deadline"/> documentation for "M:Grpc.Core.Channel.WaitForStateChangedAsync(Grpc.Core.ChannelState,System.Nullable{System.DateTime})"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..fcc5831c79 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor.htm @@ -0,0 +1,24 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel Constructor (String, Credentials, IEnumerable(ChannelOption))</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Channel.#ctor(System.String,Grpc.Core.Credentials,System.Collections.Generic.IEnumerable{Grpc.Core.ChannelOption})" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Channel__ctor" /><meta name="guid" content="M_Grpc_Core_Channel__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Channel__ctor.htm" title="Channel Constructor " tocid="Overload_Grpc_Core_Channel__ctor">Channel Constructor </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel__ctor.htm" title="Channel Constructor (String, Credentials, IEnumerable(ChannelOption))" tocid="M_Grpc_Core_Channel__ctor">Channel Constructor (String, Credentials, IEnumerable(ChannelOption))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel__ctor_1.htm" title="Channel Constructor (String, Int32, Credentials, IEnumerable(ChannelOption))" tocid="M_Grpc_Core_Channel__ctor_1">Channel Constructor (String, Int32, Credentials, IEnumerable(ChannelOption))</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel Constructor (String, Credentials, IEnumerable<span id="LST307ECB37_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST307ECB37_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>ChannelOption<span id="LST307ECB37_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST307ECB37_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Channel</span>( + <span class="identifier">string</span> <span class="parameter">target</span>, + <span class="identifier">Credentials</span> <span class="parameter">credentials</span>, + <span class="identifier">IEnumerable</span><<span class="identifier">ChannelOption</span>> <span class="parameter">options</span> = <span class="keyword">null</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">target</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">credentials</span> <span class="keyword">As</span> <span class="identifier">Credentials</span>, + Optional <span class="parameter">options</span> <span class="keyword">As</span> <span class="identifier">IEnumerable</span>(<span class="keyword">Of</span> <span class="identifier">ChannelOption</span>) = <span class="keyword">Nothing</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Channel</span>( + <span class="identifier">String</span>^ <span class="parameter">target</span>, + <span class="identifier">Credentials</span>^ <span class="parameter">credentials</span>, + <span class="identifier">IEnumerable</span><<span class="identifier">ChannelOption</span>^>^ <span class="parameter">options</span> = <span class="keyword">nullptr</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">target</span> : <span class="identifier">string</span> * + <span class="parameter">credentials</span> : <span class="identifier">Credentials</span> * + ?<span class="parameter">options</span> : <span class="identifier">IEnumerable</span><<span class="identifier">ChannelOption</span>> +(* Defaults: + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">options</span> = defaultArg <span class="identifier">options</span> <span class="keyword">null</span> +*) +<span class="keyword">-></span> <span class="identifier">Channel</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">target</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST307ECB37_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST307ECB37_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Target of the channel.</dd><dt><span class="parameter">credentials</span></dt><dd>Type: <a href="T_Grpc_Core_Credentials.htm">Grpc.Core<span id="LST307ECB37_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST307ECB37_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Credentials</a><br />Credentials to secure the channel.</dd><dt><span class="parameter">options</span> (Optional)</dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/9eekhta0" target="_blank">System.Collections.Generic<span id="LST307ECB37_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST307ECB37_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IEnumerable</a><span id="LST307ECB37_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST307ECB37_5?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption</a><span id="LST307ECB37_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST307ECB37_6?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Channel options.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Channel__ctor.htm">Channel Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f888c880ec --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor_1.htm @@ -0,0 +1,27 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel Constructor (String, Int32, Credentials, IEnumerable(ChannelOption))</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Channel.#ctor(System.String,System.Int32,Grpc.Core.Credentials,System.Collections.Generic.IEnumerable{Grpc.Core.ChannelOption})" /><meta name="Description" content="Creates a channel that connects to a specific host and port." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Channel__ctor_1" /><meta name="guid" content="M_Grpc_Core_Channel__ctor_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Channel__ctor.htm" title="Channel Constructor " tocid="Overload_Grpc_Core_Channel__ctor">Channel Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel__ctor.htm" title="Channel Constructor (String, Credentials, IEnumerable(ChannelOption))" tocid="M_Grpc_Core_Channel__ctor">Channel Constructor (String, Credentials, IEnumerable(ChannelOption))</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel__ctor_1.htm" title="Channel Constructor (String, Int32, Credentials, IEnumerable(ChannelOption))" tocid="M_Grpc_Core_Channel__ctor_1">Channel Constructor (String, Int32, Credentials, IEnumerable(ChannelOption))</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel Constructor (String, Int32, Credentials, IEnumerable<span id="LSTA535342_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA535342_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>ChannelOption<span id="LSTA535342_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA535342_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a channel that connects to a specific host and port. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Channel</span>( + <span class="identifier">string</span> <span class="parameter">host</span>, + <span class="identifier">int</span> <span class="parameter">port</span>, + <span class="identifier">Credentials</span> <span class="parameter">credentials</span>, + <span class="identifier">IEnumerable</span><<span class="identifier">ChannelOption</span>> <span class="parameter">options</span> = <span class="keyword">null</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">host</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">port</span> <span class="keyword">As</span> <span class="identifier">Integer</span>, + <span class="parameter">credentials</span> <span class="keyword">As</span> <span class="identifier">Credentials</span>, + Optional <span class="parameter">options</span> <span class="keyword">As</span> <span class="identifier">IEnumerable</span>(<span class="keyword">Of</span> <span class="identifier">ChannelOption</span>) = <span class="keyword">Nothing</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Channel</span>( + <span class="identifier">String</span>^ <span class="parameter">host</span>, + <span class="identifier">int</span> <span class="parameter">port</span>, + <span class="identifier">Credentials</span>^ <span class="parameter">credentials</span>, + <span class="identifier">IEnumerable</span><<span class="identifier">ChannelOption</span>^>^ <span class="parameter">options</span> = <span class="keyword">nullptr</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">host</span> : <span class="identifier">string</span> * + <span class="parameter">port</span> : <span class="identifier">int</span> * + <span class="parameter">credentials</span> : <span class="identifier">Credentials</span> * + ?<span class="parameter">options</span> : <span class="identifier">IEnumerable</span><<span class="identifier">ChannelOption</span>> +(* Defaults: + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">options</span> = defaultArg <span class="identifier">options</span> <span class="keyword">null</span> +*) +<span class="keyword">-></span> <span class="identifier">Channel</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">host</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTA535342_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA535342_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />The name or IP address of the host.</dd><dt><span class="parameter">port</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LSTA535342_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA535342_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br />The port.</dd><dt><span class="parameter">credentials</span></dt><dd>Type: <a href="T_Grpc_Core_Credentials.htm">Grpc.Core<span id="LSTA535342_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA535342_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Credentials</a><br />Credentials to secure the channel.</dd><dt><span class="parameter">options</span> (Optional)</dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/9eekhta0" target="_blank">System.Collections.Generic<span id="LSTA535342_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA535342_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IEnumerable</a><span id="LSTA535342_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA535342_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption</a><span id="LSTA535342_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA535342_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Channel options.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Channel__ctor.htm">Channel Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..39494dca37 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ClientBase_CreateCall__2.htm @@ -0,0 +1,22 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ClientBase.CreateCall(TRequest, TResponse) Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CreateCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="CreateCall(Of TRequest%2C TResponse) method" /><meta name="System.Keywords" content="ClientBase.CreateCall%3CTRequest%2C TResponse%3E method" /><meta name="System.Keywords" content="ClientBase.CreateCall(Of TRequest%2C TResponse) method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase.CreateCall``2" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ClientBase.CreateCall``2(Grpc.Core.Method{``0,``1},Grpc.Core.CallOptions)" /><meta name="Description" content="Creates a new call to given method." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ClientBase_CreateCall__2" /><meta name="guid" content="M_Grpc_Core_ClientBase_CreateCall__2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ClientBase.htm" title="ClientBase Methods" tocid="Methods_T_Grpc_Core_ClientBase">ClientBase Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ClientBase_CreateCall__2.htm" title="CreateCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_ClientBase_CreateCall__2">CreateCall(TRequest, TResponse) Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ClientBase<span id="LSTE141A6C3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE141A6C3_0?cpp=::|nu=.");</script>CreateCall<span id="LSTE141A6C3_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE141A6C3_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTE141A6C3_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE141A6C3_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a new call to given method. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">protected</span> <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="identifier">CreateCall</span><TRequest, TResponse>( + <span class="identifier">Method</span><TRequest, TResponse> <span class="parameter">method</span>, + <span class="identifier">CallOptions</span> <span class="parameter">options</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Protected</span> <span class="keyword">Function</span> <span class="identifier">CreateCall</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">method</span> <span class="keyword">As</span> <span class="identifier">Method</span>(<span class="keyword">Of</span> TRequest, TResponse), + <span class="parameter">options</span> <span class="keyword">As</span> <span class="identifier">CallOptions</span> +) <span class="keyword">As</span> <span class="identifier">CallInvocationDetails</span>(<span class="keyword">Of</span> TRequest, TResponse)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">protected</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="identifier">CallInvocationDetails</span><TRequest, TResponse> <span class="identifier">CreateCall</span>( + <span class="identifier">Method</span><TRequest, TResponse>^ <span class="parameter">method</span>, + <span class="identifier">CallOptions</span> <span class="parameter">options</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">CreateCall</span> : + <span class="parameter">method</span> : <span class="identifier">Method</span><'TRequest, 'TResponse> * + <span class="parameter">options</span> : <span class="identifier">CallOptions</span> <span class="keyword">-></span> <span class="identifier">CallInvocationDetails</span><'TRequest, 'TResponse> <span class="keyword">when</span> 'TRequest : <span class="keyword">not struct</span> <span class="keyword">when</span> 'TResponse : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">method</span></dt><dd>Type: <a href="T_Grpc_Core_Method_2.htm">Grpc.Core<span id="LSTE141A6C3_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE141A6C3_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Method</a><span id="LSTE141A6C3_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE141A6C3_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LSTE141A6C3_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE141A6C3_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The method to invoke.</dd><dt><span class="parameter">options</span></dt><dd>Type: <a href="T_Grpc_Core_CallOptions.htm">Grpc.Core<span id="LSTE141A6C3_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE141A6C3_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CallOptions</a><br />The call options.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Request message type.</dd><dt><span class="parameter">TResponse</span></dt><dd>Response message type.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails</a><span id="LSTE141A6C3_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE141A6C3_7?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LSTE141A6C3_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE141A6C3_8?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The call invocation details.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ClientBase.htm">ClientBase Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5bce0afd30 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ClientBase__ctor.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ClientBase Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ClientBase class, constructor" /><meta name="System.Keywords" content="ClientBase.ClientBase constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase.ClientBase" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ClientBase.#ctor(Grpc.Core.Channel)" /><meta name="Description" content="Initializes a new instance of ClientBase class." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ClientBase__ctor" /><meta name="guid" content="M_Grpc_Core_ClientBase__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ClientBase__ctor.htm" title="ClientBase Constructor " tocid="M_Grpc_Core_ClientBase__ctor">ClientBase Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ClientBase.htm" title="ClientBase Properties" tocid="Properties_T_Grpc_Core_ClientBase">ClientBase Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ClientBase.htm" title="ClientBase Methods" tocid="Methods_T_Grpc_Core_ClientBase">ClientBase Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ClientBase Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Initializes a new instance of <span class="code">ClientBase</span> class. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ClientBase</span>( + <span class="identifier">Channel</span> <span class="parameter">channel</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">channel</span> <span class="keyword">As</span> <span class="identifier">Channel</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">ClientBase</span>( + <span class="identifier">Channel</span>^ <span class="parameter">channel</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">channel</span> : <span class="identifier">Channel</span> <span class="keyword">-></span> <span class="identifier">ClientBase</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">channel</span></dt><dd>Type: <a href="T_Grpc_Core_Channel.htm">Grpc.Core<span id="LST6E24B936_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6E24B936_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Channel</a><br />The channel to use for remote call invocation.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ClientBase.htm">ClientBase Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..8a0c3a6866 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ContextPropagationOptions__ctor.htm @@ -0,0 +1,20 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ContextPropagationOptions Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ContextPropagationOptions class, constructor" /><meta name="System.Keywords" content="ContextPropagationOptions.ContextPropagationOptions constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ContextPropagationOptions.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ContextPropagationOptions.ContextPropagationOptions" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ContextPropagationOptions.#ctor(System.Boolean,System.Boolean)" /><meta name="Description" content="Creates new context propagation options." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ContextPropagationOptions__ctor" /><meta name="guid" content="M_Grpc_Core_ContextPropagationOptions__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ContextPropagationOptions__ctor.htm" title="ContextPropagationOptions Constructor " tocid="M_Grpc_Core_ContextPropagationOptions__ctor">ContextPropagationOptions Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Properties" tocid="Properties_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Methods" tocid="Methods_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Fields" tocid="Fields_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ContextPropagationOptions Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates new context propagation options. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ContextPropagationOptions</span>( + <span class="identifier">bool</span> <span class="parameter">propagateDeadline</span> = <span class="keyword">true</span>, + <span class="identifier">bool</span> <span class="parameter">propagateCancellation</span> = <span class="keyword">true</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + Optional <span class="parameter">propagateDeadline</span> <span class="keyword">As</span> <span class="identifier">Boolean</span> = <span class="keyword">true</span>, + Optional <span class="parameter">propagateCancellation</span> <span class="keyword">As</span> <span class="identifier">Boolean</span> = <span class="keyword">true</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">ContextPropagationOptions</span>( + <span class="identifier">bool</span> <span class="parameter">propagateDeadline</span> = <span class="keyword">true</span>, + <span class="identifier">bool</span> <span class="parameter">propagateCancellation</span> = <span class="keyword">true</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + ?<span class="parameter">propagateDeadline</span> : <span class="identifier">bool</span> * + ?<span class="parameter">propagateCancellation</span> : <span class="identifier">bool</span> +(* Defaults: + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">propagateDeadline</span> = defaultArg <span class="identifier">propagateDeadline</span> <span class="keyword">true</span> + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">propagateCancellation</span> = defaultArg <span class="identifier">propagateCancellation</span> <span class="keyword">true</span> +*) +<span class="keyword">-></span> <span class="identifier">ContextPropagationOptions</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">propagateDeadline</span> (Optional)</dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">System<span id="LSTC85C234D_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC85C234D_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Boolean</a><br />If set to <span class="code">true</span> parent call's deadline will be propagated to the child call.</dd><dt><span class="parameter">propagateCancellation</span> (Optional)</dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">System<span id="LSTC85C234D_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC85C234D_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Boolean</a><br />If set to <span class="code">true</span> parent call's cancellation token will be propagated to the child call.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..126e39a55a --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Credentials__ctor.htm @@ -0,0 +1,2 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Credentials Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Credentials class, constructor" /><meta name="System.Keywords" content="Credentials.Credentials constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Credentials.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Credentials.Credentials" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Credentials.#ctor" /><meta name="Description" content="Grpc.Core.Credentials" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Credentials__ctor" /><meta name="guid" content="M_Grpc_Core_Credentials__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Credentials__ctor.htm" title="Credentials Constructor " tocid="M_Grpc_Core_Credentials__ctor">Credentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Credentials.htm" title="Credentials Properties" tocid="Properties_T_Grpc_Core_Credentials">Credentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_Credentials.htm" title="Credentials Methods" tocid="Methods_T_Grpc_Core_Credentials">Credentials Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Credentials Constructor </td></tr></table><span class="introStyle"></span><div class="summary">Initializes a new instance of the <a href="T_Grpc_Core_Credentials.htm">Credentials</a> class</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">protected</span> <span class="identifier">Credentials</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Protected</span> <span class="keyword">Sub</span> <span class="identifier">New</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">protected</span>: +<span class="identifier">Credentials</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Credentials</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Credentials.htm">Credentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..2ce38bb3eb --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_GrpcEnvironment_SetLogger.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GrpcEnvironment.SetLogger Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="SetLogger method" /><meta name="System.Keywords" content="GrpcEnvironment.SetLogger method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.GrpcEnvironment.SetLogger" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.GrpcEnvironment.SetLogger(Grpc.Core.Logging.ILogger)" /><meta name="Description" content="Sets the application-wide logger that should be used by gRPC." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_GrpcEnvironment_SetLogger" /><meta name="guid" content="M_Grpc_Core_GrpcEnvironment_SetLogger" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Methods" tocid="Methods_T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_GrpcEnvironment_SetLogger.htm" title="SetLogger Method " tocid="M_Grpc_Core_GrpcEnvironment_SetLogger">SetLogger Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">GrpcEnvironment<span id="LST7784D88D_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7784D88D_0?cpp=::|nu=.");</script>SetLogger Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Sets the application-wide logger that should be used by gRPC. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">SetLogger</span>( + <span class="identifier">ILogger</span> <span class="parameter">customLogger</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Sub</span> <span class="identifier">SetLogger</span> ( + <span class="parameter">customLogger</span> <span class="keyword">As</span> <span class="identifier">ILogger</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">SetLogger</span>( + <span class="identifier">ILogger</span>^ <span class="parameter">customLogger</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">SetLogger</span> : + <span class="parameter">customLogger</span> : <span class="identifier">ILogger</span> <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">customLogger</span></dt><dd>Type: <a href="T_Grpc_Core_Logging_ILogger.htm">Grpc.Core.Logging<span id="LST7784D88D_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7784D88D_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ILogger</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="customLogger"/> documentation for "M:Grpc.Core.GrpcEnvironment.SetLogger(Grpc.Core.Logging.ILogger)"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_GrpcEnvironment.htm">GrpcEnvironment Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..28d348c014 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IAsyncStreamWriter(T).WriteAsync Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteAsync method" /><meta name="System.Keywords" content="IAsyncStreamWriter%3CT%3E.WriteAsync method" /><meta name="System.Keywords" content="IAsyncStreamWriter(Of T).WriteAsync method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IAsyncStreamWriter`1.WriteAsync" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.IAsyncStreamWriter`1.WriteAsync(`0)" /><meta name="Description" content="Writes a single asynchronously. Only one write can be pending at a time." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync" /><meta name="guid" content="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Methods" tocid="Methods_T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm" title="WriteAsync Method " tocid="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync">WriteAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IAsyncStreamWriter<span id="LST79DAE08F_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79DAE08F_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST79DAE08F_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79DAE08F_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST79DAE08F_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79DAE08F_2?cpp=::|nu=.");</script>WriteAsync Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Writes a single asynchronously. Only one write can be pending at a time. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="identifier">Task</span> <span class="identifier">WriteAsync</span>( + T <span class="parameter">message</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Function</span> <span class="identifier">WriteAsync</span> ( + <span class="parameter">message</span> <span class="keyword">As</span> T +) <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="identifier">Task</span>^ <span class="identifier">WriteAsync</span>( + T <span class="parameter">message</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">WriteAsync</span> : + <span class="parameter">message</span> : 'T <span class="keyword">-></span> <span class="identifier">Task</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">message</span></dt><dd>Type: <a href="T_Grpc_Core_IAsyncStreamWriter_1.htm"><span class="typeparameter">T</span></a><br />the message to be written. Cannot be null.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST79DAE08F_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79DAE08F_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST79DAE08F_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST79DAE08F_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..9518f187f8 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm @@ -0,0 +1,4 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IClientStreamWriter(T).CompleteAsync Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CompleteAsync method" /><meta name="System.Keywords" content="IClientStreamWriter%3CT%3E.CompleteAsync method" /><meta name="System.Keywords" content="IClientStreamWriter(Of T).CompleteAsync method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IClientStreamWriter`1.CompleteAsync" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.IClientStreamWriter`1.CompleteAsync" /><meta name="Description" content="Completes/closes the stream. Can only be called once there is no pending write. No writes should follow calling this." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_IClientStreamWriter_1_CompleteAsync" /><meta name="guid" content="M_Grpc_Core_IClientStreamWriter_1_CompleteAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Methods" tocid="Methods_T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm" title="CompleteAsync Method " tocid="M_Grpc_Core_IClientStreamWriter_1_CompleteAsync">CompleteAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IClientStreamWriter<span id="LSTBD430C85_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBD430C85_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTBD430C85_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBD430C85_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTBD430C85_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBD430C85_2?cpp=::|nu=.");</script>CompleteAsync Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Completes/closes the stream. Can only be called once there is no pending write. No writes should follow calling this. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="identifier">Task</span> <span class="identifier">CompleteAsync</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Function</span> <span class="identifier">CompleteAsync</span> <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="identifier">Task</span>^ <span class="identifier">CompleteAsync</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">CompleteAsync</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Task</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IClientStreamWriter_1.htm">IClientStreamWriter<span id="LSTBD430C85_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBD430C85_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTBD430C85_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBD430C85_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..d0d3deb61f --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_KeyCertificatePair__ctor.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>KeyCertificatePair Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="KeyCertificatePair class, constructor" /><meta name="System.Keywords" content="KeyCertificatePair.KeyCertificatePair constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.KeyCertificatePair.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.KeyCertificatePair.KeyCertificatePair" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.KeyCertificatePair.#ctor(System.String,System.String)" /><meta name="Description" content="Creates a new certificate chain - private key pair." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_KeyCertificatePair__ctor" /><meta name="guid" content="M_Grpc_Core_KeyCertificatePair__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_KeyCertificatePair__ctor.htm" title="KeyCertificatePair Constructor " tocid="M_Grpc_Core_KeyCertificatePair__ctor">KeyCertificatePair Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Properties" tocid="Properties_T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Methods" tocid="Methods_T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">KeyCertificatePair Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a new certificate chain - private key pair. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">KeyCertificatePair</span>( + <span class="identifier">string</span> <span class="parameter">certificateChain</span>, + <span class="identifier">string</span> <span class="parameter">privateKey</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">certificateChain</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">privateKey</span> <span class="keyword">As</span> <span class="identifier">String</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">KeyCertificatePair</span>( + <span class="identifier">String</span>^ <span class="parameter">certificateChain</span>, + <span class="identifier">String</span>^ <span class="parameter">privateKey</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">certificateChain</span> : <span class="identifier">string</span> * + <span class="parameter">privateKey</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="identifier">KeyCertificatePair</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">certificateChain</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST3F6F0F52_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F6F0F52_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />PEM encoded certificate chain.</dd><dt><span class="parameter">privateKey</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST3F6F0F52_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F6F0F52_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />PEM encoded private key.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5e32929e41 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Debug.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger.Debug Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Debug method" /><meta name="System.Keywords" content="ConsoleLogger.Debug method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ConsoleLogger.Debug" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ConsoleLogger.Debug(System.String,System.Object[])" /><meta name="Description" content="Logs a message with severity Debug." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ConsoleLogger_Debug" /><meta name="guid" content="M_Grpc_Core_Logging_ConsoleLogger_Debug" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Debug.htm" title="Debug Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_Debug">Debug Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Error">Error Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm" title="ForType(T) Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_ForType__1">ForType(T) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Info.htm" title="Info Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_Info">Info Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Warning">Warning Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger<span id="LST26E1A714_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST26E1A714_0?cpp=::|nu=.");</script>Debug Method </td></tr></table><span class="introStyle"></span><div class="summary">Logs a message with severity Debug.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Debug</span>( + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Debug</span> ( + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Debug</span>( + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Debug</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Debug</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST26E1A714_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST26E1A714_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Debug(System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LST26E1A714_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST26E1A714_2?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST26E1A714_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST26E1A714_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LST26E1A714_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST26E1A714_4?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Debug(System.String,System.Object[])"]</p></dd></dl><h4 class="subHeading">Implements</h4><a href="M_Grpc_Core_Logging_ILogger_Debug.htm">ILogger<span id="LST26E1A714_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST26E1A714_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Debug(String, <span id="LST26E1A714_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST26E1A714_6?cpp=array<");</script>Object<span id="LST26E1A714_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST26E1A714_7?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..6d80286475 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error.htm @@ -0,0 +1,21 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger.Error Method (Exception, String, Object[])</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ConsoleLogger.Error(System.Exception,System.String,System.Object[])" /><meta name="Description" content="Logs a message and an associated exception with severity Error." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ConsoleLogger_Error" /><meta name="guid" content="M_Grpc_Core_Logging_ConsoleLogger_Error" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Error">Error Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm" title="Error Method (String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Error_1">Error Method (String, Object[])</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Error.htm" title="Error Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Error">Error Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger<span id="LST9D02E46D_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9D02E46D_0?cpp=::|nu=.");</script>Error Method (Exception, String, <span id="LST9D02E46D_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9D02E46D_1?cpp=array<");</script>Object<span id="LST9D02E46D_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9D02E46D_2?cpp=>|vb=()|nu=[]");</script>)</td></tr></table><span class="introStyle"></span><div class="summary">Logs a message and an associated exception with severity Error.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Error</span>( + <span class="identifier">Exception</span> <span class="parameter">exception</span>, + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Error</span> ( + <span class="parameter">exception</span> <span class="keyword">As</span> <span class="identifier">Exception</span>, + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Error</span>( + <span class="identifier">Exception</span>^ <span class="parameter">exception</span>, + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Error</span> : + <span class="parameter">exception</span> : <span class="identifier">Exception</span> * + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Error</span> : + <span class="parameter">exception</span> : <span class="identifier">Exception</span> * + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">exception</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">System<span id="LST9D02E46D_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9D02E46D_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Exception</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.Exception,System.String,System.Object[])"]</p></dd><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST9D02E46D_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9D02E46D_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.Exception,System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LST9D02E46D_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9D02E46D_5?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST9D02E46D_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9D02E46D_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LST9D02E46D_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9D02E46D_7?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.Exception,System.String,System.Object[])"]</p></dd></dl><h4 class="subHeading">Implements</h4><a href="M_Grpc_Core_Logging_ILogger_Error.htm">ILogger<span id="LST9D02E46D_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9D02E46D_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Error(Exception, String, <span id="LST9D02E46D_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9D02E46D_9?cpp=array<");</script>Object<span id="LST9D02E46D_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9D02E46D_10?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm">Error Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..8d154f118b --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger.Error Method (String, Object[])</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ConsoleLogger.Error(System.String,System.Object[])" /><meta name="Description" content="Logs a message with severity Error." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ConsoleLogger_Error_1" /><meta name="guid" content="M_Grpc_Core_Logging_ConsoleLogger_Error_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Error">Error Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm" title="Error Method (String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Error_1">Error Method (String, Object[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Error.htm" title="Error Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Error">Error Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger<span id="LSTE99B1AE9_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE99B1AE9_0?cpp=::|nu=.");</script>Error Method (String, <span id="LSTE99B1AE9_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE99B1AE9_1?cpp=array<");</script>Object<span id="LSTE99B1AE9_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE99B1AE9_2?cpp=>|vb=()|nu=[]");</script>)</td></tr></table><span class="introStyle"></span><div class="summary">Logs a message with severity Error.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Error</span>( + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Error</span> ( + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Error</span>( + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Error</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Error</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTE99B1AE9_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE99B1AE9_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LSTE99B1AE9_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE99B1AE9_4?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTE99B1AE9_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE99B1AE9_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LSTE99B1AE9_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE99B1AE9_6?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.String,System.Object[])"]</p></dd></dl><h4 class="subHeading">Implements</h4><a href="M_Grpc_Core_Logging_ILogger_Error_1.htm">ILogger<span id="LSTE99B1AE9_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE99B1AE9_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Error(String, <span id="LSTE99B1AE9_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE99B1AE9_8?cpp=array<");</script>Object<span id="LSTE99B1AE9_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE99B1AE9_9?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm">Error Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..66335da42b --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger.ForType(T) Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ForType%3CT%3E method" /><meta name="System.Keywords" content="ForType(Of T) method" /><meta name="System.Keywords" content="ConsoleLogger.ForType%3CT%3E method" /><meta name="System.Keywords" content="ConsoleLogger.ForType(Of T) method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ConsoleLogger.ForType``1" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ConsoleLogger.ForType``1" /><meta name="Description" content="Returns a logger associated with the specified type." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ConsoleLogger_ForType__1" /><meta name="guid" content="M_Grpc_Core_Logging_ConsoleLogger_ForType__1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Debug.htm" title="Debug Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_Debug">Debug Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Error">Error Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm" title="ForType(T) Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_ForType__1">ForType(T) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Info.htm" title="Info Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_Info">Info Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Warning">Warning Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger<span id="LST896B66EA_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST896B66EA_0?cpp=::|nu=.");</script>ForType<span id="LST896B66EA_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST896B66EA_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST896B66EA_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST896B66EA_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Returns a logger associated with the specified type. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ILogger</span> <span class="identifier">ForType</span><T>() +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">ForType</span>(<span class="keyword">Of</span> T) <span class="keyword">As</span> <span class="identifier">ILogger</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">virtual</span> <span class="identifier">ILogger</span>^ <span class="identifier">ForType</span>() <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">ForType</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">ILogger</span> +<span class="keyword">override</span> <span class="identifier">ForType</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">ILogger</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.ForType``1"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_Logging_ILogger.htm">ILogger</a><h4 class="subHeading">Implements</h4><a href="M_Grpc_Core_Logging_ILogger_ForType__1.htm">ILogger<span id="LST896B66EA_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST896B66EA_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ForType<span id="LST896B66EA_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST896B66EA_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST896B66EA_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST896B66EA_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST896B66EA_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST896B66EA_6?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..fa46de948f --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Info.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger.Info Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Info method" /><meta name="System.Keywords" content="ConsoleLogger.Info method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ConsoleLogger.Info" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ConsoleLogger.Info(System.String,System.Object[])" /><meta name="Description" content="Logs a message with severity Info." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ConsoleLogger_Info" /><meta name="guid" content="M_Grpc_Core_Logging_ConsoleLogger_Info" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Debug.htm" title="Debug Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_Debug">Debug Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Error">Error Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm" title="ForType(T) Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_ForType__1">ForType(T) Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Info.htm" title="Info Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_Info">Info Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Warning">Warning Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger<span id="LSTEB5CFBFF_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEB5CFBFF_0?cpp=::|nu=.");</script>Info Method </td></tr></table><span class="introStyle"></span><div class="summary">Logs a message with severity Info.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Info</span>( + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Info</span> ( + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Info</span>( + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Info</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Info</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTEB5CFBFF_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEB5CFBFF_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Info(System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LSTEB5CFBFF_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEB5CFBFF_2?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTEB5CFBFF_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEB5CFBFF_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LSTEB5CFBFF_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEB5CFBFF_4?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Info(System.String,System.Object[])"]</p></dd></dl><h4 class="subHeading">Implements</h4><a href="M_Grpc_Core_Logging_ILogger_Info.htm">ILogger<span id="LSTEB5CFBFF_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEB5CFBFF_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Info(String, <span id="LSTEB5CFBFF_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEB5CFBFF_6?cpp=array<");</script>Object<span id="LSTEB5CFBFF_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEB5CFBFF_7?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..3f8c17d05e --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning.htm @@ -0,0 +1,21 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger.Warning Method (Exception, String, Object[])</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ConsoleLogger.Warning(System.Exception,System.String,System.Object[])" /><meta name="Description" content="Logs a message and an associated exception with severity Warning." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ConsoleLogger_Warning" /><meta name="guid" content="M_Grpc_Core_Logging_ConsoleLogger_Warning" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Warning">Warning Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm" title="Warning Method (String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Warning_1">Warning Method (String, Object[])</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Warning.htm" title="Warning Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Warning">Warning Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger<span id="LSTA31A3D17_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA31A3D17_0?cpp=::|nu=.");</script>Warning Method (Exception, String, <span id="LSTA31A3D17_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA31A3D17_1?cpp=array<");</script>Object<span id="LSTA31A3D17_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA31A3D17_2?cpp=>|vb=()|nu=[]");</script>)</td></tr></table><span class="introStyle"></span><div class="summary">Logs a message and an associated exception with severity Warning.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Warning</span>( + <span class="identifier">Exception</span> <span class="parameter">exception</span>, + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Warning</span> ( + <span class="parameter">exception</span> <span class="keyword">As</span> <span class="identifier">Exception</span>, + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Warning</span>( + <span class="identifier">Exception</span>^ <span class="parameter">exception</span>, + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Warning</span> : + <span class="parameter">exception</span> : <span class="identifier">Exception</span> * + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Warning</span> : + <span class="parameter">exception</span> : <span class="identifier">Exception</span> * + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">exception</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">System<span id="LSTA31A3D17_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA31A3D17_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Exception</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.Exception,System.String,System.Object[])"]</p></dd><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTA31A3D17_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA31A3D17_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.Exception,System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LSTA31A3D17_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA31A3D17_5?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTA31A3D17_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA31A3D17_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LSTA31A3D17_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA31A3D17_7?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.Exception,System.String,System.Object[])"]</p></dd></dl><h4 class="subHeading">Implements</h4><a href="M_Grpc_Core_Logging_ILogger_Warning.htm">ILogger<span id="LSTA31A3D17_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA31A3D17_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Warning(Exception, String, <span id="LSTA31A3D17_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA31A3D17_9?cpp=array<");</script>Object<span id="LSTA31A3D17_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA31A3D17_10?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm">Warning Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..e8ee332766 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger.Warning Method (String, Object[])</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ConsoleLogger.Warning(System.String,System.Object[])" /><meta name="Description" content="Logs a message with severity Warning." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ConsoleLogger_Warning_1" /><meta name="guid" content="M_Grpc_Core_Logging_ConsoleLogger_Warning_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Warning">Warning Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm" title="Warning Method (String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Warning_1">Warning Method (String, Object[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Warning.htm" title="Warning Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Warning">Warning Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger<span id="LST86B07CEF_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86B07CEF_0?cpp=::|nu=.");</script>Warning Method (String, <span id="LST86B07CEF_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86B07CEF_1?cpp=array<");</script>Object<span id="LST86B07CEF_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86B07CEF_2?cpp=>|vb=()|nu=[]");</script>)</td></tr></table><span class="introStyle"></span><div class="summary">Logs a message with severity Warning.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Warning</span>( + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Warning</span> ( + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Warning</span>( + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Warning</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Warning</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST86B07CEF_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86B07CEF_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LST86B07CEF_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86B07CEF_4?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST86B07CEF_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86B07CEF_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LST86B07CEF_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86B07CEF_6?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.String,System.Object[])"]</p></dd></dl><h4 class="subHeading">Implements</h4><a href="M_Grpc_Core_Logging_ILogger_Warning_1.htm">ILogger<span id="LST86B07CEF_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86B07CEF_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Warning(String, <span id="LST86B07CEF_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86B07CEF_8?cpp=array<");</script>Object<span id="LST86B07CEF_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86B07CEF_9?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm">Warning Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..e1b5025397 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger__ctor.htm @@ -0,0 +1,2 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ConsoleLogger class, constructor" /><meta name="System.Keywords" content="ConsoleLogger.ConsoleLogger constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ConsoleLogger.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ConsoleLogger.ConsoleLogger" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ConsoleLogger.#ctor" /><meta name="Description" content="Creates a console logger not associated to any specific type." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ConsoleLogger__ctor" /><meta name="guid" content="M_Grpc_Core_Logging_ConsoleLogger__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger__ctor.htm" title="ConsoleLogger Constructor " tocid="M_Grpc_Core_Logging_ConsoleLogger__ctor">ConsoleLogger Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger Constructor </td></tr></table><span class="introStyle"></span><div class="summary">Creates a console logger not associated to any specific type.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ConsoleLogger</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">ConsoleLogger</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">ConsoleLogger</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c4a15c5b5a --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Debug.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ILogger.Debug Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Debug method" /><meta name="System.Keywords" content="ILogger.Debug method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ILogger.Debug" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ILogger.Debug(System.String,System.Object[])" /><meta name="Description" content="Logs a message with severity Debug." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ILogger_Debug" /><meta name="guid" content="M_Grpc_Core_Logging_ILogger_Debug" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ILogger.htm" title="ILogger Methods" tocid="Methods_T_Grpc_Core_Logging_ILogger">ILogger Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Debug.htm" title="Debug Method " tocid="M_Grpc_Core_Logging_ILogger_Debug">Debug Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ILogger_Error">Error Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_ForType__1.htm" title="ForType(T) Method " tocid="M_Grpc_Core_Logging_ILogger_ForType__1">ForType(T) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Info.htm" title="Info Method " tocid="M_Grpc_Core_Logging_ILogger_Info">Info Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ILogger_Warning">Warning Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ILogger<span id="LSTA1973726_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA1973726_0?cpp=::|nu=.");</script>Debug Method </td></tr></table><span class="introStyle"></span><div class="summary">Logs a message with severity Debug.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Debug</span>( + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Sub</span> <span class="identifier">Debug</span> ( + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Debug</span>( + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Debug</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTA1973726_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA1973726_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Debug(System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LSTA1973726_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA1973726_2?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTA1973726_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA1973726_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LSTA1973726_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA1973726_4?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Debug(System.String,System.Object[])"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ILogger.htm">ILogger Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..6f5cbfa143 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error.htm @@ -0,0 +1,17 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ILogger.Error Method (Exception, String, Object[])</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ILogger.Error(System.Exception,System.String,System.Object[])" /><meta name="Description" content="Logs a message and an associated exception with severity Error." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ILogger_Error" /><meta name="guid" content="M_Grpc_Core_Logging_ILogger_Error" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ILogger.htm" title="ILogger Methods" tocid="Methods_T_Grpc_Core_Logging_ILogger">ILogger Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ILogger_Error">Error Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Error_1.htm" title="Error Method (String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Error_1">Error Method (String, Object[])</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Error.htm" title="Error Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Error">Error Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ILogger<span id="LST2E5BBEEB_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2E5BBEEB_0?cpp=::|nu=.");</script>Error Method (Exception, String, <span id="LST2E5BBEEB_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2E5BBEEB_1?cpp=array<");</script>Object<span id="LST2E5BBEEB_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2E5BBEEB_2?cpp=>|vb=()|nu=[]");</script>)</td></tr></table><span class="introStyle"></span><div class="summary">Logs a message and an associated exception with severity Error.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Error</span>( + <span class="identifier">Exception</span> <span class="parameter">exception</span>, + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Sub</span> <span class="identifier">Error</span> ( + <span class="parameter">exception</span> <span class="keyword">As</span> <span class="identifier">Exception</span>, + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Error</span>( + <span class="identifier">Exception</span>^ <span class="parameter">exception</span>, + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Error</span> : + <span class="parameter">exception</span> : <span class="identifier">Exception</span> * + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">exception</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">System<span id="LST2E5BBEEB_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2E5BBEEB_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Exception</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.Exception,System.String,System.Object[])"]</p></dd><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST2E5BBEEB_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2E5BBEEB_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.Exception,System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LST2E5BBEEB_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2E5BBEEB_5?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST2E5BBEEB_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2E5BBEEB_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LST2E5BBEEB_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2E5BBEEB_7?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.Exception,System.String,System.Object[])"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ILogger.htm">ILogger Interface</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Logging_ILogger_Error.htm">Error Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..8c8e5e3425 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error_1.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ILogger.Error Method (String, Object[])</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ILogger.Error(System.String,System.Object[])" /><meta name="Description" content="Logs a message with severity Error." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ILogger_Error_1" /><meta name="guid" content="M_Grpc_Core_Logging_ILogger_Error_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ILogger.htm" title="ILogger Methods" tocid="Methods_T_Grpc_Core_Logging_ILogger">ILogger Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ILogger_Error">Error Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Error_1.htm" title="Error Method (String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Error_1">Error Method (String, Object[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Error.htm" title="Error Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Error">Error Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ILogger<span id="LSTC3566983_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC3566983_0?cpp=::|nu=.");</script>Error Method (String, <span id="LSTC3566983_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC3566983_1?cpp=array<");</script>Object<span id="LSTC3566983_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC3566983_2?cpp=>|vb=()|nu=[]");</script>)</td></tr></table><span class="introStyle"></span><div class="summary">Logs a message with severity Error.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Error</span>( + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Sub</span> <span class="identifier">Error</span> ( + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Error</span>( + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Error</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTC3566983_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC3566983_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LSTC3566983_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC3566983_4?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTC3566983_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC3566983_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LSTC3566983_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC3566983_6?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.String,System.Object[])"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ILogger.htm">ILogger Interface</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Logging_ILogger_Error.htm">Error Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b95f904aee --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_ForType__1.htm @@ -0,0 +1,4 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ILogger.ForType(T) Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ForType%3CT%3E method" /><meta name="System.Keywords" content="ForType(Of T) method" /><meta name="System.Keywords" content="ILogger.ForType%3CT%3E method" /><meta name="System.Keywords" content="ILogger.ForType(Of T) method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ILogger.ForType``1" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ILogger.ForType``1" /><meta name="Description" content="Returns a logger associated with the specified type." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ILogger_ForType__1" /><meta name="guid" content="M_Grpc_Core_Logging_ILogger_ForType__1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ILogger.htm" title="ILogger Methods" tocid="Methods_T_Grpc_Core_Logging_ILogger">ILogger Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Debug.htm" title="Debug Method " tocid="M_Grpc_Core_Logging_ILogger_Debug">Debug Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ILogger_Error">Error Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_ForType__1.htm" title="ForType(T) Method " tocid="M_Grpc_Core_Logging_ILogger_ForType__1">ForType(T) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Info.htm" title="Info Method " tocid="M_Grpc_Core_Logging_ILogger_Info">Info Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ILogger_Warning">Warning Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ILogger<span id="LSTE7C1D7D4_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE7C1D7D4_0?cpp=::|nu=.");</script>ForType<span id="LSTE7C1D7D4_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE7C1D7D4_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTE7C1D7D4_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE7C1D7D4_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method </td></tr></table><span class="introStyle"></span><div class="summary">Returns a logger associated with the specified type.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="identifier">ILogger</span> <span class="identifier">ForType</span><T>() +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Function</span> <span class="identifier">ForType</span>(<span class="keyword">Of</span> T) <span class="keyword">As</span> <span class="identifier">ILogger</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="identifier">ILogger</span>^ <span class="identifier">ForType</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">ForType</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">ILogger</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Logging.ILogger.ForType``1"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_Logging_ILogger.htm">ILogger</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ILogger.htm">ILogger Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..cba47673b9 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Info.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ILogger.Info Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Info method" /><meta name="System.Keywords" content="ILogger.Info method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ILogger.Info" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ILogger.Info(System.String,System.Object[])" /><meta name="Description" content="Logs a message with severity Info." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ILogger_Info" /><meta name="guid" content="M_Grpc_Core_Logging_ILogger_Info" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ILogger.htm" title="ILogger Methods" tocid="Methods_T_Grpc_Core_Logging_ILogger">ILogger Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Debug.htm" title="Debug Method " tocid="M_Grpc_Core_Logging_ILogger_Debug">Debug Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ILogger_Error">Error Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_ForType__1.htm" title="ForType(T) Method " tocid="M_Grpc_Core_Logging_ILogger_ForType__1">ForType(T) Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Info.htm" title="Info Method " tocid="M_Grpc_Core_Logging_ILogger_Info">Info Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ILogger_Warning">Warning Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ILogger<span id="LST1B144BB9_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1B144BB9_0?cpp=::|nu=.");</script>Info Method </td></tr></table><span class="introStyle"></span><div class="summary">Logs a message with severity Info.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Info</span>( + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Sub</span> <span class="identifier">Info</span> ( + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Info</span>( + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Info</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST1B144BB9_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1B144BB9_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Info(System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LST1B144BB9_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1B144BB9_2?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST1B144BB9_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1B144BB9_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LST1B144BB9_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1B144BB9_4?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Info(System.String,System.Object[])"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ILogger.htm">ILogger Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c103df8940 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning.htm @@ -0,0 +1,17 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ILogger.Warning Method (Exception, String, Object[])</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ILogger.Warning(System.Exception,System.String,System.Object[])" /><meta name="Description" content="Logs a message and an associated exception with severity Warning." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ILogger_Warning" /><meta name="guid" content="M_Grpc_Core_Logging_ILogger_Warning" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ILogger.htm" title="ILogger Methods" tocid="Methods_T_Grpc_Core_Logging_ILogger">ILogger Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ILogger_Warning">Warning Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Warning_1.htm" title="Warning Method (String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Warning_1">Warning Method (String, Object[])</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Warning.htm" title="Warning Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Warning">Warning Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ILogger<span id="LST8B4E23D9_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B4E23D9_0?cpp=::|nu=.");</script>Warning Method (Exception, String, <span id="LST8B4E23D9_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B4E23D9_1?cpp=array<");</script>Object<span id="LST8B4E23D9_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B4E23D9_2?cpp=>|vb=()|nu=[]");</script>)</td></tr></table><span class="introStyle"></span><div class="summary">Logs a message and an associated exception with severity Warning.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Warning</span>( + <span class="identifier">Exception</span> <span class="parameter">exception</span>, + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Sub</span> <span class="identifier">Warning</span> ( + <span class="parameter">exception</span> <span class="keyword">As</span> <span class="identifier">Exception</span>, + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Warning</span>( + <span class="identifier">Exception</span>^ <span class="parameter">exception</span>, + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Warning</span> : + <span class="parameter">exception</span> : <span class="identifier">Exception</span> * + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">exception</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">System<span id="LST8B4E23D9_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B4E23D9_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Exception</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.Exception,System.String,System.Object[])"]</p></dd><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST8B4E23D9_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B4E23D9_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.Exception,System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LST8B4E23D9_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B4E23D9_5?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST8B4E23D9_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B4E23D9_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LST8B4E23D9_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B4E23D9_7?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.Exception,System.String,System.Object[])"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ILogger.htm">ILogger Interface</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Logging_ILogger_Warning.htm">Warning Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a2abe0f8ed --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning_1.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ILogger.Warning Method (String, Object[])</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Logging.ILogger.Warning(System.String,System.Object[])" /><meta name="Description" content="Logs a message with severity Warning." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="M_Grpc_Core_Logging_ILogger_Warning_1" /><meta name="guid" content="M_Grpc_Core_Logging_ILogger_Warning_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ILogger.htm" title="ILogger Methods" tocid="Methods_T_Grpc_Core_Logging_ILogger">ILogger Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ILogger_Warning">Warning Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Warning_1.htm" title="Warning Method (String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Warning_1">Warning Method (String, Object[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Warning.htm" title="Warning Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Warning">Warning Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ILogger<span id="LST39121515_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39121515_0?cpp=::|nu=.");</script>Warning Method (String, <span id="LST39121515_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39121515_1?cpp=array<");</script>Object<span id="LST39121515_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39121515_2?cpp=>|vb=()|nu=[]");</script>)</td></tr></table><span class="introStyle"></span><div class="summary">Logs a message with severity Warning.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Warning</span>( + <span class="identifier">string</span> <span class="parameter">message</span>, + <span class="keyword">params</span> <span class="identifier">Object</span>[] <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Sub</span> <span class="identifier">Warning</span> ( + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="keyword">ParamArray</span> <span class="parameter">formatArgs</span> <span class="keyword">As</span> <span class="identifier">Object</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">void</span> <span class="identifier">Warning</span>( + <span class="identifier">String</span>^ <span class="parameter">message</span>, + ... <span class="keyword">array</span><<span class="identifier">Object</span>^>^ <span class="parameter">formatArgs</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Warning</span> : + <span class="parameter">message</span> : <span class="identifier">string</span> * + <span class="parameter">formatArgs</span> : <span class="identifier">Object</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST39121515_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39121515_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.String,System.Object[])"]</p></dd><dt><span class="parameter">formatArgs</span></dt><dd>Type: <span id="LST39121515_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39121515_4?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST39121515_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39121515_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><span id="LST39121515_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39121515_6?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.String,System.Object[])"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ILogger.htm">ILogger Interface</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Logging_ILogger_Warning.htm">Warning Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..4bf979904b --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Marshaller_1__ctor.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Marshaller(T) Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Marshaller%3CT%3E structure, constructor" /><meta name="System.Keywords" content="Marshaller(Of T) structure, constructor" /><meta name="System.Keywords" content="Marshaller%3CT%3E.Marshaller constructor" /><meta name="System.Keywords" content="Marshaller(Of T).Marshaller constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Marshaller`1.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Marshaller`1.Marshaller" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Marshaller`1.#ctor(System.Func{`0,System.Byte[]},System.Func{System.Byte[],`0})" /><meta name="Description" content="Initializes a new marshaller." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Marshaller_1__ctor" /><meta name="guid" content="M_Grpc_Core_Marshaller_1__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Marshaller_1__ctor.htm" title="Marshaller(T) Constructor " tocid="M_Grpc_Core_Marshaller_1__ctor">Marshaller(T) Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Properties" tocid="Properties_T_Grpc_Core_Marshaller_1">Marshaller(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Methods" tocid="Methods_T_Grpc_Core_Marshaller_1">Marshaller(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Marshaller<span id="LSTA9F49B0_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTA9F49B0_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Initializes a new marshaller. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Marshaller</span>( + <span class="identifier">Func</span><T, <span class="identifier">byte</span>[]> <span class="parameter">serializer</span>, + <span class="identifier">Func</span><<span class="identifier">byte</span>[], T> <span class="parameter">deserializer</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">serializer</span> <span class="keyword">As</span> <span class="identifier">Func</span>(<span class="keyword">Of</span> T, <span class="identifier">Byte</span>()), + <span class="parameter">deserializer</span> <span class="keyword">As</span> <span class="identifier">Func</span>(<span class="keyword">Of</span> <span class="identifier">Byte</span>(), T) +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Marshaller</span>( + <span class="identifier">Func</span><T, <span class="keyword">array</span><<span class="identifier">unsigned char</span>>^>^ <span class="parameter">serializer</span>, + <span class="identifier">Func</span><<span class="keyword">array</span><<span class="identifier">unsigned char</span>>^, T>^ <span class="parameter">deserializer</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">serializer</span> : <span class="identifier">Func</span><'T, <span class="identifier">byte</span>[]> * + <span class="parameter">deserializer</span> : <span class="identifier">Func</span><<span class="identifier">byte</span>[], 'T> <span class="keyword">-></span> <span class="identifier">Marshaller</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">serializer</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/bb549151" target="_blank">System<span id="LSTA9F49B0_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Func</a><span id="LSTA9F49B0_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_Marshaller_1.htm"><span class="typeparameter">T</span></a>, <span id="LSTA9F49B0_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_4?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/yyb1w04y" target="_blank">Byte</a><span id="LSTA9F49B0_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_5?cpp=>|vb=()|nu=[]");</script><span id="LSTA9F49B0_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_6?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Function that will be used to serialize messages.</dd><dt><span class="parameter">deserializer</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/bb549151" target="_blank">System<span id="LSTA9F49B0_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Func</a><span id="LSTA9F49B0_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span id="LSTA9F49B0_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_9?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/yyb1w04y" target="_blank">Byte</a><span id="LSTA9F49B0_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_10?cpp=>|vb=()|nu=[]");</script>, <a href="T_Grpc_Core_Marshaller_1.htm"><span class="typeparameter">T</span></a><span id="LSTA9F49B0_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_11?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Function that will be used to deserialize messages.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Marshaller_1.htm">Marshaller<span id="LSTA9F49B0_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_12?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTA9F49B0_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9F49B0_13?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..61818afdb6 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Marshallers_Create__1.htm @@ -0,0 +1,18 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Marshallers.Create(T) Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Create%3CT%3E method" /><meta name="System.Keywords" content="Create(Of T) method" /><meta name="System.Keywords" content="Marshallers.Create%3CT%3E method" /><meta name="System.Keywords" content="Marshallers.Create(Of T) method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Marshallers.Create``1" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Marshallers.Create``1(System.Func{``0,System.Byte[]},System.Func{System.Byte[],``0})" /><meta name="Description" content="Creates a marshaller from specified serializer and deserializer." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Marshallers_Create__1" /><meta name="guid" content="M_Grpc_Core_Marshallers_Create__1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Marshallers.htm" title="Marshallers Methods" tocid="Methods_T_Grpc_Core_Marshallers">Marshallers Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Marshallers_Create__1.htm" title="Create(T) Method " tocid="M_Grpc_Core_Marshallers_Create__1">Create(T) Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Marshallers<span id="LST736DAF32_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_0?cpp=::|nu=.");</script>Create<span id="LST736DAF32_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST736DAF32_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a marshaller from specified serializer and deserializer. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">Marshaller</span><T> <span class="identifier">Create</span><T>( + <span class="identifier">Func</span><T, <span class="identifier">byte</span>[]> <span class="parameter">serializer</span>, + <span class="identifier">Func</span><<span class="identifier">byte</span>[], T> <span class="parameter">deserializer</span> +) +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">Create</span>(<span class="keyword">Of</span> T) ( + <span class="parameter">serializer</span> <span class="keyword">As</span> <span class="identifier">Func</span>(<span class="keyword">Of</span> T, <span class="identifier">Byte</span>()), + <span class="parameter">deserializer</span> <span class="keyword">As</span> <span class="identifier">Func</span>(<span class="keyword">Of</span> <span class="identifier">Byte</span>(), T) +) <span class="keyword">As</span> <span class="identifier">Marshaller</span>(<span class="keyword">Of</span> T)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">static</span> <span class="identifier">Marshaller</span><T> <span class="identifier">Create</span>( + <span class="identifier">Func</span><T, <span class="keyword">array</span><<span class="identifier">unsigned char</span>>^>^ <span class="parameter">serializer</span>, + <span class="identifier">Func</span><<span class="keyword">array</span><<span class="identifier">unsigned char</span>>^, T>^ <span class="parameter">deserializer</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">Create</span> : + <span class="parameter">serializer</span> : <span class="identifier">Func</span><'T, <span class="identifier">byte</span>[]> * + <span class="parameter">deserializer</span> : <span class="identifier">Func</span><<span class="identifier">byte</span>[], 'T> <span class="keyword">-></span> <span class="identifier">Marshaller</span><'T> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">serializer</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/bb549151" target="_blank">System<span id="LST736DAF32_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Func</a><span id="LST736DAF32_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span>, <span id="LST736DAF32_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_5?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/yyb1w04y" target="_blank">Byte</a><span id="LST736DAF32_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_6?cpp=>|vb=()|nu=[]");</script><span id="LST736DAF32_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="serializer"/> documentation for "M:Grpc.Core.Marshallers.Create``1(System.Func{``0,System.Byte[]},System.Func{System.Byte[],``0})"]</p></dd><dt><span class="parameter">deserializer</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/bb549151" target="_blank">System<span id="LST736DAF32_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Func</a><span id="LST736DAF32_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_9?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span id="LST736DAF32_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_10?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/yyb1w04y" target="_blank">Byte</a><span id="LST736DAF32_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_11?cpp=>|vb=()|nu=[]");</script>, <span class="selflink"><span class="typeparameter">T</span></span><span id="LST736DAF32_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_12?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="deserializer"/> documentation for "M:Grpc.Core.Marshallers.Create``1(System.Func{``0,System.Byte[]},System.Func{System.Byte[],``0})"]</p></dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Marshallers.Create``1(System.Func{``0,System.Byte[]},System.Func{System.Byte[],``0})"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_Marshaller_1.htm">Marshaller</a><span id="LST736DAF32_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_13?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LST736DAF32_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736DAF32_14?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Marshallers.htm">Marshallers Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c8137c6c11 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Add Method (Metadata.Entry)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.Add(Grpc.Core.Metadata.Entry)" /><meta name="Description" content="summaryM:Grpc.Core.Metadata.Add(Grpc.Core.Metadata.Entry)" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_Add" /><meta name="guid" content="M_Grpc_Core_Metadata_Add" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add.htm" title="Add Method (Metadata.Entry)" tocid="M_Grpc_Core_Metadata_Add">Add Method (Metadata.Entry)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add_1.htm" title="Add Method (String, Byte[])" tocid="M_Grpc_Core_Metadata_Add_1">Add Method (String, Byte[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add_2.htm" title="Add Method (String, String)" tocid="M_Grpc_Core_Metadata_Add_2">Add Method (String, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LSTA6FD5627_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_0?cpp=::|nu=.");</script>Add Method (Metadata<span id="LSTA6FD5627_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_1?cpp=::|nu=.");</script>Entry)</td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "M:Grpc.Core.Metadata.Add(Grpc.Core.Metadata.Entry)"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Add</span>( + <span class="identifier">Metadata<span id="LSTA6FD5627_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="parameter">item</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Add</span> ( + <span class="parameter">item</span> <span class="keyword">As</span> <span class="identifier">Metadata<span id="LSTA6FD5627_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Add</span>( + <span class="identifier">Metadata<span id="LSTA6FD5627_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="parameter">item</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Add</span> : + <span class="parameter">item</span> : <span class="identifier">Metadata<span id="LSTA6FD5627_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Add</span> : + <span class="parameter">item</span> : <span class="identifier">Metadata<span id="LSTA6FD5627_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">item</span></dt><dd>Type: <a href="T_Grpc_Core_Metadata_Entry.htm">Grpc.Core<span id="LSTA6FD5627_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Metadata<span id="LSTA6FD5627_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Add(Grpc.Core.Metadata.Entry)"]</p></dd></dl><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/63ywd54z" target="_blank">ICollection<span id="LSTA6FD5627_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_9?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTA6FD5627_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_10?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LSTA6FD5627_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA6FD5627_11?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Add(T)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Metadata_Add.htm">Add Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..6240e9bbe2 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_1.htm @@ -0,0 +1,14 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Add Method (String, Byte[])</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.Add(System.String,System.Byte[])" /><meta name="Description" content="summaryM:Grpc.Core.Metadata.Add(System.String,System.Byte[])" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_Add_1" /><meta name="guid" content="M_Grpc_Core_Metadata_Add_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add.htm" title="Add Method (Metadata.Entry)" tocid="M_Grpc_Core_Metadata_Add">Add Method (Metadata.Entry)</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add_1.htm" title="Add Method (String, Byte[])" tocid="M_Grpc_Core_Metadata_Add_1">Add Method (String, Byte[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add_2.htm" title="Add Method (String, String)" tocid="M_Grpc_Core_Metadata_Add_2">Add Method (String, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST8D3F14CE_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8D3F14CE_0?cpp=::|nu=.");</script>Add Method (String, <span id="LST8D3F14CE_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8D3F14CE_1?cpp=array<");</script>Byte<span id="LST8D3F14CE_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8D3F14CE_2?cpp=>|vb=()|nu=[]");</script>)</td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.Byte[])"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Add</span>( + <span class="identifier">string</span> <span class="parameter">key</span>, + <span class="identifier">byte</span>[] <span class="parameter">valueBytes</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Add</span> ( + <span class="parameter">key</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">valueBytes</span> <span class="keyword">As</span> <span class="identifier">Byte</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">void</span> <span class="identifier">Add</span>( + <span class="identifier">String</span>^ <span class="parameter">key</span>, + <span class="keyword">array</span><<span class="identifier">unsigned char</span>>^ <span class="parameter">valueBytes</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Add</span> : + <span class="parameter">key</span> : <span class="identifier">string</span> * + <span class="parameter">valueBytes</span> : <span class="identifier">byte</span>[] <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">key</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST8D3F14CE_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8D3F14CE_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="key"/> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.Byte[])"]</p></dd><dt><span class="parameter">valueBytes</span></dt><dd>Type: <span id="LST8D3F14CE_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8D3F14CE_4?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/yyb1w04y" target="_blank">System<span id="LST8D3F14CE_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8D3F14CE_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Byte</a><span id="LST8D3F14CE_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8D3F14CE_6?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="valueBytes"/> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.Byte[])"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Metadata_Add.htm">Add Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..54030d4c1c --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_2.htm @@ -0,0 +1,14 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Add Method (String, String)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.Add(System.String,System.String)" /><meta name="Description" content="summaryM:Grpc.Core.Metadata.Add(System.String,System.String)" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_Add_2" /><meta name="guid" content="M_Grpc_Core_Metadata_Add_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add.htm" title="Add Method (Metadata.Entry)" tocid="M_Grpc_Core_Metadata_Add">Add Method (Metadata.Entry)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add_1.htm" title="Add Method (String, Byte[])" tocid="M_Grpc_Core_Metadata_Add_1">Add Method (String, Byte[])</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add_2.htm" title="Add Method (String, String)" tocid="M_Grpc_Core_Metadata_Add_2">Add Method (String, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LSTB5FDEA85_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB5FDEA85_0?cpp=::|nu=.");</script>Add Method (String, String)</td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.String)"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Add</span>( + <span class="identifier">string</span> <span class="parameter">key</span>, + <span class="identifier">string</span> <span class="parameter">value</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Add</span> ( + <span class="parameter">key</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">value</span> <span class="keyword">As</span> <span class="identifier">String</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">void</span> <span class="identifier">Add</span>( + <span class="identifier">String</span>^ <span class="parameter">key</span>, + <span class="identifier">String</span>^ <span class="parameter">value</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Add</span> : + <span class="parameter">key</span> : <span class="identifier">string</span> * + <span class="parameter">value</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">key</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTB5FDEA85_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB5FDEA85_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="key"/> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.String)"]</p></dd><dt><span class="parameter">value</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTB5FDEA85_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB5FDEA85_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="value"/> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.String)"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Metadata_Add.htm">Add Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..63b79b103e --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Clear.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Clear Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Clear method" /><meta name="System.Keywords" content="Metadata.Clear method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Clear" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.Clear" /><meta name="Description" content="summaryM:Grpc.Core.Metadata.Clear" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_Clear" /><meta name="guid" content="M_Grpc_Core_Metadata_Clear" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Clear.htm" title="Clear Method " tocid="M_Grpc_Core_Metadata_Clear">Clear Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Contains.htm" title="Contains Method " tocid="M_Grpc_Core_Metadata_Contains">Contains Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_CopyTo.htm" title="CopyTo Method " tocid="M_Grpc_Core_Metadata_CopyTo">CopyTo Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Metadata_GetEnumerator">GetEnumerator Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_IndexOf.htm" title="IndexOf Method " tocid="M_Grpc_Core_Metadata_IndexOf">IndexOf Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Insert.htm" title="Insert Method " tocid="M_Grpc_Core_Metadata_Insert">Insert Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Remove.htm" title="Remove Method " tocid="M_Grpc_Core_Metadata_Remove">Remove Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_RemoveAt.htm" title="RemoveAt Method " tocid="M_Grpc_Core_Metadata_RemoveAt">RemoveAt Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST9CAE7D56_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9CAE7D56_0?cpp=::|nu=.");</script>Clear Method </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "M:Grpc.Core.Metadata.Clear"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Clear</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Clear</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Clear</span>() <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Clear</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Clear</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/5axy4fbh" target="_blank">ICollection<span id="LST9CAE7D56_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9CAE7D56_1?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9CAE7D56_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9CAE7D56_2?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LST9CAE7D56_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9CAE7D56_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Clear<span id="LST9CAE7D56_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9CAE7D56_4?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..25711d28fa --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Contains.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Contains Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Contains method" /><meta name="System.Keywords" content="Metadata.Contains method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Contains" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.Contains(Grpc.Core.Metadata.Entry)" /><meta name="Description" content="summaryM:Grpc.Core.Metadata.Contains(Grpc.Core.Metadata.Entry)" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_Contains" /><meta name="guid" content="M_Grpc_Core_Metadata_Contains" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Clear.htm" title="Clear Method " tocid="M_Grpc_Core_Metadata_Clear">Clear Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Contains.htm" title="Contains Method " tocid="M_Grpc_Core_Metadata_Contains">Contains Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_CopyTo.htm" title="CopyTo Method " tocid="M_Grpc_Core_Metadata_CopyTo">CopyTo Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Metadata_GetEnumerator">GetEnumerator Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_IndexOf.htm" title="IndexOf Method " tocid="M_Grpc_Core_Metadata_IndexOf">IndexOf Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Insert.htm" title="Insert Method " tocid="M_Grpc_Core_Metadata_Insert">Insert Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Remove.htm" title="Remove Method " tocid="M_Grpc_Core_Metadata_Remove">Remove Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_RemoveAt.htm" title="RemoveAt Method " tocid="M_Grpc_Core_Metadata_RemoveAt">RemoveAt Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LSTD24E38ED_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD24E38ED_0?cpp=::|nu=.");</script>Contains Method </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "M:Grpc.Core.Metadata.Contains(Grpc.Core.Metadata.Entry)"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">bool</span> <span class="identifier">Contains</span>( + <span class="identifier">Metadata<span id="LSTD24E38ED_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD24E38ED_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="parameter">item</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">Contains</span> ( + <span class="parameter">item</span> <span class="keyword">As</span> <span class="identifier">Metadata<span id="LSTD24E38ED_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD24E38ED_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> +) <span class="keyword">As</span> <span class="identifier">Boolean</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="identifier">bool</span> <span class="identifier">Contains</span>( + <span class="identifier">Metadata<span id="LSTD24E38ED_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD24E38ED_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="parameter">item</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Contains</span> : + <span class="parameter">item</span> : <span class="identifier">Metadata<span id="LSTD24E38ED_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD24E38ED_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">-></span> <span class="identifier">bool</span> +<span class="keyword">override</span> <span class="identifier">Contains</span> : + <span class="parameter">item</span> : <span class="identifier">Metadata<span id="LSTD24E38ED_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD24E38ED_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">-></span> <span class="identifier">bool</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">item</span></dt><dd>Type: <a href="T_Grpc_Core_Metadata_Entry.htm">Grpc.Core<span id="LSTD24E38ED_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD24E38ED_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Metadata<span id="LSTD24E38ED_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD24E38ED_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Contains(Grpc.Core.Metadata.Entry)"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">Boolean</a><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/k5cf1d56" target="_blank">ICollection<span id="LSTD24E38ED_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD24E38ED_8?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTD24E38ED_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD24E38ED_9?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LSTD24E38ED_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD24E38ED_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Contains(T)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..151dc2e4cd --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_CopyTo.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.CopyTo Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CopyTo method" /><meta name="System.Keywords" content="Metadata.CopyTo method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.CopyTo" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.CopyTo(Grpc.Core.Metadata.Entry[],System.Int32)" /><meta name="Description" content="summaryM:Grpc.Core.Metadata.CopyTo(Grpc.Core.Metadata.Entry[],System.Int32)" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_CopyTo" /><meta name="guid" content="M_Grpc_Core_Metadata_CopyTo" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Clear.htm" title="Clear Method " tocid="M_Grpc_Core_Metadata_Clear">Clear Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Contains.htm" title="Contains Method " tocid="M_Grpc_Core_Metadata_Contains">Contains Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_CopyTo.htm" title="CopyTo Method " tocid="M_Grpc_Core_Metadata_CopyTo">CopyTo Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Metadata_GetEnumerator">GetEnumerator Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_IndexOf.htm" title="IndexOf Method " tocid="M_Grpc_Core_Metadata_IndexOf">IndexOf Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Insert.htm" title="Insert Method " tocid="M_Grpc_Core_Metadata_Insert">Insert Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Remove.htm" title="Remove Method " tocid="M_Grpc_Core_Metadata_Remove">Remove Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_RemoveAt.htm" title="RemoveAt Method " tocid="M_Grpc_Core_Metadata_RemoveAt">RemoveAt Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST9AE6E237_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_0?cpp=::|nu=.");</script>CopyTo Method </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "M:Grpc.Core.Metadata.CopyTo(Grpc.Core.Metadata.Entry[],System.Int32)"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">CopyTo</span>( + <span class="identifier">Metadata<span id="LST9AE6E237_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>[] <span class="parameter">array</span>, + <span class="identifier">int</span> <span class="parameter">arrayIndex</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">CopyTo</span> ( + <span class="parameter">array</span> <span class="keyword">As</span> <span class="identifier">Metadata<span id="LST9AE6E237_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>(), + <span class="parameter">arrayIndex</span> <span class="keyword">As</span> <span class="identifier">Integer</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">CopyTo</span>( + <span class="keyword">array</span><<span class="identifier">Metadata<span id="LST9AE6E237_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>>^ <span class="parameter">array</span>, + <span class="identifier">int</span> <span class="parameter">arrayIndex</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">CopyTo</span> : + <span class="parameter">array</span> : <span class="identifier">Metadata<span id="LST9AE6E237_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>[] * + <span class="parameter">arrayIndex</span> : <span class="identifier">int</span> <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">CopyTo</span> : + <span class="parameter">array</span> : <span class="identifier">Metadata<span id="LST9AE6E237_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>[] * + <span class="parameter">arrayIndex</span> : <span class="identifier">int</span> <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">array</span></dt><dd>Type: <span id="LST9AE6E237_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_6?cpp=array<");</script><a href="T_Grpc_Core_Metadata_Entry.htm">Grpc.Core<span id="LST9AE6E237_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Metadata<span id="LST9AE6E237_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a><span id="LST9AE6E237_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_9?cpp=>|vb=()|nu=[]");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="array"/> documentation for "M:Grpc.Core.Metadata.CopyTo(Grpc.Core.Metadata.Entry[],System.Int32)"]</p></dd><dt><span class="parameter">arrayIndex</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LST9AE6E237_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="arrayIndex"/> documentation for "M:Grpc.Core.Metadata.CopyTo(Grpc.Core.Metadata.Entry[],System.Int32)"]</p></dd></dl><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/0efx51xw" target="_blank">ICollection<span id="LST9AE6E237_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_11?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9AE6E237_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_12?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LST9AE6E237_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_13?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>CopyTo(<span id="LST9AE6E237_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_14?cpp=array<");</script>T<span id="LST9AE6E237_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AE6E237_15?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>, Int32)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..88c335739a --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry_ToString.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Entry.ToString Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ToString method" /><meta name="System.Keywords" content="Metadata.Entry.ToString method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry.ToString" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.Entry.ToString" /><meta name="Description" content="Returns a that represents the current ." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_Entry_ToString" /><meta name="guid" content="M_Grpc_Core_Metadata_Entry_ToString" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata_Entry.htm" title="Entry Methods" tocid="Methods_T_Grpc_Core_Metadata_Entry">Entry Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Entry_ToString.htm" title="ToString Method " tocid="M_Grpc_Core_Metadata_Entry_ToString">ToString Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST510AC259_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST510AC259_0?cpp=::|nu=.");</script>Entry<span id="LST510AC259_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST510AC259_1?cpp=::|nu=.");</script>ToString Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Returns a <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a> that represents the current <a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST510AC259_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST510AC259_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a>. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">override</span> <span class="identifier">string</span> <span class="identifier">ToString</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Overrides</span> <span class="keyword">Function</span> <span class="identifier">ToString</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="identifier">String</span>^ <span class="identifier">ToString</span>() <span class="keyword">override</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">ToString</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">string</span> +<span class="keyword">override</span> <span class="identifier">ToString</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">string</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST510AC259_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST510AC259_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..775e8b5a94 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Entry Constructor (String, Byte[])</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.Entry.#ctor(System.String,System.Byte[])" /><meta name="Description" content="Initializes a new instance of the struct with a binary value." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_Entry__ctor" /><meta name="guid" content="M_Grpc_Core_Metadata_Entry__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Entry__ctor.htm" title="Entry Constructor " tocid="Overload_Grpc_Core_Metadata_Entry__ctor">Entry Constructor </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Entry__ctor.htm" title="Metadata.Entry Constructor (String, Byte[])" tocid="M_Grpc_Core_Metadata_Entry__ctor">Metadata.Entry Constructor (String, Byte[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Entry__ctor_1.htm" title="Metadata.Entry Constructor (String, String)" tocid="M_Grpc_Core_Metadata_Entry__ctor_1">Metadata.Entry Constructor (String, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LSTBEFDA85C_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBEFDA85C_0?cpp=::|nu=.");</script>Entry Constructor (String, <span id="LSTBEFDA85C_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBEFDA85C_1?cpp=array<");</script>Byte<span id="LSTBEFDA85C_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBEFDA85C_2?cpp=>|vb=()|nu=[]");</script>)</td></tr></table><span class="introStyle"></span><div class="summary"> + Initializes a new instance of the <a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LSTBEFDA85C_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBEFDA85C_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a> struct with a binary value. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Entry</span>( + <span class="identifier">string</span> <span class="parameter">key</span>, + <span class="identifier">byte</span>[] <span class="parameter">valueBytes</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">key</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">valueBytes</span> <span class="keyword">As</span> <span class="identifier">Byte</span>() +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Entry</span>( + <span class="identifier">String</span>^ <span class="parameter">key</span>, + <span class="keyword">array</span><<span class="identifier">unsigned char</span>>^ <span class="parameter">valueBytes</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">key</span> : <span class="identifier">string</span> * + <span class="parameter">valueBytes</span> : <span class="identifier">byte</span>[] <span class="keyword">-></span> <span class="identifier">Entry</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">key</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTBEFDA85C_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBEFDA85C_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Metadata key, needs to have suffix indicating a binary valued metadata entry.</dd><dt><span class="parameter">valueBytes</span></dt><dd>Type: <span id="LSTBEFDA85C_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBEFDA85C_5?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/yyb1w04y" target="_blank">System<span id="LSTBEFDA85C_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBEFDA85C_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Byte</a><span id="LSTBEFDA85C_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBEFDA85C_7?cpp=>|vb=()|nu=[]");</script><br />Value bytes.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LSTBEFDA85C_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBEFDA85C_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Structure</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Metadata_Entry__ctor.htm">Metadata<span id="LSTBEFDA85C_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBEFDA85C_9?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..355545e1ac --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor_1.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Entry Constructor (String, String)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.Entry.#ctor(System.String,System.String)" /><meta name="Description" content="Initializes a new instance of the struct holding an ASCII value." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_Entry__ctor_1" /><meta name="guid" content="M_Grpc_Core_Metadata_Entry__ctor_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Entry__ctor.htm" title="Entry Constructor " tocid="Overload_Grpc_Core_Metadata_Entry__ctor">Entry Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Entry__ctor.htm" title="Metadata.Entry Constructor (String, Byte[])" tocid="M_Grpc_Core_Metadata_Entry__ctor">Metadata.Entry Constructor (String, Byte[])</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Entry__ctor_1.htm" title="Metadata.Entry Constructor (String, String)" tocid="M_Grpc_Core_Metadata_Entry__ctor_1">Metadata.Entry Constructor (String, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LSTEBD28067_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEBD28067_0?cpp=::|nu=.");</script>Entry Constructor (String, String)</td></tr></table><span class="introStyle"></span><div class="summary"> + Initializes a new instance of the <a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LSTEBD28067_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEBD28067_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a> struct holding an ASCII value. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Entry</span>( + <span class="identifier">string</span> <span class="parameter">key</span>, + <span class="identifier">string</span> <span class="parameter">value</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">key</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">value</span> <span class="keyword">As</span> <span class="identifier">String</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Entry</span>( + <span class="identifier">String</span>^ <span class="parameter">key</span>, + <span class="identifier">String</span>^ <span class="parameter">value</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">key</span> : <span class="identifier">string</span> * + <span class="parameter">value</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="identifier">Entry</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">key</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTEBD28067_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEBD28067_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Metadata key, must not use suffix indicating a binary valued metadata entry.</dd><dt><span class="parameter">value</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTEBD28067_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEBD28067_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Value string. Only ASCII characters are allowed.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LSTEBD28067_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEBD28067_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Structure</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Metadata_Entry__ctor.htm">Metadata<span id="LSTEBD28067_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEBD28067_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a8720d73a1 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_GetEnumerator.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.GetEnumerator Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetEnumerator method" /><meta name="System.Keywords" content="Metadata.GetEnumerator method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.GetEnumerator" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.GetEnumerator" /><meta name="Description" content="summaryM:Grpc.Core.Metadata.GetEnumerator" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_GetEnumerator" /><meta name="guid" content="M_Grpc_Core_Metadata_GetEnumerator" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Clear.htm" title="Clear Method " tocid="M_Grpc_Core_Metadata_Clear">Clear Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Contains.htm" title="Contains Method " tocid="M_Grpc_Core_Metadata_Contains">Contains Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_CopyTo.htm" title="CopyTo Method " tocid="M_Grpc_Core_Metadata_CopyTo">CopyTo Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Metadata_GetEnumerator">GetEnumerator Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_IndexOf.htm" title="IndexOf Method " tocid="M_Grpc_Core_Metadata_IndexOf">IndexOf Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Insert.htm" title="Insert Method " tocid="M_Grpc_Core_Metadata_Insert">Insert Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Remove.htm" title="Remove Method " tocid="M_Grpc_Core_Metadata_Remove">Remove Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_RemoveAt.htm" title="RemoveAt Method " tocid="M_Grpc_Core_Metadata_RemoveAt">RemoveAt Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST72131FD7_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_0?cpp=::|nu=.");</script>GetEnumerator Method </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "M:Grpc.Core.Metadata.GetEnumerator"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">IEnumerator</span><<span class="identifier">Metadata<span id="LST72131FD7_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>> <span class="identifier">GetEnumerator</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetEnumerator</span> <span class="keyword">As</span> <span class="identifier">IEnumerator</span>(<span class="keyword">Of</span> <span class="identifier">Metadata<span id="LST72131FD7_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="identifier">IEnumerator</span><<span class="identifier">Metadata<span id="LST72131FD7_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>>^ <span class="identifier">GetEnumerator</span>() <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">GetEnumerator</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">IEnumerator</span><<span class="identifier">Metadata<span id="LST72131FD7_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>> +<span class="keyword">override</span> <span class="identifier">GetEnumerator</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">IEnumerator</span><<span class="identifier">Metadata<span id="LST72131FD7_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/78dfe2yb" target="_blank">IEnumerator</a><span id="LST72131FD7_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST72131FD7_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a><span id="LST72131FD7_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_8?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/s793z9y2" target="_blank">IEnumerable<span id="LST72131FD7_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_9?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST72131FD7_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_10?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LST72131FD7_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_11?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>GetEnumerator<span id="LST72131FD7_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72131FD7_12?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..e1791e7231 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_IndexOf.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.IndexOf Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IndexOf method" /><meta name="System.Keywords" content="Metadata.IndexOf method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.IndexOf" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.IndexOf(Grpc.Core.Metadata.Entry)" /><meta name="Description" content="summaryM:Grpc.Core.Metadata.IndexOf(Grpc.Core.Metadata.Entry)" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_IndexOf" /><meta name="guid" content="M_Grpc_Core_Metadata_IndexOf" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Clear.htm" title="Clear Method " tocid="M_Grpc_Core_Metadata_Clear">Clear Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Contains.htm" title="Contains Method " tocid="M_Grpc_Core_Metadata_Contains">Contains Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_CopyTo.htm" title="CopyTo Method " tocid="M_Grpc_Core_Metadata_CopyTo">CopyTo Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Metadata_GetEnumerator">GetEnumerator Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_IndexOf.htm" title="IndexOf Method " tocid="M_Grpc_Core_Metadata_IndexOf">IndexOf Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Insert.htm" title="Insert Method " tocid="M_Grpc_Core_Metadata_Insert">Insert Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Remove.htm" title="Remove Method " tocid="M_Grpc_Core_Metadata_Remove">Remove Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_RemoveAt.htm" title="RemoveAt Method " tocid="M_Grpc_Core_Metadata_RemoveAt">RemoveAt Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST107B9B5_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST107B9B5_0?cpp=::|nu=.");</script>IndexOf Method </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "M:Grpc.Core.Metadata.IndexOf(Grpc.Core.Metadata.Entry)"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">int</span> <span class="identifier">IndexOf</span>( + <span class="identifier">Metadata<span id="LST107B9B5_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST107B9B5_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="parameter">item</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">IndexOf</span> ( + <span class="parameter">item</span> <span class="keyword">As</span> <span class="identifier">Metadata<span id="LST107B9B5_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST107B9B5_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> +) <span class="keyword">As</span> <span class="identifier">Integer</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="identifier">int</span> <span class="identifier">IndexOf</span>( + <span class="identifier">Metadata<span id="LST107B9B5_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST107B9B5_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="parameter">item</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">IndexOf</span> : + <span class="parameter">item</span> : <span class="identifier">Metadata<span id="LST107B9B5_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST107B9B5_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">-></span> <span class="identifier">int</span> +<span class="keyword">override</span> <span class="identifier">IndexOf</span> : + <span class="parameter">item</span> : <span class="identifier">Metadata<span id="LST107B9B5_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST107B9B5_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">-></span> <span class="identifier">int</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">item</span></dt><dd>Type: <a href="T_Grpc_Core_Metadata_Entry.htm">Grpc.Core<span id="LST107B9B5_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST107B9B5_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Metadata<span id="LST107B9B5_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST107B9B5_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.IndexOf(Grpc.Core.Metadata.Entry)"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">Int32</a><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/3w0148af" target="_blank">IList<span id="LST107B9B5_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST107B9B5_8?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST107B9B5_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST107B9B5_9?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LST107B9B5_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST107B9B5_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IndexOf(T)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a6f0cfd163 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Insert.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Insert Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Insert method" /><meta name="System.Keywords" content="Metadata.Insert method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Insert" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.Insert(System.Int32,Grpc.Core.Metadata.Entry)" /><meta name="Description" content="summaryM:Grpc.Core.Metadata.Insert(System.Int32,Grpc.Core.Metadata.Entry)" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_Insert" /><meta name="guid" content="M_Grpc_Core_Metadata_Insert" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Clear.htm" title="Clear Method " tocid="M_Grpc_Core_Metadata_Clear">Clear Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Contains.htm" title="Contains Method " tocid="M_Grpc_Core_Metadata_Contains">Contains Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_CopyTo.htm" title="CopyTo Method " tocid="M_Grpc_Core_Metadata_CopyTo">CopyTo Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Metadata_GetEnumerator">GetEnumerator Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_IndexOf.htm" title="IndexOf Method " tocid="M_Grpc_Core_Metadata_IndexOf">IndexOf Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Insert.htm" title="Insert Method " tocid="M_Grpc_Core_Metadata_Insert">Insert Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Remove.htm" title="Remove Method " tocid="M_Grpc_Core_Metadata_Remove">Remove Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_RemoveAt.htm" title="RemoveAt Method " tocid="M_Grpc_Core_Metadata_RemoveAt">RemoveAt Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LSTDAE97622_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_0?cpp=::|nu=.");</script>Insert Method </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "M:Grpc.Core.Metadata.Insert(System.Int32,Grpc.Core.Metadata.Entry)"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Insert</span>( + <span class="identifier">int</span> <span class="parameter">index</span>, + <span class="identifier">Metadata<span id="LSTDAE97622_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="parameter">item</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Insert</span> ( + <span class="parameter">index</span> <span class="keyword">As</span> <span class="identifier">Integer</span>, + <span class="parameter">item</span> <span class="keyword">As</span> <span class="identifier">Metadata<span id="LSTDAE97622_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">Insert</span>( + <span class="identifier">int</span> <span class="parameter">index</span>, + <span class="identifier">Metadata<span id="LSTDAE97622_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="parameter">item</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Insert</span> : + <span class="parameter">index</span> : <span class="identifier">int</span> * + <span class="parameter">item</span> : <span class="identifier">Metadata<span id="LSTDAE97622_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">Insert</span> : + <span class="parameter">index</span> : <span class="identifier">int</span> * + <span class="parameter">item</span> : <span class="identifier">Metadata<span id="LSTDAE97622_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">index</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LSTDAE97622_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="index"/> documentation for "M:Grpc.Core.Metadata.Insert(System.Int32,Grpc.Core.Metadata.Entry)"]</p></dd><dt><span class="parameter">item</span></dt><dd>Type: <a href="T_Grpc_Core_Metadata_Entry.htm">Grpc.Core<span id="LSTDAE97622_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Metadata<span id="LSTDAE97622_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Insert(System.Int32,Grpc.Core.Metadata.Entry)"]</p></dd></dl><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/8zsfbxz8" target="_blank">IList<span id="LSTDAE97622_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_9?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTDAE97622_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_10?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LSTDAE97622_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE97622_11?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Insert(Int32, T)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..fda57bc458 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Remove.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Remove Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Remove method" /><meta name="System.Keywords" content="Metadata.Remove method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Remove" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.Remove(Grpc.Core.Metadata.Entry)" /><meta name="Description" content="summaryM:Grpc.Core.Metadata.Remove(Grpc.Core.Metadata.Entry)" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_Remove" /><meta name="guid" content="M_Grpc_Core_Metadata_Remove" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Clear.htm" title="Clear Method " tocid="M_Grpc_Core_Metadata_Clear">Clear Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Contains.htm" title="Contains Method " tocid="M_Grpc_Core_Metadata_Contains">Contains Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_CopyTo.htm" title="CopyTo Method " tocid="M_Grpc_Core_Metadata_CopyTo">CopyTo Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Metadata_GetEnumerator">GetEnumerator Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_IndexOf.htm" title="IndexOf Method " tocid="M_Grpc_Core_Metadata_IndexOf">IndexOf Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Insert.htm" title="Insert Method " tocid="M_Grpc_Core_Metadata_Insert">Insert Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Remove.htm" title="Remove Method " tocid="M_Grpc_Core_Metadata_Remove">Remove Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_RemoveAt.htm" title="RemoveAt Method " tocid="M_Grpc_Core_Metadata_RemoveAt">RemoveAt Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LSTF942BBA0_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF942BBA0_0?cpp=::|nu=.");</script>Remove Method </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "M:Grpc.Core.Metadata.Remove(Grpc.Core.Metadata.Entry)"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">bool</span> <span class="identifier">Remove</span>( + <span class="identifier">Metadata<span id="LSTF942BBA0_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF942BBA0_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="parameter">item</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">Remove</span> ( + <span class="parameter">item</span> <span class="keyword">As</span> <span class="identifier">Metadata<span id="LSTF942BBA0_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF942BBA0_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> +) <span class="keyword">As</span> <span class="identifier">Boolean</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="identifier">bool</span> <span class="identifier">Remove</span>( + <span class="identifier">Metadata<span id="LSTF942BBA0_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF942BBA0_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="parameter">item</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Remove</span> : + <span class="parameter">item</span> : <span class="identifier">Metadata<span id="LSTF942BBA0_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF942BBA0_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">-></span> <span class="identifier">bool</span> +<span class="keyword">override</span> <span class="identifier">Remove</span> : + <span class="parameter">item</span> : <span class="identifier">Metadata<span id="LSTF942BBA0_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF942BBA0_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">-></span> <span class="identifier">bool</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">item</span></dt><dd>Type: <a href="T_Grpc_Core_Metadata_Entry.htm">Grpc.Core<span id="LSTF942BBA0_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF942BBA0_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Metadata<span id="LSTF942BBA0_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF942BBA0_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Remove(Grpc.Core.Metadata.Entry)"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">Boolean</a><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/bye7h94w" target="_blank">ICollection<span id="LSTF942BBA0_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF942BBA0_8?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTF942BBA0_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF942BBA0_9?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LSTF942BBA0_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF942BBA0_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Remove(T)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..519eac63b7 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_RemoveAt.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.RemoveAt Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RemoveAt method" /><meta name="System.Keywords" content="Metadata.RemoveAt method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.RemoveAt" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.RemoveAt(System.Int32)" /><meta name="Description" content="summaryM:Grpc.Core.Metadata.RemoveAt(System.Int32)" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata_RemoveAt" /><meta name="guid" content="M_Grpc_Core_Metadata_RemoveAt" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Clear.htm" title="Clear Method " tocid="M_Grpc_Core_Metadata_Clear">Clear Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Contains.htm" title="Contains Method " tocid="M_Grpc_Core_Metadata_Contains">Contains Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_CopyTo.htm" title="CopyTo Method " tocid="M_Grpc_Core_Metadata_CopyTo">CopyTo Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Metadata_GetEnumerator">GetEnumerator Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_IndexOf.htm" title="IndexOf Method " tocid="M_Grpc_Core_Metadata_IndexOf">IndexOf Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Insert.htm" title="Insert Method " tocid="M_Grpc_Core_Metadata_Insert">Insert Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Remove.htm" title="Remove Method " tocid="M_Grpc_Core_Metadata_Remove">Remove Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_RemoveAt.htm" title="RemoveAt Method " tocid="M_Grpc_Core_Metadata_RemoveAt">RemoveAt Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST39A81B3A_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39A81B3A_0?cpp=::|nu=.");</script>RemoveAt Method </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "M:Grpc.Core.Metadata.RemoveAt(System.Int32)"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">RemoveAt</span>( + <span class="identifier">int</span> <span class="parameter">index</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">RemoveAt</span> ( + <span class="parameter">index</span> <span class="keyword">As</span> <span class="identifier">Integer</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">void</span> <span class="identifier">RemoveAt</span>( + <span class="identifier">int</span> <span class="parameter">index</span> +) <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">RemoveAt</span> : + <span class="parameter">index</span> : <span class="identifier">int</span> <span class="keyword">-></span> <span class="keyword">unit</span> +<span class="keyword">override</span> <span class="identifier">RemoveAt</span> : + <span class="parameter">index</span> : <span class="identifier">int</span> <span class="keyword">-></span> <span class="keyword">unit</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">index</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LST39A81B3A_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39A81B3A_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="index"/> documentation for "M:Grpc.Core.Metadata.RemoveAt(System.Int32)"]</p></dd></dl><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/c93ab5c9" target="_blank">IList<span id="LST39A81B3A_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39A81B3A_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST39A81B3A_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39A81B3A_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LST39A81B3A_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39A81B3A_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>RemoveAt(Int32)</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..844e6135cc --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata__ctor.htm @@ -0,0 +1,4 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Metadata class, constructor" /><meta name="System.Keywords" content="Metadata.Metadata constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Metadata" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Metadata.#ctor" /><meta name="Description" content="Initializes a new instance of Metadata." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Metadata__ctor" /><meta name="guid" content="M_Grpc_Core_Metadata__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata__ctor.htm" title="Metadata Constructor " tocid="M_Grpc_Core_Metadata__ctor">Metadata Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata.htm" title="Metadata Properties" tocid="Properties_T_Grpc_Core_Metadata">Metadata Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_Metadata.htm" title="Metadata Fields" tocid="Fields_T_Grpc_Core_Metadata">Metadata Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Initializes a new instance of <span class="code">Metadata</span>. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Metadata</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Metadata</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Metadata</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..7708571728 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Method_2__ctor.htm @@ -0,0 +1,27 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Method(TRequest, TResponse) Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E class, constructor" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse) class, constructor" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E.Method constructor" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse).Method constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.Method" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Method`2.#ctor(Grpc.Core.MethodType,System.String,System.String,Grpc.Core.Marshaller{`0},Grpc.Core.Marshaller{`1})" /><meta name="Description" content="Initializes a new instance of the Method class." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Method_2__ctor" /><meta name="guid" content="M_Grpc_Core_Method_2__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Method_2__ctor.htm" title="Method(TRequest, TResponse) Constructor " tocid="M_Grpc_Core_Method_2__ctor">Method(TRequest, TResponse) Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Method<span id="LSTA90ABCA2_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTA90ABCA2_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Initializes a new instance of the <span class="code">Method</span> class. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Method</span>( + <span class="identifier">MethodType</span> <span class="parameter">type</span>, + <span class="identifier">string</span> <span class="parameter">serviceName</span>, + <span class="identifier">string</span> <span class="parameter">name</span>, + <span class="identifier">Marshaller</span><TRequest> <span class="parameter">requestMarshaller</span>, + <span class="identifier">Marshaller</span><TResponse> <span class="parameter">responseMarshaller</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">type</span> <span class="keyword">As</span> <span class="identifier">MethodType</span>, + <span class="parameter">serviceName</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">name</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">requestMarshaller</span> <span class="keyword">As</span> <span class="identifier">Marshaller</span>(<span class="keyword">Of</span> TRequest), + <span class="parameter">responseMarshaller</span> <span class="keyword">As</span> <span class="identifier">Marshaller</span>(<span class="keyword">Of</span> TResponse) +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Method</span>( + <span class="identifier">MethodType</span> <span class="parameter">type</span>, + <span class="identifier">String</span>^ <span class="parameter">serviceName</span>, + <span class="identifier">String</span>^ <span class="parameter">name</span>, + <span class="identifier">Marshaller</span><TRequest> <span class="parameter">requestMarshaller</span>, + <span class="identifier">Marshaller</span><TResponse> <span class="parameter">responseMarshaller</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">type</span> : <span class="identifier">MethodType</span> * + <span class="parameter">serviceName</span> : <span class="identifier">string</span> * + <span class="parameter">name</span> : <span class="identifier">string</span> * + <span class="parameter">requestMarshaller</span> : <span class="identifier">Marshaller</span><'TRequest> * + <span class="parameter">responseMarshaller</span> : <span class="identifier">Marshaller</span><'TResponse> <span class="keyword">-></span> <span class="identifier">Method</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">type</span></dt><dd>Type: <a href="T_Grpc_Core_MethodType.htm">Grpc.Core<span id="LSTA90ABCA2_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>MethodType</a><br />Type of method.</dd><dt><span class="parameter">serviceName</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTA90ABCA2_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Name of service this method belongs to.</dd><dt><span class="parameter">name</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTA90ABCA2_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Unqualified name of the method.</dd><dt><span class="parameter">requestMarshaller</span></dt><dd>Type: <a href="T_Grpc_Core_Marshaller_1.htm">Grpc.Core<span id="LSTA90ABCA2_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Marshaller</a><span id="LSTA90ABCA2_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_Method_2.htm"><span class="typeparameter">TRequest</span></a><span id="LSTA90ABCA2_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Marshaller used for request messages.</dd><dt><span class="parameter">responseMarshaller</span></dt><dd>Type: <a href="T_Grpc_Core_Marshaller_1.htm">Grpc.Core<span id="LSTA90ABCA2_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Marshaller</a><span id="LSTA90ABCA2_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_9?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_Method_2.htm"><span class="typeparameter">TResponse</span></a><span id="LSTA90ABCA2_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_10?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Marshaller used for response messages.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Method_2.htm">Method<span id="LSTA90ABCA2_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_11?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA90ABCA2_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA90ABCA2_12?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0eacf485d3 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RpcException Constructor (Status)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.RpcException.#ctor(Grpc.Core.Status)" /><meta name="Description" content="Creates a new RpcException associated with given status." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_RpcException__ctor" /><meta name="guid" content="M_Grpc_Core_RpcException__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_RpcException__ctor.htm" title="RpcException Constructor " tocid="Overload_Grpc_Core_RpcException__ctor">RpcException Constructor </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_RpcException__ctor.htm" title="RpcException Constructor (Status)" tocid="M_Grpc_Core_RpcException__ctor">RpcException Constructor (Status)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_RpcException__ctor_1.htm" title="RpcException Constructor (Status, String)" tocid="M_Grpc_Core_RpcException__ctor_1">RpcException Constructor (Status, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">RpcException Constructor (Status)</td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a new <span class="code">RpcException</span> associated with given status. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">RpcException</span>( + <span class="identifier">Status</span> <span class="parameter">status</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">status</span> <span class="keyword">As</span> <span class="identifier">Status</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">RpcException</span>( + <span class="identifier">Status</span> <span class="parameter">status</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">status</span> : <span class="identifier">Status</span> <span class="keyword">-></span> <span class="identifier">RpcException</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">status</span></dt><dd>Type: <a href="T_Grpc_Core_Status.htm">Grpc.Core<span id="LST84587763_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST84587763_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Status</a><br />Resulting status of a call.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_RpcException.htm">RpcException Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_RpcException__ctor.htm">RpcException Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..d1611a2c41 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor_1.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RpcException Constructor (Status, String)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.RpcException.#ctor(Grpc.Core.Status,System.String)" /><meta name="Description" content="Creates a new RpcException associated with given status and message." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_RpcException__ctor_1" /><meta name="guid" content="M_Grpc_Core_RpcException__ctor_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_RpcException__ctor.htm" title="RpcException Constructor " tocid="Overload_Grpc_Core_RpcException__ctor">RpcException Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_RpcException__ctor.htm" title="RpcException Constructor (Status)" tocid="M_Grpc_Core_RpcException__ctor">RpcException Constructor (Status)</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_RpcException__ctor_1.htm" title="RpcException Constructor (Status, String)" tocid="M_Grpc_Core_RpcException__ctor_1">RpcException Constructor (Status, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">RpcException Constructor (Status, String)</td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a new <span class="code">RpcException</span> associated with given status and message. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">RpcException</span>( + <span class="identifier">Status</span> <span class="parameter">status</span>, + <span class="identifier">string</span> <span class="parameter">message</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">status</span> <span class="keyword">As</span> <span class="identifier">Status</span>, + <span class="parameter">message</span> <span class="keyword">As</span> <span class="identifier">String</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">RpcException</span>( + <span class="identifier">Status</span> <span class="parameter">status</span>, + <span class="identifier">String</span>^ <span class="parameter">message</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">status</span> : <span class="identifier">Status</span> * + <span class="parameter">message</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="identifier">RpcException</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">status</span></dt><dd>Type: <a href="T_Grpc_Core_Status.htm">Grpc.Core<span id="LSTFBC91421_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFBC91421_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Status</a><br />Resulting status of a call.</dd><dt><span class="parameter">message</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTFBC91421_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFBC91421_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />The exception message.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_RpcException.htm">RpcException Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_RpcException__ctor.htm">RpcException Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..40fbe7c30e --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext.CreatePropagationToken Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CreatePropagationToken method" /><meta name="System.Keywords" content="ServerCallContext.CreatePropagationToken method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.CreatePropagationToken" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ServerCallContext.CreatePropagationToken(Grpc.Core.ContextPropagationOptions)" /><meta name="Description" content="Creates a propagation token to be used to propagate call context to a child call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ServerCallContext_CreatePropagationToken" /><meta name="guid" content="M_Grpc_Core_ServerCallContext_CreatePropagationToken" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Methods" tocid="Methods_T_Grpc_Core_ServerCallContext">ServerCallContext Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm" title="CreatePropagationToken Method " tocid="M_Grpc_Core_ServerCallContext_CreatePropagationToken">CreatePropagationToken Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm" title="WriteResponseHeadersAsync Method " tocid="M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync">WriteResponseHeadersAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext<span id="LSTCF5DA64A_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCF5DA64A_0?cpp=::|nu=.");</script>CreatePropagationToken Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a propagation token to be used to propagate call context to a child call. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ContextPropagationToken</span> <span class="identifier">CreatePropagationToken</span>( + <span class="identifier">ContextPropagationOptions</span> <span class="parameter">options</span> = <span class="keyword">null</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">CreatePropagationToken</span> ( + Optional <span class="parameter">options</span> <span class="keyword">As</span> <span class="identifier">ContextPropagationOptions</span> = <span class="keyword">Nothing</span> +) <span class="keyword">As</span> <span class="identifier">ContextPropagationToken</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">ContextPropagationToken</span>^ <span class="identifier">CreatePropagationToken</span>( + <span class="identifier">ContextPropagationOptions</span>^ <span class="parameter">options</span> = <span class="keyword">nullptr</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">CreatePropagationToken</span> : + ?<span class="parameter">options</span> : <span class="identifier">ContextPropagationOptions</span> +(* Defaults: + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">options</span> = defaultArg <span class="identifier">options</span> <span class="keyword">null</span> +*) +<span class="keyword">-></span> <span class="identifier">ContextPropagationToken</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">options</span> (Optional)</dt><dd>Type: <a href="T_Grpc_Core_ContextPropagationOptions.htm">Grpc.Core<span id="LSTCF5DA64A_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCF5DA64A_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ContextPropagationOptions</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="options"/> documentation for "M:Grpc.Core.ServerCallContext.CreatePropagationToken(Grpc.Core.ContextPropagationOptions)"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_ContextPropagationToken.htm">ContextPropagationToken</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b62606fafd --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm @@ -0,0 +1,14 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext.WriteResponseHeadersAsync Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteResponseHeadersAsync method" /><meta name="System.Keywords" content="ServerCallContext.WriteResponseHeadersAsync method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.WriteResponseHeadersAsync" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ServerCallContext.WriteResponseHeadersAsync(Grpc.Core.Metadata)" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync" /><meta name="guid" content="M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Methods" tocid="Methods_T_Grpc_Core_ServerCallContext">ServerCallContext Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm" title="CreatePropagationToken Method " tocid="M_Grpc_Core_ServerCallContext_CreatePropagationToken">CreatePropagationToken Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm" title="WriteResponseHeadersAsync Method " tocid="M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync">WriteResponseHeadersAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext<span id="LSTCC9C7C69_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCC9C7C69_0?cpp=::|nu=.");</script>WriteResponseHeadersAsync Method </td></tr></table><span class="introStyle"></span><div class="summary"> + 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 <span class="code">WriteResponseHeadersAsync</span> haven't + been called yet. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span> <span class="identifier">WriteResponseHeadersAsync</span>( + <span class="identifier">Metadata</span> <span class="parameter">responseHeaders</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">WriteResponseHeadersAsync</span> ( + <span class="parameter">responseHeaders</span> <span class="keyword">As</span> <span class="identifier">Metadata</span> +) <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Task</span>^ <span class="identifier">WriteResponseHeadersAsync</span>( + <span class="identifier">Metadata</span>^ <span class="parameter">responseHeaders</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">WriteResponseHeadersAsync</span> : + <span class="parameter">responseHeaders</span> : <span class="identifier">Metadata</span> <span class="keyword">-></span> <span class="identifier">Task</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">responseHeaders</span></dt><dd>Type: <a href="T_Grpc_Core_Metadata.htm">Grpc.Core<span id="LSTCC9C7C69_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCC9C7C69_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Metadata</a><br />The response headers to send.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a><br />The task that finished once response headers have been written.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ec8b030d85 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ServerCredentials__ctor.htm @@ -0,0 +1,2 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCredentials Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerCredentials class, constructor" /><meta name="System.Keywords" content="ServerCredentials.ServerCredentials constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCredentials.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCredentials.ServerCredentials" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ServerCredentials.#ctor" /><meta name="Description" content="Grpc.Core.ServerCredentials" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ServerCredentials__ctor" /><meta name="guid" content="M_Grpc_Core_ServerCredentials__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerCredentials__ctor.htm" title="ServerCredentials Constructor " tocid="M_Grpc_Core_ServerCredentials__ctor">ServerCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Properties" tocid="Properties_T_Grpc_Core_ServerCredentials">ServerCredentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Methods" tocid="Methods_T_Grpc_Core_ServerCredentials">ServerCredentials Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCredentials Constructor </td></tr></table><span class="introStyle"></span><div class="summary">Initializes a new instance of the <a href="T_Grpc_Core_ServerCredentials.htm">ServerCredentials</a> class</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">protected</span> <span class="identifier">ServerCredentials</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Protected</span> <span class="keyword">Sub</span> <span class="identifier">New</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">protected</span>: +<span class="identifier">ServerCredentials</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">ServerCredentials</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCredentials.htm">ServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..4d29fd3c5b --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ServerPort__ctor.htm @@ -0,0 +1,19 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPort Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerPort class, constructor" /><meta name="System.Keywords" content="ServerPort.ServerPort constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort.ServerPort" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ServerPort.#ctor(System.String,System.Int32,Grpc.Core.ServerCredentials)" /><meta name="Description" content="Creates a new port on which server should listen." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ServerPort__ctor" /><meta name="guid" content="M_Grpc_Core_ServerPort__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerPort__ctor.htm" title="ServerPort Constructor " tocid="M_Grpc_Core_ServerPort__ctor">ServerPort Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerPort.htm" title="ServerPort Properties" tocid="Properties_T_Grpc_Core_ServerPort">ServerPort Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ServerPort.htm" title="ServerPort Methods" tocid="Methods_T_Grpc_Core_ServerPort">ServerPort Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ServerPort.htm" title="ServerPort Fields" tocid="Fields_T_Grpc_Core_ServerPort">ServerPort Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPort Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a new port on which server should listen. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ServerPort</span>( + <span class="identifier">string</span> <span class="parameter">host</span>, + <span class="identifier">int</span> <span class="parameter">port</span>, + <span class="identifier">ServerCredentials</span> <span class="parameter">credentials</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">host</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">port</span> <span class="keyword">As</span> <span class="identifier">Integer</span>, + <span class="parameter">credentials</span> <span class="keyword">As</span> <span class="identifier">ServerCredentials</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">ServerPort</span>( + <span class="identifier">String</span>^ <span class="parameter">host</span>, + <span class="identifier">int</span> <span class="parameter">port</span>, + <span class="identifier">ServerCredentials</span>^ <span class="parameter">credentials</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">host</span> : <span class="identifier">string</span> * + <span class="parameter">port</span> : <span class="identifier">int</span> * + <span class="parameter">credentials</span> : <span class="identifier">ServerCredentials</span> <span class="keyword">-></span> <span class="identifier">ServerPort</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">host</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST6079785F_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6079785F_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />the host</dd><dt><span class="parameter">port</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LST6079785F_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6079785F_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br />the port. If zero, an unused port is chosen automatically.</dd><dt><span class="parameter">credentials</span></dt><dd>Type: <a href="T_Grpc_Core_ServerCredentials.htm">Grpc.Core<span id="LST6079785F_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6079785F_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerCredentials</a><br />credentials to use to secure this port.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <br />The port on which server will be listening.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerPort.htm">ServerPort Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..2fadac3cf8 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm @@ -0,0 +1,22 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ServerServiceDefinition.Builder.AddMethod``2(Grpc.Core.Method{``0,``1},Grpc.Core.ClientStreamingServerMethod{``0,``1})" /><meta name="Description" content="Adds a definitions for a client streaming method." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2" /><meta name="guid" content="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="Builder Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition_Builder">Builder Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm" title="AddMethod Method " tocid="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod">AddMethod Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerServiceDefinition<span id="LST4448590B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_0?cpp=::|nu=.");</script>Builder<span id="LST4448590B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_1?cpp=::|nu=.");</script>AddMethod<span id="LST4448590B_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST4448590B_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method (Method<span id="LST4448590B_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST4448590B_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, ClientStreamingServerMethod<span id="LST4448590B_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST4448590B_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</td></tr></table><span class="introStyle"></span><div class="summary"> + Adds a definitions for a client streaming method. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ServerServiceDefinition<span id="LST4448590B_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span> <span class="identifier">AddMethod</span><TRequest, TResponse>( + <span class="identifier">Method</span><TRequest, TResponse> <span class="parameter">method</span>, + <span class="identifier">ClientStreamingServerMethod</span><TRequest, TResponse> <span class="parameter">handler</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">AddMethod</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">method</span> <span class="keyword">As</span> <span class="identifier">Method</span>(<span class="keyword">Of</span> TRequest, TResponse), + <span class="parameter">handler</span> <span class="keyword">As</span> <span class="identifier">ClientStreamingServerMethod</span>(<span class="keyword">Of</span> TRequest, TResponse) +) <span class="keyword">As</span> <span class="identifier">ServerServiceDefinition<span id="LST4448590B_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_9?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="identifier">ServerServiceDefinition<span id="LST4448590B_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span>^ <span class="identifier">AddMethod</span>( + <span class="identifier">Method</span><TRequest, TResponse>^ <span class="parameter">method</span>, + <span class="identifier">ClientStreamingServerMethod</span><TRequest, TResponse>^ <span class="parameter">handler</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">AddMethod</span> : + <span class="parameter">method</span> : <span class="identifier">Method</span><'TRequest, 'TResponse> * + <span class="parameter">handler</span> : <span class="identifier">ClientStreamingServerMethod</span><'TRequest, 'TResponse> <span class="keyword">-></span> <span class="identifier">ServerServiceDefinition<span id="LST4448590B_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_11?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span> <span class="keyword">when</span> 'TRequest : <span class="keyword">not struct</span> <span class="keyword">when</span> 'TResponse : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">method</span></dt><dd>Type: <a href="T_Grpc_Core_Method_2.htm">Grpc.Core<span id="LST4448590B_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_12?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Method</a><span id="LST4448590B_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_13?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST4448590B_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_14?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The method.</dd><dt><span class="parameter">handler</span></dt><dd>Type: <a href="T_Grpc_Core_ClientStreamingServerMethod_2.htm">Grpc.Core<span id="LST4448590B_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_15?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ClientStreamingServerMethod</a><span id="LST4448590B_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_16?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST4448590B_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_17?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The method handler.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>The request message class.</dd><dt><span class="parameter">TResponse</span></dt><dd>The response message class.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LST4448590B_18"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_18?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</a><br />This builder instance.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LST4448590B_19"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4448590B_19?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm">AddMethod Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..da7d825115 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm @@ -0,0 +1,22 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ServerServiceDefinition.Builder.AddMethod``2(Grpc.Core.Method{``0,``1},Grpc.Core.DuplexStreamingServerMethod{``0,``1})" /><meta name="Description" content="Adds a definitions for a bidirectional streaming method." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1" /><meta name="guid" content="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="Builder Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition_Builder">Builder Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm" title="AddMethod Method " tocid="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod">AddMethod Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerServiceDefinition<span id="LST36F972AE_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_0?cpp=::|nu=.");</script>Builder<span id="LST36F972AE_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_1?cpp=::|nu=.");</script>AddMethod<span id="LST36F972AE_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST36F972AE_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method (Method<span id="LST36F972AE_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST36F972AE_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, DuplexStreamingServerMethod<span id="LST36F972AE_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST36F972AE_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</td></tr></table><span class="introStyle"></span><div class="summary"> + Adds a definitions for a bidirectional streaming method. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ServerServiceDefinition<span id="LST36F972AE_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span> <span class="identifier">AddMethod</span><TRequest, TResponse>( + <span class="identifier">Method</span><TRequest, TResponse> <span class="parameter">method</span>, + <span class="identifier">DuplexStreamingServerMethod</span><TRequest, TResponse> <span class="parameter">handler</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">AddMethod</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">method</span> <span class="keyword">As</span> <span class="identifier">Method</span>(<span class="keyword">Of</span> TRequest, TResponse), + <span class="parameter">handler</span> <span class="keyword">As</span> <span class="identifier">DuplexStreamingServerMethod</span>(<span class="keyword">Of</span> TRequest, TResponse) +) <span class="keyword">As</span> <span class="identifier">ServerServiceDefinition<span id="LST36F972AE_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_9?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="identifier">ServerServiceDefinition<span id="LST36F972AE_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span>^ <span class="identifier">AddMethod</span>( + <span class="identifier">Method</span><TRequest, TResponse>^ <span class="parameter">method</span>, + <span class="identifier">DuplexStreamingServerMethod</span><TRequest, TResponse>^ <span class="parameter">handler</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">AddMethod</span> : + <span class="parameter">method</span> : <span class="identifier">Method</span><'TRequest, 'TResponse> * + <span class="parameter">handler</span> : <span class="identifier">DuplexStreamingServerMethod</span><'TRequest, 'TResponse> <span class="keyword">-></span> <span class="identifier">ServerServiceDefinition<span id="LST36F972AE_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_11?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span> <span class="keyword">when</span> 'TRequest : <span class="keyword">not struct</span> <span class="keyword">when</span> 'TResponse : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">method</span></dt><dd>Type: <a href="T_Grpc_Core_Method_2.htm">Grpc.Core<span id="LST36F972AE_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_12?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Method</a><span id="LST36F972AE_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_13?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST36F972AE_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_14?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The method.</dd><dt><span class="parameter">handler</span></dt><dd>Type: <a href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm">Grpc.Core<span id="LST36F972AE_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_15?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>DuplexStreamingServerMethod</a><span id="LST36F972AE_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_16?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST36F972AE_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_17?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The method handler.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>The request message class.</dd><dt><span class="parameter">TResponse</span></dt><dd>The response message class.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LST36F972AE_18"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_18?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</a><br />This builder instance.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LST36F972AE_19"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST36F972AE_19?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm">AddMethod Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..9e8a832ba5 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm @@ -0,0 +1,22 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ServerServiceDefinition.Builder.AddMethod``2(Grpc.Core.Method{``0,``1},Grpc.Core.ServerStreamingServerMethod{``0,``1})" /><meta name="Description" content="Adds a definitions for a server streaming method." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2" /><meta name="guid" content="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="Builder Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition_Builder">Builder Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm" title="AddMethod Method " tocid="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod">AddMethod Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerServiceDefinition<span id="LSTA856FEF7_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_0?cpp=::|nu=.");</script>Builder<span id="LSTA856FEF7_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_1?cpp=::|nu=.");</script>AddMethod<span id="LSTA856FEF7_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTA856FEF7_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method (Method<span id="LSTA856FEF7_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTA856FEF7_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, ServerStreamingServerMethod<span id="LSTA856FEF7_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTA856FEF7_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</td></tr></table><span class="introStyle"></span><div class="summary"> + Adds a definitions for a server streaming method. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ServerServiceDefinition<span id="LSTA856FEF7_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span> <span class="identifier">AddMethod</span><TRequest, TResponse>( + <span class="identifier">Method</span><TRequest, TResponse> <span class="parameter">method</span>, + <span class="identifier">ServerStreamingServerMethod</span><TRequest, TResponse> <span class="parameter">handler</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">AddMethod</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">method</span> <span class="keyword">As</span> <span class="identifier">Method</span>(<span class="keyword">Of</span> TRequest, TResponse), + <span class="parameter">handler</span> <span class="keyword">As</span> <span class="identifier">ServerStreamingServerMethod</span>(<span class="keyword">Of</span> TRequest, TResponse) +) <span class="keyword">As</span> <span class="identifier">ServerServiceDefinition<span id="LSTA856FEF7_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_9?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="identifier">ServerServiceDefinition<span id="LSTA856FEF7_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span>^ <span class="identifier">AddMethod</span>( + <span class="identifier">Method</span><TRequest, TResponse>^ <span class="parameter">method</span>, + <span class="identifier">ServerStreamingServerMethod</span><TRequest, TResponse>^ <span class="parameter">handler</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">AddMethod</span> : + <span class="parameter">method</span> : <span class="identifier">Method</span><'TRequest, 'TResponse> * + <span class="parameter">handler</span> : <span class="identifier">ServerStreamingServerMethod</span><'TRequest, 'TResponse> <span class="keyword">-></span> <span class="identifier">ServerServiceDefinition<span id="LSTA856FEF7_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_11?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span> <span class="keyword">when</span> 'TRequest : <span class="keyword">not struct</span> <span class="keyword">when</span> 'TResponse : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">method</span></dt><dd>Type: <a href="T_Grpc_Core_Method_2.htm">Grpc.Core<span id="LSTA856FEF7_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_12?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Method</a><span id="LSTA856FEF7_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_13?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LSTA856FEF7_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_14?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The method.</dd><dt><span class="parameter">handler</span></dt><dd>Type: <a href="T_Grpc_Core_ServerStreamingServerMethod_2.htm">Grpc.Core<span id="LSTA856FEF7_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_15?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerStreamingServerMethod</a><span id="LSTA856FEF7_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_16?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LSTA856FEF7_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_17?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The method handler.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>The request message class.</dd><dt><span class="parameter">TResponse</span></dt><dd>The response message class.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LSTA856FEF7_18"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_18?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</a><br />This builder instance.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LSTA856FEF7_19"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA856FEF7_19?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm">AddMethod Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..de304e706c --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm @@ -0,0 +1,22 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ServerServiceDefinition.Builder.AddMethod``2(Grpc.Core.Method{``0,``1},Grpc.Core.UnaryServerMethod{``0,``1})" /><meta name="Description" content="Adds a definitions for a single request - single response method." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3" /><meta name="guid" content="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="Builder Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition_Builder">Builder Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm" title="AddMethod Method " tocid="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod">AddMethod Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerServiceDefinition<span id="LSTF6C2EF8B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_0?cpp=::|nu=.");</script>Builder<span id="LSTF6C2EF8B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_1?cpp=::|nu=.");</script>AddMethod<span id="LSTF6C2EF8B_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTF6C2EF8B_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method (Method<span id="LSTF6C2EF8B_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTF6C2EF8B_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, UnaryServerMethod<span id="LSTF6C2EF8B_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTF6C2EF8B_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</td></tr></table><span class="introStyle"></span><div class="summary"> + Adds a definitions for a single request - single response method. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ServerServiceDefinition<span id="LSTF6C2EF8B_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span> <span class="identifier">AddMethod</span><TRequest, TResponse>( + <span class="identifier">Method</span><TRequest, TResponse> <span class="parameter">method</span>, + <span class="identifier">UnaryServerMethod</span><TRequest, TResponse> <span class="parameter">handler</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">AddMethod</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">method</span> <span class="keyword">As</span> <span class="identifier">Method</span>(<span class="keyword">Of</span> TRequest, TResponse), + <span class="parameter">handler</span> <span class="keyword">As</span> <span class="identifier">UnaryServerMethod</span>(<span class="keyword">Of</span> TRequest, TResponse) +) <span class="keyword">As</span> <span class="identifier">ServerServiceDefinition<span id="LSTF6C2EF8B_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_9?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="identifier">ServerServiceDefinition<span id="LSTF6C2EF8B_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span>^ <span class="identifier">AddMethod</span>( + <span class="identifier">Method</span><TRequest, TResponse>^ <span class="parameter">method</span>, + <span class="identifier">UnaryServerMethod</span><TRequest, TResponse>^ <span class="parameter">handler</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">AddMethod</span> : + <span class="parameter">method</span> : <span class="identifier">Method</span><'TRequest, 'TResponse> * + <span class="parameter">handler</span> : <span class="identifier">UnaryServerMethod</span><'TRequest, 'TResponse> <span class="keyword">-></span> <span class="identifier">ServerServiceDefinition<span id="LSTF6C2EF8B_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_11?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span> <span class="keyword">when</span> 'TRequest : <span class="keyword">not struct</span> <span class="keyword">when</span> 'TResponse : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">method</span></dt><dd>Type: <a href="T_Grpc_Core_Method_2.htm">Grpc.Core<span id="LSTF6C2EF8B_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_12?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Method</a><span id="LSTF6C2EF8B_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_13?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LSTF6C2EF8B_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_14?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The method.</dd><dt><span class="parameter">handler</span></dt><dd>Type: <a href="T_Grpc_Core_UnaryServerMethod_2.htm">Grpc.Core<span id="LSTF6C2EF8B_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_15?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>UnaryServerMethod</a><span id="LSTF6C2EF8B_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_16?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span>, <span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LSTF6C2EF8B_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_17?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />The method handler.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>The request message class.</dd><dt><span class="parameter">TResponse</span></dt><dd>The response message class.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LSTF6C2EF8B_18"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_18?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</a><br />This builder instance.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LSTF6C2EF8B_19"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF6C2EF8B_19?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm">AddMethod Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..38d2dff08b --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerServiceDefinition.Builder.Build Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Build method" /><meta name="System.Keywords" content="ServerServiceDefinition.Builder.Build method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerServiceDefinition.Builder.Build" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ServerServiceDefinition.Builder.Build" /><meta name="Description" content="Creates an immutable ServerServiceDefinition from this builder." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ServerServiceDefinition_Builder_Build" /><meta name="guid" content="M_Grpc_Core_ServerServiceDefinition_Builder_Build" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="Builder Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition_Builder">Builder Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm" title="AddMethod Method " tocid="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod">AddMethod Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm" title="Build Method " tocid="M_Grpc_Core_ServerServiceDefinition_Builder_Build">Build Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerServiceDefinition<span id="LSTEF72785C_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEF72785C_0?cpp=::|nu=.");</script>Builder<span id="LSTEF72785C_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEF72785C_1?cpp=::|nu=.");</script>Build Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates an immutable <span class="code">ServerServiceDefinition</span> from this builder. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ServerServiceDefinition</span> <span class="identifier">Build</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">Build</span> <span class="keyword">As</span> <span class="identifier">ServerServiceDefinition</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">ServerServiceDefinition</span>^ <span class="identifier">Build</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Build</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">ServerServiceDefinition</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_ServerServiceDefinition.htm">ServerServiceDefinition</a><br />The <span class="code">ServerServiceDefinition</span> object.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LSTEF72785C_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEF72785C_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..dae62e8948 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerServiceDefinition.Builder Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerServiceDefinition.Builder class, constructor" /><meta name="System.Keywords" content="ServerServiceDefinition.Builder.Builder constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerServiceDefinition.Builder.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerServiceDefinition.Builder.Builder" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ServerServiceDefinition.Builder.#ctor(System.String)" /><meta name="Description" content="Creates a new instance of builder." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ServerServiceDefinition_Builder__ctor" /><meta name="guid" content="M_Grpc_Core_ServerServiceDefinition_Builder__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm" title="ServerServiceDefinition.Builder Constructor " tocid="M_Grpc_Core_ServerServiceDefinition_Builder__ctor">ServerServiceDefinition.Builder Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="Builder Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition_Builder">Builder Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerServiceDefinition<span id="LST82E36366_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST82E36366_0?cpp=::|nu=.");</script>Builder Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a new instance of builder. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Builder</span>( + <span class="identifier">string</span> <span class="parameter">serviceName</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">serviceName</span> <span class="keyword">As</span> <span class="identifier">String</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Builder</span>( + <span class="identifier">String</span>^ <span class="parameter">serviceName</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">serviceName</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="identifier">Builder</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">serviceName</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST82E36366_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST82E36366_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />The service name.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LST82E36366_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST82E36366_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c4773bb452 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerServiceDefinition.CreateBuilder Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CreateBuilder method" /><meta name="System.Keywords" content="ServerServiceDefinition.CreateBuilder method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerServiceDefinition.CreateBuilder" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.ServerServiceDefinition.CreateBuilder(System.String)" /><meta name="Description" content="Creates a new builder object for ServerServiceDefinition." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_ServerServiceDefinition_CreateBuilder" /><meta name="guid" content="M_Grpc_Core_ServerServiceDefinition_CreateBuilder" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm" title="CreateBuilder Method " tocid="M_Grpc_Core_ServerServiceDefinition_CreateBuilder">CreateBuilder Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerServiceDefinition<span id="LST50D5ABBF_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST50D5ABBF_0?cpp=::|nu=.");</script>CreateBuilder Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a new builder object for <span class="code">ServerServiceDefinition</span>. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">ServerServiceDefinition<span id="LST50D5ABBF_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST50D5ABBF_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span> <span class="identifier">CreateBuilder</span>( + <span class="identifier">string</span> <span class="parameter">serviceName</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">CreateBuilder</span> ( + <span class="parameter">serviceName</span> <span class="keyword">As</span> <span class="identifier">String</span> +) <span class="keyword">As</span> <span class="identifier">ServerServiceDefinition<span id="LST50D5ABBF_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST50D5ABBF_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="identifier">ServerServiceDefinition<span id="LST50D5ABBF_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST50D5ABBF_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span>^ <span class="identifier">CreateBuilder</span>( + <span class="identifier">String</span>^ <span class="parameter">serviceName</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">CreateBuilder</span> : + <span class="parameter">serviceName</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="identifier">ServerServiceDefinition<span id="LST50D5ABBF_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST50D5ABBF_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">serviceName</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST50D5ABBF_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST50D5ABBF_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />The service name.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LST50D5ABBF_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST50D5ABBF_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</a><br />The builder object.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerServiceDefinition.htm">ServerServiceDefinition Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..426ecb6761 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Server_KillAsync.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.KillAsync Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="KillAsync method" /><meta name="System.Keywords" content="Server.KillAsync method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.KillAsync" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Server.KillAsync" /><meta name="Description" content="Requests server shutdown while cancelling all the in-progress calls. The returned task finishes when shutdown procedure is complete." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Server_KillAsync" /><meta name="guid" content="M_Grpc_Core_Server_KillAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server.htm" title="Server Methods" tocid="Methods_T_Grpc_Core_Server">Server Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_KillAsync.htm" title="KillAsync Method " tocid="M_Grpc_Core_Server_KillAsync">KillAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ShutdownAsync.htm" title="ShutdownAsync Method " tocid="M_Grpc_Core_Server_ShutdownAsync">ShutdownAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_Start.htm" title="Start Method " tocid="M_Grpc_Core_Server_Start">Start Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LSTBDF23A25_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBDF23A25_0?cpp=::|nu=.");</script>KillAsync Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Requests server shutdown while cancelling all the in-progress calls. + The returned task finishes when shutdown procedure is complete. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span> <span class="identifier">KillAsync</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">KillAsync</span> <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Task</span>^ <span class="identifier">KillAsync</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">KillAsync</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Task</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server.htm">Server Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..1630b0207d --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.ServerPortCollection.Add Method (ServerPort)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Server.ServerPortCollection.Add(Grpc.Core.ServerPort)" /><meta name="Description" content="Adds a new port on which server should listen. Only call this before Start(). The port on which server will be listening." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Server_ServerPortCollection_Add" /><meta name="guid" content="M_Grpc_Core_Server_ServerPortCollection_Add" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server_ServerPortCollection.htm" title="ServerPortCollection Methods" tocid="Methods_T_Grpc_Core_Server_ServerPortCollection">ServerPortCollection Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Server_ServerPortCollection_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Server_ServerPortCollection_Add">Add Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServerPortCollection_Add.htm" title="Add Method (ServerPort)" tocid="M_Grpc_Core_Server_ServerPortCollection_Add">Add Method (ServerPort)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServerPortCollection_Add_1.htm" title="Add Method (String, Int32, ServerCredentials)" tocid="M_Grpc_Core_Server_ServerPortCollection_Add_1">Add Method (String, Int32, ServerCredentials)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LST2A6387EA_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2A6387EA_0?cpp=::|nu=.");</script>ServerPortCollection<span id="LST2A6387EA_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2A6387EA_1?cpp=::|nu=.");</script>Add Method (ServerPort)</td></tr></table><span class="introStyle"></span><div class="summary"> + Adds a new port on which server should listen. + Only call this before Start(). + <h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">Int32</a><br />The port on which server will be listening.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">int</span> <span class="identifier">Add</span>( + <span class="identifier">ServerPort</span> <span class="parameter">serverPort</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">Add</span> ( + <span class="parameter">serverPort</span> <span class="keyword">As</span> <span class="identifier">ServerPort</span> +) <span class="keyword">As</span> <span class="identifier">Integer</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">int</span> <span class="identifier">Add</span>( + <span class="identifier">ServerPort</span>^ <span class="parameter">serverPort</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Add</span> : + <span class="parameter">serverPort</span> : <span class="identifier">ServerPort</span> <span class="keyword">-></span> <span class="identifier">int</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">serverPort</span></dt><dd>Type: <a href="T_Grpc_Core_ServerPort.htm">Grpc.Core<span id="LST2A6387EA_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2A6387EA_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPort</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="serverPort"/> documentation for "M:Grpc.Core.Server.ServerPortCollection.Add(Grpc.Core.ServerPort)"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">Int32</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server_ServerPortCollection.htm">Server<span id="LST2A6387EA_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2A6387EA_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Server_ServerPortCollection_Add.htm">Add Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5ab9914936 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add_1.htm @@ -0,0 +1,20 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.ServerPortCollection.Add Method (String, Int32, ServerCredentials)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Server.ServerPortCollection.Add(System.String,System.Int32,Grpc.Core.ServerCredentials)" /><meta name="Description" content="Adds a new port on which server should listen. The port on which server will be listening." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Server_ServerPortCollection_Add_1" /><meta name="guid" content="M_Grpc_Core_Server_ServerPortCollection_Add_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server_ServerPortCollection.htm" title="ServerPortCollection Methods" tocid="Methods_T_Grpc_Core_Server_ServerPortCollection">ServerPortCollection Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Server_ServerPortCollection_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Server_ServerPortCollection_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServerPortCollection_Add.htm" title="Add Method (ServerPort)" tocid="M_Grpc_Core_Server_ServerPortCollection_Add">Add Method (ServerPort)</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServerPortCollection_Add_1.htm" title="Add Method (String, Int32, ServerCredentials)" tocid="M_Grpc_Core_Server_ServerPortCollection_Add_1">Add Method (String, Int32, ServerCredentials)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LST9300D080_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9300D080_0?cpp=::|nu=.");</script>ServerPortCollection<span id="LST9300D080_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9300D080_1?cpp=::|nu=.");</script>Add Method (String, Int32, ServerCredentials)</td></tr></table><span class="introStyle"></span><div class="summary"> + Adds a new port on which server should listen. + <h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">Int32</a><br />The port on which server will be listening.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">int</span> <span class="identifier">Add</span>( + <span class="identifier">string</span> <span class="parameter">host</span>, + <span class="identifier">int</span> <span class="parameter">port</span>, + <span class="identifier">ServerCredentials</span> <span class="parameter">credentials</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">Add</span> ( + <span class="parameter">host</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">port</span> <span class="keyword">As</span> <span class="identifier">Integer</span>, + <span class="parameter">credentials</span> <span class="keyword">As</span> <span class="identifier">ServerCredentials</span> +) <span class="keyword">As</span> <span class="identifier">Integer</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">int</span> <span class="identifier">Add</span>( + <span class="identifier">String</span>^ <span class="parameter">host</span>, + <span class="identifier">int</span> <span class="parameter">port</span>, + <span class="identifier">ServerCredentials</span>^ <span class="parameter">credentials</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Add</span> : + <span class="parameter">host</span> : <span class="identifier">string</span> * + <span class="parameter">port</span> : <span class="identifier">int</span> * + <span class="parameter">credentials</span> : <span class="identifier">ServerCredentials</span> <span class="keyword">-></span> <span class="identifier">int</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">host</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST9300D080_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9300D080_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />the host</dd><dt><span class="parameter">port</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LST9300D080_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9300D080_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br />the port. If zero, an unused port is chosen automatically.</dd><dt><span class="parameter">credentials</span></dt><dd>Type: <a href="T_Grpc_Core_ServerCredentials.htm">Grpc.Core<span id="LST9300D080_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9300D080_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerCredentials</a><br />credentials to use to secure this port.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">Int32</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server_ServerPortCollection.htm">Server<span id="LST9300D080_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9300D080_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Server_ServerPortCollection_Add.htm">Add Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c3f3397367 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.ServerPortCollection.GetEnumerator Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetEnumerator method" /><meta name="System.Keywords" content="Server.ServerPortCollection.GetEnumerator method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.ServerPortCollection.GetEnumerator" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Server.ServerPortCollection.GetEnumerator" /><meta name="Description" content="Gets enumerator for this collection." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Server_ServerPortCollection_GetEnumerator" /><meta name="guid" content="M_Grpc_Core_Server_ServerPortCollection_GetEnumerator" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server_ServerPortCollection.htm" title="ServerPortCollection Methods" tocid="Methods_T_Grpc_Core_Server_ServerPortCollection">ServerPortCollection Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Server_ServerPortCollection_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Server_ServerPortCollection_Add">Add Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Server_ServerPortCollection_GetEnumerator">GetEnumerator Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LSTB74197FB_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB74197FB_0?cpp=::|nu=.");</script>ServerPortCollection<span id="LSTB74197FB_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB74197FB_1?cpp=::|nu=.");</script>GetEnumerator Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets enumerator for this collection. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">IEnumerator</span><<span class="identifier">ServerPort</span>> <span class="identifier">GetEnumerator</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetEnumerator</span> <span class="keyword">As</span> <span class="identifier">IEnumerator</span>(<span class="keyword">Of</span> <span class="identifier">ServerPort</span>)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="identifier">IEnumerator</span><<span class="identifier">ServerPort</span>^>^ <span class="identifier">GetEnumerator</span>() <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">GetEnumerator</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">IEnumerator</span><<span class="identifier">ServerPort</span>> +<span class="keyword">override</span> <span class="identifier">GetEnumerator</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">IEnumerator</span><<span class="identifier">ServerPort</span>> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/78dfe2yb" target="_blank">IEnumerator</a><span id="LSTB74197FB_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB74197FB_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_ServerPort.htm">ServerPort</a><span id="LSTB74197FB_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB74197FB_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/s793z9y2" target="_blank">IEnumerable<span id="LSTB74197FB_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB74197FB_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTB74197FB_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB74197FB_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LSTB74197FB_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB74197FB_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>GetEnumerator<span id="LSTB74197FB_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB74197FB_7?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server_ServerPortCollection.htm">Server<span id="LSTB74197FB_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB74197FB_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c525f99a9e --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.ServiceDefinitionCollection.Add Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Add method" /><meta name="System.Keywords" content="Server.ServiceDefinitionCollection.Add method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.ServiceDefinitionCollection.Add" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Server.ServiceDefinitionCollection.Add(Grpc.Core.ServerServiceDefinition)" /><meta name="Description" content="Adds a service definition to the server. This is how you register handlers for a service with the server. Only call this before Start()." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Server_ServiceDefinitionCollection_Add" /><meta name="guid" content="M_Grpc_Core_Server_ServiceDefinitionCollection_Add" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="ServiceDefinitionCollection Methods" tocid="Methods_T_Grpc_Core_Server_ServiceDefinitionCollection">ServiceDefinitionCollection Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm" title="Add Method " tocid="M_Grpc_Core_Server_ServiceDefinitionCollection_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator">GetEnumerator Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LSTAC5304BD_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAC5304BD_0?cpp=::|nu=.");</script>ServiceDefinitionCollection<span id="LSTAC5304BD_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAC5304BD_1?cpp=::|nu=.");</script>Add Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Adds a service definition to the server. This is how you register + handlers for a service with the server. Only call this before Start(). + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Add</span>( + <span class="identifier">ServerServiceDefinition</span> <span class="parameter">serviceDefinition</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Add</span> ( + <span class="parameter">serviceDefinition</span> <span class="keyword">As</span> <span class="identifier">ServerServiceDefinition</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">void</span> <span class="identifier">Add</span>( + <span class="identifier">ServerServiceDefinition</span>^ <span class="parameter">serviceDefinition</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Add</span> : + <span class="parameter">serviceDefinition</span> : <span class="identifier">ServerServiceDefinition</span> <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">serviceDefinition</span></dt><dd>Type: <a href="T_Grpc_Core_ServerServiceDefinition.htm">Grpc.Core<span id="LSTAC5304BD_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAC5304BD_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerServiceDefinition</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="serviceDefinition"/> documentation for "M:Grpc.Core.Server.ServiceDefinitionCollection.Add(Grpc.Core.ServerServiceDefinition)"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm">Server<span id="LSTAC5304BD_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAC5304BD_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..afa388ca28 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.ServiceDefinitionCollection.GetEnumerator Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GetEnumerator method" /><meta name="System.Keywords" content="Server.ServiceDefinitionCollection.GetEnumerator method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.ServiceDefinitionCollection.GetEnumerator" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Server.ServiceDefinitionCollection.GetEnumerator" /><meta name="Description" content="Gets enumerator for this collection." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator" /><meta name="guid" content="M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="ServiceDefinitionCollection Methods" tocid="Methods_T_Grpc_Core_Server_ServiceDefinitionCollection">ServiceDefinitionCollection Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm" title="Add Method " tocid="M_Grpc_Core_Server_ServiceDefinitionCollection_Add">Add Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator">GetEnumerator Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LSTCABA4EC3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCABA4EC3_0?cpp=::|nu=.");</script>ServiceDefinitionCollection<span id="LSTCABA4EC3_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCABA4EC3_1?cpp=::|nu=.");</script>GetEnumerator Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets enumerator for this collection. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">IEnumerator</span><<span class="identifier">ServerServiceDefinition</span>> <span class="identifier">GetEnumerator</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">GetEnumerator</span> <span class="keyword">As</span> <span class="identifier">IEnumerator</span>(<span class="keyword">Of</span> <span class="identifier">ServerServiceDefinition</span>)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="identifier">IEnumerator</span><<span class="identifier">ServerServiceDefinition</span>^>^ <span class="identifier">GetEnumerator</span>() <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">GetEnumerator</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">IEnumerator</span><<span class="identifier">ServerServiceDefinition</span>> +<span class="keyword">override</span> <span class="identifier">GetEnumerator</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">IEnumerator</span><<span class="identifier">ServerServiceDefinition</span>> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/78dfe2yb" target="_blank">IEnumerator</a><span id="LSTCABA4EC3_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCABA4EC3_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_ServerServiceDefinition.htm">ServerServiceDefinition</a><span id="LSTCABA4EC3_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCABA4EC3_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/s793z9y2" target="_blank">IEnumerable<span id="LSTCABA4EC3_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCABA4EC3_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTCABA4EC3_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCABA4EC3_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LSTCABA4EC3_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCABA4EC3_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>GetEnumerator<span id="LSTCABA4EC3_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCABA4EC3_7?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm">Server<span id="LSTCABA4EC3_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCABA4EC3_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..77cc86e8fe --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ShutdownAsync.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.ShutdownAsync Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ShutdownAsync method" /><meta name="System.Keywords" content="Server.ShutdownAsync method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.ShutdownAsync" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Server.ShutdownAsync" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Server_ShutdownAsync" /><meta name="guid" content="M_Grpc_Core_Server_ShutdownAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server.htm" title="Server Methods" tocid="Methods_T_Grpc_Core_Server">Server Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_KillAsync.htm" title="KillAsync Method " tocid="M_Grpc_Core_Server_KillAsync">KillAsync Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ShutdownAsync.htm" title="ShutdownAsync Method " tocid="M_Grpc_Core_Server_ShutdownAsync">ShutdownAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_Start.htm" title="Start Method " tocid="M_Grpc_Core_Server_Start">Start Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LST176A8547_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST176A8547_0?cpp=::|nu=.");</script>ShutdownAsync Method </td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span> <span class="identifier">ShutdownAsync</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Function</span> <span class="identifier">ShutdownAsync</span> <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Task</span>^ <span class="identifier">ShutdownAsync</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ShutdownAsync</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">Task</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server.htm">Server Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..09d55ea546 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Server_Start.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.Start Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Start method" /><meta name="System.Keywords" content="Server.Start method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.Start" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Server.Start" /><meta name="Description" content="Starts the server." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Server_Start" /><meta name="guid" content="M_Grpc_Core_Server_Start" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server.htm" title="Server Methods" tocid="Methods_T_Grpc_Core_Server">Server Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_KillAsync.htm" title="KillAsync Method " tocid="M_Grpc_Core_Server_KillAsync">KillAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ShutdownAsync.htm" title="ShutdownAsync Method " tocid="M_Grpc_Core_Server_ShutdownAsync">ShutdownAsync Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_Start.htm" title="Start Method " tocid="M_Grpc_Core_Server_Start">Start Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LST94819305_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST94819305_0?cpp=::|nu=.");</script>Start Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Starts the server. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">void</span> <span class="identifier">Start</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">Start</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">void</span> <span class="identifier">Start</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Start</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server.htm">Server Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..268246bb35 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Server__ctor.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Server class, constructor" /><meta name="System.Keywords" content="Server.Server constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.Server" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Server.#ctor(System.Collections.Generic.IEnumerable{Grpc.Core.ChannelOption})" /><meta name="Description" content="Create a new server." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Server__ctor" /><meta name="guid" content="M_Grpc_Core_Server__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server__ctor.htm" title="Server Constructor " tocid="M_Grpc_Core_Server__ctor">Server Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Server.htm" title="Server Properties" tocid="Properties_T_Grpc_Core_Server">Server Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server.htm" title="Server Methods" tocid="Methods_T_Grpc_Core_Server">Server Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Create a new server. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Server</span>( + <span class="identifier">IEnumerable</span><<span class="identifier">ChannelOption</span>> <span class="parameter">options</span> = <span class="keyword">null</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + Optional <span class="parameter">options</span> <span class="keyword">As</span> <span class="identifier">IEnumerable</span>(<span class="keyword">Of</span> <span class="identifier">ChannelOption</span>) = <span class="keyword">Nothing</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Server</span>( + <span class="identifier">IEnumerable</span><<span class="identifier">ChannelOption</span>^>^ <span class="parameter">options</span> = <span class="keyword">nullptr</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + ?<span class="parameter">options</span> : <span class="identifier">IEnumerable</span><<span class="identifier">ChannelOption</span>> +(* Defaults: + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">options</span> = defaultArg <span class="identifier">options</span> <span class="keyword">null</span> +*) +<span class="keyword">-></span> <span class="identifier">Server</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">options</span> (Optional)</dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/9eekhta0" target="_blank">System.Collections.Generic<span id="LSTB7B395F0_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB7B395F0_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IEnumerable</a><span id="LSTB7B395F0_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB7B395F0_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption</a><span id="LSTB7B395F0_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB7B395F0_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Channel options.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server.htm">Server Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..eda9fee34e --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslCredentials Constructor </title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.SslCredentials.#ctor" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_SslCredentials__ctor" /><meta name="guid" content="M_Grpc_Core_SslCredentials__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_SslCredentials__ctor.htm" title="SslCredentials Constructor " tocid="Overload_Grpc_Core_SslCredentials__ctor">SslCredentials Constructor </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor.htm" title="SslCredentials Constructor " tocid="M_Grpc_Core_SslCredentials__ctor">SslCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor_1.htm" title="SslCredentials Constructor (String)" tocid="M_Grpc_Core_SslCredentials__ctor_1">SslCredentials Constructor (String)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor_2.htm" title="SslCredentials Constructor (String, KeyCertificatePair)" tocid="M_Grpc_Core_SslCredentials__ctor_2">SslCredentials Constructor (String, KeyCertificatePair)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslCredentials Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">SslCredentials</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">SslCredentials</span>()</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">SslCredentials</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslCredentials.htm">SslCredentials Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_SslCredentials__ctor.htm">SslCredentials Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..cfdcd658e0 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_1.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslCredentials Constructor (String)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.SslCredentials.#ctor(System.String)" /><meta name="Description" content="Creates client-side SSL credentials from a string containing PEM encoded root certificates." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_SslCredentials__ctor_1" /><meta name="guid" content="M_Grpc_Core_SslCredentials__ctor_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_SslCredentials__ctor.htm" title="SslCredentials Constructor " tocid="Overload_Grpc_Core_SslCredentials__ctor">SslCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor.htm" title="SslCredentials Constructor " tocid="M_Grpc_Core_SslCredentials__ctor">SslCredentials Constructor </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor_1.htm" title="SslCredentials Constructor (String)" tocid="M_Grpc_Core_SslCredentials__ctor_1">SslCredentials Constructor (String)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor_2.htm" title="SslCredentials Constructor (String, KeyCertificatePair)" tocid="M_Grpc_Core_SslCredentials__ctor_2">SslCredentials Constructor (String, KeyCertificatePair)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslCredentials Constructor (String)</td></tr></table><span class="introStyle"></span><div class="summary"> + Creates client-side SSL credentials from + a string containing PEM encoded root certificates. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">SslCredentials</span>( + <span class="identifier">string</span> <span class="parameter">rootCertificates</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">rootCertificates</span> <span class="keyword">As</span> <span class="identifier">String</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">SslCredentials</span>( + <span class="identifier">String</span>^ <span class="parameter">rootCertificates</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">rootCertificates</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="identifier">SslCredentials</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">rootCertificates</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTAEB814F4_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAEB814F4_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="rootCertificates"/> documentation for "M:Grpc.Core.SslCredentials.#ctor(System.String)"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslCredentials.htm">SslCredentials Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_SslCredentials__ctor.htm">SslCredentials Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..4f73a16035 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_2.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslCredentials Constructor (String, KeyCertificatePair)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.SslCredentials.#ctor(System.String,Grpc.Core.KeyCertificatePair)" /><meta name="Description" content="Creates client-side SSL credentials." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_SslCredentials__ctor_2" /><meta name="guid" content="M_Grpc_Core_SslCredentials__ctor_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_SslCredentials__ctor.htm" title="SslCredentials Constructor " tocid="Overload_Grpc_Core_SslCredentials__ctor">SslCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor.htm" title="SslCredentials Constructor " tocid="M_Grpc_Core_SslCredentials__ctor">SslCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor_1.htm" title="SslCredentials Constructor (String)" tocid="M_Grpc_Core_SslCredentials__ctor_1">SslCredentials Constructor (String)</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor_2.htm" title="SslCredentials Constructor (String, KeyCertificatePair)" tocid="M_Grpc_Core_SslCredentials__ctor_2">SslCredentials Constructor (String, KeyCertificatePair)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslCredentials Constructor (String, KeyCertificatePair)</td></tr></table><span class="introStyle"></span><div class="summary"> + Creates client-side SSL credentials. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">SslCredentials</span>( + <span class="identifier">string</span> <span class="parameter">rootCertificates</span>, + <span class="identifier">KeyCertificatePair</span> <span class="parameter">keyCertificatePair</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">rootCertificates</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">keyCertificatePair</span> <span class="keyword">As</span> <span class="identifier">KeyCertificatePair</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">SslCredentials</span>( + <span class="identifier">String</span>^ <span class="parameter">rootCertificates</span>, + <span class="identifier">KeyCertificatePair</span>^ <span class="parameter">keyCertificatePair</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">rootCertificates</span> : <span class="identifier">string</span> * + <span class="parameter">keyCertificatePair</span> : <span class="identifier">KeyCertificatePair</span> <span class="keyword">-></span> <span class="identifier">SslCredentials</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">rootCertificates</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST62FC7787_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST62FC7787_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />string containing PEM encoded server root certificates.</dd><dt><span class="parameter">keyCertificatePair</span></dt><dd>Type: <a href="T_Grpc_Core_KeyCertificatePair.htm">Grpc.Core<span id="LST62FC7787_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST62FC7787_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>KeyCertificatePair</a><br />a key certificate pair.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslCredentials.htm">SslCredentials Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_SslCredentials__ctor.htm">SslCredentials Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f7042eb5d4 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslServerCredentials Constructor (IEnumerable(KeyCertificatePair))</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.SslServerCredentials.#ctor(System.Collections.Generic.IEnumerable{Grpc.Core.KeyCertificatePair})" /><meta name="Description" content="Creates server-side SSL credentials. This constructor should be use if you do not wish to autheticate client using client root certificates." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_SslServerCredentials__ctor" /><meta name="guid" content="M_Grpc_Core_SslServerCredentials__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_SslServerCredentials__ctor.htm" title="SslServerCredentials Constructor " tocid="Overload_Grpc_Core_SslServerCredentials__ctor">SslServerCredentials Constructor </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslServerCredentials__ctor.htm" title="SslServerCredentials Constructor (IEnumerable(KeyCertificatePair))" tocid="M_Grpc_Core_SslServerCredentials__ctor">SslServerCredentials Constructor (IEnumerable(KeyCertificatePair))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslServerCredentials__ctor_1.htm" title="SslServerCredentials Constructor (IEnumerable(KeyCertificatePair), String, Boolean)" tocid="M_Grpc_Core_SslServerCredentials__ctor_1">SslServerCredentials Constructor (IEnumerable(KeyCertificatePair), String, Boolean)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslServerCredentials Constructor (IEnumerable<span id="LSTAB2A1886_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAB2A1886_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>KeyCertificatePair<span id="LSTAB2A1886_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAB2A1886_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</td></tr></table><span class="introStyle"></span><div class="summary"> + Creates server-side SSL credentials. + This constructor should be use if you do not wish to autheticate client + using client root certificates. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">SslServerCredentials</span>( + <span class="identifier">IEnumerable</span><<span class="identifier">KeyCertificatePair</span>> <span class="parameter">keyCertificatePairs</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">keyCertificatePairs</span> <span class="keyword">As</span> <span class="identifier">IEnumerable</span>(<span class="keyword">Of</span> <span class="identifier">KeyCertificatePair</span>) +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">SslServerCredentials</span>( + <span class="identifier">IEnumerable</span><<span class="identifier">KeyCertificatePair</span>^>^ <span class="parameter">keyCertificatePairs</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">keyCertificatePairs</span> : <span class="identifier">IEnumerable</span><<span class="identifier">KeyCertificatePair</span>> <span class="keyword">-></span> <span class="identifier">SslServerCredentials</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">keyCertificatePairs</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/9eekhta0" target="_blank">System.Collections.Generic<span id="LSTAB2A1886_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAB2A1886_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IEnumerable</a><span id="LSTAB2A1886_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAB2A1886_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair</a><span id="LSTAB2A1886_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAB2A1886_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Key-certificates to use.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslServerCredentials.htm">SslServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_SslServerCredentials__ctor.htm">SslServerCredentials Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..39b6f74eb0 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor_1.htm @@ -0,0 +1,19 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslServerCredentials Constructor (IEnumerable(KeyCertificatePair), String, Boolean)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.SslServerCredentials.#ctor(System.Collections.Generic.IEnumerable{Grpc.Core.KeyCertificatePair},System.String,System.Boolean)" /><meta name="Description" content="Creates server-side SSL credentials." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_SslServerCredentials__ctor_1" /><meta name="guid" content="M_Grpc_Core_SslServerCredentials__ctor_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_SslServerCredentials__ctor.htm" title="SslServerCredentials Constructor " tocid="Overload_Grpc_Core_SslServerCredentials__ctor">SslServerCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslServerCredentials__ctor.htm" title="SslServerCredentials Constructor (IEnumerable(KeyCertificatePair))" tocid="M_Grpc_Core_SslServerCredentials__ctor">SslServerCredentials Constructor (IEnumerable(KeyCertificatePair))</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslServerCredentials__ctor_1.htm" title="SslServerCredentials Constructor (IEnumerable(KeyCertificatePair), String, Boolean)" tocid="M_Grpc_Core_SslServerCredentials__ctor_1">SslServerCredentials Constructor (IEnumerable(KeyCertificatePair), String, Boolean)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslServerCredentials Constructor (IEnumerable<span id="LST8C6762F7_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8C6762F7_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>KeyCertificatePair<span id="LST8C6762F7_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8C6762F7_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, String, Boolean)</td></tr></table><span class="introStyle"></span><div class="summary"> + Creates server-side SSL credentials. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">SslServerCredentials</span>( + <span class="identifier">IEnumerable</span><<span class="identifier">KeyCertificatePair</span>> <span class="parameter">keyCertificatePairs</span>, + <span class="identifier">string</span> <span class="parameter">rootCertificates</span>, + <span class="identifier">bool</span> <span class="parameter">forceClientAuth</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">keyCertificatePairs</span> <span class="keyword">As</span> <span class="identifier">IEnumerable</span>(<span class="keyword">Of</span> <span class="identifier">KeyCertificatePair</span>), + <span class="parameter">rootCertificates</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">forceClientAuth</span> <span class="keyword">As</span> <span class="identifier">Boolean</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">SslServerCredentials</span>( + <span class="identifier">IEnumerable</span><<span class="identifier">KeyCertificatePair</span>^>^ <span class="parameter">keyCertificatePairs</span>, + <span class="identifier">String</span>^ <span class="parameter">rootCertificates</span>, + <span class="identifier">bool</span> <span class="parameter">forceClientAuth</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">keyCertificatePairs</span> : <span class="identifier">IEnumerable</span><<span class="identifier">KeyCertificatePair</span>> * + <span class="parameter">rootCertificates</span> : <span class="identifier">string</span> * + <span class="parameter">forceClientAuth</span> : <span class="identifier">bool</span> <span class="keyword">-></span> <span class="identifier">SslServerCredentials</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">keyCertificatePairs</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/9eekhta0" target="_blank">System.Collections.Generic<span id="LST8C6762F7_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8C6762F7_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IEnumerable</a><span id="LST8C6762F7_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8C6762F7_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair</a><span id="LST8C6762F7_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8C6762F7_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br />Key-certificates to use.</dd><dt><span class="parameter">rootCertificates</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST8C6762F7_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8C6762F7_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />PEM encoded client root certificates used to authenticate client.</dd><dt><span class="parameter">forceClientAuth</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">System<span id="LST8C6762F7_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8C6762F7_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Boolean</a><br />If true, client will be rejected unless it proves its unthenticity using against rootCertificates.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslServerCredentials.htm">SslServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_SslServerCredentials__ctor.htm">SslServerCredentials Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5132664b73 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Status_ToString.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Status.ToString Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ToString method" /><meta name="System.Keywords" content="Status.ToString method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Status.ToString" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Status.ToString" /><meta name="Description" content="Returns a that represents the current ." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Status_ToString" /><meta name="guid" content="M_Grpc_Core_Status_ToString" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Status.htm" title="Status Methods" tocid="Methods_T_Grpc_Core_Status">Status Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Status_ToString.htm" title="ToString Method " tocid="M_Grpc_Core_Status_ToString">ToString Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Status<span id="LST9E36D944_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9E36D944_0?cpp=::|nu=.");</script>ToString Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Returns a <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a> that represents the current <a href="T_Grpc_Core_Status.htm">Status</a>. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">override</span> <span class="identifier">string</span> <span class="identifier">ToString</span>()</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Overrides</span> <span class="keyword">Function</span> <span class="identifier">ToString</span> <span class="keyword">As</span> <span class="identifier">String</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="identifier">String</span>^ <span class="identifier">ToString</span>() <span class="keyword">override</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">ToString</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">string</span> +<span class="keyword">override</span> <span class="identifier">ToString</span> : <span class="keyword">unit</span> <span class="keyword">-></span> <span class="identifier">string</span> </pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Status.htm">Status Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..1e613e2ab0 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Status__ctor.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Status Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Status structure, constructor" /><meta name="System.Keywords" content="Status.Status constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Status.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Status.Status" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Status.#ctor(Grpc.Core.StatusCode,System.String)" /><meta name="Description" content="Creates a new instance of Status." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_Status__ctor" /><meta name="guid" content="M_Grpc_Core_Status__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Status__ctor.htm" title="Status Constructor " tocid="M_Grpc_Core_Status__ctor">Status Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Status.htm" title="Status Properties" tocid="Properties_T_Grpc_Core_Status">Status Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Status.htm" title="Status Methods" tocid="Methods_T_Grpc_Core_Status">Status Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_Status.htm" title="Status Fields" tocid="Fields_T_Grpc_Core_Status">Status Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Status Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Creates a new instance of <span class="code">Status</span>. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Status</span>( + <span class="identifier">StatusCode</span> <span class="parameter">statusCode</span>, + <span class="identifier">string</span> <span class="parameter">detail</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + <span class="parameter">statusCode</span> <span class="keyword">As</span> <span class="identifier">StatusCode</span>, + <span class="parameter">detail</span> <span class="keyword">As</span> <span class="identifier">String</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">Status</span>( + <span class="identifier">StatusCode</span> <span class="parameter">statusCode</span>, + <span class="identifier">String</span>^ <span class="parameter">detail</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + <span class="parameter">statusCode</span> : <span class="identifier">StatusCode</span> * + <span class="parameter">detail</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="identifier">Status</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">statusCode</span></dt><dd>Type: <a href="T_Grpc_Core_StatusCode.htm">Grpc.Core<span id="LST603383C6_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST603383C6_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>StatusCode</a><br />Status code.</dd><dt><span class="parameter">detail</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST603383C6_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST603383C6_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />Detail.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Status.htm">Status Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ad827bda7b --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm @@ -0,0 +1,23 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncStreamExtensions.ForEachAsync(T) Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ForEachAsync%3CT%3E method" /><meta name="System.Keywords" content="ForEachAsync(Of T) method" /><meta name="System.Keywords" content="AsyncStreamExtensions.ForEachAsync%3CT%3E method" /><meta name="System.Keywords" content="AsyncStreamExtensions.ForEachAsync(Of T) method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.AsyncStreamExtensions.ForEachAsync``1" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Utils.AsyncStreamExtensions.ForEachAsync``1(Grpc.Core.IAsyncStreamReader{``0},System.Func{``0,System.Threading.Tasks.Task})" /><meta name="Description" content="Reads the entire stream and executes an async action for each element." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1" /><meta name="guid" content="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Class" tocid="T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Methods" tocid="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm" title="ForEachAsync(T) Method " tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1">ForEachAsync(T) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm" title="ToListAsync(T) Method " tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1">ToListAsync(T) Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm" title="WriteAllAsync Method " tocid="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync">WriteAllAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncStreamExtensions<span id="LST91555AB7_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST91555AB7_0?cpp=::|nu=.");</script>ForEachAsync<span id="LST91555AB7_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST91555AB7_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST91555AB7_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST91555AB7_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Reads the entire stream and executes an async action for each element. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">Task</span> <span class="identifier">ForEachAsync</span><T>( + <span class="keyword">this</span> <span class="identifier">IAsyncStreamReader</span><T> <span class="parameter">streamReader</span>, + <span class="identifier">Func</span><T, <span class="identifier">Task</span>> <span class="parameter">asyncAction</span> +) +<span class="keyword">where</span> T : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><<span class="identifier">ExtensionAttribute</span>> +<span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">ForEachAsync</span>(<span class="keyword">Of</span> T <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">streamReader</span> <span class="keyword">As</span> <span class="identifier">IAsyncStreamReader</span>(<span class="keyword">Of</span> T), + <span class="parameter">asyncAction</span> <span class="keyword">As</span> <span class="identifier">Func</span>(<span class="keyword">Of</span> T, <span class="identifier">Task</span>) +) <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +[<span class="identifier">ExtensionAttribute</span>] +<span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">where</span> T : <span class="keyword">ref class</span> +<span class="keyword">static</span> <span class="identifier">Task</span>^ <span class="identifier">ForEachAsync</span>( + <span class="identifier">IAsyncStreamReader</span><T>^ <span class="parameter">streamReader</span>, + <span class="identifier">Func</span><T, <span class="identifier">Task</span>^>^ <span class="parameter">asyncAction</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">ExtensionAttribute</span>>] +<span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">ForEachAsync</span> : + <span class="parameter">streamReader</span> : <span class="identifier">IAsyncStreamReader</span><'T> * + <span class="parameter">asyncAction</span> : <span class="identifier">Func</span><'T, <span class="identifier">Task</span>> <span class="keyword">-></span> <span class="identifier">Task</span> <span class="keyword">when</span> 'T : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">streamReader</span></dt><dd>Type: <a href="T_Grpc_Core_IAsyncStreamReader_1.htm">Grpc.Core<span id="LST91555AB7_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST91555AB7_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IAsyncStreamReader</a><span id="LST91555AB7_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST91555AB7_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LST91555AB7_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST91555AB7_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="streamReader"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.ForEachAsync``1(Grpc.Core.IAsyncStreamReader{``0},System.Func{``0,System.Threading.Tasks.Task})"]</p></dd><dt><span class="parameter">asyncAction</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/bb549151" target="_blank">System<span id="LST91555AB7_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST91555AB7_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Func</a><span id="LST91555AB7_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST91555AB7_7?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span>, <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a><span id="LST91555AB7_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST91555AB7_8?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="asyncAction"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.ForEachAsync``1(Grpc.Core.IAsyncStreamReader{``0},System.Func{``0,System.Threading.Tasks.Task})"]</p></dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.ForEachAsync``1(Grpc.Core.IAsyncStreamReader{``0},System.Func{``0,System.Threading.Tasks.Task})"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a><h4 class="subHeading">Usage Note</h4>In Visual Basic and C#, you can call this method as an instance method on any object of type <a href="T_Grpc_Core_IAsyncStreamReader_1.htm">IAsyncStreamReader</a><span id="LST91555AB7_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST91555AB7_9?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LST91555AB7_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST91555AB7_10?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>. When you use instance method syntax to call this method, omit the first parameter. For more information, see <a href="http://msdn.microsoft.com/en-us/library/bb384936.aspx" target="_blank">Extension Methods (Visual Basic)</a> or <a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx" target="_blank">Extension Methods (C# Programming Guide)</a>.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..3b76b6d21f --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm @@ -0,0 +1,19 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncStreamExtensions.ToListAsync(T) Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ToListAsync%3CT%3E method" /><meta name="System.Keywords" content="ToListAsync(Of T) method" /><meta name="System.Keywords" content="AsyncStreamExtensions.ToListAsync%3CT%3E method" /><meta name="System.Keywords" content="AsyncStreamExtensions.ToListAsync(Of T) method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.AsyncStreamExtensions.ToListAsync``1" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Utils.AsyncStreamExtensions.ToListAsync``1(Grpc.Core.IAsyncStreamReader{``0})" /><meta name="Description" content="Reads the entire stream and creates a list containing all the elements read." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1" /><meta name="guid" content="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Class" tocid="T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Methods" tocid="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm" title="ForEachAsync(T) Method " tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1">ForEachAsync(T) Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm" title="ToListAsync(T) Method " tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1">ToListAsync(T) Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm" title="WriteAllAsync Method " tocid="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync">WriteAllAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncStreamExtensions<span id="LSTB2641AD3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_0?cpp=::|nu=.");</script>ToListAsync<span id="LSTB2641AD3_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTB2641AD3_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Reads the entire stream and creates a list containing all the elements read. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">Task</span><<span class="identifier">List</span><T>> <span class="identifier">ToListAsync</span><T>( + <span class="keyword">this</span> <span class="identifier">IAsyncStreamReader</span><T> <span class="parameter">streamReader</span> +) +<span class="keyword">where</span> T : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><<span class="identifier">ExtensionAttribute</span>> +<span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">ToListAsync</span>(<span class="keyword">Of</span> T <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">streamReader</span> <span class="keyword">As</span> <span class="identifier">IAsyncStreamReader</span>(<span class="keyword">Of</span> T) +) <span class="keyword">As</span> <span class="identifier">Task</span>(<span class="keyword">Of</span> <span class="identifier">List</span>(<span class="keyword">Of</span> T))</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +[<span class="identifier">ExtensionAttribute</span>] +<span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">where</span> T : <span class="keyword">ref class</span> +<span class="keyword">static</span> <span class="identifier">Task</span><<span class="identifier">List</span><T>^>^ <span class="identifier">ToListAsync</span>( + <span class="identifier">IAsyncStreamReader</span><T>^ <span class="parameter">streamReader</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">ExtensionAttribute</span>>] +<span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">ToListAsync</span> : + <span class="parameter">streamReader</span> : <span class="identifier">IAsyncStreamReader</span><'T> <span class="keyword">-></span> <span class="identifier">Task</span><<span class="identifier">List</span><'T>> <span class="keyword">when</span> 'T : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">streamReader</span></dt><dd>Type: <a href="T_Grpc_Core_IAsyncStreamReader_1.htm">Grpc.Core<span id="LSTB2641AD3_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IAsyncStreamReader</a><span id="LSTB2641AD3_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LSTB2641AD3_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="streamReader"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.ToListAsync``1(Grpc.Core.IAsyncStreamReader{``0})"]</p></dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.ToListAsync``1(Grpc.Core.IAsyncStreamReader{``0})"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd321424" target="_blank">Task</a><span id="LSTB2641AD3_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="http://msdn2.microsoft.com/en-us/library/6sh2ey19" target="_blank">List</a><span id="LSTB2641AD3_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_7?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LSTB2641AD3_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_8?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTB2641AD3_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><h4 class="subHeading">Usage Note</h4>In Visual Basic and C#, you can call this method as an instance method on any object of type <a href="T_Grpc_Core_IAsyncStreamReader_1.htm">IAsyncStreamReader</a><span id="LSTB2641AD3_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_10?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LSTB2641AD3_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2641AD3_11?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>. When you use instance method syntax to call this method, omit the first parameter. For more information, see <a href="http://msdn.microsoft.com/en-us/library/bb384936.aspx" target="_blank">Extension Methods (Visual Basic)</a> or <a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx" target="_blank">Extension Methods (C# Programming Guide)</a>.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..cd81b87f03 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm @@ -0,0 +1,32 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncStreamExtensions.WriteAllAsync(T) Method (IClientStreamWriter(T), IEnumerable(T), Boolean)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IClientStreamWriter{``0},System.Collections.Generic.IEnumerable{``0},System.Boolean)" /><meta name="Description" content="Writes all elements from given enumerable to the stream. Completes the stream afterwards unless close = false." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1" /><meta name="guid" content="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Class" tocid="T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Methods" tocid="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm" title="WriteAllAsync Method " tocid="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync">WriteAllAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm" title="WriteAllAsync(T) Method (IServerStreamWriter(T), IEnumerable(T))" tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1">WriteAllAsync(T) Method (IServerStreamWriter(T), IEnumerable(T))</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm" title="WriteAllAsync(T) Method (IClientStreamWriter(T), IEnumerable(T), Boolean)" tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1">WriteAllAsync(T) Method (IClientStreamWriter(T), IEnumerable(T), Boolean)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncStreamExtensions<span id="LSTF01F7D4C_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_0?cpp=::|nu=.");</script>WriteAllAsync<span id="LSTF01F7D4C_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTF01F7D4C_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method (IClientStreamWriter<span id="LSTF01F7D4C_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTF01F7D4C_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, IEnumerable<span id="LSTF01F7D4C_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_5?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTF01F7D4C_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_6?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, Boolean)</td></tr></table><span class="introStyle"></span><div class="summary"> + Writes all elements from given enumerable to the stream. + Completes the stream afterwards unless close = false. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">Task</span> <span class="identifier">WriteAllAsync</span><T>( + <span class="keyword">this</span> <span class="identifier">IClientStreamWriter</span><T> <span class="parameter">streamWriter</span>, + <span class="identifier">IEnumerable</span><T> <span class="parameter">elements</span>, + <span class="identifier">bool</span> <span class="parameter">complete</span> = <span class="keyword">true</span> +) +<span class="keyword">where</span> T : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><<span class="identifier">ExtensionAttribute</span>> +<span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">WriteAllAsync</span>(<span class="keyword">Of</span> T <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">streamWriter</span> <span class="keyword">As</span> <span class="identifier">IClientStreamWriter</span>(<span class="keyword">Of</span> T), + <span class="parameter">elements</span> <span class="keyword">As</span> <span class="identifier">IEnumerable</span>(<span class="keyword">Of</span> T), + Optional <span class="parameter">complete</span> <span class="keyword">As</span> <span class="identifier">Boolean</span> = <span class="keyword">true</span> +) <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +[<span class="identifier">ExtensionAttribute</span>] +<span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">where</span> T : <span class="keyword">ref class</span> +<span class="keyword">static</span> <span class="identifier">Task</span>^ <span class="identifier">WriteAllAsync</span>( + <span class="identifier">IClientStreamWriter</span><T>^ <span class="parameter">streamWriter</span>, + <span class="identifier">IEnumerable</span><T>^ <span class="parameter">elements</span>, + <span class="identifier">bool</span> <span class="parameter">complete</span> = <span class="keyword">true</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">ExtensionAttribute</span>>] +<span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">WriteAllAsync</span> : + <span class="parameter">streamWriter</span> : <span class="identifier">IClientStreamWriter</span><'T> * + <span class="parameter">elements</span> : <span class="identifier">IEnumerable</span><'T> * + ?<span class="parameter">complete</span> : <span class="identifier">bool</span> +(* Defaults: + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">complete</span> = defaultArg <span class="identifier">complete</span> <span class="keyword">true</span> +*) +<span class="keyword">-></span> <span class="identifier">Task</span> <span class="keyword">when</span> 'T : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">streamWriter</span></dt><dd>Type: <a href="T_Grpc_Core_IClientStreamWriter_1.htm">Grpc.Core<span id="LSTF01F7D4C_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IClientStreamWriter</a><span id="LSTF01F7D4C_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LSTF01F7D4C_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="streamWriter"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IClientStreamWriter{``0},System.Collections.Generic.IEnumerable{``0},System.Boolean)"]</p></dd><dt><span class="parameter">elements</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/9eekhta0" target="_blank">System.Collections.Generic<span id="LSTF01F7D4C_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IEnumerable</a><span id="LSTF01F7D4C_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_11?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LSTF01F7D4C_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_12?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="elements"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IClientStreamWriter{``0},System.Collections.Generic.IEnumerable{``0},System.Boolean)"]</p></dd><dt><span class="parameter">complete</span> (Optional)</dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">System<span id="LSTF01F7D4C_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_13?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Boolean</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="complete"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IClientStreamWriter{``0},System.Collections.Generic.IEnumerable{``0},System.Boolean)"]</p></dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IClientStreamWriter{``0},System.Collections.Generic.IEnumerable{``0},System.Boolean)"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a><h4 class="subHeading">Usage Note</h4>In Visual Basic and C#, you can call this method as an instance method on any object of type <a href="T_Grpc_Core_IClientStreamWriter_1.htm">IClientStreamWriter</a><span id="LSTF01F7D4C_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_14?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LSTF01F7D4C_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF01F7D4C_15?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>. When you use instance method syntax to call this method, omit the first parameter. For more information, see <a href="http://msdn.microsoft.com/en-us/library/bb384936.aspx" target="_blank">Extension Methods (Visual Basic)</a> or <a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx" target="_blank">Extension Methods (C# Programming Guide)</a>.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm">WriteAllAsync Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..04fb4e5235 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm @@ -0,0 +1,23 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncStreamExtensions.WriteAllAsync(T) Method (IServerStreamWriter(T), IEnumerable(T))</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IServerStreamWriter{``0},System.Collections.Generic.IEnumerable{``0})" /><meta name="Description" content="Writes all elements from given enumerable to the stream." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1" /><meta name="guid" content="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Class" tocid="T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Methods" tocid="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm" title="WriteAllAsync Method " tocid="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync">WriteAllAsync Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm" title="WriteAllAsync(T) Method (IServerStreamWriter(T), IEnumerable(T))" tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1">WriteAllAsync(T) Method (IServerStreamWriter(T), IEnumerable(T))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm" title="WriteAllAsync(T) Method (IClientStreamWriter(T), IEnumerable(T), Boolean)" tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1">WriteAllAsync(T) Method (IClientStreamWriter(T), IEnumerable(T), Boolean)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncStreamExtensions<span id="LSTA533BD61_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_0?cpp=::|nu=.");</script>WriteAllAsync<span id="LSTA533BD61_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTA533BD61_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method (IServerStreamWriter<span id="LSTA533BD61_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTA533BD61_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, IEnumerable<span id="LSTA533BD61_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_5?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTA533BD61_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_6?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</td></tr></table><span class="introStyle"></span><div class="summary"> + Writes all elements from given enumerable to the stream. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">Task</span> <span class="identifier">WriteAllAsync</span><T>( + <span class="keyword">this</span> <span class="identifier">IServerStreamWriter</span><T> <span class="parameter">streamWriter</span>, + <span class="identifier">IEnumerable</span><T> <span class="parameter">elements</span> +) +<span class="keyword">where</span> T : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><<span class="identifier">ExtensionAttribute</span>> +<span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">WriteAllAsync</span>(<span class="keyword">Of</span> T <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">streamWriter</span> <span class="keyword">As</span> <span class="identifier">IServerStreamWriter</span>(<span class="keyword">Of</span> T), + <span class="parameter">elements</span> <span class="keyword">As</span> <span class="identifier">IEnumerable</span>(<span class="keyword">Of</span> T) +) <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +[<span class="identifier">ExtensionAttribute</span>] +<span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">where</span> T : <span class="keyword">ref class</span> +<span class="keyword">static</span> <span class="identifier">Task</span>^ <span class="identifier">WriteAllAsync</span>( + <span class="identifier">IServerStreamWriter</span><T>^ <span class="parameter">streamWriter</span>, + <span class="identifier">IEnumerable</span><T>^ <span class="parameter">elements</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">ExtensionAttribute</span>>] +<span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">WriteAllAsync</span> : + <span class="parameter">streamWriter</span> : <span class="identifier">IServerStreamWriter</span><'T> * + <span class="parameter">elements</span> : <span class="identifier">IEnumerable</span><'T> <span class="keyword">-></span> <span class="identifier">Task</span> <span class="keyword">when</span> 'T : <span class="keyword">not struct</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">streamWriter</span></dt><dd>Type: <a href="T_Grpc_Core_IServerStreamWriter_1.htm">Grpc.Core<span id="LSTA533BD61_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IServerStreamWriter</a><span id="LSTA533BD61_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LSTA533BD61_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="streamWriter"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IServerStreamWriter{``0},System.Collections.Generic.IEnumerable{``0})"]</p></dd><dt><span class="parameter">elements</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/9eekhta0" target="_blank">System.Collections.Generic<span id="LSTA533BD61_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IEnumerable</a><span id="LSTA533BD61_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_11?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LSTA533BD61_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_12?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="elements"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IServerStreamWriter{``0},System.Collections.Generic.IEnumerable{``0})"]</p></dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IServerStreamWriter{``0},System.Collections.Generic.IEnumerable{``0})"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a><h4 class="subHeading">Usage Note</h4>In Visual Basic and C#, you can call this method as an instance method on any object of type <a href="T_Grpc_Core_IServerStreamWriter_1.htm">IServerStreamWriter</a><span id="LSTA533BD61_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_13?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LSTA533BD61_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA533BD61_14?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>. When you use instance method syntax to call this method, omit the first parameter. For more information, see <a href="http://msdn.microsoft.com/en-us/library/bb384936.aspx" target="_blank">Extension Methods (Visual Basic)</a> or <a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx" target="_blank">Extension Methods (C# Programming Guide)</a>.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm">WriteAllAsync Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..47138a00ba --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm @@ -0,0 +1,20 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>BenchmarkUtil.RunBenchmark Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RunBenchmark method" /><meta name="System.Keywords" content="BenchmarkUtil.RunBenchmark method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.BenchmarkUtil.RunBenchmark" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Utils.BenchmarkUtil.RunBenchmark(System.Int32,System.Int32,System.Action)" /><meta name="Description" content="Runs a simple benchmark preceded by warmup phase." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark" /><meta name="guid" content="M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_BenchmarkUtil.htm" title="BenchmarkUtil Class" tocid="T_Grpc_Core_Utils_BenchmarkUtil">BenchmarkUtil Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm" title="BenchmarkUtil Methods" tocid="Methods_T_Grpc_Core_Utils_BenchmarkUtil">BenchmarkUtil Methods</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm" title="RunBenchmark Method " tocid="M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark">RunBenchmark Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">BenchmarkUtil<span id="LST916D07CA_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST916D07CA_0?cpp=::|nu=.");</script>RunBenchmark Method </td></tr></table><span class="introStyle"></span><div class="summary"> + Runs a simple benchmark preceded by warmup phase. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">RunBenchmark</span>( + <span class="identifier">int</span> <span class="parameter">warmupIterations</span>, + <span class="identifier">int</span> <span class="parameter">benchmarkIterations</span>, + <span class="identifier">Action</span> <span class="parameter">action</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Sub</span> <span class="identifier">RunBenchmark</span> ( + <span class="parameter">warmupIterations</span> <span class="keyword">As</span> <span class="identifier">Integer</span>, + <span class="parameter">benchmarkIterations</span> <span class="keyword">As</span> <span class="identifier">Integer</span>, + <span class="parameter">action</span> <span class="keyword">As</span> <span class="identifier">Action</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">RunBenchmark</span>( + <span class="identifier">int</span> <span class="parameter">warmupIterations</span>, + <span class="identifier">int</span> <span class="parameter">benchmarkIterations</span>, + <span class="identifier">Action</span>^ <span class="parameter">action</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">RunBenchmark</span> : + <span class="parameter">warmupIterations</span> : <span class="identifier">int</span> * + <span class="parameter">benchmarkIterations</span> : <span class="identifier">int</span> * + <span class="parameter">action</span> : <span class="identifier">Action</span> <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">warmupIterations</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LST916D07CA_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST916D07CA_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="warmupIterations"/> documentation for "M:Grpc.Core.Utils.BenchmarkUtil.RunBenchmark(System.Int32,System.Int32,System.Action)"]</p></dd><dt><span class="parameter">benchmarkIterations</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LST916D07CA_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST916D07CA_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="benchmarkIterations"/> documentation for "M:Grpc.Core.Utils.BenchmarkUtil.RunBenchmark(System.Int32,System.Int32,System.Action)"]</p></dd><dt><span class="parameter">action</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/bb534741" target="_blank">System<span id="LST916D07CA_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST916D07CA_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Action</a><br /><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <param name="action"/> documentation for "M:Grpc.Core.Utils.BenchmarkUtil.RunBenchmark(System.Int32,System.Int32,System.Action)"]</p></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_BenchmarkUtil.htm">BenchmarkUtil Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..067a90ed7c --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Preconditions.CheckArgument Method (Boolean)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Utils.Preconditions.CheckArgument(System.Boolean)" /><meta name="Description" content="Throws if condition is false." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="M_Grpc_Core_Utils_Preconditions_CheckArgument" /><meta name="guid" content="M_Grpc_Core_Utils_Preconditions_CheckArgument" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Methods" tocid="Methods_T_Grpc_Core_Utils_Preconditions">Preconditions Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm" title="CheckArgument Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckArgument">CheckArgument Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckArgument.htm" title="CheckArgument Method (Boolean)" tocid="M_Grpc_Core_Utils_Preconditions_CheckArgument">CheckArgument Method (Boolean)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm" title="CheckArgument Method (Boolean, String)" tocid="M_Grpc_Core_Utils_Preconditions_CheckArgument_1">CheckArgument Method (Boolean, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Preconditions<span id="LST9B182B11_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B182B11_0?cpp=::|nu=.");</script>CheckArgument Method (Boolean)</td></tr></table><span class="introStyle"></span><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/3w1b3114" target="_blank">ArgumentException</a> if condition is false. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">CheckArgument</span>( + <span class="identifier">bool</span> <span class="parameter">condition</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Sub</span> <span class="identifier">CheckArgument</span> ( + <span class="parameter">condition</span> <span class="keyword">As</span> <span class="identifier">Boolean</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">CheckArgument</span>( + <span class="identifier">bool</span> <span class="parameter">condition</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">CheckArgument</span> : + <span class="parameter">condition</span> : <span class="identifier">bool</span> <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">condition</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">System<span id="LST9B182B11_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B182B11_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Boolean</a><br />The condition.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_Preconditions.htm">Preconditions Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm">CheckArgument Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..4bc9b4e26f --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Preconditions.CheckArgument Method (Boolean, String)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Utils.Preconditions.CheckArgument(System.Boolean,System.String)" /><meta name="Description" content="Throws with given message if condition is false." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="M_Grpc_Core_Utils_Preconditions_CheckArgument_1" /><meta name="guid" content="M_Grpc_Core_Utils_Preconditions_CheckArgument_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Methods" tocid="Methods_T_Grpc_Core_Utils_Preconditions">Preconditions Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm" title="CheckArgument Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckArgument">CheckArgument Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckArgument.htm" title="CheckArgument Method (Boolean)" tocid="M_Grpc_Core_Utils_Preconditions_CheckArgument">CheckArgument Method (Boolean)</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm" title="CheckArgument Method (Boolean, String)" tocid="M_Grpc_Core_Utils_Preconditions_CheckArgument_1">CheckArgument Method (Boolean, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Preconditions<span id="LSTDE78F4C7_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDE78F4C7_0?cpp=::|nu=.");</script>CheckArgument Method (Boolean, String)</td></tr></table><span class="introStyle"></span><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/3w1b3114" target="_blank">ArgumentException</a> with given message if condition is false. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">CheckArgument</span>( + <span class="identifier">bool</span> <span class="parameter">condition</span>, + <span class="identifier">string</span> <span class="parameter">errorMessage</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Sub</span> <span class="identifier">CheckArgument</span> ( + <span class="parameter">condition</span> <span class="keyword">As</span> <span class="identifier">Boolean</span>, + <span class="parameter">errorMessage</span> <span class="keyword">As</span> <span class="identifier">String</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">CheckArgument</span>( + <span class="identifier">bool</span> <span class="parameter">condition</span>, + <span class="identifier">String</span>^ <span class="parameter">errorMessage</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">CheckArgument</span> : + <span class="parameter">condition</span> : <span class="identifier">bool</span> * + <span class="parameter">errorMessage</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">condition</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">System<span id="LSTDE78F4C7_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDE78F4C7_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Boolean</a><br />The condition.</dd><dt><span class="parameter">errorMessage</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTDE78F4C7_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDE78F4C7_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />The error message.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_Preconditions.htm">Preconditions Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm">CheckArgument Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..71e0951801 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm @@ -0,0 +1,14 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Preconditions.CheckNotNull(T) Method (T)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Utils.Preconditions.CheckNotNull``1(``0)" /><meta name="Description" content="Throws if reference is null." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1" /><meta name="guid" content="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Methods" tocid="Methods_T_Grpc_Core_Utils_Preconditions">Preconditions Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm" title="CheckNotNull Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull">CheckNotNull Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm" title="CheckNotNull(T) Method (T)" tocid="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1">CheckNotNull(T) Method (T)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm" title="CheckNotNull(T) Method (T, String)" tocid="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1">CheckNotNull(T) Method (T, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Preconditions<span id="LST64EC5978_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST64EC5978_0?cpp=::|nu=.");</script>CheckNotNull<span id="LST64EC5978_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST64EC5978_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST64EC5978_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST64EC5978_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method (<span class="typeparameter">T</span>)</td></tr></table><span class="introStyle"></span><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/27426hcy" target="_blank">ArgumentNullException</a> if reference is null. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> T <span class="identifier">CheckNotNull</span><T>( + T <span class="parameter">reference</span> +) +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">CheckNotNull</span>(<span class="keyword">Of</span> T) ( + <span class="parameter">reference</span> <span class="keyword">As</span> T +) <span class="keyword">As</span> T</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">static</span> T <span class="identifier">CheckNotNull</span>( + T <span class="parameter">reference</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">CheckNotNull</span> : + <span class="parameter">reference</span> : 'T <span class="keyword">-></span> 'T +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">reference</span></dt><dd>Type: <span class="selflink"><span class="typeparameter">T</span></span><br />The reference.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.Preconditions.CheckNotNull``1(``0)"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <span class="selflink"><span class="typeparameter">T</span></span></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_Preconditions.htm">Preconditions Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm">CheckNotNull Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a8442ff5f9 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm @@ -0,0 +1,18 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Preconditions.CheckNotNull(T) Method (T, String)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Utils.Preconditions.CheckNotNull``1(``0,System.String)" /><meta name="Description" content="Throws if reference is null." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1" /><meta name="guid" content="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Methods" tocid="Methods_T_Grpc_Core_Utils_Preconditions">Preconditions Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm" title="CheckNotNull Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull">CheckNotNull Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm" title="CheckNotNull(T) Method (T)" tocid="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1">CheckNotNull(T) Method (T)</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm" title="CheckNotNull(T) Method (T, String)" tocid="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1">CheckNotNull(T) Method (T, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Preconditions<span id="LSTE5BEC16C_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE5BEC16C_0?cpp=::|nu=.");</script>CheckNotNull<span id="LSTE5BEC16C_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE5BEC16C_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTE5BEC16C_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE5BEC16C_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Method (<span class="typeparameter">T</span>, String)</td></tr></table><span class="introStyle"></span><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/27426hcy" target="_blank">ArgumentNullException</a> if reference is null. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> T <span class="identifier">CheckNotNull</span><T>( + T <span class="parameter">reference</span>, + <span class="identifier">string</span> <span class="parameter">paramName</span> +) +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Function</span> <span class="identifier">CheckNotNull</span>(<span class="keyword">Of</span> T) ( + <span class="parameter">reference</span> <span class="keyword">As</span> T, + <span class="parameter">paramName</span> <span class="keyword">As</span> <span class="identifier">String</span> +) <span class="keyword">As</span> T</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">static</span> T <span class="identifier">CheckNotNull</span>( + T <span class="parameter">reference</span>, + <span class="identifier">String</span>^ <span class="parameter">paramName</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">CheckNotNull</span> : + <span class="parameter">reference</span> : 'T * + <span class="parameter">paramName</span> : <span class="identifier">string</span> <span class="keyword">-></span> 'T +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">reference</span></dt><dd>Type: <span class="selflink"><span class="typeparameter">T</span></span><br />The reference.</dd><dt><span class="parameter">paramName</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LSTE5BEC16C_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE5BEC16C_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />The parameter name.</dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.Preconditions.CheckNotNull``1(``0,System.String)"]</p></dd></dl><h4 class="subHeading">Return Value</h4>Type: <span class="selflink"><span class="typeparameter">T</span></span></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_Preconditions.htm">Preconditions Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm">CheckNotNull Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..db25a18cc3 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Preconditions.CheckState Method (Boolean)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Utils.Preconditions.CheckState(System.Boolean)" /><meta name="Description" content="Throws if condition is false." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="M_Grpc_Core_Utils_Preconditions_CheckState" /><meta name="guid" content="M_Grpc_Core_Utils_Preconditions_CheckState" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Methods" tocid="Methods_T_Grpc_Core_Utils_Preconditions">Preconditions Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckState.htm" title="CheckState Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckState">CheckState Method </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckState.htm" title="CheckState Method (Boolean)" tocid="M_Grpc_Core_Utils_Preconditions_CheckState">CheckState Method (Boolean)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckState_1.htm" title="CheckState Method (Boolean, String)" tocid="M_Grpc_Core_Utils_Preconditions_CheckState_1">CheckState Method (Boolean, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Preconditions<span id="LST7567FB95_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7567FB95_0?cpp=::|nu=.");</script>CheckState Method (Boolean)</td></tr></table><span class="introStyle"></span><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/2asft85a" target="_blank">InvalidOperationException</a> if condition is false. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">CheckState</span>( + <span class="identifier">bool</span> <span class="parameter">condition</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Sub</span> <span class="identifier">CheckState</span> ( + <span class="parameter">condition</span> <span class="keyword">As</span> <span class="identifier">Boolean</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">CheckState</span>( + <span class="identifier">bool</span> <span class="parameter">condition</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">CheckState</span> : + <span class="parameter">condition</span> : <span class="identifier">bool</span> <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">condition</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">System<span id="LST7567FB95_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7567FB95_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Boolean</a><br />The condition.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_Preconditions.htm">Preconditions Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Utils_Preconditions_CheckState.htm">CheckState Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..98a215c2aa --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState_1.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Preconditions.CheckState Method (Boolean, String)</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.Utils.Preconditions.CheckState(System.Boolean,System.String)" /><meta name="Description" content="Throws with given message if condition is false." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="M_Grpc_Core_Utils_Preconditions_CheckState_1" /><meta name="guid" content="M_Grpc_Core_Utils_Preconditions_CheckState_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Methods" tocid="Methods_T_Grpc_Core_Utils_Preconditions">Preconditions Methods</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckState.htm" title="CheckState Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckState">CheckState Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckState.htm" title="CheckState Method (Boolean)" tocid="M_Grpc_Core_Utils_Preconditions_CheckState">CheckState Method (Boolean)</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckState_1.htm" title="CheckState Method (Boolean, String)" tocid="M_Grpc_Core_Utils_Preconditions_CheckState_1">CheckState Method (Boolean, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Preconditions<span id="LST8CA3BEB3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8CA3BEB3_0?cpp=::|nu=.");</script>CheckState Method (Boolean, String)</td></tr></table><span class="introStyle"></span><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/2asft85a" target="_blank">InvalidOperationException</a> with given message if condition is false. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">CheckState</span>( + <span class="identifier">bool</span> <span class="parameter">condition</span>, + <span class="identifier">string</span> <span class="parameter">errorMessage</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">Sub</span> <span class="identifier">CheckState</span> ( + <span class="parameter">condition</span> <span class="keyword">As</span> <span class="identifier">Boolean</span>, + <span class="parameter">errorMessage</span> <span class="keyword">As</span> <span class="identifier">String</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">CheckState</span>( + <span class="identifier">bool</span> <span class="parameter">condition</span>, + <span class="identifier">String</span>^ <span class="parameter">errorMessage</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">CheckState</span> : + <span class="parameter">condition</span> : <span class="identifier">bool</span> * + <span class="parameter">errorMessage</span> : <span class="identifier">string</span> <span class="keyword">-></span> <span class="keyword">unit</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">condition</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">System<span id="LST8CA3BEB3_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8CA3BEB3_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Boolean</a><br />The condition.</dd><dt><span class="parameter">errorMessage</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST8CA3BEB3_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8CA3BEB3_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br />The error message.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_Preconditions.htm">Preconditions Class</a></div><div class="seeAlsoStyle"><a href="Overload_Grpc_Core_Utils_Preconditions_CheckState.htm">CheckState Overload</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..8d09de8108 --- /dev/null +++ b/doc/ref/csharp/html/html/M_Grpc_Core_WriteOptions__ctor.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>WriteOptions Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteOptions class, constructor" /><meta name="System.Keywords" content="WriteOptions.WriteOptions constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.WriteOptions.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.WriteOptions.WriteOptions" /><meta name="Microsoft.Help.Id" content="M:Grpc.Core.WriteOptions.#ctor(Grpc.Core.WriteFlags)" /><meta name="Description" content="Initializes a new instance of WriteOptions class." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="M_Grpc_Core_WriteOptions__ctor" /><meta name="guid" content="M_Grpc_Core_WriteOptions__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_WriteOptions__ctor.htm" title="WriteOptions Constructor " tocid="M_Grpc_Core_WriteOptions__ctor">WriteOptions Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Properties" tocid="Properties_T_Grpc_Core_WriteOptions">WriteOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Methods" tocid="Methods_T_Grpc_Core_WriteOptions">WriteOptions Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Fields" tocid="Fields_T_Grpc_Core_WriteOptions">WriteOptions Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">WriteOptions Constructor </td></tr></table><span class="introStyle"></span><div class="summary"> + Initializes a new instance of <span class="code">WriteOptions</span> class. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">WriteOptions</span>( + <span class="identifier">WriteFlags</span> <span class="parameter">flags</span> = +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Sub</span> <span class="identifier">New</span> ( + Optional <span class="parameter">flags</span> <span class="keyword">As</span> <span class="identifier">WriteFlags</span> = +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="identifier">WriteOptions</span>( + <span class="identifier">WriteFlags</span> <span class="parameter">flags</span> = +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">new</span> : + ?<span class="parameter">flags</span> : <span class="identifier">WriteFlags</span> +(* Defaults: + <span class="keyword">let </span><span class="identifier">_</span><span class="identifier">flags</span> = defaultArg <span class="identifier">flags</span> +*) +<span class="keyword">-></span> <span class="identifier">WriteOptions</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">flags</span> (Optional)</dt><dd>Type: <a href="T_Grpc_Core_WriteFlags.htm">Grpc.Core<span id="LST20A2751C_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST20A2751C_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>WriteFlags</a><br />The write flags.</dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_WriteOptions.htm">WriteOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..67729e61c1 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Auth_AuthInterceptors.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AuthInterceptors Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AuthInterceptors class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Auth.AuthInterceptors" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Auth" /><meta name="file" content="Methods_T_Grpc_Auth_AuthInterceptors" /><meta name="guid" content="Methods_T_Grpc_Auth_AuthInterceptors" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Auth.htm" title="Grpc.Auth" tocid="N_Grpc_Auth">Grpc.Auth</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Auth_AuthInterceptors.htm" title="AuthInterceptors Class" tocid="T_Grpc_Auth_AuthInterceptors">AuthInterceptors Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Auth_AuthInterceptors.htm" title="AuthInterceptors Methods" tocid="Methods_T_Grpc_Auth_AuthInterceptors">AuthInterceptors Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm" title="FromAccessToken Method " tocid="M_Grpc_Auth_AuthInterceptors_FromAccessToken">FromAccessToken Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Auth_AuthInterceptors_FromCredential.htm" title="FromCredential Method " tocid="M_Grpc_Auth_AuthInterceptors_FromCredential">FromCredential Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AuthInterceptors Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Auth_AuthInterceptors.htm">AuthInterceptors</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm">FromAccessToken</a></td><td><div class="summary"> + Creates OAuth2 interceptor that will use given access token as authorization. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Auth_AuthInterceptors_FromCredential.htm">FromCredential</a></td><td><div class="summary"> + Creates interceptor that will obtain access token from any credential type that implements + <span class="code">ITokenAccess</span>. (e.g. <span class="code">GoogleCredential</span>). + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Auth_AuthInterceptors.htm">AuthInterceptors Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Auth.htm">Grpc.Auth Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..1a980e8a2a --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncClientStreamingCall(TRequest, TResponse) Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E class, methods" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse) class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.AsyncClientStreamingCall`2" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_AsyncClientStreamingCall_2" /><meta name="guid" content="Methods_T_Grpc_Core_AsyncClientStreamingCall_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm" title="GetAwaiter Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter">GetAwaiter Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncClientStreamingCall<span id="LSTB54A532_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB54A532_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTB54A532_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB54A532_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LSTB54A532_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB54A532_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTB54A532_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB54A532_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm">Dispose</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm">GetAwaiter</a></td><td><div class="summary"> + Allows awaiting this object directly. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm">GetStatus</a></td><td><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm">GetTrailers</a></td><td><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LSTB54A532_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB54A532_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTB54A532_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB54A532_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b52e7bb7c7 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm @@ -0,0 +1,14 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncDuplexStreamingCall(TRequest, TResponse) Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E class, methods" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall(Of TRequest%2C TResponse) class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.AsyncDuplexStreamingCall`2" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2" /><meta name="guid" content="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncDuplexStreamingCall<span id="LSTAE1A0197_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAE1A0197_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTAE1A0197_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAE1A0197_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall<span id="LSTAE1A0197_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAE1A0197_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTAE1A0197_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAE1A0197_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm">Dispose</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm">GetStatus</a></td><td><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm">GetTrailers</a></td><td><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall<span id="LSTAE1A0197_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAE1A0197_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTAE1A0197_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTAE1A0197_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c2cbdffe87 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm @@ -0,0 +1,14 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncServerStreamingCall(TResponse) Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncServerStreamingCall%3CTResponse%3E class, methods" /><meta name="System.Keywords" content="AsyncServerStreamingCall(Of TResponse) class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.AsyncServerStreamingCall`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_AsyncServerStreamingCall_1" /><meta name="guid" content="Methods_T_Grpc_Core_AsyncServerStreamingCall_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncServerStreamingCall<span id="LST7FD8EB31_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7FD8EB31_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LST7FD8EB31_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7FD8EB31_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm">AsyncServerStreamingCall<span id="LST7FD8EB31_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7FD8EB31_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST7FD8EB31_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7FD8EB31_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm">Dispose</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm">GetStatus</a></td><td><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm">GetTrailers</a></td><td><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm">AsyncServerStreamingCall<span id="LST7FD8EB31_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7FD8EB31_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST7FD8EB31_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7FD8EB31_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..7be009c069 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncUnaryCall(TResponse) Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncUnaryCall%3CTResponse%3E class, methods" /><meta name="System.Keywords" content="AsyncUnaryCall(Of TResponse) class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.AsyncUnaryCall`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_AsyncUnaryCall_1" /><meta name="guid" content="Methods_T_Grpc_Core_AsyncUnaryCall_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm" title="Dispose Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_Dispose">Dispose Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm" title="GetAwaiter Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter">GetAwaiter Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm" title="GetStatus Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetStatus">GetStatus Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm" title="GetTrailers Method " tocid="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers">GetTrailers Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncUnaryCall<span id="LSTB2FF69B1_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2FF69B1_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LSTB2FF69B1_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2FF69B1_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall<span id="LSTB2FF69B1_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2FF69B1_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LSTB2FF69B1_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2FF69B1_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm">Dispose</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm">GetAwaiter</a></td><td><div class="summary"> + Allows awaiting this object directly. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm">GetStatus</a></td><td><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm">GetTrailers</a></td><td><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall<span id="LSTB2FF69B1_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2FF69B1_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LSTB2FF69B1_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB2FF69B1_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..2cc225528f --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse) Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E structure, methods" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse) structure, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.CallInvocationDetails`2" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_CallInvocationDetails_2" /><meta name="guid" content="Methods_T_Grpc_Core_CallInvocationDetails_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm" title="WithOptions Method " tocid="M_Grpc_Core_CallInvocationDetails_2_WithOptions">WithOptions Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LST196181DB_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST196181DB_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST196181DB_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST196181DB_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST196181DB_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST196181DB_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST196181DB_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST196181DB_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2dts52z7" target="_blank">Equals</a></td><td><div class="summary">Indicates whether this instance and a specified object are equal.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/y3509fc2" target="_blank">GetHashCode</a></td><td><div class="summary">Returns the hash code for this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/wb77sz3h" target="_blank">ToString</a></td><td><div class="summary">Returns the fully qualified type name of this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm">WithOptions</a></td><td><div class="summary"> + Returns new instance of <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST196181DB_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST196181DB_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST196181DB_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST196181DB_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> with + <span class="code">Options</span> set to the value provided. Values of all other fields are preserved. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST196181DB_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST196181DB_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST196181DB_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST196181DB_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f9fe02ed1c --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallOptions.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CallOptions structure, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.CallOptions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_CallOptions" /><meta name="guid" content="Methods_T_Grpc_Core_CallOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_CallOptions.htm" title="CallOptions Methods" tocid="Methods_T_Grpc_Core_CallOptions">CallOptions Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithCancellationToken.htm" title="WithCancellationToken Method " tocid="M_Grpc_Core_CallOptions_WithCancellationToken">WithCancellationToken Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithDeadline.htm" title="WithDeadline Method " tocid="M_Grpc_Core_CallOptions_WithDeadline">WithDeadline Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions_WithHeaders.htm" title="WithHeaders Method " tocid="M_Grpc_Core_CallOptions_WithHeaders">WithHeaders Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2dts52z7" target="_blank">Equals</a></td><td><div class="summary">Indicates whether this instance and a specified object are equal.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/y3509fc2" target="_blank">GetHashCode</a></td><td><div class="summary">Returns the hash code for this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/wb77sz3h" target="_blank">ToString</a></td><td><div class="summary">Returns the fully qualified type name of this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallOptions_WithCancellationToken.htm">WithCancellationToken</a></td><td><div class="summary"> + Returns new instance of <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a> with + <span class="code">CancellationToken</span> set to the value provided. Values of all other fields are preserved. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallOptions_WithDeadline.htm">WithDeadline</a></td><td><div class="summary"> + Returns new instance of <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a> with + <span class="code">Deadline</span> set to the value provided. Values of all other fields are preserved. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallOptions_WithHeaders.htm">WithHeaders</a></td><td><div class="summary"> + Returns new instance of <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a> with + <span class="code">Headers</span> set to the value provided. Values of all other fields are preserved. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallOptions.htm">CallOptions Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..8933af3fea --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Calls.htm @@ -0,0 +1,17 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Calls Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Calls class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Calls" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Calls" /><meta name="guid" content="Methods_T_Grpc_Core_Calls" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Calls.htm" title="Calls Methods" tocid="Methods_T_Grpc_Core_Calls">Calls Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncClientStreamingCall__2">AsyncClientStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2">AsyncDuplexStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" title="AsyncServerStreamingCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncServerStreamingCall__2">AsyncServerStreamingCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" title="AsyncUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_AsyncUnaryCall__2">AsyncUnaryCall(TRequest, TResponse) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" title="BlockingUnaryCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_Calls_BlockingUnaryCall__2">BlockingUnaryCall(TRequest, TResponse) Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Calls Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Calls.htm">Calls</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm">AsyncClientStreamingCall<span id="LST141FFE22_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST141FFE22_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST141FFE22_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST141FFE22_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Invokes a client streaming call asynchronously. + In client streaming scenario, client sends a stream of requests and server responds with a single response. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm">AsyncDuplexStreamingCall<span id="LST141FFE22_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST141FFE22_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST141FFE22_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST141FFE22_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm">AsyncServerStreamingCall<span id="LST141FFE22_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST141FFE22_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST141FFE22_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST141FFE22_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Invokes a server streaming call asynchronously. + In server streaming scenario, client sends on request and server responds with a stream of responses. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Calls_AsyncUnaryCall__2.htm">AsyncUnaryCall<span id="LST141FFE22_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST141FFE22_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST141FFE22_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST141FFE22_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Invokes a simple remote call asynchronously. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Calls_BlockingUnaryCall__2.htm">BlockingUnaryCall<span id="LST141FFE22_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST141FFE22_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST141FFE22_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST141FFE22_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Invokes a simple remote call in a blocking fashion. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Calls.htm">Calls Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5aa7e52175 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Channel.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Channel class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Channel" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Channel" /><meta name="guid" content="Methods_T_Grpc_Core_Channel" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Channel.htm" title="Channel Methods" tocid="Methods_T_Grpc_Core_Channel">Channel Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_ConnectAsync.htm" title="ConnectAsync Method " tocid="M_Grpc_Core_Channel_ConnectAsync">ConnectAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_ShutdownAsync.htm" title="ShutdownAsync Method " tocid="M_Grpc_Core_Channel_ShutdownAsync">ShutdownAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel_WaitForStateChangedAsync.htm" title="WaitForStateChangedAsync Method " tocid="M_Grpc_Core_Channel_WaitForStateChangedAsync">WaitForStateChangedAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Channel.htm">Channel</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Channel_ConnectAsync.htm">ConnectAsync</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Channel_ShutdownAsync.htm">ShutdownAsync</a></td><td><div class="summary"> + Waits until there are no more active calls for this channel and then cleans up + resources used by this channel. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Channel_WaitForStateChangedAsync.htm">WaitForStateChangedAsync</a></td><td><div class="summary"> + Returned tasks completes once channel state has become different from + given lastObservedState. + If deadline is reached or and error occurs, returned task is cancelled. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..4629b7a4a3 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ChannelOption.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOption Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ChannelOption class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.ChannelOption" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_ChannelOption" /><meta name="guid" content="Methods_T_Grpc_Core_ChannelOption" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ChannelOption__ctor.htm" title="ChannelOption Constructor " tocid="Overload_Grpc_Core_ChannelOption__ctor">ChannelOption Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ChannelOption.htm" title="ChannelOption Properties" tocid="Properties_T_Grpc_Core_ChannelOption">ChannelOption Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ChannelOption.htm" title="ChannelOption Methods" tocid="Methods_T_Grpc_Core_ChannelOption">ChannelOption Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOption Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ChannelOption.htm">ChannelOption</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b0f38c947f --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ClientBase.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ClientBase Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ClientBase class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.ClientBase" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_ClientBase" /><meta name="guid" content="Methods_T_Grpc_Core_ClientBase" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ClientBase.htm" title="ClientBase Methods" tocid="Methods_T_Grpc_Core_ClientBase">ClientBase Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ClientBase_CreateCall__2.htm" title="CreateCall(TRequest, TResponse) Method " tocid="M_Grpc_Core_ClientBase_CreateCall__2">CreateCall(TRequest, TResponse) Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ClientBase Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ClientBase.htm">ClientBase</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="protected;declared;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="M_Grpc_Core_ClientBase_CreateCall__2.htm">CreateCall<span id="LST805621DD_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST805621DD_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST805621DD_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST805621DD_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Creates a new call to given method. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ClientBase.htm">ClientBase Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..abc1abbea8 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationOptions.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ContextPropagationOptions Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ContextPropagationOptions class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.ContextPropagationOptions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_ContextPropagationOptions" /><meta name="guid" content="Methods_T_Grpc_Core_ContextPropagationOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ContextPropagationOptions__ctor.htm" title="ContextPropagationOptions Constructor " tocid="M_Grpc_Core_ContextPropagationOptions__ctor">ContextPropagationOptions Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Properties" tocid="Properties_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Methods" tocid="Methods_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Fields" tocid="Fields_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ContextPropagationOptions Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0bf0e221ad --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationToken.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ContextPropagationToken Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ContextPropagationToken class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.ContextPropagationToken" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_ContextPropagationToken" /><meta name="guid" content="Methods_T_Grpc_Core_ContextPropagationToken" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Methods" tocid="Methods_T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ContextPropagationToken Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ContextPropagationToken.htm">ContextPropagationToken</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ContextPropagationToken.htm">ContextPropagationToken Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..2ab1c23063 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Credentials.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Credentials Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Credentials class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Credentials" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Credentials" /><meta name="guid" content="Methods_T_Grpc_Core_Credentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Credentials__ctor.htm" title="Credentials Constructor " tocid="M_Grpc_Core_Credentials__ctor">Credentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Credentials.htm" title="Credentials Properties" tocid="Properties_T_Grpc_Core_Credentials">Credentials Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_Credentials.htm" title="Credentials Methods" tocid="Methods_T_Grpc_Core_Credentials">Credentials Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Credentials Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Credentials.htm">Credentials</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Credentials.htm">Credentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..56aede9447 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_GrpcEnvironment.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GrpcEnvironment Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GrpcEnvironment class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.GrpcEnvironment" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_GrpcEnvironment" /><meta name="guid" content="Methods_T_Grpc_Core_GrpcEnvironment" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Methods" tocid="Methods_T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_GrpcEnvironment_SetLogger.htm" title="SetLogger Method " tocid="M_Grpc_Core_GrpcEnvironment_SetLogger">SetLogger Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">GrpcEnvironment Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_GrpcEnvironment.htm">GrpcEnvironment</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_GrpcEnvironment_SetLogger.htm">SetLogger</a></td><td><div class="summary"> + Sets the application-wide logger that should be used by gRPC. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_GrpcEnvironment.htm">GrpcEnvironment Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..9ccee5b4b6 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamReader_1.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IAsyncStreamReader(T) Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IAsyncStreamReader%3CT%3E interface, methods" /><meta name="System.Keywords" content="IAsyncStreamReader(Of T) interface, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.IAsyncStreamReader`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_IAsyncStreamReader_1" /><meta name="guid" content="Methods_T_Grpc_Core_IAsyncStreamReader_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Properties_T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Properties" tocid="Properties_T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Methods" tocid="Methods_T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IAsyncStreamReader<span id="LSTFECD0C64_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTFECD0C64_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_IAsyncStreamReader_1.htm">IAsyncStreamReader<span id="LSTFECD0C64_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTFECD0C64_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/es4s3w1d" target="_blank">Dispose</a></td><td><div class="summary">Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aax125c9" target="_blank">IDisposable</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><span class="nolink">MoveNext</span></td><td> (Inherited from <span class="nolink">IAsyncEnumerator</span><span id="LSTFECD0C64_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_IAsyncStreamReader_1.htm"><span class="typeparameter">T</span></a><span id="LSTFECD0C64_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Extension Methods</span></div><div id="ID1RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubextension.gif" alt="Public Extension Method" title="Public Extension Method" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm">ForEachAsync<span id="LSTFECD0C64_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LSTFECD0C64_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Reads the entire stream and executes an async action for each element. + </div> (Defined by <a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubextension.gif" alt="Public Extension Method" title="Public Extension Method" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm">ToListAsync<span id="LSTFECD0C64_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LSTFECD0C64_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Reads the entire stream and creates a list containing all the elements read. + </div> (Defined by <a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IAsyncStreamReader_1.htm">IAsyncStreamReader<span id="LSTFECD0C64_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_10?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTFECD0C64_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFECD0C64_11?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f69951fdf0 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IAsyncStreamWriter(T) Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IAsyncStreamWriter%3CT%3E interface, methods" /><meta name="System.Keywords" content="IAsyncStreamWriter(Of T) interface, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.IAsyncStreamWriter`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_IAsyncStreamWriter_1" /><meta name="guid" content="Methods_T_Grpc_Core_IAsyncStreamWriter_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Methods" tocid="Methods_T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm" title="WriteAsync Method " tocid="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync">WriteAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IAsyncStreamWriter<span id="LST736674CC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736674CC_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST736674CC_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736674CC_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST736674CC_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736674CC_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST736674CC_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736674CC_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm">WriteAsync</a></td><td><div class="summary"> + Writes a single asynchronously. Only one write can be pending at a time. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST736674CC_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736674CC_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST736674CC_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST736674CC_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..271b5cf251 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IClientStreamWriter(T) Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IClientStreamWriter%3CT%3E interface, methods" /><meta name="System.Keywords" content="IClientStreamWriter(Of T) interface, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.IClientStreamWriter`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_IClientStreamWriter_1" /><meta name="guid" content="Methods_T_Grpc_Core_IClientStreamWriter_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Methods" tocid="Methods_T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm" title="CompleteAsync Method " tocid="M_Grpc_Core_IClientStreamWriter_1_CompleteAsync">CompleteAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IClientStreamWriter<span id="LST9AAAD0F7_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AAAD0F7_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST9AAAD0F7_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AAAD0F7_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_IClientStreamWriter_1.htm">IClientStreamWriter<span id="LST9AAAD0F7_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AAAD0F7_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9AAAD0F7_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AAAD0F7_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm">CompleteAsync</a></td><td><div class="summary"> + Completes/closes the stream. Can only be called once there is no pending write. No writes should follow calling this. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm">WriteAsync</a></td><td><div class="summary"> + Writes a single asynchronously. Only one write can be pending at a time. + </div> (Inherited from <a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST9AAAD0F7_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AAAD0F7_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9AAAD0F7_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AAAD0F7_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Extension Methods</span></div><div id="ID1RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubextension.gif" alt="Public Extension Method" title="Public Extension Method" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm">WriteAllAsync<span id="LST9AAAD0F7_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AAAD0F7_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST9AAAD0F7_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AAAD0F7_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Writes all elements from given enumerable to the stream. + Completes the stream afterwards unless close = false. + </div> (Defined by <a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IClientStreamWriter_1.htm">IClientStreamWriter<span id="LST9AAAD0F7_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AAAD0F7_8?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9AAAD0F7_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9AAAD0F7_9?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..9ab9b0d00f --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IServerStreamWriter_1.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IServerStreamWriter(T) Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IServerStreamWriter%3CT%3E interface, methods" /><meta name="System.Keywords" content="IServerStreamWriter(Of T) interface, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.IServerStreamWriter`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_IServerStreamWriter_1" /><meta name="guid" content="Methods_T_Grpc_Core_IServerStreamWriter_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Properties_T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Properties" tocid="Properties_T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Methods" tocid="Methods_T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IServerStreamWriter<span id="LST555FD703_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST555FD703_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST555FD703_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST555FD703_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_IServerStreamWriter_1.htm">IServerStreamWriter<span id="LST555FD703_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST555FD703_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST555FD703_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST555FD703_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm">WriteAsync</a></td><td><div class="summary"> + Writes a single asynchronously. Only one write can be pending at a time. + </div> (Inherited from <a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST555FD703_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST555FD703_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST555FD703_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST555FD703_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Extension Methods</span></div><div id="ID1RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubextension.gif" alt="Public Extension Method" title="Public Extension Method" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm">WriteAllAsync<span id="LST555FD703_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST555FD703_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST555FD703_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST555FD703_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Writes all elements from given enumerable to the stream. + </div> (Defined by <a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IServerStreamWriter_1.htm">IServerStreamWriter<span id="LST555FD703_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST555FD703_8?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST555FD703_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST555FD703_9?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..31988564f9 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_KeyCertificatePair.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>KeyCertificatePair Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="KeyCertificatePair class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.KeyCertificatePair" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_KeyCertificatePair" /><meta name="guid" content="Methods_T_Grpc_Core_KeyCertificatePair" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_KeyCertificatePair__ctor.htm" title="KeyCertificatePair Constructor " tocid="M_Grpc_Core_KeyCertificatePair__ctor">KeyCertificatePair Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Properties" tocid="Properties_T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Methods" tocid="Methods_T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">KeyCertificatePair Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5ee03065d1 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ConsoleLogger.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ConsoleLogger class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Logging.ConsoleLogger" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="Methods_T_Grpc_Core_Logging_ConsoleLogger" /><meta name="guid" content="Methods_T_Grpc_Core_Logging_ConsoleLogger" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Debug.htm" title="Debug Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_Debug">Debug Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Error">Error Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm" title="ForType(T) Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_ForType__1">ForType(T) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Info.htm" title="Info Method " tocid="M_Grpc_Core_Logging_ConsoleLogger_Info">Info Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Warning">Warning Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Debug.htm">Debug</a></td><td><div class="summary">Logs a message with severity Debug.</div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm">Error(String, <span id="LSTF124503F_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF124503F_0?cpp=array<");</script>Object<span id="LSTF124503F_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF124503F_1?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Error.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Error.htm">Error(Exception, String, <span id="LSTF124503F_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF124503F_2?cpp=array<");</script>Object<span id="LSTF124503F_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF124503F_3?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Error.</div></td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm">ForType<span id="LSTF124503F_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF124503F_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LSTF124503F_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF124503F_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Returns a logger associated with the specified type. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Info.htm">Info</a></td><td><div class="summary">Logs a message with severity Info.</div></td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm">Warning(String, <span id="LSTF124503F_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF124503F_6?cpp=array<");</script>Object<span id="LSTF124503F_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF124503F_7?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Warning.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Warning.htm">Warning(Exception, String, <span id="LSTF124503F_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF124503F_8?cpp=array<");</script>Object<span id="LSTF124503F_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF124503F_9?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Warning.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0f4357be40 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ILogger.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ILogger Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ILogger interface, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Logging.ILogger" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="Methods_T_Grpc_Core_Logging_ILogger" /><meta name="guid" content="Methods_T_Grpc_Core_Logging_ILogger" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ILogger.htm" title="ILogger Methods" tocid="Methods_T_Grpc_Core_Logging_ILogger">ILogger Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Debug.htm" title="Debug Method " tocid="M_Grpc_Core_Logging_ILogger_Debug">Debug Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ILogger_Error">Error Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_ForType__1.htm" title="ForType(T) Method " tocid="M_Grpc_Core_Logging_ILogger_ForType__1">ForType(T) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Info.htm" title="Info Method " tocid="M_Grpc_Core_Logging_ILogger_Info">Info Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ILogger_Warning">Warning Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ILogger Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Logging_ILogger.htm">ILogger</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Debug.htm">Debug</a></td><td><div class="summary">Logs a message with severity Debug.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Error_1.htm">Error(String, <span id="LSTE3256261_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE3256261_0?cpp=array<");</script>Object<span id="LSTE3256261_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE3256261_1?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Error.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Error.htm">Error(Exception, String, <span id="LSTE3256261_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE3256261_2?cpp=array<");</script>Object<span id="LSTE3256261_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE3256261_3?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Error.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_ForType__1.htm">ForType<span id="LSTE3256261_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE3256261_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LSTE3256261_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE3256261_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary">Returns a logger associated with the specified type.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Info.htm">Info</a></td><td><div class="summary">Logs a message with severity Info.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Warning_1.htm">Warning(String, <span id="LSTE3256261_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE3256261_6?cpp=array<");</script>Object<span id="LSTE3256261_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE3256261_7?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Warning.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Warning.htm">Warning(Exception, String, <span id="LSTE3256261_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE3256261_8?cpp=array<");</script>Object<span id="LSTE3256261_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE3256261_9?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Warning.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ILogger.htm">ILogger Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..127f58079d --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshaller_1.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Marshaller(T) Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Marshaller%3CT%3E structure, methods" /><meta name="System.Keywords" content="Marshaller(Of T) structure, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Marshaller`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Marshaller_1" /><meta name="guid" content="Methods_T_Grpc_Core_Marshaller_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Marshaller_1__ctor.htm" title="Marshaller(T) Constructor " tocid="M_Grpc_Core_Marshaller_1__ctor">Marshaller(T) Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Properties" tocid="Properties_T_Grpc_Core_Marshaller_1">Marshaller(T) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Methods" tocid="Methods_T_Grpc_Core_Marshaller_1">Marshaller(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Marshaller<span id="LST9643DA0B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9643DA0B_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST9643DA0B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9643DA0B_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Marshaller_1.htm">Marshaller<span id="LST9643DA0B_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9643DA0B_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9643DA0B_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9643DA0B_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2dts52z7" target="_blank">Equals</a></td><td><div class="summary">Indicates whether this instance and a specified object are equal.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/y3509fc2" target="_blank">GetHashCode</a></td><td><div class="summary">Returns the hash code for this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/wb77sz3h" target="_blank">ToString</a></td><td><div class="summary">Returns the fully qualified type name of this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Marshaller_1.htm">Marshaller<span id="LST9643DA0B_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9643DA0B_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9643DA0B_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9643DA0B_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..aa8491ca2f --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshallers.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Marshallers Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Marshallers class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Marshallers" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Marshallers" /><meta name="guid" content="Methods_T_Grpc_Core_Marshallers" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Marshallers.htm" title="Marshallers Methods" tocid="Methods_T_Grpc_Core_Marshallers">Marshallers Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Marshallers_Create__1.htm" title="Create(T) Method " tocid="M_Grpc_Core_Marshallers_Create__1">Create(T) Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Marshallers Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Marshallers.htm">Marshallers</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Marshallers_Create__1.htm">Create<span id="LSTE65BE31_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE65BE31_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LSTE65BE31_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE65BE31_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Creates a marshaller from specified serializer and deserializer. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Marshallers.htm">Marshallers Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..aacbe035f7 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Metadata class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Metadata" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Metadata" /><meta name="guid" content="Methods_T_Grpc_Core_Metadata" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Clear.htm" title="Clear Method " tocid="M_Grpc_Core_Metadata_Clear">Clear Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Contains.htm" title="Contains Method " tocid="M_Grpc_Core_Metadata_Contains">Contains Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_CopyTo.htm" title="CopyTo Method " tocid="M_Grpc_Core_Metadata_CopyTo">CopyTo Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Metadata_GetEnumerator">GetEnumerator Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_IndexOf.htm" title="IndexOf Method " tocid="M_Grpc_Core_Metadata_IndexOf">IndexOf Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Insert.htm" title="Insert Method " tocid="M_Grpc_Core_Metadata_Insert">Insert Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Remove.htm" title="Remove Method " tocid="M_Grpc_Core_Metadata_Remove">Remove Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_RemoveAt.htm" title="RemoveAt Method " tocid="M_Grpc_Core_Metadata_RemoveAt">RemoveAt Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Metadata.htm">Metadata</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Add.htm">Add(Metadata<span id="LSTEBEE00C8_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEBEE00C8_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry)</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Add_1.htm">Add(String, <span id="LSTEBEE00C8_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEBEE00C8_1?cpp=array<");</script>Byte<span id="LSTEBEE00C8_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEBEE00C8_2?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Add_2.htm">Add(String, String)</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Clear.htm">Clear</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Contains.htm">Contains</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_CopyTo.htm">CopyTo</a></td><td /></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_GetEnumerator.htm">GetEnumerator</a></td><td /></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_IndexOf.htm">IndexOf</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Insert.htm">Insert</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Remove.htm">Remove</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_RemoveAt.htm">RemoveAt</a></td><td /></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..44e0cd1fa0 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata_Entry.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Entry Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Entry structure, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Metadata.Entry" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Metadata_Entry" /><meta name="guid" content="Methods_T_Grpc_Core_Metadata_Entry" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata_Entry.htm" title="Entry Methods" tocid="Methods_T_Grpc_Core_Metadata_Entry">Entry Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Entry_ToString.htm" title="ToString Method " tocid="M_Grpc_Core_Metadata_Entry_ToString">ToString Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Entry Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST12C96E1E_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST12C96E1E_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2dts52z7" target="_blank">Equals</a></td><td><div class="summary">Indicates whether this instance and a specified object are equal.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/y3509fc2" target="_blank">GetHashCode</a></td><td><div class="summary">Returns the hash code for this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Entry_ToString.htm">ToString</a></td><td><div class="summary"> + Returns a <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a> that represents the current <a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST12C96E1E_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST12C96E1E_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a>. + </div> (Overrides <a href="http://msdn2.microsoft.com/en-us/library/wb77sz3h" target="_blank">ValueType<span id="LST12C96E1E_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST12C96E1E_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ToString<span id="LST12C96E1E_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST12C96E1E_3?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST12C96E1E_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST12C96E1E_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b4b0b5cc63 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Method_2.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Method(TRequest, TResponse) Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E class, methods" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse) class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Method`2" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Method_2" /><meta name="guid" content="Methods_T_Grpc_Core_Method_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Method_2__ctor.htm" title="Method(TRequest, TResponse) Constructor " tocid="M_Grpc_Core_Method_2__ctor">Method(TRequest, TResponse) Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Method<span id="LSTCE77B052_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCE77B052_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTCE77B052_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCE77B052_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Method_2.htm">Method<span id="LSTCE77B052_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCE77B052_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTCE77B052_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCE77B052_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Method_2.htm">Method<span id="LSTCE77B052_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCE77B052_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTCE77B052_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCE77B052_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..83c86a8206 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_RpcException.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RpcException Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RpcException class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.RpcException" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_RpcException" /><meta name="guid" content="Methods_T_Grpc_Core_RpcException" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_RpcException__ctor.htm" title="RpcException Constructor " tocid="Overload_Grpc_Core_RpcException__ctor">RpcException Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_RpcException.htm" title="RpcException Properties" tocid="Properties_T_Grpc_Core_RpcException">RpcException Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_RpcException.htm" title="RpcException Methods" tocid="Methods_T_Grpc_Core_RpcException">RpcException Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Events_T_Grpc_Core_RpcException.htm" title="RpcException Events" tocid="Events_T_Grpc_Core_RpcException">RpcException Events</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">RpcException Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_RpcException.htm">RpcException</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/49kcee3b" target="_blank">GetBaseException</a></td><td><div class="summary">When overridden in a derived class, returns the <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a> that is the root cause of one or more subsequent exceptions.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/fwb1489e" target="_blank">GetObjectData</a></td><td><div class="summary">When overridden in a derived class, sets the <a href="http://msdn2.microsoft.com/en-us/library/a9b6042e" target="_blank">SerializationInfo</a> with information about the exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/44zb316t" target="_blank">GetType</a></td><td><div class="summary">Gets the runtime type of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/es4y6f7e" target="_blank">ToString</a></td><td><div class="summary">Creates and returns a string representation of the current exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_RpcException.htm">RpcException Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..bf2e344c91 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Server class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Server" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Server" /><meta name="guid" content="Methods_T_Grpc_Core_Server" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server.htm" title="Server Methods" tocid="Methods_T_Grpc_Core_Server">Server Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_KillAsync.htm" title="KillAsync Method " tocid="M_Grpc_Core_Server_KillAsync">KillAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ShutdownAsync.htm" title="ShutdownAsync Method " tocid="M_Grpc_Core_Server_ShutdownAsync">ShutdownAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_Start.htm" title="Start Method " tocid="M_Grpc_Core_Server_Start">Start Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Server.htm">Server</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_KillAsync.htm">KillAsync</a></td><td><div class="summary"> + Requests server shutdown while cancelling all the in-progress calls. + The returned task finishes when shutdown procedure is complete. + </div></td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ShutdownAsync.htm">ShutdownAsync</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_Start.htm">Start</a></td><td><div class="summary"> + Starts the server. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server.htm">Server Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a55e4815e5 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCallContext.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerCallContext class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.ServerCallContext" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_ServerCallContext" /><meta name="guid" content="Methods_T_Grpc_Core_ServerCallContext" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Methods" tocid="Methods_T_Grpc_Core_ServerCallContext">ServerCallContext Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm" title="CreatePropagationToken Method " tocid="M_Grpc_Core_ServerCallContext_CreatePropagationToken">CreatePropagationToken Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm" title="WriteResponseHeadersAsync Method " tocid="M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync">WriteResponseHeadersAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm">CreatePropagationToken</a></td><td><div class="summary"> + Creates a propagation token to be used to propagate call context to a child call. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm">WriteResponseHeadersAsync</a></td><td><div class="summary"> + 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 <span class="code">WriteResponseHeadersAsync</span> haven't + been called yet. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c603f7c234 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCredentials.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCredentials Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerCredentials class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.ServerCredentials" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_ServerCredentials" /><meta name="guid" content="Methods_T_Grpc_Core_ServerCredentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerCredentials__ctor.htm" title="ServerCredentials Constructor " tocid="M_Grpc_Core_ServerCredentials__ctor">ServerCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Properties" tocid="Properties_T_Grpc_Core_ServerCredentials">ServerCredentials Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Methods" tocid="Methods_T_Grpc_Core_ServerCredentials">ServerCredentials Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCredentials Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ServerCredentials.htm">ServerCredentials</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCredentials.htm">ServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..87d83868f7 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerPort.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPort Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerPort class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.ServerPort" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_ServerPort" /><meta name="guid" content="Methods_T_Grpc_Core_ServerPort" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerPort__ctor.htm" title="ServerPort Constructor " tocid="M_Grpc_Core_ServerPort__ctor">ServerPort Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerPort.htm" title="ServerPort Properties" tocid="Properties_T_Grpc_Core_ServerPort">ServerPort Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ServerPort.htm" title="ServerPort Methods" tocid="Methods_T_Grpc_Core_ServerPort">ServerPort Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ServerPort.htm" title="ServerPort Fields" tocid="Fields_T_Grpc_Core_ServerPort">ServerPort Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPort Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ServerPort.htm">ServerPort</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerPort.htm">ServerPort Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..11b1491871 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerServiceDefinition Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerServiceDefinition class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.ServerServiceDefinition" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_ServerServiceDefinition" /><meta name="guid" content="Methods_T_Grpc_Core_ServerServiceDefinition" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm" title="CreateBuilder Method " tocid="M_Grpc_Core_ServerServiceDefinition_CreateBuilder">CreateBuilder Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerServiceDefinition Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ServerServiceDefinition.htm">ServerServiceDefinition</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm">CreateBuilder</a></td><td><div class="summary"> + Creates a new builder object for <span class="code">ServerServiceDefinition</span>. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerServiceDefinition.htm">ServerServiceDefinition Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..dccc51fe17 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Builder Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Builder class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.ServerServiceDefinition.Builder" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_ServerServiceDefinition_Builder" /><meta name="guid" content="Methods_T_Grpc_Core_ServerServiceDefinition_Builder" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="Builder Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition_Builder">Builder Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm" title="AddMethod Method " tocid="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod">AddMethod Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm" title="Build Method " tocid="M_Grpc_Core_ServerServiceDefinition_Builder_Build">Build Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Builder Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LSTBC1182BB_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm">AddMethod<span id="LSTBC1182BB_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LSTBC1182BB_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, ClientStreamingServerMethod<span id="LSTBC1182BB_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_5?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_6?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a client streaming method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm">AddMethod<span id="LSTBC1182BB_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_7?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_8?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LSTBC1182BB_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_9?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_10?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, DuplexStreamingServerMethod<span id="LSTBC1182BB_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_11?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_12?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a bidirectional streaming method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm">AddMethod<span id="LSTBC1182BB_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_13?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_14?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LSTBC1182BB_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_15?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_16?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, ServerStreamingServerMethod<span id="LSTBC1182BB_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_17?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_18"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_18?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a server streaming method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm">AddMethod<span id="LSTBC1182BB_19"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_19?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_20"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_20?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LSTBC1182BB_21"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_21?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_22"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_22?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, UnaryServerMethod<span id="LSTBC1182BB_23"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_23?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTBC1182BB_24"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_24?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a single request - single response method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm">Build</a></td><td><div class="summary"> + Creates an immutable <span class="code">ServerServiceDefinition</span> from this builder. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LSTBC1182BB_25"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBC1182BB_25?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b8e44358fb --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServerPortCollection.htm @@ -0,0 +1,10 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPortCollection Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerPortCollection class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Server.ServerPortCollection" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Server_ServerPortCollection" /><meta name="guid" content="Methods_T_Grpc_Core_Server_ServerPortCollection" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server_ServerPortCollection.htm" title="ServerPortCollection Methods" tocid="Methods_T_Grpc_Core_Server_ServerPortCollection">ServerPortCollection Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Server_ServerPortCollection_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Server_ServerPortCollection_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Server_ServerPortCollection_GetEnumerator">GetEnumerator Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPortCollection Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Server_ServerPortCollection.htm">Server<span id="LSTBAF264D0_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBAF264D0_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServerPortCollection_Add.htm">Add(ServerPort)</a></td><td><div class="summary"> + Adds a new port on which server should listen. + Only call this before Start(). + <h4 class="subHeading">Return Value</h4>Type: <br />The port on which server will be listening.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServerPortCollection_Add_1.htm">Add(String, Int32, ServerCredentials)</a></td><td><div class="summary"> + Adds a new port on which server should listen. + <h4 class="subHeading">Return Value</h4>Type: <br />The port on which server will be listening.</div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm">GetEnumerator</a></td><td><div class="summary"> + Gets enumerator for this collection. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server_ServerPortCollection.htm">Server<span id="LSTBAF264D0_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBAF264D0_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..08c940b831 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServiceDefinitionCollection Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServiceDefinitionCollection class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Server.ServiceDefinitionCollection" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Server_ServiceDefinitionCollection" /><meta name="guid" content="Methods_T_Grpc_Core_Server_ServiceDefinitionCollection" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="ServiceDefinitionCollection Methods" tocid="Methods_T_Grpc_Core_Server_ServiceDefinitionCollection">ServiceDefinitionCollection Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm" title="Add Method " tocid="M_Grpc_Core_Server_ServiceDefinitionCollection_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm" title="GetEnumerator Method " tocid="M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator">GetEnumerator Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServiceDefinitionCollection Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm">Server<span id="LSTCF6FB296_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCF6FB296_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm">Add</a></td><td><div class="summary"> + Adds a service definition to the server. This is how you register + handlers for a service with the server. Only call this before Start(). + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm">GetEnumerator</a></td><td><div class="summary"> + Gets enumerator for this collection. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm">Server<span id="LSTCF6FB296_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCF6FB296_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b4ef394fbe --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslCredentials.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslCredentials Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="SslCredentials class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.SslCredentials" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_SslCredentials" /><meta name="guid" content="Methods_T_Grpc_Core_SslCredentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_SslCredentials__ctor.htm" title="SslCredentials Constructor " tocid="Overload_Grpc_Core_SslCredentials__ctor">SslCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_SslCredentials.htm" title="SslCredentials Properties" tocid="Properties_T_Grpc_Core_SslCredentials">SslCredentials Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_SslCredentials.htm" title="SslCredentials Methods" tocid="Methods_T_Grpc_Core_SslCredentials">SslCredentials Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslCredentials Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_SslCredentials.htm">SslCredentials</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslCredentials.htm">SslCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..cbe8f3e41f --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslServerCredentials.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslServerCredentials Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="SslServerCredentials class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.SslServerCredentials" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_SslServerCredentials" /><meta name="guid" content="Methods_T_Grpc_Core_SslServerCredentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_SslServerCredentials__ctor.htm" title="SslServerCredentials Constructor " tocid="Overload_Grpc_Core_SslServerCredentials__ctor">SslServerCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Properties" tocid="Properties_T_Grpc_Core_SslServerCredentials">SslServerCredentials Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Methods" tocid="Methods_T_Grpc_Core_SslServerCredentials">SslServerCredentials Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslServerCredentials Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_SslServerCredentials.htm">SslServerCredentials</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslServerCredentials.htm">SslServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..8a477adba0 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Status.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Status Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Status structure, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Status" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_Status" /><meta name="guid" content="Methods_T_Grpc_Core_Status" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Status.htm" title="Status Methods" tocid="Methods_T_Grpc_Core_Status">Status Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Status_ToString.htm" title="ToString Method " tocid="M_Grpc_Core_Status_ToString">ToString Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Status Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Status.htm">Status</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2dts52z7" target="_blank">Equals</a></td><td><div class="summary">Indicates whether this instance and a specified object are equal.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/y3509fc2" target="_blank">GetHashCode</a></td><td><div class="summary">Returns the hash code for this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Status_ToString.htm">ToString</a></td><td><div class="summary"> + Returns a <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a> that represents the current <a href="T_Grpc_Core_Status.htm">Status</a>. + </div> (Overrides <a href="http://msdn2.microsoft.com/en-us/library/wb77sz3h" target="_blank">ValueType<span id="LST11F02AB9_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST11F02AB9_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ToString<span id="LST11F02AB9_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST11F02AB9_1?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Status.htm">Status Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..bade3e79f2 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncStreamExtensions Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncStreamExtensions class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Utils.AsyncStreamExtensions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions" /><meta name="guid" content="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Class" tocid="T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Methods" tocid="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm" title="ForEachAsync(T) Method " tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1">ForEachAsync(T) Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm" title="ToListAsync(T) Method " tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1">ToListAsync(T) Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm" title="WriteAllAsync Method " tocid="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync">WriteAllAsync Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncStreamExtensions Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm">ForEachAsync<span id="LST3F5F5CD6_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST3F5F5CD6_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Reads the entire stream and executes an async action for each element. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm">ToListAsync<span id="LST3F5F5CD6_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST3F5F5CD6_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Reads the entire stream and creates a list containing all the elements read. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm">WriteAllAsync<span id="LST3F5F5CD6_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST3F5F5CD6_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(IServerStreamWriter<span id="LST3F5F5CD6_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST3F5F5CD6_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, IEnumerable<span id="LST3F5F5CD6_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST3F5F5CD6_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Writes all elements from given enumerable to the stream. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm">WriteAllAsync<span id="LST3F5F5CD6_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_10?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST3F5F5CD6_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_11?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(IClientStreamWriter<span id="LST3F5F5CD6_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_12?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST3F5F5CD6_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_13?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, IEnumerable<span id="LST3F5F5CD6_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_14?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST3F5F5CD6_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3F5F5CD6_15?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, Boolean)</a></td><td><div class="summary"> + Writes all elements from given enumerable to the stream. + Completes the stream afterwards unless close = false. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..cf12124a28 --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>BenchmarkUtil Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="BenchmarkUtil class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Utils.BenchmarkUtil" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="Methods_T_Grpc_Core_Utils_BenchmarkUtil" /><meta name="guid" content="Methods_T_Grpc_Core_Utils_BenchmarkUtil" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_BenchmarkUtil.htm" title="BenchmarkUtil Class" tocid="T_Grpc_Core_Utils_BenchmarkUtil">BenchmarkUtil Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm" title="BenchmarkUtil Methods" tocid="Methods_T_Grpc_Core_Utils_BenchmarkUtil">BenchmarkUtil Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm" title="RunBenchmark Method " tocid="M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark">RunBenchmark Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">BenchmarkUtil Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Utils_BenchmarkUtil.htm">BenchmarkUtil</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm">RunBenchmark</a></td><td><div class="summary"> + Runs a simple benchmark preceded by warmup phase. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_BenchmarkUtil.htm">BenchmarkUtil Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..9b150653cb --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_Preconditions.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Preconditions Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Preconditions class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.Utils.Preconditions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="Methods_T_Grpc_Core_Utils_Preconditions" /><meta name="guid" content="Methods_T_Grpc_Core_Utils_Preconditions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Methods" tocid="Methods_T_Grpc_Core_Utils_Preconditions">Preconditions Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm" title="CheckArgument Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckArgument">CheckArgument Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm" title="CheckNotNull Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull">CheckNotNull Method </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckState.htm" title="CheckState Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckState">CheckState Method </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Preconditions Methods</td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckArgument.htm">CheckArgument(Boolean)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/3w1b3114" target="_blank">ArgumentException</a> if condition is false. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm">CheckArgument(Boolean, String)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/3w1b3114" target="_blank">ArgumentException</a> with given message if condition is false. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm">CheckNotNull<span id="LST65D0D273_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST65D0D273_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST65D0D273_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST65D0D273_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(T)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/27426hcy" target="_blank">ArgumentNullException</a> if reference is null. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm">CheckNotNull<span id="LST65D0D273_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST65D0D273_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST65D0D273_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST65D0D273_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(T, String)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/27426hcy" target="_blank">ArgumentNullException</a> if reference is null. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckState.htm">CheckState(Boolean)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/2asft85a" target="_blank">InvalidOperationException</a> if condition is false. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckState_1.htm">CheckState(Boolean, String)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/2asft85a" target="_blank">InvalidOperationException</a> with given message if condition is false. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_Preconditions.htm">Preconditions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..abfae7f92a --- /dev/null +++ b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_WriteOptions.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>WriteOptions Methods</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteOptions class, methods" /><meta name="Microsoft.Help.Id" content="Methods.T:Grpc.Core.WriteOptions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Methods_T_Grpc_Core_WriteOptions" /><meta name="guid" content="Methods_T_Grpc_Core_WriteOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_WriteOptions__ctor.htm" title="WriteOptions Constructor " tocid="M_Grpc_Core_WriteOptions__ctor">WriteOptions Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Properties" tocid="Properties_T_Grpc_Core_WriteOptions">WriteOptions Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Methods" tocid="Methods_T_Grpc_Core_WriteOptions">WriteOptions Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Fields" tocid="Fields_T_Grpc_Core_WriteOptions">WriteOptions Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">WriteOptions Methods</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_WriteOptions.htm">WriteOptions</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_WriteOptions.htm">WriteOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..2b80dc68bd --- /dev/null +++ b/doc/ref/csharp/html/html/N_Grpc_Auth.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Grpc.Auth Namespace</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Grpc.Auth namespace" /><meta name="Microsoft.Help.F1" content="Grpc.Auth" /><meta name="Microsoft.Help.Id" content="N:Grpc.Auth" /><meta name="Description" content="Provides OAuth2 based authentication for gRPC. Grpc.Auth currently consists of a set of very lightweight wrappers and uses C# Google.Apis.Auth library." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Auth" /><meta name="file" content="N_Grpc_Auth" /><meta name="guid" content="N_Grpc_Auth" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Auth.htm" title="Grpc.Auth" tocid="N_Grpc_Auth">Grpc.Auth</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Auth_AuthInterceptors.htm" title="AuthInterceptors Class" tocid="T_Grpc_Auth_AuthInterceptors">AuthInterceptors Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Grpc.Auth Namespace</td></tr></table><span class="introStyle"></span><div class="summary">Provides OAuth2 based authentication for gRPC. <span class="code">Grpc.Auth</span> currently consists of a set of very lightweight wrappers and uses C# <a href="https://www.nuget.org/packages/Google.Apis.Auth/">Google.Apis.Auth</a> library.</div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Classes</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="typeList" class="members"><tr><th class="iconColumn"> +  + </th><th>Class</th><th>Description</th></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Auth_AuthInterceptors.htm">AuthInterceptors</a></td><td><div class="summary"> + Factory methods to create authorization interceptors. Interceptors created can be registered with gRPC client classes (autogenerated client stubs that + inherit from <a href="T_Grpc_Core_ClientBase.htm">ClientBase</a>). + </div></td></tr></table></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..83d06a4951 --- /dev/null +++ b/doc/ref/csharp/html/html/N_Grpc_Core.htm @@ -0,0 +1,133 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Grpc.Core Namespace</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Grpc.Core namespace" /><meta name="Microsoft.Help.F1" content="Grpc.Core" /><meta name="Microsoft.Help.Id" content="N:Grpc.Core" /><meta name="Description" content="Main namespace for gRPC C# functionality. Contains concepts representing both client side and server side gRPC logic." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="N_Grpc_Core" /><meta name="guid" content="N_Grpc_Core" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Grpc.Core Namespace</td></tr></table><span class="introStyle"></span><div class="summary">Main namespace for gRPC C# functionality. Contains concepts representing both client side and server side gRPC logic. + +</div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Classes</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="typeList" class="members"><tr><th class="iconColumn"> +  + </th><th>Class</th><th>Description</th></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LST9697633_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_0?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9697633_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_1?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Return type for client streaming calls. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall<span id="LST9697633_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9697633_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Return type for bidirectional streaming calls. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm">AsyncServerStreamingCall<span id="LST9697633_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST9697633_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Return type for server streaming calls. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall<span id="LST9697633_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST9697633_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Return type for single request - single response call. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Calls.htm">Calls</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Channel.htm">Channel</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption</a></td><td><div class="summary"> + Channel option specified when creating a channel. + Corresponds to grpc_channel_args from grpc/grpc.h. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_ChannelOptions.htm">ChannelOptions</a></td><td><div class="summary"> + Defines names of supported channel options. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_ClientBase.htm">ClientBase</a></td><td><div class="summary"> + Base class for client-side stubs. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions</a></td><td><div class="summary"> + Options for <a href="T_Grpc_Core_ContextPropagationToken.htm">ContextPropagationToken</a>. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_ContextPropagationToken.htm">ContextPropagationToken</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Credentials.htm">Credentials</a></td><td><div class="summary"> + Client-side credentials. Used for creation of a secure channel. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_GrpcEnvironment.htm">GrpcEnvironment</a></td><td><div class="summary"> + Encapsulates initialization and shutdown of gRPC library. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair</a></td><td><div class="summary"> + Key certificate pair (in PEM encoding). + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Marshallers.htm">Marshallers</a></td><td><div class="summary"> + Utilities for creating marshallers. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Metadata.htm">Metadata</a></td><td><div class="summary"> + A collection of metadata entries that can be exchanged during a call. + gRPC supports these types of metadata: + <ul><li><strong>Request headers</strong> - are sent by the client at the beginning of a remote call before any request messages are sent.</li><li><strong>Response headers</strong> - are sent by the server at the beginning of a remote call handler before any response messages are sent.</li><li><strong>Response trailers</strong> - are sent by the server at the end of a remote call along with resulting call status.</li></ul></div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Method_2.htm">Method<span id="LST9697633_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_8?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9697633_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_9?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + A description of a remote method. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_RpcException.htm">RpcException</a></td><td><div class="summary"> + Thrown when remote procedure call fails. Every <span class="code">RpcException</span> is associated with a resulting <a href="P_Grpc_Core_RpcException_Status.htm">Status</a> of the call. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Server.htm">Server</a></td><td><div class="summary"> + gRPC server. A single server can server arbitrary number of services and can listen on more than one ports. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Server_ServerPortCollection.htm">Server<span id="LST9697633_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection</a></td><td><div class="summary"> + Collection of server ports. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm">Server<span id="LST9697633_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_11?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection</a></td><td><div class="summary"> + Collection of service definitions. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext</a></td><td><div class="summary"> + Context for a server-side call. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_ServerCredentials.htm">ServerCredentials</a></td><td><div class="summary"> + Server side credentials. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_ServerPort.htm">ServerPort</a></td><td><div class="summary"> + A port exposed by a server. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_ServerServiceDefinition.htm">ServerServiceDefinition</a></td><td><div class="summary"> + Mapping of method names to server call handlers. + Normally, the <span class="code">ServerServiceDefinition</span> objects will be created by the <span class="code">BindService</span> factory method + that is part of the autogenerated code for a protocol buffers service definition. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LST9697633_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_12?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</a></td><td><div class="summary"> + Builder class for <a href="T_Grpc_Core_ServerServiceDefinition.htm">ServerServiceDefinition</a>. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_SslCredentials.htm">SslCredentials</a></td><td><div class="summary"> + Client-side SSL credentials. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_SslServerCredentials.htm">SslServerCredentials</a></td><td><div class="summary"> + Server-side SSL credentials. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_VersionInfo.htm">VersionInfo</a></td><td><div class="summary"> + Provides info about current version of gRPC. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + Options for write operations. + </div></td></tr></table></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Structures</span></div><div id="ID1RBSection" class="collapsibleSection"><table id="typeList" class="members"><tr><th class="iconColumn"> +  + </th><th>Structure</th><th>Description</th></tr><tr data="structure; public"><td><img src="../icons/pubstructure.gif" alt="Public structure" title="Public structure" /></td><td><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST9697633_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_13?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9697633_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_14?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Details about a client-side call to be invoked. + </div></td></tr><tr data="structure; public"><td><img src="../icons/pubstructure.gif" alt="Public structure" title="Public structure" /></td><td><a href="T_Grpc_Core_CallOptions.htm">CallOptions</a></td><td><div class="summary"> + Options for calls made by client. + </div></td></tr><tr data="structure; public"><td><img src="../icons/pubstructure.gif" alt="Public structure" title="Public structure" /></td><td><a href="T_Grpc_Core_Marshaller_1.htm">Marshaller<span id="LST9697633_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_15?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9697633_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_16?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Encapsulates the logic for serializing and deserializing messages. + </div></td></tr><tr data="structure; public"><td><img src="../icons/pubstructure.gif" alt="Public structure" title="Public structure" /></td><td><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST9697633_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_17?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a></td><td><div class="summary"> + Metadata entry + </div></td></tr><tr data="structure; public"><td><img src="../icons/pubstructure.gif" alt="Public structure" title="Public structure" /></td><td><a href="T_Grpc_Core_Status.htm">Status</a></td><td><div class="summary"> + Represents RPC result, which consists of <a href="P_Grpc_Core_Status_StatusCode.htm">StatusCode</a> and an optional detail string. + </div></td></tr></table></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Interfaces</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="typeList" class="members"><tr><th class="iconColumn"> +  + </th><th>Interface</th><th>Description</th></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_Grpc_Core_IAsyncStreamReader_1.htm">IAsyncStreamReader<span id="LST9697633_18"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_18?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9697633_19"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_19?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + A stream of messages to be read. + </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST9697633_20"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_20?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9697633_21"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_21?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + A writable stream of messages. + </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_Grpc_Core_IClientStreamWriter_1.htm">IClientStreamWriter<span id="LST9697633_22"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_22?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9697633_23"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_23?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Client-side writable stream of messages with Close capability. + </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_Grpc_Core_IHasWriteOptions.htm">IHasWriteOptions</a></td><td><div class="summary"> + Allows sharing write options between ServerCallContext and other objects. + </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_Grpc_Core_IMethod.htm">IMethod</a></td><td><div class="summary"> + A non-generic representation of a remote method. + </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_Grpc_Core_IServerStreamWriter_1.htm">IServerStreamWriter<span id="LST9697633_24"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_24?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST9697633_25"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_25?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + A writable stream of messages that is used in server-side handlers. + </div></td></tr></table></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Delegates</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="typeList" class="members"><tr><th class="iconColumn"> +  + </th><th>Delegate</th><th>Description</th></tr><tr data="delegate; public"><td><img src="../icons/pubdelegate.gif" alt="Public delegate" title="Public delegate" /></td><td><a href="T_Grpc_Core_ClientStreamingServerMethod_2.htm">ClientStreamingServerMethod<span id="LST9697633_26"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_26?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9697633_27"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_27?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Server-side handler for client streaming call. + </div></td></tr><tr data="delegate; public"><td><img src="../icons/pubdelegate.gif" alt="Public delegate" title="Public delegate" /></td><td><a href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm">DuplexStreamingServerMethod<span id="LST9697633_28"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_28?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9697633_29"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_29?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Server-side handler for bidi streaming call. + </div></td></tr><tr data="delegate; public"><td><img src="../icons/pubdelegate.gif" alt="Public delegate" title="Public delegate" /></td><td><a href="T_Grpc_Core_HeaderInterceptor.htm">HeaderInterceptor</a></td><td><div class="summary"> + Interceptor for call headers. + </div></td></tr><tr data="delegate; public"><td><img src="../icons/pubdelegate.gif" alt="Public delegate" title="Public delegate" /></td><td><a href="T_Grpc_Core_ServerStreamingServerMethod_2.htm">ServerStreamingServerMethod<span id="LST9697633_30"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_30?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9697633_31"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_31?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Server-side handler for server streaming call. + </div></td></tr><tr data="delegate; public"><td><img src="../icons/pubdelegate.gif" alt="Public delegate" title="Public delegate" /></td><td><a href="T_Grpc_Core_UnaryServerMethod_2.htm">UnaryServerMethod<span id="LST9697633_32"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_32?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9697633_33"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_33?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Server-side handler for unary call. + </div></td></tr></table></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Enumerations</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="typeList" class="members"><tr><th class="iconColumn"> +  + </th><th>Enumeration</th><th>Description</th></tr><tr data="enumeration; public"><td><img src="../icons/pubenumeration.gif" alt="Public enumeration" title="Public enumeration" /></td><td><a href="T_Grpc_Core_ChannelOption_OptionType.htm">ChannelOption<span id="LST9697633_34"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9697633_34?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>OptionType</a></td><td><div class="summary"> + Type of <span class="code">ChannelOption</span>. + </div></td></tr><tr data="enumeration; public"><td><img src="../icons/pubenumeration.gif" alt="Public enumeration" title="Public enumeration" /></td><td><a href="T_Grpc_Core_ChannelState.htm">ChannelState</a></td><td><div class="summary"> + Connectivity state of a channel. + Based on grpc_connectivity_state from grpc/grpc.h + </div></td></tr><tr data="enumeration; public"><td><img src="../icons/pubenumeration.gif" alt="Public enumeration" title="Public enumeration" /></td><td><a href="T_Grpc_Core_CompressionLevel.htm">CompressionLevel</a></td><td><div class="summary"> + Compression level based on grpc_compression_level from grpc/compression.h + </div></td></tr><tr data="enumeration; public"><td><img src="../icons/pubenumeration.gif" alt="Public enumeration" title="Public enumeration" /></td><td><a href="T_Grpc_Core_MethodType.htm">MethodType</a></td><td><div class="summary"> + Method types supported by gRPC. + </div></td></tr><tr data="enumeration; public"><td><img src="../icons/pubenumeration.gif" alt="Public enumeration" title="Public enumeration" /></td><td><a href="T_Grpc_Core_StatusCode.htm">StatusCode</a></td><td><div class="summary"> + Result of a remote procedure call. + Based on grpc_status_code from grpc/status.h + </div></td></tr><tr data="enumeration; public"><td><img src="../icons/pubenumeration.gif" alt="Public enumeration" title="Public enumeration" /></td><td><a href="T_Grpc_Core_WriteFlags.htm">WriteFlags</a></td><td><div class="summary"> + Flags for write operations. + </div></td></tr></table></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><span class="nolink">[Grpc.Core.Channel]</span></div><div class="seeAlsoStyle"><span class="nolink">[Grpc.Core.Server]</span></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..e0f8f6fae6 --- /dev/null +++ b/doc/ref/csharp/html/html/N_Grpc_Core_Logging.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Grpc.Core.Logging Namespace</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Grpc.Core.Logging namespace" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging" /><meta name="Microsoft.Help.Id" content="N:Grpc.Core.Logging" /><meta name="Description" content="Provides functionality to redirect gRPC logs to application-specified destination." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="N_Grpc_Core_Logging" /><meta name="guid" content="N_Grpc_Core_Logging" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Grpc.Core.Logging Namespace</td></tr></table><span class="introStyle"></span><div class="summary">Provides functionality to redirect gRPC logs to application-specified destination.</div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Classes</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="typeList" class="members"><tr><th class="iconColumn"> +  + </th><th>Class</th><th>Description</th></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger</a></td><td><div class="summary">Logger that logs to System.Console.</div></td></tr></table></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Interfaces</span></div><div id="ID1RBSection" class="collapsibleSection"><table id="typeList" class="members"><tr><th class="iconColumn"> +  + </th><th>Interface</th><th>Description</th></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_Grpc_Core_Logging_ILogger.htm">ILogger</a></td><td><div class="summary">For logging messages.</div></td></tr></table></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..07574fcfa8 --- /dev/null +++ b/doc/ref/csharp/html/html/N_Grpc_Core_Utils.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Grpc.Core.Utils Namespace</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Grpc.Core.Utils namespace" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils" /><meta name="Microsoft.Help.Id" content="N:Grpc.Core.Utils" /><meta name="Description" content="Various utilities for gRPC C#." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="N_Grpc_Core_Utils" /><meta name="guid" content="N_Grpc_Core_Utils" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Class" tocid="T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_BenchmarkUtil.htm" title="BenchmarkUtil Class" tocid="T_Grpc_Core_Utils_BenchmarkUtil">BenchmarkUtil Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Grpc.Core.Utils Namespace</td></tr></table><span class="introStyle"></span><div class="summary">Various utilities for gRPC C#.</div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Classes</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="typeList" class="members"><tr><th class="iconColumn"> +  + </th><th>Class</th><th>Description</th></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions</a></td><td><div class="summary"> + Extension methods that simplify work with gRPC streaming calls. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Utils_BenchmarkUtil.htm">BenchmarkUtil</a></td><td><div class="summary"> + Utility methods to run microbenchmarks. + </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_Grpc_Core_Utils_Preconditions.htm">Preconditions</a></td><td><div class="summary"> + Utility methods to simplify checking preconditions in the code. + </div></td></tr></table></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..bdfed5182c --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse) Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E structure, constructor" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse) structure, constructor" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E.CallInvocationDetails constructor" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse).CallInvocationDetails constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.CallInvocationDetails" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.CallInvocationDetails`2.#ctor" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Overload_Grpc_Core_CallInvocationDetails_2__ctor" /><meta name="guid" content="Overload_Grpc_Core_CallInvocationDetails_2__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor " tocid="Overload_Grpc_Core_CallInvocationDetails_2__ctor">CallInvocationDetails(TRequest, TResponse) Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor_1">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)" tocid="M_Grpc_Core_CallInvocationDetails_2__ctor_2">CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LSTA61218D2_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTA61218D2_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Constructor </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallInvocationDetails_2__ctor.htm">CallInvocationDetails<span id="LSTA61218D2_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA61218D2_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script>(Channel, Method<span id="LSTA61218D2_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTA61218D2_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, CallOptions)</a></td><td><div class="summary"> + Initializes a new instance of the <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LSTA61218D2_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA61218D2_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> struct. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm">CallInvocationDetails<span id="LSTA61218D2_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_8?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA61218D2_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_9?cs=>|vb=)|cpp=>|nu=)|fs=>");</script>(Channel, Method<span id="LSTA61218D2_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_10?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTA61218D2_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_11?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, String, CallOptions)</a></td><td><div class="summary"> + Initializes a new instance of the <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LSTA61218D2_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_12?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA61218D2_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_13?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> struct. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm">CallInvocationDetails<span id="LSTA61218D2_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_14?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA61218D2_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_15?cs=>|vb=)|cpp=>|nu=)|fs=>");</script>(Channel, String, String, Marshaller<span id="LSTA61218D2_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_16?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest<span id="LSTA61218D2_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_17?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, Marshaller<span id="LSTA61218D2_18"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_18?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TResponse<span id="LSTA61218D2_19"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_19?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, CallOptions)</a></td><td><div class="summary"> + Initializes a new instance of the <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LSTA61218D2_20"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_20?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA61218D2_21"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_21?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> struct. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LSTA61218D2_22"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_22?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA61218D2_23"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA61218D2_23?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f9d3b53755 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_ChannelOption__ctor.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOption Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ChannelOption class, constructor" /><meta name="System.Keywords" content="ChannelOption.ChannelOption constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.ChannelOption" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.ChannelOption.#ctor" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Overload_Grpc_Core_ChannelOption__ctor" /><meta name="guid" content="Overload_Grpc_Core_ChannelOption__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ChannelOption__ctor.htm" title="ChannelOption Constructor " tocid="Overload_Grpc_Core_ChannelOption__ctor">ChannelOption Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ChannelOption__ctor.htm" title="ChannelOption Constructor (String, Int32)" tocid="M_Grpc_Core_ChannelOption__ctor">ChannelOption Constructor (String, Int32)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ChannelOption__ctor_1.htm" title="ChannelOption Constructor (String, String)" tocid="M_Grpc_Core_ChannelOption__ctor_1">ChannelOption Constructor (String, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOption Constructor </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ChannelOption__ctor.htm">ChannelOption(String, Int32)</a></td><td><div class="summary"> + Creates a channel option with an integer value. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ChannelOption__ctor_1.htm">ChannelOption(String, String)</a></td><td><div class="summary"> + Creates a channel option with a string value. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ba465a1a91 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Channel__ctor.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Channel class, constructor" /><meta name="System.Keywords" content="Channel.Channel constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel.Channel" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Channel.#ctor" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Overload_Grpc_Core_Channel__ctor" /><meta name="guid" content="Overload_Grpc_Core_Channel__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Channel__ctor.htm" title="Channel Constructor " tocid="Overload_Grpc_Core_Channel__ctor">Channel Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel__ctor.htm" title="Channel Constructor (String, Credentials, IEnumerable(ChannelOption))" tocid="M_Grpc_Core_Channel__ctor">Channel Constructor (String, Credentials, IEnumerable(ChannelOption))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Channel__ctor_1.htm" title="Channel Constructor (String, Int32, Credentials, IEnumerable(ChannelOption))" tocid="M_Grpc_Core_Channel__ctor_1">Channel Constructor (String, Int32, Credentials, IEnumerable(ChannelOption))</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel Constructor </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Channel__ctor.htm">Channel(String, Credentials, IEnumerable<span id="LSTF16262A3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF16262A3_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>ChannelOption<span id="LSTF16262A3_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF16262A3_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Channel__ctor_1.htm">Channel(String, Int32, Credentials, IEnumerable<span id="LSTF16262A3_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF16262A3_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>ChannelOption<span id="LSTF16262A3_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF16262A3_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Creates a channel that connects to a specific host and port. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..534abce9e1 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger.Error Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Error method" /><meta name="System.Keywords" content="ConsoleLogger.Error method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ConsoleLogger.Error" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Logging.ConsoleLogger.Error" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="Overload_Grpc_Core_Logging_ConsoleLogger_Error" /><meta name="guid" content="Overload_Grpc_Core_Logging_ConsoleLogger_Error" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Error">Error Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm" title="Error Method (String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Error_1">Error Method (String, Object[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Error.htm" title="Error Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Error">Error Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger<span id="LST2B8A68E7_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2B8A68E7_0?cpp=::|nu=.");</script>Error Method </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm">Error(String, <span id="LST2B8A68E7_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2B8A68E7_1?cpp=array<");</script>Object<span id="LST2B8A68E7_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2B8A68E7_2?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Error.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Error.htm">Error(Exception, String, <span id="LST2B8A68E7_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2B8A68E7_3?cpp=array<");</script>Object<span id="LST2B8A68E7_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2B8A68E7_4?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Error.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..463eff0486 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger.Warning Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Warning method" /><meta name="System.Keywords" content="ConsoleLogger.Warning method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ConsoleLogger.Warning" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Logging.ConsoleLogger.Warning" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="Overload_Grpc_Core_Logging_ConsoleLogger_Warning" /><meta name="guid" content="Overload_Grpc_Core_Logging_ConsoleLogger_Warning" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ConsoleLogger_Warning">Warning Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm" title="Warning Method (String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Warning_1">Warning Method (String, Object[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger_Warning.htm" title="Warning Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ConsoleLogger_Warning">Warning Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger<span id="LSTC7B3B9A1_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC7B3B9A1_0?cpp=::|nu=.");</script>Warning Method </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm">Warning(String, <span id="LSTC7B3B9A1_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC7B3B9A1_1?cpp=array<");</script>Object<span id="LSTC7B3B9A1_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC7B3B9A1_2?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Warning.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Warning.htm">Warning(Exception, String, <span id="LSTC7B3B9A1_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC7B3B9A1_3?cpp=array<");</script>Object<span id="LSTC7B3B9A1_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC7B3B9A1_4?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Warning.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ConsoleLogger.htm">ConsoleLogger Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..38204e336d --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Error.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ILogger.Error Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Error method" /><meta name="System.Keywords" content="ILogger.Error method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ILogger.Error" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Logging.ILogger.Error" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="Overload_Grpc_Core_Logging_ILogger_Error" /><meta name="guid" content="Overload_Grpc_Core_Logging_ILogger_Error" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ILogger.htm" title="ILogger Methods" tocid="Methods_T_Grpc_Core_Logging_ILogger">ILogger Methods</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Error.htm" title="Error Method " tocid="Overload_Grpc_Core_Logging_ILogger_Error">Error Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Error_1.htm" title="Error Method (String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Error_1">Error Method (String, Object[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Error.htm" title="Error Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Error">Error Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ILogger<span id="LST85C5CE55_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST85C5CE55_0?cpp=::|nu=.");</script>Error Method </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Error_1.htm">Error(String, <span id="LST85C5CE55_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST85C5CE55_1?cpp=array<");</script>Object<span id="LST85C5CE55_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST85C5CE55_2?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Error.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Error.htm">Error(Exception, String, <span id="LST85C5CE55_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST85C5CE55_3?cpp=array<");</script>Object<span id="LST85C5CE55_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST85C5CE55_4?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Error.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ILogger.htm">ILogger Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..bfb1543a0a --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Warning.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ILogger.Warning Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Warning method" /><meta name="System.Keywords" content="ILogger.Warning method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ILogger.Warning" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Logging.ILogger.Warning" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="Overload_Grpc_Core_Logging_ILogger_Warning" /><meta name="guid" content="Overload_Grpc_Core_Logging_ILogger_Warning" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ILogger.htm" title="ILogger Methods" tocid="Methods_T_Grpc_Core_Logging_ILogger">ILogger Methods</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Logging_ILogger_Warning.htm" title="Warning Method " tocid="Overload_Grpc_Core_Logging_ILogger_Warning">Warning Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Warning_1.htm" title="Warning Method (String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Warning_1">Warning Method (String, Object[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ILogger_Warning.htm" title="Warning Method (Exception, String, Object[])" tocid="M_Grpc_Core_Logging_ILogger_Warning">Warning Method (Exception, String, Object[])</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ILogger<span id="LSTB9831373_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB9831373_0?cpp=::|nu=.");</script>Warning Method </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Warning_1.htm">Warning(String, <span id="LSTB9831373_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB9831373_1?cpp=array<");</script>Object<span id="LSTB9831373_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB9831373_2?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Warning.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Warning.htm">Warning(Exception, String, <span id="LSTB9831373_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB9831373_3?cpp=array<");</script>Object<span id="LSTB9831373_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB9831373_4?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Warning.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Logging_ILogger.htm">ILogger Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..58693f58dd --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Add.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Add Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Add method" /><meta name="System.Keywords" content="Metadata.Add method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Add" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Metadata.Add" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Overload_Grpc_Core_Metadata_Add" /><meta name="guid" content="Overload_Grpc_Core_Metadata_Add" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Metadata_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add.htm" title="Add Method (Metadata.Entry)" tocid="M_Grpc_Core_Metadata_Add">Add Method (Metadata.Entry)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add_1.htm" title="Add Method (String, Byte[])" tocid="M_Grpc_Core_Metadata_Add_1">Add Method (String, Byte[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Add_2.htm" title="Add Method (String, String)" tocid="M_Grpc_Core_Metadata_Add_2">Add Method (String, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LSTDDACDB19_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDDACDB19_0?cpp=::|nu=.");</script>Add Method </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Add.htm">Add(Metadata<span id="LSTDDACDB19_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDDACDB19_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry)</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Add_1.htm">Add(String, <span id="LSTDDACDB19_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDDACDB19_2?cpp=array<");</script>Byte<span id="LSTDDACDB19_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDDACDB19_3?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Add_2.htm">Add(String, String)</a></td><td /></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..7355bb6cd1 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Entry__ctor.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Entry Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Metadata.Entry structure, constructor" /><meta name="System.Keywords" content="Metadata.Entry.Entry constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry.Entry" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Metadata.Entry.#ctor" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Overload_Grpc_Core_Metadata_Entry__ctor" /><meta name="guid" content="Overload_Grpc_Core_Metadata_Entry__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Entry__ctor.htm" title="Entry Constructor " tocid="Overload_Grpc_Core_Metadata_Entry__ctor">Entry Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Entry__ctor.htm" title="Metadata.Entry Constructor (String, Byte[])" tocid="M_Grpc_Core_Metadata_Entry__ctor">Metadata.Entry Constructor (String, Byte[])</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata_Entry__ctor_1.htm" title="Metadata.Entry Constructor (String, String)" tocid="M_Grpc_Core_Metadata_Entry__ctor_1">Metadata.Entry Constructor (String, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Entry Constructor </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Entry__ctor.htm">Metadata<span id="LST3A8BC45F_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3A8BC45F_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry(String, <span id="LST3A8BC45F_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3A8BC45F_1?cpp=array<");</script>Byte<span id="LST3A8BC45F_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3A8BC45F_2?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary"> + Initializes a new instance of the <a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST3A8BC45F_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3A8BC45F_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a> struct with a binary value. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Entry__ctor_1.htm">Metadata<span id="LST3A8BC45F_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3A8BC45F_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry(String, String)</a></td><td><div class="summary"> + Initializes a new instance of the <a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST3A8BC45F_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3A8BC45F_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a> struct holding an ASCII value. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST3A8BC45F_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3A8BC45F_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..aa64c87501 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_RpcException__ctor.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RpcException Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RpcException class, constructor" /><meta name="System.Keywords" content="RpcException.RpcException constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.RpcException.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.RpcException.RpcException" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.RpcException.#ctor" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Overload_Grpc_Core_RpcException__ctor" /><meta name="guid" content="Overload_Grpc_Core_RpcException__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_RpcException__ctor.htm" title="RpcException Constructor " tocid="Overload_Grpc_Core_RpcException__ctor">RpcException Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_RpcException__ctor.htm" title="RpcException Constructor (Status)" tocid="M_Grpc_Core_RpcException__ctor">RpcException Constructor (Status)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_RpcException__ctor_1.htm" title="RpcException Constructor (Status, String)" tocid="M_Grpc_Core_RpcException__ctor_1">RpcException Constructor (Status, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">RpcException Constructor </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_RpcException__ctor.htm">RpcException(Status)</a></td><td><div class="summary"> + Creates a new <span class="code">RpcException</span> associated with given status. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_RpcException__ctor_1.htm">RpcException(Status, String)</a></td><td><div class="summary"> + Creates a new <span class="code">RpcException</span> associated with given status and message. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_RpcException.htm">RpcException Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..534bdc6001 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Builder.AddMethod Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AddMethod method" /><meta name="System.Keywords" content="ServerServiceDefinition.Builder.AddMethod method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerServiceDefinition.Builder.AddMethod" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerServiceDefinition.Builder.AddMethod``2" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.ServerServiceDefinition.Builder.AddMethod" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod" /><meta name="guid" content="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="Builder Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition_Builder">Builder Methods</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm" title="AddMethod Method " tocid="Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod">AddMethod Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm" title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))" tocid="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3">AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Builder<span id="LST6DB3BCAD_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_0?cpp=::|nu=.");</script>AddMethod Method </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm">AddMethod<span id="LST6DB3BCAD_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LST6DB3BCAD_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, ClientStreamingServerMethod<span id="LST6DB3BCAD_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_5?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_6?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a client streaming method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm">AddMethod<span id="LST6DB3BCAD_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_7?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_8?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LST6DB3BCAD_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_9?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_10?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, DuplexStreamingServerMethod<span id="LST6DB3BCAD_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_11?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_12?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a bidirectional streaming method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm">AddMethod<span id="LST6DB3BCAD_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_13?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_14?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LST6DB3BCAD_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_15?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_16?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, ServerStreamingServerMethod<span id="LST6DB3BCAD_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_17?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_18"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_18?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a server streaming method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm">AddMethod<span id="LST6DB3BCAD_19"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_19?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_20"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_20?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LST6DB3BCAD_21"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_21?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_22"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_22?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, UnaryServerMethod<span id="LST6DB3BCAD_23"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_23?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST6DB3BCAD_24"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_24?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a single request - single response method. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerServiceDefinition_Builder.htm">ServerServiceDefinition<span id="LST6DB3BCAD_25"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6DB3BCAD_25?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..9e5a944189 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPortCollection.Add Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Add method" /><meta name="System.Keywords" content="Server.ServerPortCollection.Add method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.ServerPortCollection.Add" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Server.ServerPortCollection.Add" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Overload_Grpc_Core_Server_ServerPortCollection_Add" /><meta name="guid" content="Overload_Grpc_Core_Server_ServerPortCollection_Add" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server_ServerPortCollection.htm" title="ServerPortCollection Methods" tocid="Methods_T_Grpc_Core_Server_ServerPortCollection">ServerPortCollection Methods</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Server_ServerPortCollection_Add.htm" title="Add Method " tocid="Overload_Grpc_Core_Server_ServerPortCollection_Add">Add Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServerPortCollection_Add.htm" title="Add Method (ServerPort)" tocid="M_Grpc_Core_Server_ServerPortCollection_Add">Add Method (ServerPort)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server_ServerPortCollection_Add_1.htm" title="Add Method (String, Int32, ServerCredentials)" tocid="M_Grpc_Core_Server_ServerPortCollection_Add_1">Add Method (String, Int32, ServerCredentials)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPortCollection<span id="LSTC57FAF81_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC57FAF81_0?cpp=::|nu=.");</script>Add Method </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServerPortCollection_Add.htm">Add(ServerPort)</a></td><td><div class="summary"> + Adds a new port on which server should listen. + Only call this before Start(). + <h4 class="subHeading">Return Value</h4>Type: <br />The port on which server will be listening.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServerPortCollection_Add_1.htm">Add(String, Int32, ServerCredentials)</a></td><td><div class="summary"> + Adds a new port on which server should listen. + <h4 class="subHeading">Return Value</h4>Type: <br />The port on which server will be listening.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server_ServerPortCollection.htm">Server<span id="LSTC57FAF81_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC57FAF81_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..93219ea152 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_SslCredentials__ctor.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslCredentials Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="SslCredentials class, constructor" /><meta name="System.Keywords" content="SslCredentials.SslCredentials constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslCredentials.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslCredentials.SslCredentials" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.SslCredentials.#ctor" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Overload_Grpc_Core_SslCredentials__ctor" /><meta name="guid" content="Overload_Grpc_Core_SslCredentials__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_SslCredentials__ctor.htm" title="SslCredentials Constructor " tocid="Overload_Grpc_Core_SslCredentials__ctor">SslCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor.htm" title="SslCredentials Constructor " tocid="M_Grpc_Core_SslCredentials__ctor">SslCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor_1.htm" title="SslCredentials Constructor (String)" tocid="M_Grpc_Core_SslCredentials__ctor_1">SslCredentials Constructor (String)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslCredentials__ctor_2.htm" title="SslCredentials Constructor (String, KeyCertificatePair)" tocid="M_Grpc_Core_SslCredentials__ctor_2">SslCredentials Constructor (String, KeyCertificatePair)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslCredentials Constructor </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_SslCredentials__ctor.htm">SslCredentials<span id="LSTC1C606C2_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC1C606C2_0?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_SslCredentials__ctor_1.htm">SslCredentials(String)</a></td><td><div class="summary"> + Creates client-side SSL credentials from + a string containing PEM encoded root certificates. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_SslCredentials__ctor_2.htm">SslCredentials(String, KeyCertificatePair)</a></td><td><div class="summary"> + Creates client-side SSL credentials. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslCredentials.htm">SslCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f8506d929d --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_SslServerCredentials__ctor.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslServerCredentials Constructor </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="SslServerCredentials class, constructor" /><meta name="System.Keywords" content="SslServerCredentials.SslServerCredentials constructor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslServerCredentials.#ctor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslServerCredentials.SslServerCredentials" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.SslServerCredentials.#ctor" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Overload_Grpc_Core_SslServerCredentials__ctor" /><meta name="guid" content="Overload_Grpc_Core_SslServerCredentials__ctor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_SslServerCredentials__ctor.htm" title="SslServerCredentials Constructor " tocid="Overload_Grpc_Core_SslServerCredentials__ctor">SslServerCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslServerCredentials__ctor.htm" title="SslServerCredentials Constructor (IEnumerable(KeyCertificatePair))" tocid="M_Grpc_Core_SslServerCredentials__ctor">SslServerCredentials Constructor (IEnumerable(KeyCertificatePair))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_SslServerCredentials__ctor_1.htm" title="SslServerCredentials Constructor (IEnumerable(KeyCertificatePair), String, Boolean)" tocid="M_Grpc_Core_SslServerCredentials__ctor_1">SslServerCredentials Constructor (IEnumerable(KeyCertificatePair), String, Boolean)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslServerCredentials Constructor </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_SslServerCredentials__ctor.htm">SslServerCredentials(IEnumerable<span id="LST13CCA219_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13CCA219_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>KeyCertificatePair<span id="LST13CCA219_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13CCA219_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Creates server-side SSL credentials. + This constructor should be use if you do not wish to autheticate client + using client root certificates. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_SslServerCredentials__ctor_1.htm">SslServerCredentials(IEnumerable<span id="LST13CCA219_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13CCA219_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>KeyCertificatePair<span id="LST13CCA219_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13CCA219_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, String, Boolean)</a></td><td><div class="summary"> + Creates server-side SSL credentials. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslServerCredentials.htm">SslServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..af7b957887 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncStreamExtensions.WriteAllAsync Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteAllAsync method" /><meta name="System.Keywords" content="AsyncStreamExtensions.WriteAllAsync method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync" /><meta name="guid" content="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Class" tocid="T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Methods" tocid="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Methods</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm" title="WriteAllAsync Method " tocid="Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync">WriteAllAsync Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm" title="WriteAllAsync(T) Method (IServerStreamWriter(T), IEnumerable(T))" tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1">WriteAllAsync(T) Method (IServerStreamWriter(T), IEnumerable(T))</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm" title="WriteAllAsync(T) Method (IClientStreamWriter(T), IEnumerable(T), Boolean)" tocid="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1">WriteAllAsync(T) Method (IClientStreamWriter(T), IEnumerable(T), Boolean)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncStreamExtensions<span id="LST99B1CCC8_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_0?cpp=::|nu=.");</script>WriteAllAsync Method </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm">WriteAllAsync<span id="LST99B1CCC8_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST99B1CCC8_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(IServerStreamWriter<span id="LST99B1CCC8_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST99B1CCC8_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, IEnumerable<span id="LST99B1CCC8_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_5?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST99B1CCC8_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_6?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Writes all elements from given enumerable to the stream. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm">WriteAllAsync<span id="LST99B1CCC8_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_7?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST99B1CCC8_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_8?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(IClientStreamWriter<span id="LST99B1CCC8_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_9?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST99B1CCC8_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_10?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, IEnumerable<span id="LST99B1CCC8_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_11?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST99B1CCC8_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99B1CCC8_12?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, Boolean)</a></td><td><div class="summary"> + Writes all elements from given enumerable to the stream. + Completes the stream afterwards unless close = false. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..4b4a4afdf9 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Preconditions.CheckArgument Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CheckArgument method" /><meta name="System.Keywords" content="Preconditions.CheckArgument method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.Preconditions.CheckArgument" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Utils.Preconditions.CheckArgument" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="Overload_Grpc_Core_Utils_Preconditions_CheckArgument" /><meta name="guid" content="Overload_Grpc_Core_Utils_Preconditions_CheckArgument" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Methods" tocid="Methods_T_Grpc_Core_Utils_Preconditions">Preconditions Methods</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm" title="CheckArgument Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckArgument">CheckArgument Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckArgument.htm" title="CheckArgument Method (Boolean)" tocid="M_Grpc_Core_Utils_Preconditions_CheckArgument">CheckArgument Method (Boolean)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm" title="CheckArgument Method (Boolean, String)" tocid="M_Grpc_Core_Utils_Preconditions_CheckArgument_1">CheckArgument Method (Boolean, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Preconditions<span id="LSTBDFD9818_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBDFD9818_0?cpp=::|nu=.");</script>CheckArgument Method </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckArgument.htm">CheckArgument(Boolean)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/3w1b3114" target="_blank">ArgumentException</a> if condition is false. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm">CheckArgument(Boolean, String)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/3w1b3114" target="_blank">ArgumentException</a> with given message if condition is false. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_Preconditions.htm">Preconditions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..3d1638474d --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Preconditions.CheckNotNull Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CheckNotNull method" /><meta name="System.Keywords" content="Preconditions.CheckNotNull method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.Preconditions.CheckNotNull" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.Preconditions.CheckNotNull``1" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Utils.Preconditions.CheckNotNull" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull" /><meta name="guid" content="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Methods" tocid="Methods_T_Grpc_Core_Utils_Preconditions">Preconditions Methods</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm" title="CheckNotNull Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckNotNull">CheckNotNull Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm" title="CheckNotNull(T) Method (T)" tocid="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1">CheckNotNull(T) Method (T)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm" title="CheckNotNull(T) Method (T, String)" tocid="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1">CheckNotNull(T) Method (T, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Preconditions<span id="LST6FDE5657_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6FDE5657_0?cpp=::|nu=.");</script>CheckNotNull Method </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm">CheckNotNull<span id="LST6FDE5657_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6FDE5657_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST6FDE5657_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6FDE5657_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(T)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/27426hcy" target="_blank">ArgumentNullException</a> if reference is null. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm">CheckNotNull<span id="LST6FDE5657_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6FDE5657_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST6FDE5657_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST6FDE5657_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(T, String)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/27426hcy" target="_blank">ArgumentNullException</a> if reference is null. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_Preconditions.htm">Preconditions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..2e223aabd9 --- /dev/null +++ b/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Preconditions.CheckState Method </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CheckState method" /><meta name="System.Keywords" content="Preconditions.CheckState method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.Preconditions.CheckState" /><meta name="Microsoft.Help.Id" content="Overload:Grpc.Core.Utils.Preconditions.CheckState" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="Overload_Grpc_Core_Utils_Preconditions_CheckState" /><meta name="guid" content="Overload_Grpc_Core_Utils_Preconditions_CheckState" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Methods" tocid="Methods_T_Grpc_Core_Utils_Preconditions">Preconditions Methods</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Utils_Preconditions_CheckState.htm" title="CheckState Method " tocid="Overload_Grpc_Core_Utils_Preconditions_CheckState">CheckState Method </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckState.htm" title="CheckState Method (Boolean)" tocid="M_Grpc_Core_Utils_Preconditions_CheckState">CheckState Method (Boolean)</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Utils_Preconditions_CheckState_1.htm" title="CheckState Method (Boolean, String)" tocid="M_Grpc_Core_Utils_Preconditions_CheckState_1">CheckState Method (Boolean, String)</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Preconditions<span id="LSTC2A6C8E4_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2A6C8E4_0?cpp=::|nu=.");</script>CheckState Method </td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Overload List</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckState.htm">CheckState(Boolean)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/2asft85a" target="_blank">InvalidOperationException</a> if condition is false. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckState_1.htm">CheckState(Boolean, String)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/2asft85a" target="_blank">InvalidOperationException</a> with given message if condition is false. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Utils_Preconditions.htm">Preconditions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..de95638d56 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncClientStreamingCall(TRequest, TResponse).RequestStream Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RequestStream property" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E.RequestStream property" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse).RequestStream property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncClientStreamingCall`2.RequestStream" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncClientStreamingCall`2.get_RequestStream" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.AsyncClientStreamingCall`2.RequestStream" /><meta name="Description" content="Async stream to send streaming requests." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream" /><meta name="guid" content="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm" title="RequestStream Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream">RequestStream Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm" title="ResponseAsync Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync">ResponseAsync Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncClientStreamingCall<span id="LSTA32BC263_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA32BC263_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTA32BC263_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA32BC263_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTA32BC263_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA32BC263_2?cpp=::|nu=.");</script>RequestStream Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Async stream to send streaming requests. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">IClientStreamWriter</span><TRequest> <span class="identifier">RequestStream</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">RequestStream</span> <span class="keyword">As</span> <span class="identifier">IClientStreamWriter</span>(<span class="keyword">Of</span> TRequest) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">IClientStreamWriter</span><TRequest>^ <span class="identifier">RequestStream</span> { + <span class="identifier">IClientStreamWriter</span><TRequest>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">RequestStream</span> : <span class="identifier">IClientStreamWriter</span><'TRequest> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_IClientStreamWriter_1.htm">IClientStreamWriter</a><span id="LSTA32BC263_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA32BC263_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm"><span class="typeparameter">TRequest</span></a><span id="LSTA32BC263_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA32BC263_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LSTA32BC263_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA32BC263_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTA32BC263_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA32BC263_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..35acc657aa --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncClientStreamingCall(TRequest, TResponse).ResponseAsync Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResponseAsync property" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E.ResponseAsync property" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse).ResponseAsync property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncClientStreamingCall`2.ResponseAsync" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncClientStreamingCall`2.get_ResponseAsync" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.AsyncClientStreamingCall`2.ResponseAsync" /><meta name="Description" content="Asynchronous call result." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync" /><meta name="guid" content="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm" title="RequestStream Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream">RequestStream Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm" title="ResponseAsync Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync">ResponseAsync Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncClientStreamingCall<span id="LST10A751EB_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST10A751EB_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST10A751EB_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST10A751EB_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST10A751EB_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST10A751EB_2?cpp=::|nu=.");</script>ResponseAsync Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Asynchronous call result. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span><TResponse> <span class="identifier">ResponseAsync</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResponseAsync</span> <span class="keyword">As</span> <span class="identifier">Task</span>(<span class="keyword">Of</span> TResponse) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Task</span><TResponse>^ <span class="identifier">ResponseAsync</span> { + <span class="identifier">Task</span><TResponse>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResponseAsync</span> : <span class="identifier">Task</span><'TResponse> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd321424" target="_blank">Task</a><span id="LST10A751EB_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST10A751EB_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm"><span class="typeparameter">TResponse</span></a><span id="LST10A751EB_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST10A751EB_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LST10A751EB_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST10A751EB_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST10A751EB_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST10A751EB_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..78a07362f3 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncClientStreamingCall(TRequest, TResponse).ResponseHeadersAsync Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResponseHeadersAsync property" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E.ResponseHeadersAsync property" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse).ResponseHeadersAsync property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncClientStreamingCall`2.ResponseHeadersAsync" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncClientStreamingCall`2.get_ResponseHeadersAsync" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.AsyncClientStreamingCall`2.ResponseHeadersAsync" /><meta name="Description" content="Asynchronous access to response headers." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync" /><meta name="guid" content="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm" title="RequestStream Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream">RequestStream Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm" title="ResponseAsync Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync">ResponseAsync Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncClientStreamingCall<span id="LST5918A883_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5918A883_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST5918A883_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5918A883_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST5918A883_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5918A883_2?cpp=::|nu=.");</script>ResponseHeadersAsync Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Asynchronous access to response headers. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span><<span class="identifier">Metadata</span>> <span class="identifier">ResponseHeadersAsync</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResponseHeadersAsync</span> <span class="keyword">As</span> <span class="identifier">Task</span>(<span class="keyword">Of</span> <span class="identifier">Metadata</span>) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Task</span><<span class="identifier">Metadata</span>^>^ <span class="identifier">ResponseHeadersAsync</span> { + <span class="identifier">Task</span><<span class="identifier">Metadata</span>^>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResponseHeadersAsync</span> : <span class="identifier">Task</span><<span class="identifier">Metadata</span>> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd321424" target="_blank">Task</a><span id="LST5918A883_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5918A883_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_Metadata.htm">Metadata</a><span id="LST5918A883_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5918A883_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LST5918A883_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5918A883_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST5918A883_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5918A883_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..7a79a06a9d --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncDuplexStreamingCall(TRequest, TResponse).RequestStream Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RequestStream property" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E.RequestStream property" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall(Of TRequest%2C TResponse).RequestStream property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncDuplexStreamingCall`2.RequestStream" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncDuplexStreamingCall`2.get_RequestStream" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.AsyncDuplexStreamingCall`2.RequestStream" /><meta name="Description" content="Async stream to send streaming requests." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream" /><meta name="guid" content="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm" title="RequestStream Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream">RequestStream Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm" title="ResponseStream Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream">ResponseStream Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncDuplexStreamingCall<span id="LST997F9BF6_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST997F9BF6_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST997F9BF6_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST997F9BF6_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST997F9BF6_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST997F9BF6_2?cpp=::|nu=.");</script>RequestStream Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Async stream to send streaming requests. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">IClientStreamWriter</span><TRequest> <span class="identifier">RequestStream</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">RequestStream</span> <span class="keyword">As</span> <span class="identifier">IClientStreamWriter</span>(<span class="keyword">Of</span> TRequest) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">IClientStreamWriter</span><TRequest>^ <span class="identifier">RequestStream</span> { + <span class="identifier">IClientStreamWriter</span><TRequest>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">RequestStream</span> : <span class="identifier">IClientStreamWriter</span><'TRequest> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_IClientStreamWriter_1.htm">IClientStreamWriter</a><span id="LST997F9BF6_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST997F9BF6_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm"><span class="typeparameter">TRequest</span></a><span id="LST997F9BF6_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST997F9BF6_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall<span id="LST997F9BF6_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST997F9BF6_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST997F9BF6_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST997F9BF6_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..7c331475f0 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncDuplexStreamingCall(TRequest, TResponse).ResponseHeadersAsync Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResponseHeadersAsync property" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E.ResponseHeadersAsync property" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall(Of TRequest%2C TResponse).ResponseHeadersAsync property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncDuplexStreamingCall`2.ResponseHeadersAsync" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncDuplexStreamingCall`2.get_ResponseHeadersAsync" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.AsyncDuplexStreamingCall`2.ResponseHeadersAsync" /><meta name="Description" content="Asynchronous access to response headers." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync" /><meta name="guid" content="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm" title="RequestStream Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream">RequestStream Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm" title="ResponseStream Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream">ResponseStream Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncDuplexStreamingCall<span id="LSTEDB7E5F8_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEDB7E5F8_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTEDB7E5F8_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEDB7E5F8_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTEDB7E5F8_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEDB7E5F8_2?cpp=::|nu=.");</script>ResponseHeadersAsync Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Asynchronous access to response headers. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span><<span class="identifier">Metadata</span>> <span class="identifier">ResponseHeadersAsync</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResponseHeadersAsync</span> <span class="keyword">As</span> <span class="identifier">Task</span>(<span class="keyword">Of</span> <span class="identifier">Metadata</span>) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Task</span><<span class="identifier">Metadata</span>^>^ <span class="identifier">ResponseHeadersAsync</span> { + <span class="identifier">Task</span><<span class="identifier">Metadata</span>^>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResponseHeadersAsync</span> : <span class="identifier">Task</span><<span class="identifier">Metadata</span>> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd321424" target="_blank">Task</a><span id="LSTEDB7E5F8_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEDB7E5F8_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_Metadata.htm">Metadata</a><span id="LSTEDB7E5F8_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEDB7E5F8_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall<span id="LSTEDB7E5F8_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEDB7E5F8_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTEDB7E5F8_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEDB7E5F8_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c5b298e025 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncDuplexStreamingCall(TRequest, TResponse).ResponseStream Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResponseStream property" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E.ResponseStream property" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall(Of TRequest%2C TResponse).ResponseStream property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncDuplexStreamingCall`2.ResponseStream" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncDuplexStreamingCall`2.get_ResponseStream" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.AsyncDuplexStreamingCall`2.ResponseStream" /><meta name="Description" content="Async stream to read streaming responses." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream" /><meta name="guid" content="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm" title="RequestStream Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream">RequestStream Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm" title="ResponseStream Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream">ResponseStream Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncDuplexStreamingCall<span id="LST178939A2_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST178939A2_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST178939A2_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST178939A2_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST178939A2_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST178939A2_2?cpp=::|nu=.");</script>ResponseStream Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Async stream to read streaming responses. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">IAsyncStreamReader</span><TResponse> <span class="identifier">ResponseStream</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResponseStream</span> <span class="keyword">As</span> <span class="identifier">IAsyncStreamReader</span>(<span class="keyword">Of</span> TResponse) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">IAsyncStreamReader</span><TResponse>^ <span class="identifier">ResponseStream</span> { + <span class="identifier">IAsyncStreamReader</span><TResponse>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResponseStream</span> : <span class="identifier">IAsyncStreamReader</span><'TResponse> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_IAsyncStreamReader_1.htm">IAsyncStreamReader</a><span id="LST178939A2_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST178939A2_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm"><span class="typeparameter">TResponse</span></a><span id="LST178939A2_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST178939A2_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall<span id="LST178939A2_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST178939A2_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST178939A2_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST178939A2_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5b1ab81753 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncServerStreamingCall(TResponse).ResponseHeadersAsync Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResponseHeadersAsync property" /><meta name="System.Keywords" content="AsyncServerStreamingCall%3CTResponse%3E.ResponseHeadersAsync property" /><meta name="System.Keywords" content="AsyncServerStreamingCall(Of TResponse).ResponseHeadersAsync property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncServerStreamingCall`1.ResponseHeadersAsync" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncServerStreamingCall`1.get_ResponseHeadersAsync" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.AsyncServerStreamingCall`1.ResponseHeadersAsync" /><meta name="Description" content="Asynchronous access to response headers." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync" /><meta name="guid" content="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm" title="ResponseStream Property " tocid="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream">ResponseStream Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncServerStreamingCall<span id="LST16DB19F2_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST16DB19F2_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LST16DB19F2_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST16DB19F2_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST16DB19F2_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST16DB19F2_2?cpp=::|nu=.");</script>ResponseHeadersAsync Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Asynchronous access to response headers. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span><<span class="identifier">Metadata</span>> <span class="identifier">ResponseHeadersAsync</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResponseHeadersAsync</span> <span class="keyword">As</span> <span class="identifier">Task</span>(<span class="keyword">Of</span> <span class="identifier">Metadata</span>) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Task</span><<span class="identifier">Metadata</span>^>^ <span class="identifier">ResponseHeadersAsync</span> { + <span class="identifier">Task</span><<span class="identifier">Metadata</span>^>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResponseHeadersAsync</span> : <span class="identifier">Task</span><<span class="identifier">Metadata</span>> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd321424" target="_blank">Task</a><span id="LST16DB19F2_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST16DB19F2_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_Metadata.htm">Metadata</a><span id="LST16DB19F2_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST16DB19F2_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm">AsyncServerStreamingCall<span id="LST16DB19F2_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST16DB19F2_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST16DB19F2_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST16DB19F2_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..d6124eff06 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncServerStreamingCall(TResponse).ResponseStream Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResponseStream property" /><meta name="System.Keywords" content="AsyncServerStreamingCall%3CTResponse%3E.ResponseStream property" /><meta name="System.Keywords" content="AsyncServerStreamingCall(Of TResponse).ResponseStream property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncServerStreamingCall`1.ResponseStream" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncServerStreamingCall`1.get_ResponseStream" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.AsyncServerStreamingCall`1.ResponseStream" /><meta name="Description" content="Async stream to read streaming responses." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream" /><meta name="guid" content="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm" title="ResponseStream Property " tocid="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream">ResponseStream Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncServerStreamingCall<span id="LSTE0341870_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE0341870_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LSTE0341870_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE0341870_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTE0341870_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE0341870_2?cpp=::|nu=.");</script>ResponseStream Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Async stream to read streaming responses. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">IAsyncStreamReader</span><TResponse> <span class="identifier">ResponseStream</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResponseStream</span> <span class="keyword">As</span> <span class="identifier">IAsyncStreamReader</span>(<span class="keyword">Of</span> TResponse) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">IAsyncStreamReader</span><TResponse>^ <span class="identifier">ResponseStream</span> { + <span class="identifier">IAsyncStreamReader</span><TResponse>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResponseStream</span> : <span class="identifier">IAsyncStreamReader</span><'TResponse> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_IAsyncStreamReader_1.htm">IAsyncStreamReader</a><span id="LSTE0341870_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE0341870_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm"><span class="typeparameter">TResponse</span></a><span id="LSTE0341870_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE0341870_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm">AsyncServerStreamingCall<span id="LSTE0341870_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE0341870_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LSTE0341870_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE0341870_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..cefbf51be2 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncUnaryCall(TResponse).ResponseAsync Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResponseAsync property" /><meta name="System.Keywords" content="AsyncUnaryCall%3CTResponse%3E.ResponseAsync property" /><meta name="System.Keywords" content="AsyncUnaryCall(Of TResponse).ResponseAsync property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncUnaryCall`1.ResponseAsync" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncUnaryCall`1.get_ResponseAsync" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.AsyncUnaryCall`1.ResponseAsync" /><meta name="Description" content="Asynchronous call result." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync" /><meta name="guid" content="P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm" title="ResponseAsync Property " tocid="P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync">ResponseAsync Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncUnaryCall<span id="LSTDAE65B8A_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE65B8A_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LSTDAE65B8A_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE65B8A_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTDAE65B8A_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE65B8A_2?cpp=::|nu=.");</script>ResponseAsync Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Asynchronous call result. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span><TResponse> <span class="identifier">ResponseAsync</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResponseAsync</span> <span class="keyword">As</span> <span class="identifier">Task</span>(<span class="keyword">Of</span> TResponse) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Task</span><TResponse>^ <span class="identifier">ResponseAsync</span> { + <span class="identifier">Task</span><TResponse>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResponseAsync</span> : <span class="identifier">Task</span><'TResponse> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd321424" target="_blank">Task</a><span id="LSTDAE65B8A_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE65B8A_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_AsyncUnaryCall_1.htm"><span class="typeparameter">TResponse</span></a><span id="LSTDAE65B8A_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE65B8A_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall<span id="LSTDAE65B8A_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE65B8A_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LSTDAE65B8A_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDAE65B8A_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..9e40fbf328 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncUnaryCall(TResponse).ResponseHeadersAsync Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResponseHeadersAsync property" /><meta name="System.Keywords" content="AsyncUnaryCall%3CTResponse%3E.ResponseHeadersAsync property" /><meta name="System.Keywords" content="AsyncUnaryCall(Of TResponse).ResponseHeadersAsync property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncUnaryCall`1.ResponseHeadersAsync" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncUnaryCall`1.get_ResponseHeadersAsync" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.AsyncUnaryCall`1.ResponseHeadersAsync" /><meta name="Description" content="Asynchronous access to response headers." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync" /><meta name="guid" content="P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm" title="ResponseAsync Property " tocid="P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync">ResponseAsync Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncUnaryCall<span id="LST2A3E0C80_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2A3E0C80_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LST2A3E0C80_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2A3E0C80_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST2A3E0C80_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2A3E0C80_2?cpp=::|nu=.");</script>ResponseHeadersAsync Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Asynchronous access to response headers. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span><<span class="identifier">Metadata</span>> <span class="identifier">ResponseHeadersAsync</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResponseHeadersAsync</span> <span class="keyword">As</span> <span class="identifier">Task</span>(<span class="keyword">Of</span> <span class="identifier">Metadata</span>) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Task</span><<span class="identifier">Metadata</span>^>^ <span class="identifier">ResponseHeadersAsync</span> { + <span class="identifier">Task</span><<span class="identifier">Metadata</span>^>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResponseHeadersAsync</span> : <span class="identifier">Task</span><<span class="identifier">Metadata</span>> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd321424" target="_blank">Task</a><span id="LST2A3E0C80_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2A3E0C80_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_Metadata.htm">Metadata</a><span id="LST2A3E0C80_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2A3E0C80_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall<span id="LST2A3E0C80_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2A3E0C80_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST2A3E0C80_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2A3E0C80_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ada168e569 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse).Channel Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Channel property" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E.Channel property" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse).Channel property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.Channel" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.get_Channel" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.CallInvocationDetails`2.Channel" /><meta name="Description" content="Get channel associated with this call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_CallInvocationDetails_2_Channel" /><meta name="guid" content="P_Grpc_Core_CallInvocationDetails_2_Channel" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Channel.htm" title="Channel Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Channel">Channel Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Host.htm" title="Host Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Method.htm" title="Method Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Options.htm" title="Options Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Options">Options Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller">ResponseMarshaller Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LST87651AEC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST87651AEC_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST87651AEC_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST87651AEC_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST87651AEC_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST87651AEC_2?cpp=::|nu=.");</script>Channel Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Get channel associated with this call. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Channel</span> <span class="identifier">Channel</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Channel</span> <span class="keyword">As</span> <span class="identifier">Channel</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Channel</span>^ <span class="identifier">Channel</span> { + <span class="identifier">Channel</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Channel</span> : <span class="identifier">Channel</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Channel.htm">Channel</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST87651AEC_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST87651AEC_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST87651AEC_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST87651AEC_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..2482b0c997 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Host.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse).Host Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Host property" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E.Host property" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse).Host property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.Host" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.get_Host" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.CallInvocationDetails`2.Host" /><meta name="Description" content="Get name of host." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_CallInvocationDetails_2_Host" /><meta name="guid" content="P_Grpc_Core_CallInvocationDetails_2_Host" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Channel.htm" title="Channel Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Channel">Channel Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Host.htm" title="Host Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Method.htm" title="Method Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Options.htm" title="Options Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Options">Options Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller">ResponseMarshaller Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LST4EBEFB2B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4EBEFB2B_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST4EBEFB2B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4EBEFB2B_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST4EBEFB2B_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4EBEFB2B_2?cpp=::|nu=.");</script>Host Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Get name of host. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Host</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Host</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Host</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Host</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST4EBEFB2B_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4EBEFB2B_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST4EBEFB2B_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4EBEFB2B_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..26913ed373 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Method.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse).Method Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Method property" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E.Method property" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse).Method property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.Method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.get_Method" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.CallInvocationDetails`2.Method" /><meta name="Description" content="Gets name of method to be called." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_CallInvocationDetails_2_Method" /><meta name="guid" content="P_Grpc_Core_CallInvocationDetails_2_Method" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Channel.htm" title="Channel Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Channel">Channel Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Host.htm" title="Host Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Host">Host Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Method.htm" title="Method Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Options.htm" title="Options Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Options">Options Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller">ResponseMarshaller Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LSTC988C3E4_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC988C3E4_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTC988C3E4_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC988C3E4_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTC988C3E4_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC988C3E4_2?cpp=::|nu=.");</script>Method Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets name of method to be called. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Method</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Method</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Method</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Method</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LSTC988C3E4_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC988C3E4_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC988C3E4_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC988C3E4_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ddcf02baa4 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Options.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse).Options Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Options property" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E.Options property" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse).Options property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.Options" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.get_Options" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.CallInvocationDetails`2.Options" /><meta name="Description" content="Gets the call options." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_CallInvocationDetails_2_Options" /><meta name="guid" content="P_Grpc_Core_CallInvocationDetails_2_Options" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Channel.htm" title="Channel Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Channel">Channel Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Host.htm" title="Host Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Method.htm" title="Method Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Method">Method Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Options.htm" title="Options Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Options">Options Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller">ResponseMarshaller Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LST1DD0B003_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1DD0B003_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST1DD0B003_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1DD0B003_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST1DD0B003_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1DD0B003_2?cpp=::|nu=.");</script>Options Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the call options. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">CallOptions</span> <span class="identifier">Options</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Options</span> <span class="keyword">As</span> <span class="identifier">CallOptions</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">CallOptions</span> <span class="identifier">Options</span> { + <span class="identifier">CallOptions</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Options</span> : <span class="identifier">CallOptions</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST1DD0B003_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1DD0B003_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST1DD0B003_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1DD0B003_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ecd5500821 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse).RequestMarshaller Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RequestMarshaller property" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E.RequestMarshaller property" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse).RequestMarshaller property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.RequestMarshaller" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.get_RequestMarshaller" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.CallInvocationDetails`2.RequestMarshaller" /><meta name="Description" content="Gets marshaller used to serialize requests." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller" /><meta name="guid" content="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Channel.htm" title="Channel Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Channel">Channel Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Host.htm" title="Host Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Method.htm" title="Method Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Options.htm" title="Options Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Options">Options Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller">ResponseMarshaller Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LST58489E69_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST58489E69_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST58489E69_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST58489E69_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST58489E69_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST58489E69_2?cpp=::|nu=.");</script>RequestMarshaller Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets marshaller used to serialize requests. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Marshaller</span><TRequest> <span class="identifier">RequestMarshaller</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">RequestMarshaller</span> <span class="keyword">As</span> <span class="identifier">Marshaller</span>(<span class="keyword">Of</span> TRequest) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Marshaller</span><TRequest> <span class="identifier">RequestMarshaller</span> { + <span class="identifier">Marshaller</span><TRequest> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">RequestMarshaller</span> : <span class="identifier">Marshaller</span><'TRequest> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Marshaller_1.htm">Marshaller</a><span id="LST58489E69_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST58489E69_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_CallInvocationDetails_2.htm"><span class="typeparameter">TRequest</span></a><span id="LST58489E69_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST58489E69_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST58489E69_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST58489E69_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST58489E69_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST58489E69_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..6b74eb825d --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse).ResponseMarshaller Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResponseMarshaller property" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E.ResponseMarshaller property" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse).ResponseMarshaller property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.ResponseMarshaller" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2.get_ResponseMarshaller" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.CallInvocationDetails`2.ResponseMarshaller" /><meta name="Description" content="Gets marshaller used to deserialized responses." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller" /><meta name="guid" content="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Channel.htm" title="Channel Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Channel">Channel Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Host.htm" title="Host Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Method.htm" title="Method Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Options.htm" title="Options Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Options">Options Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller">ResponseMarshaller Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LST9DBBB8FB_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9DBBB8FB_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST9DBBB8FB_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9DBBB8FB_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST9DBBB8FB_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9DBBB8FB_2?cpp=::|nu=.");</script>ResponseMarshaller Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets marshaller used to deserialized responses. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Marshaller</span><TResponse> <span class="identifier">ResponseMarshaller</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResponseMarshaller</span> <span class="keyword">As</span> <span class="identifier">Marshaller</span>(<span class="keyword">Of</span> TResponse) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Marshaller</span><TResponse> <span class="identifier">ResponseMarshaller</span> { + <span class="identifier">Marshaller</span><TResponse> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResponseMarshaller</span> : <span class="identifier">Marshaller</span><'TResponse> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Marshaller_1.htm">Marshaller</a><span id="LST9DBBB8FB_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9DBBB8FB_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_CallInvocationDetails_2.htm"><span class="typeparameter">TResponse</span></a><span id="LST9DBBB8FB_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9DBBB8FB_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LST9DBBB8FB_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9DBBB8FB_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9DBBB8FB_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9DBBB8FB_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..6aa8d3d3f6 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_CancellationToken.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions.CancellationToken Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CancellationToken property" /><meta name="System.Keywords" content="CallOptions.CancellationToken property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.CancellationToken" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.get_CancellationToken" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.CallOptions.CancellationToken" /><meta name="Description" content="Token that can be used for cancelling the call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_CallOptions_CancellationToken" /><meta name="guid" content="P_Grpc_Core_CallOptions_CancellationToken" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallOptions.htm" title="CallOptions Properties" tocid="Properties_T_Grpc_Core_CallOptions">CallOptions Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_CallOptions_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_CallOptions_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Headers.htm" title="Headers Property " tocid="P_Grpc_Core_CallOptions_Headers">Headers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_PropagationToken.htm" title="PropagationToken Property " tocid="P_Grpc_Core_CallOptions_PropagationToken">PropagationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_CallOptions_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions<span id="LST47F9ABE3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST47F9ABE3_0?cpp=::|nu=.");</script>CancellationToken Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Token that can be used for cancelling the call. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">CancellationToken</span> <span class="identifier">CancellationToken</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">CancellationToken</span> <span class="keyword">As</span> <span class="identifier">CancellationToken</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">CancellationToken</span> <span class="identifier">CancellationToken</span> { + <span class="identifier">CancellationToken</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">CancellationToken</span> : <span class="identifier">CancellationToken</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd384802" target="_blank">CancellationToken</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallOptions.htm">CallOptions Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5581337213 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Deadline.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions.Deadline Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Deadline property" /><meta name="System.Keywords" content="CallOptions.Deadline property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.Deadline" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.get_Deadline" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.CallOptions.Deadline" /><meta name="Description" content="Call deadline." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_CallOptions_Deadline" /><meta name="guid" content="P_Grpc_Core_CallOptions_Deadline" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallOptions.htm" title="CallOptions Properties" tocid="Properties_T_Grpc_Core_CallOptions">CallOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_CallOptions_CancellationToken">CancellationToken Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_CallOptions_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Headers.htm" title="Headers Property " tocid="P_Grpc_Core_CallOptions_Headers">Headers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_PropagationToken.htm" title="PropagationToken Property " tocid="P_Grpc_Core_CallOptions_PropagationToken">PropagationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_CallOptions_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions<span id="LSTC2776B71_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2776B71_0?cpp=::|nu=.");</script>Deadline Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Call deadline. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> <span class="identifier">Deadline</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Deadline</span> <span class="keyword">As</span> <span class="identifier">Nullable</span>(<span class="keyword">Of</span> <span class="identifier">DateTime</span>) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> <span class="identifier">Deadline</span> { + <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Deadline</span> : <span class="identifier">Nullable</span><<span class="identifier">DateTime</span>> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/b3h38hb0" target="_blank">Nullable</a><span id="LSTC2776B71_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2776B71_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="http://msdn2.microsoft.com/en-us/library/03ybds8y" target="_blank">DateTime</a><span id="LSTC2776B71_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2776B71_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallOptions.htm">CallOptions Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..3637bd445f --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Headers.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions.Headers Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Headers property" /><meta name="System.Keywords" content="CallOptions.Headers property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.Headers" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.get_Headers" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.CallOptions.Headers" /><meta name="Description" content="Headers to send at the beginning of the call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_CallOptions_Headers" /><meta name="guid" content="P_Grpc_Core_CallOptions_Headers" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallOptions.htm" title="CallOptions Properties" tocid="Properties_T_Grpc_Core_CallOptions">CallOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_CallOptions_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_CallOptions_Deadline">Deadline Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Headers.htm" title="Headers Property " tocid="P_Grpc_Core_CallOptions_Headers">Headers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_PropagationToken.htm" title="PropagationToken Property " tocid="P_Grpc_Core_CallOptions_PropagationToken">PropagationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_CallOptions_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions<span id="LSTD5D1C29F_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD5D1C29F_0?cpp=::|nu=.");</script>Headers Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Headers to send at the beginning of the call. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Metadata</span> <span class="identifier">Headers</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Headers</span> <span class="keyword">As</span> <span class="identifier">Metadata</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Metadata</span>^ <span class="identifier">Headers</span> { + <span class="identifier">Metadata</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Headers</span> : <span class="identifier">Metadata</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Metadata.htm">Metadata</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallOptions.htm">CallOptions Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..6f3c6ab081 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_PropagationToken.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions.PropagationToken Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="PropagationToken property" /><meta name="System.Keywords" content="CallOptions.PropagationToken property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.PropagationToken" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.get_PropagationToken" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.CallOptions.PropagationToken" /><meta name="Description" content="Token for propagating parent call context." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_CallOptions_PropagationToken" /><meta name="guid" content="P_Grpc_Core_CallOptions_PropagationToken" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallOptions.htm" title="CallOptions Properties" tocid="Properties_T_Grpc_Core_CallOptions">CallOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_CallOptions_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_CallOptions_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Headers.htm" title="Headers Property " tocid="P_Grpc_Core_CallOptions_Headers">Headers Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_PropagationToken.htm" title="PropagationToken Property " tocid="P_Grpc_Core_CallOptions_PropagationToken">PropagationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_CallOptions_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions<span id="LST53ACD4AE_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST53ACD4AE_0?cpp=::|nu=.");</script>PropagationToken Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Token for propagating parent call context. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ContextPropagationToken</span> <span class="identifier">PropagationToken</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">PropagationToken</span> <span class="keyword">As</span> <span class="identifier">ContextPropagationToken</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">ContextPropagationToken</span>^ <span class="identifier">PropagationToken</span> { + <span class="identifier">ContextPropagationToken</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">PropagationToken</span> : <span class="identifier">ContextPropagationToken</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_ContextPropagationToken.htm">ContextPropagationToken</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallOptions.htm">CallOptions Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c95e3f6835 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_WriteOptions.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions.WriteOptions Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteOptions property" /><meta name="System.Keywords" content="CallOptions.WriteOptions property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.WriteOptions" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions.get_WriteOptions" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.CallOptions.WriteOptions" /><meta name="Description" content="Write options that will be used for this call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_CallOptions_WriteOptions" /><meta name="guid" content="P_Grpc_Core_CallOptions_WriteOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallOptions.htm" title="CallOptions Properties" tocid="Properties_T_Grpc_Core_CallOptions">CallOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_CallOptions_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_CallOptions_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Headers.htm" title="Headers Property " tocid="P_Grpc_Core_CallOptions_Headers">Headers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_PropagationToken.htm" title="PropagationToken Property " tocid="P_Grpc_Core_CallOptions_PropagationToken">PropagationToken Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_CallOptions_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions<span id="LSTA9E51D6_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA9E51D6_0?cpp=::|nu=.");</script>WriteOptions Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Write options that will be used for this call. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">WriteOptions</span> <span class="identifier">WriteOptions</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">WriteOptions</span> <span class="keyword">As</span> <span class="identifier">WriteOptions</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">WriteOptions</span>^ <span class="identifier">WriteOptions</span> { + <span class="identifier">WriteOptions</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">WriteOptions</span> : <span class="identifier">WriteOptions</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_WriteOptions.htm">WriteOptions</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallOptions.htm">CallOptions Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..dc638c48ee --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_IntValue.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOption.IntValue Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IntValue property" /><meta name="System.Keywords" content="ChannelOption.IntValue property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.IntValue" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.get_IntValue" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ChannelOption.IntValue" /><meta name="Description" content="Gets the integer value the ChannelOption." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ChannelOption_IntValue" /><meta name="guid" content="P_Grpc_Core_ChannelOption_IntValue" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ChannelOption.htm" title="ChannelOption Properties" tocid="Properties_T_Grpc_Core_ChannelOption">ChannelOption Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_IntValue.htm" title="IntValue Property " tocid="P_Grpc_Core_ChannelOption_IntValue">IntValue Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_Name.htm" title="Name Property " tocid="P_Grpc_Core_ChannelOption_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_StringValue.htm" title="StringValue Property " tocid="P_Grpc_Core_ChannelOption_StringValue">StringValue Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_Type.htm" title="Type Property " tocid="P_Grpc_Core_ChannelOption_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOption<span id="LST18C163F5_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18C163F5_0?cpp=::|nu=.");</script>IntValue Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the integer value the <span class="code">ChannelOption</span>. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">int</span> <span class="identifier">IntValue</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">IntValue</span> <span class="keyword">As</span> <span class="identifier">Integer</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">int</span> <span class="identifier">IntValue</span> { + <span class="identifier">int</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">IntValue</span> : <span class="identifier">int</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">Int32</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..2115bbc7c4 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Name.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOption.Name Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Name property" /><meta name="System.Keywords" content="ChannelOption.Name property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.Name" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.get_Name" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ChannelOption.Name" /><meta name="Description" content="Gets the name of the ChannelOption." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ChannelOption_Name" /><meta name="guid" content="P_Grpc_Core_ChannelOption_Name" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ChannelOption.htm" title="ChannelOption Properties" tocid="Properties_T_Grpc_Core_ChannelOption">ChannelOption Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_IntValue.htm" title="IntValue Property " tocid="P_Grpc_Core_ChannelOption_IntValue">IntValue Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_Name.htm" title="Name Property " tocid="P_Grpc_Core_ChannelOption_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_StringValue.htm" title="StringValue Property " tocid="P_Grpc_Core_ChannelOption_StringValue">StringValue Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_Type.htm" title="Type Property " tocid="P_Grpc_Core_ChannelOption_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOption<span id="LSTF14A504E_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF14A504E_0?cpp=::|nu=.");</script>Name Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the name of the <span class="code">ChannelOption</span>. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Name</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Name</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Name</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Name</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..35f2567c0b --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_StringValue.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOption.StringValue Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="StringValue property" /><meta name="System.Keywords" content="ChannelOption.StringValue property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.StringValue" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.get_StringValue" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ChannelOption.StringValue" /><meta name="Description" content="Gets the string value the ChannelOption." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ChannelOption_StringValue" /><meta name="guid" content="P_Grpc_Core_ChannelOption_StringValue" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ChannelOption.htm" title="ChannelOption Properties" tocid="Properties_T_Grpc_Core_ChannelOption">ChannelOption Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_IntValue.htm" title="IntValue Property " tocid="P_Grpc_Core_ChannelOption_IntValue">IntValue Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_Name.htm" title="Name Property " tocid="P_Grpc_Core_ChannelOption_Name">Name Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_StringValue.htm" title="StringValue Property " tocid="P_Grpc_Core_ChannelOption_StringValue">StringValue Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_Type.htm" title="Type Property " tocid="P_Grpc_Core_ChannelOption_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOption<span id="LST7D3B1D1F_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7D3B1D1F_0?cpp=::|nu=.");</script>StringValue Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the string value the <span class="code">ChannelOption</span>. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">StringValue</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">StringValue</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">StringValue</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">StringValue</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..150b85c817 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Type.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOption.Type Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Type property" /><meta name="System.Keywords" content="ChannelOption.Type property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.Type" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.get_Type" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ChannelOption.Type" /><meta name="Description" content="Gets the type of the ChannelOption." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ChannelOption_Type" /><meta name="guid" content="P_Grpc_Core_ChannelOption_Type" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ChannelOption.htm" title="ChannelOption Properties" tocid="Properties_T_Grpc_Core_ChannelOption">ChannelOption Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_IntValue.htm" title="IntValue Property " tocid="P_Grpc_Core_ChannelOption_IntValue">IntValue Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_Name.htm" title="Name Property " tocid="P_Grpc_Core_ChannelOption_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_StringValue.htm" title="StringValue Property " tocid="P_Grpc_Core_ChannelOption_StringValue">StringValue Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_Type.htm" title="Type Property " tocid="P_Grpc_Core_ChannelOption_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOption<span id="LST349A0DB9_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST349A0DB9_0?cpp=::|nu=.");</script>Type Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the type of the <span class="code">ChannelOption</span>. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ChannelOption<span id="LST349A0DB9_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST349A0DB9_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>OptionType</span> <span class="identifier">Type</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Type</span> <span class="keyword">As</span> <span class="identifier">ChannelOption<span id="LST349A0DB9_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST349A0DB9_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>OptionType</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">ChannelOption<span id="LST349A0DB9_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST349A0DB9_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>OptionType</span> <span class="identifier">Type</span> { + <span class="identifier">ChannelOption<span id="LST349A0DB9_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST349A0DB9_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>OptionType</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Type</span> : <span class="identifier">ChannelOption<span id="LST349A0DB9_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST349A0DB9_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>OptionType</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_ChannelOption_OptionType.htm">ChannelOption<span id="LST349A0DB9_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST349A0DB9_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>OptionType</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..daaf5c99f4 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Channel_ResolvedTarget.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel.ResolvedTarget Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResolvedTarget property" /><meta name="System.Keywords" content="Channel.ResolvedTarget property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel.ResolvedTarget" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel.get_ResolvedTarget" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Channel.ResolvedTarget" /><meta name="Description" content="Resolved address of the remote endpoint in URI format." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Channel_ResolvedTarget" /><meta name="guid" content="P_Grpc_Core_Channel_ResolvedTarget" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Channel.htm" title="Channel Properties" tocid="Properties_T_Grpc_Core_Channel">Channel Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_ResolvedTarget.htm" title="ResolvedTarget Property " tocid="P_Grpc_Core_Channel_ResolvedTarget">ResolvedTarget Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_State.htm" title="State Property " tocid="P_Grpc_Core_Channel_State">State Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_Target.htm" title="Target Property " tocid="P_Grpc_Core_Channel_Target">Target Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel<span id="LST4A6A67FB_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4A6A67FB_0?cpp=::|nu=.");</script>ResolvedTarget Property </td></tr></table><span class="introStyle"></span><div class="summary">Resolved address of the remote endpoint in URI format.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">ResolvedTarget</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResolvedTarget</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">ResolvedTarget</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResolvedTarget</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..d4c9af655a --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Channel_State.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel.State Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="State property" /><meta name="System.Keywords" content="Channel.State property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel.State" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel.get_State" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Channel.State" /><meta name="Description" content="Gets current connectivity state of this channel." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Channel_State" /><meta name="guid" content="P_Grpc_Core_Channel_State" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Channel.htm" title="Channel Properties" tocid="Properties_T_Grpc_Core_Channel">Channel Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_ResolvedTarget.htm" title="ResolvedTarget Property " tocid="P_Grpc_Core_Channel_ResolvedTarget">ResolvedTarget Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_State.htm" title="State Property " tocid="P_Grpc_Core_Channel_State">State Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_Target.htm" title="Target Property " tocid="P_Grpc_Core_Channel_Target">Target Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel<span id="LST9F9DBD3D_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9F9DBD3D_0?cpp=::|nu=.");</script>State Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets current connectivity state of this channel. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ChannelState</span> <span class="identifier">State</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">State</span> <span class="keyword">As</span> <span class="identifier">ChannelState</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">ChannelState</span> <span class="identifier">State</span> { + <span class="identifier">ChannelState</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">State</span> : <span class="identifier">ChannelState</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_ChannelState.htm">ChannelState</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..70d27d840f --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Channel_Target.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel.Target Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Target property" /><meta name="System.Keywords" content="Channel.Target property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel.Target" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel.get_Target" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Channel.Target" /><meta name="Description" content="The original target used to create the channel." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Channel_Target" /><meta name="guid" content="P_Grpc_Core_Channel_Target" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Channel.htm" title="Channel Properties" tocid="Properties_T_Grpc_Core_Channel">Channel Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_ResolvedTarget.htm" title="ResolvedTarget Property " tocid="P_Grpc_Core_Channel_ResolvedTarget">ResolvedTarget Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_State.htm" title="State Property " tocid="P_Grpc_Core_Channel_State">State Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_Target.htm" title="Target Property " tocid="P_Grpc_Core_Channel_Target">Target Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel<span id="LSTB4DD124B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB4DD124B_0?cpp=::|nu=.");</script>Target Property </td></tr></table><span class="introStyle"></span><div class="summary">The original target used to create the channel.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Target</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Target</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Target</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Target</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ed648e8dd3 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Channel.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ClientBase.Channel Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Channel property" /><meta name="System.Keywords" content="ClientBase.Channel property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase.Channel" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase.get_Channel" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ClientBase.Channel" /><meta name="Description" content="Channel associated with this client." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ClientBase_Channel" /><meta name="guid" content="P_Grpc_Core_ClientBase_Channel" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ClientBase.htm" title="ClientBase Properties" tocid="Properties_T_Grpc_Core_ClientBase">ClientBase Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_Channel.htm" title="Channel Property " tocid="P_Grpc_Core_ClientBase_Channel">Channel Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_HeaderInterceptor.htm" title="HeaderInterceptor Property " tocid="P_Grpc_Core_ClientBase_HeaderInterceptor">HeaderInterceptor Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_Host.htm" title="Host Property " tocid="P_Grpc_Core_ClientBase_Host">Host Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ClientBase<span id="LST911BFA6_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST911BFA6_0?cpp=::|nu=.");</script>Channel Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Channel associated with this client. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Channel</span> <span class="identifier">Channel</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Channel</span> <span class="keyword">As</span> <span class="identifier">Channel</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Channel</span>^ <span class="identifier">Channel</span> { + <span class="identifier">Channel</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Channel</span> : <span class="identifier">Channel</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Channel.htm">Channel</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ClientBase.htm">ClientBase Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..3187fe4724 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_HeaderInterceptor.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ClientBase.HeaderInterceptor Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="HeaderInterceptor property" /><meta name="System.Keywords" content="ClientBase.HeaderInterceptor property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase.HeaderInterceptor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase.get_HeaderInterceptor" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase.set_HeaderInterceptor" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ClientBase.HeaderInterceptor" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ClientBase_HeaderInterceptor" /><meta name="guid" content="P_Grpc_Core_ClientBase_HeaderInterceptor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ClientBase.htm" title="ClientBase Properties" tocid="Properties_T_Grpc_Core_ClientBase">ClientBase Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_Channel.htm" title="Channel Property " tocid="P_Grpc_Core_ClientBase_Channel">Channel Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_HeaderInterceptor.htm" title="HeaderInterceptor Property " tocid="P_Grpc_Core_ClientBase_HeaderInterceptor">HeaderInterceptor Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_Host.htm" title="Host Property " tocid="P_Grpc_Core_ClientBase_Host">Host Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ClientBase<span id="LSTD47471C1_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD47471C1_0?cpp=::|nu=.");</script>HeaderInterceptor Property </td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">HeaderInterceptor</span> <span class="identifier">HeaderInterceptor</span> { <span class="keyword">get</span>; <span class="keyword">set</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Property</span> <span class="identifier">HeaderInterceptor</span> <span class="keyword">As</span> <span class="identifier">HeaderInterceptor</span> + <span class="keyword">Get</span> + <span class="keyword">Set</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">HeaderInterceptor</span>^ <span class="identifier">HeaderInterceptor</span> { + <span class="identifier">HeaderInterceptor</span>^ <span class="keyword">get</span> (); + <span class="keyword">void</span> <span class="keyword">set</span> (<span class="identifier">HeaderInterceptor</span>^ <span class="parameter">value</span>); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">HeaderInterceptor</span> : <span class="identifier">HeaderInterceptor</span> <span class="keyword">with</span> <span class="keyword">get</span>, <span class="keyword">set</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_HeaderInterceptor.htm">HeaderInterceptor</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ClientBase.htm">ClientBase Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f25e313c96 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Host.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ClientBase.Host Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Host property" /><meta name="System.Keywords" content="ClientBase.Host property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase.Host" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase.get_Host" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase.set_Host" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ClientBase.Host" /><meta name="Description" content="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"." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ClientBase_Host" /><meta name="guid" content="P_Grpc_Core_ClientBase_Host" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ClientBase.htm" title="ClientBase Properties" tocid="Properties_T_Grpc_Core_ClientBase">ClientBase Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_Channel.htm" title="Channel Property " tocid="P_Grpc_Core_ClientBase_Channel">Channel Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_HeaderInterceptor.htm" title="HeaderInterceptor Property " tocid="P_Grpc_Core_ClientBase_HeaderInterceptor">HeaderInterceptor Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_Host.htm" title="Host Property " tocid="P_Grpc_Core_ClientBase_Host">Host Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ClientBase<span id="LSTD1D36BA5_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD1D36BA5_0?cpp=::|nu=.");</script>Host Property </td></tr></table><span class="introStyle"></span><div class="summary"> + 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 <span class="code">null</span> with the meaning + "use default host". + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Host</span> { <span class="keyword">get</span>; <span class="keyword">set</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Property</span> <span class="identifier">Host</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span> + <span class="keyword">Set</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Host</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); + <span class="keyword">void</span> <span class="keyword">set</span> (<span class="identifier">String</span>^ <span class="parameter">value</span>); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Host</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span>, <span class="keyword">set</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ClientBase.htm">ClientBase Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f6e87d64be --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ContextPropagationOptions.IsPropagateCancellation Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IsPropagateCancellation property" /><meta name="System.Keywords" content="ContextPropagationOptions.IsPropagateCancellation property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ContextPropagationOptions.IsPropagateCancellation" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ContextPropagationOptions.get_IsPropagateCancellation" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ContextPropagationOptions.IsPropagateCancellation" /><meta name="Description" content="true if parent call's cancellation token should be propagated to the child call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation" /><meta name="guid" content="P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Properties" tocid="Properties_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm" title="IsPropagateCancellation Property " tocid="P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation">IsPropagateCancellation Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm" title="IsPropagateDeadline Property " tocid="P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline">IsPropagateDeadline Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ContextPropagationOptions<span id="LST55448E1E_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST55448E1E_0?cpp=::|nu=.");</script>IsPropagateCancellation Property </td></tr></table><span class="introStyle"></span><div class="summary"><span class="code">true</span> if parent call's cancellation token should be propagated to the child call.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">bool</span> <span class="identifier">IsPropagateCancellation</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">IsPropagateCancellation</span> <span class="keyword">As</span> <span class="identifier">Boolean</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">bool</span> <span class="identifier">IsPropagateCancellation</span> { + <span class="identifier">bool</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">IsPropagateCancellation</span> : <span class="identifier">bool</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">Boolean</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f5c43152c6 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ContextPropagationOptions.IsPropagateDeadline Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IsPropagateDeadline property" /><meta name="System.Keywords" content="ContextPropagationOptions.IsPropagateDeadline property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ContextPropagationOptions.IsPropagateDeadline" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ContextPropagationOptions.get_IsPropagateDeadline" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ContextPropagationOptions.IsPropagateDeadline" /><meta name="Description" content="true if parent call's deadline should be propagated to the child call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline" /><meta name="guid" content="P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Properties" tocid="Properties_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm" title="IsPropagateCancellation Property " tocid="P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation">IsPropagateCancellation Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm" title="IsPropagateDeadline Property " tocid="P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline">IsPropagateDeadline Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ContextPropagationOptions<span id="LST11E3C78B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST11E3C78B_0?cpp=::|nu=.");</script>IsPropagateDeadline Property </td></tr></table><span class="introStyle"></span><div class="summary"><span class="code">true</span> if parent call's deadline should be propagated to the child call.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">bool</span> <span class="identifier">IsPropagateDeadline</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">IsPropagateDeadline</span> <span class="keyword">As</span> <span class="identifier">Boolean</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">bool</span> <span class="identifier">IsPropagateDeadline</span> { + <span class="identifier">bool</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">IsPropagateDeadline</span> : <span class="identifier">bool</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">Boolean</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..bab175df21 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Credentials_Insecure.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Credentials.Insecure Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Insecure property" /><meta name="System.Keywords" content="Credentials.Insecure property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Credentials.Insecure" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Credentials.get_Insecure" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Credentials.Insecure" /><meta name="Description" content="Returns instance of credential that provides no security and will result in creating an unsecure channel with no encryption whatsoever." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Credentials_Insecure" /><meta name="guid" content="P_Grpc_Core_Credentials_Insecure" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Credentials.htm" title="Credentials Properties" tocid="Properties_T_Grpc_Core_Credentials">Credentials Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Credentials_Insecure.htm" title="Insecure Property " tocid="P_Grpc_Core_Credentials_Insecure">Insecure Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Credentials<span id="LST1887F985_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1887F985_0?cpp=::|nu=.");</script>Insecure Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Returns instance of credential that provides no security and + will result in creating an unsecure channel with no encryption whatsoever. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">Credentials</span> <span class="identifier">Insecure</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Insecure</span> <span class="keyword">As</span> <span class="identifier">Credentials</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">property</span> <span class="identifier">Credentials</span>^ <span class="identifier">Insecure</span> { + <span class="identifier">Credentials</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">Insecure</span> : <span class="identifier">Credentials</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Credentials.htm">Credentials</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Credentials.htm">Credentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..3e55247950 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_GrpcEnvironment_Logger.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GrpcEnvironment.Logger Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Logger property" /><meta name="System.Keywords" content="GrpcEnvironment.Logger property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.GrpcEnvironment.Logger" /><meta name="Microsoft.Help.F1" content="Grpc.Core.GrpcEnvironment.get_Logger" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.GrpcEnvironment.Logger" /><meta name="Description" content="Gets application-wide logger used by gRPC." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_GrpcEnvironment_Logger" /><meta name="guid" content="P_Grpc_Core_GrpcEnvironment_Logger" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Properties" tocid="Properties_T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_GrpcEnvironment_Logger.htm" title="Logger Property " tocid="P_Grpc_Core_GrpcEnvironment_Logger">Logger Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">GrpcEnvironment<span id="LST50445AFC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST50445AFC_0?cpp=::|nu=.");</script>Logger Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets application-wide logger used by gRPC. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">ILogger</span> <span class="identifier">Logger</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Logger</span> <span class="keyword">As</span> <span class="identifier">ILogger</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">property</span> <span class="identifier">ILogger</span>^ <span class="identifier">Logger</span> { + <span class="identifier">ILogger</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">Logger</span> : <span class="identifier">ILogger</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Logging_ILogger.htm">ILogger</a><br />The logger.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_GrpcEnvironment.htm">GrpcEnvironment Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c6b3ebad54 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IAsyncStreamWriter(T).WriteOptions Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteOptions property" /><meta name="System.Keywords" content="IAsyncStreamWriter%3CT%3E.WriteOptions property" /><meta name="System.Keywords" content="IAsyncStreamWriter(Of T).WriteOptions property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IAsyncStreamWriter`1.WriteOptions" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IAsyncStreamWriter`1.get_WriteOptions" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IAsyncStreamWriter`1.set_WriteOptions" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.IAsyncStreamWriter`1.WriteOptions" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions" /><meta name="guid" content="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Properties" tocid="Properties_T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IAsyncStreamWriter<span id="LST2C0CA8C1_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2C0CA8C1_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST2C0CA8C1_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2C0CA8C1_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST2C0CA8C1_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2C0CA8C1_2?cpp=::|nu=.");</script>WriteOptions Property </td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="identifier">WriteOptions</span> <span class="identifier">WriteOptions</span> { <span class="keyword">get</span>; <span class="keyword">set</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Property</span> <span class="identifier">WriteOptions</span> <span class="keyword">As</span> <span class="identifier">WriteOptions</span> + <span class="keyword">Get</span> + <span class="keyword">Set</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">property</span> <span class="identifier">WriteOptions</span>^ <span class="identifier">WriteOptions</span> { + <span class="identifier">WriteOptions</span>^ <span class="keyword">get</span> (); + <span class="keyword">void</span> <span class="keyword">set</span> (<span class="identifier">WriteOptions</span>^ <span class="parameter">value</span>); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">WriteOptions</span> : <span class="identifier">WriteOptions</span> <span class="keyword">with</span> <span class="keyword">get</span>, <span class="keyword">set</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_WriteOptions.htm">WriteOptions</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST2C0CA8C1_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2C0CA8C1_3?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST2C0CA8C1_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2C0CA8C1_4?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..6c0d622527 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_IHasWriteOptions_WriteOptions.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IHasWriteOptions.WriteOptions Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteOptions property" /><meta name="System.Keywords" content="IHasWriteOptions.WriteOptions property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IHasWriteOptions.WriteOptions" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IHasWriteOptions.get_WriteOptions" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IHasWriteOptions.set_WriteOptions" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.IHasWriteOptions.WriteOptions" /><meta name="Description" content="Gets or sets the write options." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_IHasWriteOptions_WriteOptions" /><meta name="guid" content="P_Grpc_Core_IHasWriteOptions_WriteOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Properties" tocid="Properties_T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IHasWriteOptions_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_IHasWriteOptions_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IHasWriteOptions<span id="LSTED26330_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTED26330_0?cpp=::|nu=.");</script>WriteOptions Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets or sets the write options. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="identifier">WriteOptions</span> <span class="identifier">WriteOptions</span> { <span class="keyword">get</span>; <span class="keyword">set</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Property</span> <span class="identifier">WriteOptions</span> <span class="keyword">As</span> <span class="identifier">WriteOptions</span> + <span class="keyword">Get</span> + <span class="keyword">Set</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">property</span> <span class="identifier">WriteOptions</span>^ <span class="identifier">WriteOptions</span> { + <span class="identifier">WriteOptions</span>^ <span class="keyword">get</span> (); + <span class="keyword">void</span> <span class="keyword">set</span> (<span class="identifier">WriteOptions</span>^ <span class="parameter">value</span>); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">WriteOptions</span> : <span class="identifier">WriteOptions</span> <span class="keyword">with</span> <span class="keyword">get</span>, <span class="keyword">set</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_WriteOptions.htm">WriteOptions</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IHasWriteOptions.htm">IHasWriteOptions Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5c89829621 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_FullName.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IMethod.FullName Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="FullName property" /><meta name="System.Keywords" content="IMethod.FullName property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IMethod.FullName" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IMethod.get_FullName" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.IMethod.FullName" /><meta name="Description" content="Gets the fully qualified name of the method. On the server side, methods are dispatched based on this name." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_IMethod_FullName" /><meta name="guid" content="P_Grpc_Core_IMethod_FullName" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IMethod.htm" title="IMethod Properties" tocid="Properties_T_Grpc_Core_IMethod">IMethod Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_IMethod_FullName">FullName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_Name.htm" title="Name Property " tocid="P_Grpc_Core_IMethod_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_IMethod_ServiceName">ServiceName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_Type.htm" title="Type Property " tocid="P_Grpc_Core_IMethod_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IMethod<span id="LST743F6173_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST743F6173_0?cpp=::|nu=.");</script>FullName Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the fully qualified name of the method. On the server side, methods are dispatched + based on this name. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="identifier">string</span> <span class="identifier">FullName</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">FullName</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">FullName</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">FullName</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IMethod.htm">IMethod Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..01fd7db14f --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Name.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IMethod.Name Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Name property" /><meta name="System.Keywords" content="IMethod.Name property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IMethod.Name" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IMethod.get_Name" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.IMethod.Name" /><meta name="Description" content="Gets the unqualified name of the method." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_IMethod_Name" /><meta name="guid" content="P_Grpc_Core_IMethod_Name" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IMethod.htm" title="IMethod Properties" tocid="Properties_T_Grpc_Core_IMethod">IMethod Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_IMethod_FullName">FullName Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_Name.htm" title="Name Property " tocid="P_Grpc_Core_IMethod_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_IMethod_ServiceName">ServiceName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_Type.htm" title="Type Property " tocid="P_Grpc_Core_IMethod_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IMethod<span id="LST50501866_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST50501866_0?cpp=::|nu=.");</script>Name Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the unqualified name of the method. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="identifier">string</span> <span class="identifier">Name</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Name</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Name</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Name</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IMethod.htm">IMethod Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..e94184fcc0 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_ServiceName.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IMethod.ServiceName Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServiceName property" /><meta name="System.Keywords" content="IMethod.ServiceName property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IMethod.ServiceName" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IMethod.get_ServiceName" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.IMethod.ServiceName" /><meta name="Description" content="Gets the name of the service to which this method belongs." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_IMethod_ServiceName" /><meta name="guid" content="P_Grpc_Core_IMethod_ServiceName" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IMethod.htm" title="IMethod Properties" tocid="Properties_T_Grpc_Core_IMethod">IMethod Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_IMethod_FullName">FullName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_Name.htm" title="Name Property " tocid="P_Grpc_Core_IMethod_Name">Name Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_IMethod_ServiceName">ServiceName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_Type.htm" title="Type Property " tocid="P_Grpc_Core_IMethod_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IMethod<span id="LSTA412F3B1_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA412F3B1_0?cpp=::|nu=.");</script>ServiceName Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the name of the service to which this method belongs. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="identifier">string</span> <span class="identifier">ServiceName</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ServiceName</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">ServiceName</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">ServiceName</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IMethod.htm">IMethod Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..54613fc5e6 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Type.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IMethod.Type Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Type property" /><meta name="System.Keywords" content="IMethod.Type property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IMethod.Type" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IMethod.get_Type" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.IMethod.Type" /><meta name="Description" content="Gets the type of the method." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_IMethod_Type" /><meta name="guid" content="P_Grpc_Core_IMethod_Type" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IMethod.htm" title="IMethod Properties" tocid="Properties_T_Grpc_Core_IMethod">IMethod Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_IMethod_FullName">FullName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_Name.htm" title="Name Property " tocid="P_Grpc_Core_IMethod_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_IMethod_ServiceName">ServiceName Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_Type.htm" title="Type Property " tocid="P_Grpc_Core_IMethod_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IMethod<span id="LST939FDA4B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST939FDA4B_0?cpp=::|nu=.");</script>Type Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the type of the method. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="identifier">MethodType</span> <span class="identifier">Type</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Type</span> <span class="keyword">As</span> <span class="identifier">MethodType</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">property</span> <span class="identifier">MethodType</span> <span class="identifier">Type</span> { + <span class="identifier">MethodType</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Type</span> : <span class="identifier">MethodType</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_MethodType.htm">MethodType</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IMethod.htm">IMethod Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..3eae8efe9a --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_CertificateChain.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>KeyCertificatePair.CertificateChain Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CertificateChain property" /><meta name="System.Keywords" content="KeyCertificatePair.CertificateChain property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.KeyCertificatePair.CertificateChain" /><meta name="Microsoft.Help.F1" content="Grpc.Core.KeyCertificatePair.get_CertificateChain" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.KeyCertificatePair.CertificateChain" /><meta name="Description" content="PEM encoded certificate chain." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_KeyCertificatePair_CertificateChain" /><meta name="guid" content="P_Grpc_Core_KeyCertificatePair_CertificateChain" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Properties" tocid="Properties_T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_KeyCertificatePair_CertificateChain.htm" title="CertificateChain Property " tocid="P_Grpc_Core_KeyCertificatePair_CertificateChain">CertificateChain Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_KeyCertificatePair_PrivateKey.htm" title="PrivateKey Property " tocid="P_Grpc_Core_KeyCertificatePair_PrivateKey">PrivateKey Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">KeyCertificatePair<span id="LSTF3788CED_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF3788CED_0?cpp=::|nu=.");</script>CertificateChain Property </td></tr></table><span class="introStyle"></span><div class="summary"> + PEM encoded certificate chain. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">CertificateChain</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">CertificateChain</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">CertificateChain</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">CertificateChain</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..70ccc67e8e --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_PrivateKey.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>KeyCertificatePair.PrivateKey Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="PrivateKey property" /><meta name="System.Keywords" content="KeyCertificatePair.PrivateKey property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.KeyCertificatePair.PrivateKey" /><meta name="Microsoft.Help.F1" content="Grpc.Core.KeyCertificatePair.get_PrivateKey" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.KeyCertificatePair.PrivateKey" /><meta name="Description" content="PEM encoded private key." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_KeyCertificatePair_PrivateKey" /><meta name="guid" content="P_Grpc_Core_KeyCertificatePair_PrivateKey" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Properties" tocid="Properties_T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_KeyCertificatePair_CertificateChain.htm" title="CertificateChain Property " tocid="P_Grpc_Core_KeyCertificatePair_CertificateChain">CertificateChain Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_KeyCertificatePair_PrivateKey.htm" title="PrivateKey Property " tocid="P_Grpc_Core_KeyCertificatePair_PrivateKey">PrivateKey Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">KeyCertificatePair<span id="LSTCE561653_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCE561653_0?cpp=::|nu=.");</script>PrivateKey Property </td></tr></table><span class="introStyle"></span><div class="summary"> + PEM encoded private key. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">PrivateKey</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">PrivateKey</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">PrivateKey</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">PrivateKey</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..281cddc77a --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Deserializer.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Marshaller(T).Deserializer Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Deserializer property" /><meta name="System.Keywords" content="Marshaller%3CT%3E.Deserializer property" /><meta name="System.Keywords" content="Marshaller(Of T).Deserializer property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Marshaller`1.Deserializer" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Marshaller`1.get_Deserializer" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Marshaller`1.Deserializer" /><meta name="Description" content="Gets the deserializer function." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Marshaller_1_Deserializer" /><meta name="guid" content="P_Grpc_Core_Marshaller_1_Deserializer" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Properties" tocid="Properties_T_Grpc_Core_Marshaller_1">Marshaller(T) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Marshaller_1_Deserializer.htm" title="Deserializer Property " tocid="P_Grpc_Core_Marshaller_1_Deserializer">Deserializer Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Marshaller_1_Serializer.htm" title="Serializer Property " tocid="P_Grpc_Core_Marshaller_1_Serializer">Serializer Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Marshaller<span id="LSTB75761F4_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB75761F4_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTB75761F4_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB75761F4_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTB75761F4_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB75761F4_2?cpp=::|nu=.");</script>Deserializer Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the deserializer function. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Func</span><<span class="identifier">byte</span>[], T> <span class="identifier">Deserializer</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Deserializer</span> <span class="keyword">As</span> <span class="identifier">Func</span>(<span class="keyword">Of</span> <span class="identifier">Byte</span>(), T) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Func</span><<span class="keyword">array</span><<span class="identifier">unsigned char</span>>^, T>^ <span class="identifier">Deserializer</span> { + <span class="identifier">Func</span><<span class="keyword">array</span><<span class="identifier">unsigned char</span>>^, T>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Deserializer</span> : <span class="identifier">Func</span><<span class="identifier">byte</span>[], 'T> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/bb549151" target="_blank">Func</a><span id="LSTB75761F4_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB75761F4_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span id="LSTB75761F4_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB75761F4_4?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/yyb1w04y" target="_blank">Byte</a><span id="LSTB75761F4_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB75761F4_5?cpp=>|vb=()|nu=[]");</script>, <a href="T_Grpc_Core_Marshaller_1.htm"><span class="typeparameter">T</span></a><span id="LSTB75761F4_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB75761F4_6?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Marshaller_1.htm">Marshaller<span id="LSTB75761F4_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB75761F4_7?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTB75761F4_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB75761F4_8?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..d288c6329c --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Serializer.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Marshaller(T).Serializer Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Serializer property" /><meta name="System.Keywords" content="Marshaller%3CT%3E.Serializer property" /><meta name="System.Keywords" content="Marshaller(Of T).Serializer property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Marshaller`1.Serializer" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Marshaller`1.get_Serializer" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Marshaller`1.Serializer" /><meta name="Description" content="Gets the serializer function." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Marshaller_1_Serializer" /><meta name="guid" content="P_Grpc_Core_Marshaller_1_Serializer" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Properties" tocid="Properties_T_Grpc_Core_Marshaller_1">Marshaller(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Marshaller_1_Deserializer.htm" title="Deserializer Property " tocid="P_Grpc_Core_Marshaller_1_Deserializer">Deserializer Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Marshaller_1_Serializer.htm" title="Serializer Property " tocid="P_Grpc_Core_Marshaller_1_Serializer">Serializer Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Marshaller<span id="LSTB3003823_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB3003823_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTB3003823_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB3003823_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTB3003823_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB3003823_2?cpp=::|nu=.");</script>Serializer Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the serializer function. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Func</span><T, <span class="identifier">byte</span>[]> <span class="identifier">Serializer</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Serializer</span> <span class="keyword">As</span> <span class="identifier">Func</span>(<span class="keyword">Of</span> T, <span class="identifier">Byte</span>()) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Func</span><T, <span class="keyword">array</span><<span class="identifier">unsigned char</span>>^>^ <span class="identifier">Serializer</span> { + <span class="identifier">Func</span><T, <span class="keyword">array</span><<span class="identifier">unsigned char</span>>^>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Serializer</span> : <span class="identifier">Func</span><'T, <span class="identifier">byte</span>[]> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/bb549151" target="_blank">Func</a><span id="LSTB3003823_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB3003823_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_Marshaller_1.htm"><span class="typeparameter">T</span></a>, <span id="LSTB3003823_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB3003823_4?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/yyb1w04y" target="_blank">Byte</a><span id="LSTB3003823_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB3003823_5?cpp=>|vb=()|nu=[]");</script><span id="LSTB3003823_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB3003823_6?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Marshaller_1.htm">Marshaller<span id="LSTB3003823_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB3003823_7?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTB3003823_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB3003823_8?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0db6f764c0 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Marshallers_StringMarshaller.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Marshallers.StringMarshaller Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="StringMarshaller property" /><meta name="System.Keywords" content="Marshallers.StringMarshaller property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Marshallers.StringMarshaller" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Marshallers.get_StringMarshaller" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Marshallers.StringMarshaller" /><meta name="Description" content="Returns a marshaller for string type. This is useful for testing." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Marshallers_StringMarshaller" /><meta name="guid" content="P_Grpc_Core_Marshallers_StringMarshaller" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Marshallers.htm" title="Marshallers Properties" tocid="Properties_T_Grpc_Core_Marshallers">Marshallers Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Marshallers_StringMarshaller.htm" title="StringMarshaller Property " tocid="P_Grpc_Core_Marshallers_StringMarshaller">StringMarshaller Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Marshallers<span id="LST38F7A5B3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST38F7A5B3_0?cpp=::|nu=.");</script>StringMarshaller Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Returns a marshaller for <span class="code">string</span> type. This is useful for testing. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">Marshaller</span><<span class="identifier">string</span>> <span class="identifier">StringMarshaller</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">StringMarshaller</span> <span class="keyword">As</span> <span class="identifier">Marshaller</span>(<span class="keyword">Of</span> <span class="identifier">String</span>) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">property</span> <span class="identifier">Marshaller</span><<span class="identifier">String</span>^> <span class="identifier">StringMarshaller</span> { + <span class="identifier">Marshaller</span><<span class="identifier">String</span>^> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">StringMarshaller</span> : <span class="identifier">Marshaller</span><<span class="identifier">string</span>> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Marshaller_1.htm">Marshaller</a><span id="LST38F7A5B3_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST38F7A5B3_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a><span id="LST38F7A5B3_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST38F7A5B3_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Marshallers.htm">Marshallers Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..348175b939 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Count.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Count Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Count property" /><meta name="System.Keywords" content="Metadata.Count property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Count" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.get_Count" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Metadata.Count" /><meta name="Description" content="summaryP:Grpc.Core.Metadata.Count" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Metadata_Count" /><meta name="guid" content="P_Grpc_Core_Metadata_Count" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata.htm" title="Metadata Properties" tocid="Properties_T_Grpc_Core_Metadata">Metadata Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Count.htm" title="Count Property " tocid="P_Grpc_Core_Metadata_Count">Count Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_IsReadOnly.htm" title="IsReadOnly Property " tocid="P_Grpc_Core_Metadata_IsReadOnly">IsReadOnly Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Item.htm" title="Item Property " tocid="P_Grpc_Core_Metadata_Item">Item Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST2013FE93_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2013FE93_0?cpp=::|nu=.");</script>Count Property </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "P:Grpc.Core.Metadata.Count"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">int</span> <span class="identifier">Count</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Count</span> <span class="keyword">As</span> <span class="identifier">Integer</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">property</span> <span class="identifier">int</span> <span class="identifier">Count</span> { + <span class="identifier">int</span> <span class="keyword">get</span> () <span class="keyword">sealed</span>; +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Count</span> : <span class="identifier">int</span> <span class="keyword">with</span> <span class="keyword">get</span> +<span class="keyword">override</span> <span class="identifier">Count</span> : <span class="identifier">int</span> <span class="keyword">with</span> <span class="keyword">get</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">Int32</a><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/5s3kzhec" target="_blank">ICollection<span id="LST2013FE93_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2013FE93_1?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST2013FE93_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2013FE93_2?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LST2013FE93_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2013FE93_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Count</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..efa7628e43 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_IsBinary.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Entry.IsBinary Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IsBinary property" /><meta name="System.Keywords" content="Metadata.Entry.IsBinary property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry.IsBinary" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry.get_IsBinary" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Metadata.Entry.IsBinary" /><meta name="Description" content="Returns true if this entry is a binary-value entry." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Metadata_Entry_IsBinary" /><meta name="guid" content="P_Grpc_Core_Metadata_Entry_IsBinary" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata_Entry.htm" title="Entry Properties" tocid="Properties_T_Grpc_Core_Metadata_Entry">Entry Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_IsBinary.htm" title="IsBinary Property " tocid="P_Grpc_Core_Metadata_Entry_IsBinary">IsBinary Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_Key.htm" title="Key Property " tocid="P_Grpc_Core_Metadata_Entry_Key">Key Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_Value.htm" title="Value Property " tocid="P_Grpc_Core_Metadata_Entry_Value">Value Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_ValueBytes.htm" title="ValueBytes Property " tocid="P_Grpc_Core_Metadata_Entry_ValueBytes">ValueBytes Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST97AF85A3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97AF85A3_0?cpp=::|nu=.");</script>Entry<span id="LST97AF85A3_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97AF85A3_1?cpp=::|nu=.");</script>IsBinary Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Returns <span class="code">true</span> if this entry is a binary-value entry. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">bool</span> <span class="identifier">IsBinary</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">IsBinary</span> <span class="keyword">As</span> <span class="identifier">Boolean</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">bool</span> <span class="identifier">IsBinary</span> { + <span class="identifier">bool</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">IsBinary</span> : <span class="identifier">bool</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">Boolean</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST97AF85A3_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97AF85A3_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f72d768eb5 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Key.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Entry.Key Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Key property" /><meta name="System.Keywords" content="Metadata.Entry.Key property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry.Key" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry.get_Key" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Metadata.Entry.Key" /><meta name="Description" content="Gets the metadata entry key." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Metadata_Entry_Key" /><meta name="guid" content="P_Grpc_Core_Metadata_Entry_Key" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata_Entry.htm" title="Entry Properties" tocid="Properties_T_Grpc_Core_Metadata_Entry">Entry Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_IsBinary.htm" title="IsBinary Property " tocid="P_Grpc_Core_Metadata_Entry_IsBinary">IsBinary Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_Key.htm" title="Key Property " tocid="P_Grpc_Core_Metadata_Entry_Key">Key Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_Value.htm" title="Value Property " tocid="P_Grpc_Core_Metadata_Entry_Value">Value Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_ValueBytes.htm" title="ValueBytes Property " tocid="P_Grpc_Core_Metadata_Entry_ValueBytes">ValueBytes Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LSTEFB11001_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEFB11001_0?cpp=::|nu=.");</script>Entry<span id="LSTEFB11001_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEFB11001_1?cpp=::|nu=.");</script>Key Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the metadata entry key. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Key</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Key</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Key</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Key</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LSTEFB11001_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEFB11001_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..53fc951503 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Value.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Entry.Value Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Value property" /><meta name="System.Keywords" content="Metadata.Entry.Value property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry.Value" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry.get_Value" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Metadata.Entry.Value" /><meta name="Description" content="Gets the string value of this metadata entry." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Metadata_Entry_Value" /><meta name="guid" content="P_Grpc_Core_Metadata_Entry_Value" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata_Entry.htm" title="Entry Properties" tocid="Properties_T_Grpc_Core_Metadata_Entry">Entry Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_IsBinary.htm" title="IsBinary Property " tocid="P_Grpc_Core_Metadata_Entry_IsBinary">IsBinary Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_Key.htm" title="Key Property " tocid="P_Grpc_Core_Metadata_Entry_Key">Key Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_Value.htm" title="Value Property " tocid="P_Grpc_Core_Metadata_Entry_Value">Value Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_ValueBytes.htm" title="ValueBytes Property " tocid="P_Grpc_Core_Metadata_Entry_ValueBytes">ValueBytes Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LSTCEA6FA91_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCEA6FA91_0?cpp=::|nu=.");</script>Entry<span id="LSTCEA6FA91_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCEA6FA91_1?cpp=::|nu=.");</script>Value Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the string value of this metadata entry. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Value</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Value</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Value</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Value</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LSTCEA6FA91_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCEA6FA91_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..00b325c1c1 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_ValueBytes.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Entry.ValueBytes Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ValueBytes property" /><meta name="System.Keywords" content="Metadata.Entry.ValueBytes property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry.ValueBytes" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry.get_ValueBytes" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Metadata.Entry.ValueBytes" /><meta name="Description" content="Gets the binary value of this metadata entry." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Metadata_Entry_ValueBytes" /><meta name="guid" content="P_Grpc_Core_Metadata_Entry_ValueBytes" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata_Entry.htm" title="Entry Properties" tocid="Properties_T_Grpc_Core_Metadata_Entry">Entry Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_IsBinary.htm" title="IsBinary Property " tocid="P_Grpc_Core_Metadata_Entry_IsBinary">IsBinary Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_Key.htm" title="Key Property " tocid="P_Grpc_Core_Metadata_Entry_Key">Key Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_Value.htm" title="Value Property " tocid="P_Grpc_Core_Metadata_Entry_Value">Value Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_ValueBytes.htm" title="ValueBytes Property " tocid="P_Grpc_Core_Metadata_Entry_ValueBytes">ValueBytes Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST390CE018_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST390CE018_0?cpp=::|nu=.");</script>Entry<span id="LST390CE018_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST390CE018_1?cpp=::|nu=.");</script>ValueBytes Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the binary value of this metadata entry. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">byte</span>[] <span class="identifier">ValueBytes</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ValueBytes</span> <span class="keyword">As</span> <span class="identifier">Byte</span>() + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="keyword">array</span><<span class="identifier">unsigned char</span>>^ <span class="identifier">ValueBytes</span> { + <span class="keyword">array</span><<span class="identifier">unsigned char</span>>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ValueBytes</span> : <span class="identifier">byte</span>[] <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <span id="LST390CE018_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST390CE018_2?cpp=array<");</script><a href="http://msdn2.microsoft.com/en-us/library/yyb1w04y" target="_blank">Byte</a><span id="LST390CE018_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST390CE018_3?cpp=>|vb=()|nu=[]");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST390CE018_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST390CE018_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..da27809a7e --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_IsReadOnly.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.IsReadOnly Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IsReadOnly property" /><meta name="System.Keywords" content="Metadata.IsReadOnly property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.IsReadOnly" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.get_IsReadOnly" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Metadata.IsReadOnly" /><meta name="Description" content="summaryP:Grpc.Core.Metadata.IsReadOnly" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Metadata_IsReadOnly" /><meta name="guid" content="P_Grpc_Core_Metadata_IsReadOnly" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata.htm" title="Metadata Properties" tocid="Properties_T_Grpc_Core_Metadata">Metadata Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Count.htm" title="Count Property " tocid="P_Grpc_Core_Metadata_Count">Count Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_IsReadOnly.htm" title="IsReadOnly Property " tocid="P_Grpc_Core_Metadata_IsReadOnly">IsReadOnly Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Item.htm" title="Item Property " tocid="P_Grpc_Core_Metadata_Item">Item Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LSTA246E180_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA246E180_0?cpp=::|nu=.");</script>IsReadOnly Property </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "P:Grpc.Core.Metadata.IsReadOnly"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">bool</span> <span class="identifier">IsReadOnly</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">IsReadOnly</span> <span class="keyword">As</span> <span class="identifier">Boolean</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">property</span> <span class="identifier">bool</span> <span class="identifier">IsReadOnly</span> { + <span class="identifier">bool</span> <span class="keyword">get</span> () <span class="keyword">sealed</span>; +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">IsReadOnly</span> : <span class="identifier">bool</span> <span class="keyword">with</span> <span class="keyword">get</span> +<span class="keyword">override</span> <span class="identifier">IsReadOnly</span> : <span class="identifier">bool</span> <span class="keyword">with</span> <span class="keyword">get</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">Boolean</a><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/0cfatk9t" target="_blank">ICollection<span id="LSTA246E180_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA246E180_1?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTA246E180_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA246E180_2?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LSTA246E180_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA246E180_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IsReadOnly</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..4147b73451 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Item.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Item Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Item property" /><meta name="System.Keywords" content="Metadata.Item property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Item" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.get_Item" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.set_Item" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Metadata.Item(System.Int32)" /><meta name="Description" content="summaryP:Grpc.Core.Metadata.Item(System.Int32)" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Metadata_Item" /><meta name="guid" content="P_Grpc_Core_Metadata_Item" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata.htm" title="Metadata Properties" tocid="Properties_T_Grpc_Core_Metadata">Metadata Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Count.htm" title="Count Property " tocid="P_Grpc_Core_Metadata_Count">Count Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_IsReadOnly.htm" title="IsReadOnly Property " tocid="P_Grpc_Core_Metadata_IsReadOnly">IsReadOnly Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Item.htm" title="Item Property " tocid="P_Grpc_Core_Metadata_Item">Item Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST298F721D_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_0?cpp=::|nu=.");</script>Item Property </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "P:Grpc.Core.Metadata.Item(System.Int32)"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Metadata<span id="LST298F721D_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">this</span>[ + <span class="identifier">int</span> <span class="parameter">index</span> +] { <span class="keyword">get</span>; <span class="keyword">set</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Default</span> <span class="keyword">Property</span> <span class="identifier">Item</span> ( + <span class="parameter">index</span> <span class="keyword">As</span> <span class="identifier">Integer</span> +) <span class="keyword">As</span> <span class="identifier">Metadata<span id="LST298F721D_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> + <span class="keyword">Get</span> + <span class="keyword">Set</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">property</span> <span class="identifier">Metadata<span id="LST298F721D_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">default</span>[<span class="identifier">int</span> <span class="parameter">index</span>] { + <span class="identifier">Metadata<span id="LST298F721D_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">get</span> (<span class="identifier">int</span> <span class="parameter">index</span>) <span class="keyword">sealed</span>; + <span class="keyword">void</span> <span class="keyword">set</span> (<span class="identifier">int</span> <span class="parameter">index</span>, <span class="identifier">Metadata<span id="LST298F721D_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="parameter">value</span>) <span class="keyword">sealed</span>; +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Item</span> : <span class="identifier">Metadata<span id="LST298F721D_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">with</span> <span class="keyword">get</span>, <span class="keyword">set</span> +<span class="keyword">override</span> <span class="identifier">Item</span> : <span class="identifier">Metadata<span id="LST298F721D_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> <span class="keyword">with</span> <span class="keyword">get</span>, <span class="keyword">set</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">index</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">System<span id="LST298F721D_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Int32</a><br /></dd></dl><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST298F721D_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_9?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a><h4 class="subHeading">Implements</h4><a href="http://msdn2.microsoft.com/en-us/library/ewthkb10" target="_blank">IList<span id="LST298F721D_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_10?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST298F721D_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_11?cs=>|vb=)|cpp=>|nu=)|fs=>");</script><span id="LST298F721D_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_12?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Item<span id="LST298F721D_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_13?cs=[|vb=(|cpp=[|nu=(|fs= ");</script>Int32<span id="LST298F721D_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST298F721D_14?cs=]|vb=)|cpp=]|nu=)|fs= ");</script></a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..d3940aeb12 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_FullName.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Method(TRequest, TResponse).FullName Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="FullName property" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E.FullName property" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse).FullName property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.FullName" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.get_FullName" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Method`2.FullName" /><meta name="Description" content="Gets the fully qualified name of the method. On the server side, methods are dispatched based on this name." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Method_2_FullName" /><meta name="guid" content="P_Grpc_Core_Method_2_FullName" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_Method_2_FullName">FullName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Name.htm" title="Name Property " tocid="P_Grpc_Core_Method_2_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_Method_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_Method_2_ResponseMarshaller">ResponseMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_Method_2_ServiceName">ServiceName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Type.htm" title="Type Property " tocid="P_Grpc_Core_Method_2_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Method<span id="LSTF00A04B2_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF00A04B2_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTF00A04B2_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF00A04B2_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTF00A04B2_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF00A04B2_2?cpp=::|nu=.");</script>FullName Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the fully qualified name of the method. On the server side, methods are dispatched + based on this name. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">FullName</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">FullName</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">FullName</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> () <span class="keyword">sealed</span>; +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">FullName</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +<span class="keyword">override</span> <span class="identifier">FullName</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a><h4 class="subHeading">Implements</h4><a href="P_Grpc_Core_IMethod_FullName.htm">IMethod<span id="LSTF00A04B2_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF00A04B2_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>FullName</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Method_2.htm">Method<span id="LSTF00A04B2_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF00A04B2_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTF00A04B2_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF00A04B2_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..832b968319 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Name.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Method(TRequest, TResponse).Name Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Name property" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E.Name property" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse).Name property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.Name" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.get_Name" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Method`2.Name" /><meta name="Description" content="Gets the unqualified name of the method." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Method_2_Name" /><meta name="guid" content="P_Grpc_Core_Method_2_Name" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_Method_2_FullName">FullName Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Name.htm" title="Name Property " tocid="P_Grpc_Core_Method_2_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_Method_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_Method_2_ResponseMarshaller">ResponseMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_Method_2_ServiceName">ServiceName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Type.htm" title="Type Property " tocid="P_Grpc_Core_Method_2_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Method<span id="LST951FE1A7_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST951FE1A7_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST951FE1A7_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST951FE1A7_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST951FE1A7_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST951FE1A7_2?cpp=::|nu=.");</script>Name Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the unqualified name of the method. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Name</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Name</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Name</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> () <span class="keyword">sealed</span>; +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Name</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +<span class="keyword">override</span> <span class="identifier">Name</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a><h4 class="subHeading">Implements</h4><a href="P_Grpc_Core_IMethod_Name.htm">IMethod<span id="LST951FE1A7_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST951FE1A7_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Name</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Method_2.htm">Method<span id="LST951FE1A7_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST951FE1A7_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST951FE1A7_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST951FE1A7_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..8a4c5b3da0 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_RequestMarshaller.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Method(TRequest, TResponse).RequestMarshaller Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RequestMarshaller property" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E.RequestMarshaller property" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse).RequestMarshaller property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.RequestMarshaller" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.get_RequestMarshaller" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Method`2.RequestMarshaller" /><meta name="Description" content="Gets the marshaller used for request messages." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Method_2_RequestMarshaller" /><meta name="guid" content="P_Grpc_Core_Method_2_RequestMarshaller" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_Method_2_FullName">FullName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Name.htm" title="Name Property " tocid="P_Grpc_Core_Method_2_Name">Name Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_Method_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_Method_2_ResponseMarshaller">ResponseMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_Method_2_ServiceName">ServiceName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Type.htm" title="Type Property " tocid="P_Grpc_Core_Method_2_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Method<span id="LSTD5673AAC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD5673AAC_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTD5673AAC_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD5673AAC_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LSTD5673AAC_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD5673AAC_2?cpp=::|nu=.");</script>RequestMarshaller Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the marshaller used for request messages. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Marshaller</span><TRequest> <span class="identifier">RequestMarshaller</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">RequestMarshaller</span> <span class="keyword">As</span> <span class="identifier">Marshaller</span>(<span class="keyword">Of</span> TRequest) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Marshaller</span><TRequest> <span class="identifier">RequestMarshaller</span> { + <span class="identifier">Marshaller</span><TRequest> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">RequestMarshaller</span> : <span class="identifier">Marshaller</span><'TRequest> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Marshaller_1.htm">Marshaller</a><span id="LSTD5673AAC_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD5673AAC_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_Method_2.htm"><span class="typeparameter">TRequest</span></a><span id="LSTD5673AAC_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD5673AAC_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Method_2.htm">Method<span id="LSTD5673AAC_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD5673AAC_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTD5673AAC_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD5673AAC_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..dbe51e6d4d --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ResponseMarshaller.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Method(TRequest, TResponse).ResponseMarshaller Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResponseMarshaller property" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E.ResponseMarshaller property" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse).ResponseMarshaller property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.ResponseMarshaller" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.get_ResponseMarshaller" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Method`2.ResponseMarshaller" /><meta name="Description" content="Gets the marshaller used for response messages." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Method_2_ResponseMarshaller" /><meta name="guid" content="P_Grpc_Core_Method_2_ResponseMarshaller" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_Method_2_FullName">FullName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Name.htm" title="Name Property " tocid="P_Grpc_Core_Method_2_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_Method_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_Method_2_ResponseMarshaller">ResponseMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_Method_2_ServiceName">ServiceName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Type.htm" title="Type Property " tocid="P_Grpc_Core_Method_2_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Method<span id="LST761D02DA_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST761D02DA_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST761D02DA_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST761D02DA_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST761D02DA_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST761D02DA_2?cpp=::|nu=.");</script>ResponseMarshaller Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the marshaller used for response messages. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Marshaller</span><TResponse> <span class="identifier">ResponseMarshaller</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResponseMarshaller</span> <span class="keyword">As</span> <span class="identifier">Marshaller</span>(<span class="keyword">Of</span> TResponse) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Marshaller</span><TResponse> <span class="identifier">ResponseMarshaller</span> { + <span class="identifier">Marshaller</span><TResponse> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResponseMarshaller</span> : <span class="identifier">Marshaller</span><'TResponse> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Marshaller_1.htm">Marshaller</a><span id="LST761D02DA_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST761D02DA_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_Method_2.htm"><span class="typeparameter">TResponse</span></a><span id="LST761D02DA_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST761D02DA_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Method_2.htm">Method<span id="LST761D02DA_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST761D02DA_5?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST761D02DA_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST761D02DA_6?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..00816a5b62 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ServiceName.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Method(TRequest, TResponse).ServiceName Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServiceName property" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E.ServiceName property" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse).ServiceName property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.ServiceName" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.get_ServiceName" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Method`2.ServiceName" /><meta name="Description" content="Gets the name of the service to which this method belongs." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Method_2_ServiceName" /><meta name="guid" content="P_Grpc_Core_Method_2_ServiceName" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_Method_2_FullName">FullName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Name.htm" title="Name Property " tocid="P_Grpc_Core_Method_2_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_Method_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_Method_2_ResponseMarshaller">ResponseMarshaller Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_Method_2_ServiceName">ServiceName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Type.htm" title="Type Property " tocid="P_Grpc_Core_Method_2_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Method<span id="LST73E5C4FC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST73E5C4FC_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST73E5C4FC_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST73E5C4FC_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST73E5C4FC_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST73E5C4FC_2?cpp=::|nu=.");</script>ServiceName Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the name of the service to which this method belongs. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">ServiceName</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ServiceName</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">ServiceName</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> () <span class="keyword">sealed</span>; +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">ServiceName</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +<span class="keyword">override</span> <span class="identifier">ServiceName</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a><h4 class="subHeading">Implements</h4><a href="P_Grpc_Core_IMethod_ServiceName.htm">IMethod<span id="LST73E5C4FC_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST73E5C4FC_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceName</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Method_2.htm">Method<span id="LST73E5C4FC_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST73E5C4FC_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST73E5C4FC_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST73E5C4FC_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..76c2f26b0d --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Type.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Method(TRequest, TResponse).Type Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Type property" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E.Type property" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse).Type property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.Type" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2.get_Type" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Method`2.Type" /><meta name="Description" content="Gets the type of the method." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Method_2_Type" /><meta name="guid" content="P_Grpc_Core_Method_2_Type" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_Method_2_FullName">FullName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Name.htm" title="Name Property " tocid="P_Grpc_Core_Method_2_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_Method_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_Method_2_ResponseMarshaller">ResponseMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_Method_2_ServiceName">ServiceName Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Type.htm" title="Type Property " tocid="P_Grpc_Core_Method_2_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Method<span id="LST1B59ED48_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1B59ED48_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST1B59ED48_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1B59ED48_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><span id="LST1B59ED48_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1B59ED48_2?cpp=::|nu=.");</script>Type Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the type of the method. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">MethodType</span> <span class="identifier">Type</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Type</span> <span class="keyword">As</span> <span class="identifier">MethodType</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">virtual</span> <span class="keyword">property</span> <span class="identifier">MethodType</span> <span class="identifier">Type</span> { + <span class="identifier">MethodType</span> <span class="keyword">get</span> () <span class="keyword">sealed</span>; +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">abstract</span> <span class="identifier">Type</span> : <span class="identifier">MethodType</span> <span class="keyword">with</span> <span class="keyword">get</span> +<span class="keyword">override</span> <span class="identifier">Type</span> : <span class="identifier">MethodType</span> <span class="keyword">with</span> <span class="keyword">get</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_MethodType.htm">MethodType</a><h4 class="subHeading">Implements</h4><a href="P_Grpc_Core_IMethod_Type.htm">IMethod<span id="LST1B59ED48_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1B59ED48_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Type</a><br /></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Method_2.htm">Method<span id="LST1B59ED48_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1B59ED48_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST1B59ED48_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1B59ED48_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..679d1a940e --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_RpcException_Status.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RpcException.Status Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Status property" /><meta name="System.Keywords" content="RpcException.Status property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.RpcException.Status" /><meta name="Microsoft.Help.F1" content="Grpc.Core.RpcException.get_Status" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.RpcException.Status" /><meta name="Description" content="Resulting status of the call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_RpcException_Status" /><meta name="guid" content="P_Grpc_Core_RpcException_Status" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_RpcException.htm" title="RpcException Properties" tocid="Properties_T_Grpc_Core_RpcException">RpcException Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_RpcException_Status.htm" title="Status Property " tocid="P_Grpc_Core_RpcException_Status">Status Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">RpcException<span id="LSTC5F49DDF_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC5F49DDF_0?cpp=::|nu=.");</script>Status Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Resulting status of the call. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Status</span> <span class="identifier">Status</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Status</span> <span class="keyword">As</span> <span class="identifier">Status</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Status</span> <span class="identifier">Status</span> { + <span class="identifier">Status</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Status</span> : <span class="identifier">Status</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Status.htm">Status</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_RpcException.htm">RpcException Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..15cfa92efb --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_CancellationToken.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext.CancellationToken Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CancellationToken property" /><meta name="System.Keywords" content="ServerCallContext.CancellationToken property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.CancellationToken" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.get_CancellationToken" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerCallContext.CancellationToken" /><meta name="Description" content="Cancellation token signals when call is cancelled." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerCallContext_CancellationToken" /><meta name="guid" content="P_Grpc_Core_ServerCallContext_CancellationToken" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Properties" tocid="Properties_T_Grpc_Core_ServerCallContext">ServerCallContext Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_ServerCallContext_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_ServerCallContext_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerCallContext_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Method.htm" title="Method Property " tocid="P_Grpc_Core_ServerCallContext_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Peer.htm" title="Peer Property " tocid="P_Grpc_Core_ServerCallContext_Peer">Peer Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm" title="RequestHeaders Property " tocid="P_Grpc_Core_ServerCallContext_RequestHeaders">RequestHeaders Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" title="ResponseTrailers Property " tocid="P_Grpc_Core_ServerCallContext_ResponseTrailers">ResponseTrailers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Status.htm" title="Status Property " tocid="P_Grpc_Core_ServerCallContext_Status">Status Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_ServerCallContext_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext<span id="LSTB10DDC99_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB10DDC99_0?cpp=::|nu=.");</script>CancellationToken Property </td></tr></table><span class="introStyle"></span><div class="summary">Cancellation token signals when call is cancelled.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">CancellationToken</span> <span class="identifier">CancellationToken</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">CancellationToken</span> <span class="keyword">As</span> <span class="identifier">CancellationToken</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">CancellationToken</span> <span class="identifier">CancellationToken</span> { + <span class="identifier">CancellationToken</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">CancellationToken</span> : <span class="identifier">CancellationToken</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd384802" target="_blank">CancellationToken</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..1c8c57decd --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Deadline.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext.Deadline Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Deadline property" /><meta name="System.Keywords" content="ServerCallContext.Deadline property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.Deadline" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.get_Deadline" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerCallContext.Deadline" /><meta name="Description" content="Deadline for this RPC." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerCallContext_Deadline" /><meta name="guid" content="P_Grpc_Core_ServerCallContext_Deadline" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Properties" tocid="Properties_T_Grpc_Core_ServerCallContext">ServerCallContext Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_ServerCallContext_CancellationToken">CancellationToken Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_ServerCallContext_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerCallContext_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Method.htm" title="Method Property " tocid="P_Grpc_Core_ServerCallContext_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Peer.htm" title="Peer Property " tocid="P_Grpc_Core_ServerCallContext_Peer">Peer Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm" title="RequestHeaders Property " tocid="P_Grpc_Core_ServerCallContext_RequestHeaders">RequestHeaders Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" title="ResponseTrailers Property " tocid="P_Grpc_Core_ServerCallContext_ResponseTrailers">ResponseTrailers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Status.htm" title="Status Property " tocid="P_Grpc_Core_ServerCallContext_Status">Status Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_ServerCallContext_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext<span id="LSTD0F7067_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD0F7067_0?cpp=::|nu=.");</script>Deadline Property </td></tr></table><span class="introStyle"></span><div class="summary">Deadline for this RPC.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">DateTime</span> <span class="identifier">Deadline</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Deadline</span> <span class="keyword">As</span> <span class="identifier">DateTime</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">DateTime</span> <span class="identifier">Deadline</span> { + <span class="identifier">DateTime</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Deadline</span> : <span class="identifier">DateTime</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/03ybds8y" target="_blank">DateTime</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..88cf207e61 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Host.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext.Host Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Host property" /><meta name="System.Keywords" content="ServerCallContext.Host property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.Host" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.get_Host" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerCallContext.Host" /><meta name="Description" content="Name of host called in this RPC." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerCallContext_Host" /><meta name="guid" content="P_Grpc_Core_ServerCallContext_Host" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Properties" tocid="Properties_T_Grpc_Core_ServerCallContext">ServerCallContext Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_ServerCallContext_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_ServerCallContext_Deadline">Deadline Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerCallContext_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Method.htm" title="Method Property " tocid="P_Grpc_Core_ServerCallContext_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Peer.htm" title="Peer Property " tocid="P_Grpc_Core_ServerCallContext_Peer">Peer Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm" title="RequestHeaders Property " tocid="P_Grpc_Core_ServerCallContext_RequestHeaders">RequestHeaders Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" title="ResponseTrailers Property " tocid="P_Grpc_Core_ServerCallContext_ResponseTrailers">ResponseTrailers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Status.htm" title="Status Property " tocid="P_Grpc_Core_ServerCallContext_Status">Status Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_ServerCallContext_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext<span id="LST708CE561_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST708CE561_0?cpp=::|nu=.");</script>Host Property </td></tr></table><span class="introStyle"></span><div class="summary">Name of host called in this RPC.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Host</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Host</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Host</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Host</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5c8e643be3 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Method.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext.Method Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Method property" /><meta name="System.Keywords" content="ServerCallContext.Method property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.Method" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.get_Method" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerCallContext.Method" /><meta name="Description" content="Name of method called in this RPC." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerCallContext_Method" /><meta name="guid" content="P_Grpc_Core_ServerCallContext_Method" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Properties" tocid="Properties_T_Grpc_Core_ServerCallContext">ServerCallContext Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_ServerCallContext_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_ServerCallContext_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerCallContext_Host">Host Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Method.htm" title="Method Property " tocid="P_Grpc_Core_ServerCallContext_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Peer.htm" title="Peer Property " tocid="P_Grpc_Core_ServerCallContext_Peer">Peer Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm" title="RequestHeaders Property " tocid="P_Grpc_Core_ServerCallContext_RequestHeaders">RequestHeaders Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" title="ResponseTrailers Property " tocid="P_Grpc_Core_ServerCallContext_ResponseTrailers">ResponseTrailers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Status.htm" title="Status Property " tocid="P_Grpc_Core_ServerCallContext_Status">Status Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_ServerCallContext_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext<span id="LST3FB77324_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3FB77324_0?cpp=::|nu=.");</script>Method Property </td></tr></table><span class="introStyle"></span><div class="summary">Name of method called in this RPC.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Method</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Method</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Method</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Method</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0222fd07f1 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Peer.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext.Peer Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Peer property" /><meta name="System.Keywords" content="ServerCallContext.Peer property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.Peer" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.get_Peer" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerCallContext.Peer" /><meta name="Description" content="Address of the remote endpoint in URI format." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerCallContext_Peer" /><meta name="guid" content="P_Grpc_Core_ServerCallContext_Peer" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Properties" tocid="Properties_T_Grpc_Core_ServerCallContext">ServerCallContext Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_ServerCallContext_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_ServerCallContext_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerCallContext_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Method.htm" title="Method Property " tocid="P_Grpc_Core_ServerCallContext_Method">Method Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Peer.htm" title="Peer Property " tocid="P_Grpc_Core_ServerCallContext_Peer">Peer Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm" title="RequestHeaders Property " tocid="P_Grpc_Core_ServerCallContext_RequestHeaders">RequestHeaders Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" title="ResponseTrailers Property " tocid="P_Grpc_Core_ServerCallContext_ResponseTrailers">ResponseTrailers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Status.htm" title="Status Property " tocid="P_Grpc_Core_ServerCallContext_Status">Status Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_ServerCallContext_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext<span id="LSTA036C407_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA036C407_0?cpp=::|nu=.");</script>Peer Property </td></tr></table><span class="introStyle"></span><div class="summary">Address of the remote endpoint in URI format.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Peer</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Peer</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Peer</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Peer</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..e81a00be35 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_RequestHeaders.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext.RequestHeaders Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RequestHeaders property" /><meta name="System.Keywords" content="ServerCallContext.RequestHeaders property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.RequestHeaders" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.get_RequestHeaders" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerCallContext.RequestHeaders" /><meta name="Description" content="Initial metadata sent by client." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerCallContext_RequestHeaders" /><meta name="guid" content="P_Grpc_Core_ServerCallContext_RequestHeaders" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Properties" tocid="Properties_T_Grpc_Core_ServerCallContext">ServerCallContext Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_ServerCallContext_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_ServerCallContext_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerCallContext_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Method.htm" title="Method Property " tocid="P_Grpc_Core_ServerCallContext_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Peer.htm" title="Peer Property " tocid="P_Grpc_Core_ServerCallContext_Peer">Peer Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm" title="RequestHeaders Property " tocid="P_Grpc_Core_ServerCallContext_RequestHeaders">RequestHeaders Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" title="ResponseTrailers Property " tocid="P_Grpc_Core_ServerCallContext_ResponseTrailers">ResponseTrailers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Status.htm" title="Status Property " tocid="P_Grpc_Core_ServerCallContext_Status">Status Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_ServerCallContext_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext<span id="LST7FC6D30C_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7FC6D30C_0?cpp=::|nu=.");</script>RequestHeaders Property </td></tr></table><span class="introStyle"></span><div class="summary">Initial metadata sent by client.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Metadata</span> <span class="identifier">RequestHeaders</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">RequestHeaders</span> <span class="keyword">As</span> <span class="identifier">Metadata</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Metadata</span>^ <span class="identifier">RequestHeaders</span> { + <span class="identifier">Metadata</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">RequestHeaders</span> : <span class="identifier">Metadata</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Metadata.htm">Metadata</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..e80e639529 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_ResponseTrailers.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext.ResponseTrailers Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ResponseTrailers property" /><meta name="System.Keywords" content="ServerCallContext.ResponseTrailers property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.ResponseTrailers" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.get_ResponseTrailers" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerCallContext.ResponseTrailers" /><meta name="Description" content="Trailers to send back to client after RPC finishes." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerCallContext_ResponseTrailers" /><meta name="guid" content="P_Grpc_Core_ServerCallContext_ResponseTrailers" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Properties" tocid="Properties_T_Grpc_Core_ServerCallContext">ServerCallContext Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_ServerCallContext_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_ServerCallContext_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerCallContext_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Method.htm" title="Method Property " tocid="P_Grpc_Core_ServerCallContext_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Peer.htm" title="Peer Property " tocid="P_Grpc_Core_ServerCallContext_Peer">Peer Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm" title="RequestHeaders Property " tocid="P_Grpc_Core_ServerCallContext_RequestHeaders">RequestHeaders Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" title="ResponseTrailers Property " tocid="P_Grpc_Core_ServerCallContext_ResponseTrailers">ResponseTrailers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Status.htm" title="Status Property " tocid="P_Grpc_Core_ServerCallContext_Status">Status Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_ServerCallContext_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext<span id="LSTF8DE4F16_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF8DE4F16_0?cpp=::|nu=.");</script>ResponseTrailers Property </td></tr></table><span class="introStyle"></span><div class="summary">Trailers to send back to client after RPC finishes.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Metadata</span> <span class="identifier">ResponseTrailers</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ResponseTrailers</span> <span class="keyword">As</span> <span class="identifier">Metadata</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Metadata</span>^ <span class="identifier">ResponseTrailers</span> { + <span class="identifier">Metadata</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ResponseTrailers</span> : <span class="identifier">Metadata</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Metadata.htm">Metadata</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..fc2ff6fce2 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Status.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext.Status Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Status property" /><meta name="System.Keywords" content="ServerCallContext.Status property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.Status" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.get_Status" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.set_Status" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerCallContext.Status" /><meta name="Description" content="Status to send back to client after RPC finishes." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerCallContext_Status" /><meta name="guid" content="P_Grpc_Core_ServerCallContext_Status" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Properties" tocid="Properties_T_Grpc_Core_ServerCallContext">ServerCallContext Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_ServerCallContext_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_ServerCallContext_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerCallContext_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Method.htm" title="Method Property " tocid="P_Grpc_Core_ServerCallContext_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Peer.htm" title="Peer Property " tocid="P_Grpc_Core_ServerCallContext_Peer">Peer Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm" title="RequestHeaders Property " tocid="P_Grpc_Core_ServerCallContext_RequestHeaders">RequestHeaders Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" title="ResponseTrailers Property " tocid="P_Grpc_Core_ServerCallContext_ResponseTrailers">ResponseTrailers Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Status.htm" title="Status Property " tocid="P_Grpc_Core_ServerCallContext_Status">Status Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_ServerCallContext_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext<span id="LSTC3876E65_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC3876E65_0?cpp=::|nu=.");</script>Status Property </td></tr></table><span class="introStyle"></span><div class="summary"> Status to send back to client after RPC finishes.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Status</span> <span class="identifier">Status</span> { <span class="keyword">get</span>; <span class="keyword">set</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Property</span> <span class="identifier">Status</span> <span class="keyword">As</span> <span class="identifier">Status</span> + <span class="keyword">Get</span> + <span class="keyword">Set</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Status</span> <span class="identifier">Status</span> { + <span class="identifier">Status</span> <span class="keyword">get</span> (); + <span class="keyword">void</span> <span class="keyword">set</span> (<span class="identifier">Status</span> <span class="parameter">value</span>); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Status</span> : <span class="identifier">Status</span> <span class="keyword">with</span> <span class="keyword">get</span>, <span class="keyword">set</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Status.htm">Status</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..46365ef1b9 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_WriteOptions.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext.WriteOptions Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteOptions property" /><meta name="System.Keywords" content="ServerCallContext.WriteOptions property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.WriteOptions" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.get_WriteOptions" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext.set_WriteOptions" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerCallContext.WriteOptions" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerCallContext_WriteOptions" /><meta name="guid" content="P_Grpc_Core_ServerCallContext_WriteOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Properties" tocid="Properties_T_Grpc_Core_ServerCallContext">ServerCallContext Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_ServerCallContext_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_ServerCallContext_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerCallContext_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Method.htm" title="Method Property " tocid="P_Grpc_Core_ServerCallContext_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Peer.htm" title="Peer Property " tocid="P_Grpc_Core_ServerCallContext_Peer">Peer Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm" title="RequestHeaders Property " tocid="P_Grpc_Core_ServerCallContext_RequestHeaders">RequestHeaders Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" title="ResponseTrailers Property " tocid="P_Grpc_Core_ServerCallContext_ResponseTrailers">ResponseTrailers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Status.htm" title="Status Property " tocid="P_Grpc_Core_ServerCallContext_Status">Status Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_ServerCallContext_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext<span id="LST7D808072_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7D808072_0?cpp=::|nu=.");</script>WriteOptions Property </td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">WriteOptions</span> <span class="identifier">WriteOptions</span> { <span class="keyword">get</span>; <span class="keyword">set</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Property</span> <span class="identifier">WriteOptions</span> <span class="keyword">As</span> <span class="identifier">WriteOptions</span> + <span class="keyword">Get</span> + <span class="keyword">Set</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">WriteOptions</span>^ <span class="identifier">WriteOptions</span> { + <span class="identifier">WriteOptions</span>^ <span class="keyword">get</span> (); + <span class="keyword">void</span> <span class="keyword">set</span> (<span class="identifier">WriteOptions</span>^ <span class="parameter">value</span>); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">WriteOptions</span> : <span class="identifier">WriteOptions</span> <span class="keyword">with</span> <span class="keyword">get</span>, <span class="keyword">set</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_WriteOptions.htm">WriteOptions</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..df7c2a2809 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCredentials_Insecure.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCredentials.Insecure Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Insecure property" /><meta name="System.Keywords" content="ServerCredentials.Insecure property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCredentials.Insecure" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCredentials.get_Insecure" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerCredentials.Insecure" /><meta name="Description" content="Returns instance of credential that provides no security and will result in creating an unsecure server port with no encryption whatsoever." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerCredentials_Insecure" /><meta name="guid" content="P_Grpc_Core_ServerCredentials_Insecure" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Properties" tocid="Properties_T_Grpc_Core_ServerCredentials">ServerCredentials Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCredentials_Insecure.htm" title="Insecure Property " tocid="P_Grpc_Core_ServerCredentials_Insecure">Insecure Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCredentials<span id="LSTA8F38724_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA8F38724_0?cpp=::|nu=.");</script>Insecure Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Returns instance of credential that provides no security and + will result in creating an unsecure server port with no encryption whatsoever. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="identifier">ServerCredentials</span> <span class="identifier">Insecure</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Shared</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Insecure</span> <span class="keyword">As</span> <span class="identifier">ServerCredentials</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">static</span> <span class="keyword">property</span> <span class="identifier">ServerCredentials</span>^ <span class="identifier">Insecure</span> { + <span class="identifier">ServerCredentials</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">static</span> <span class="keyword">member</span> <span class="identifier">Insecure</span> : <span class="identifier">ServerCredentials</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_ServerCredentials.htm">ServerCredentials</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCredentials.htm">ServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..93075277bf --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_BoundPort.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPort.BoundPort Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="BoundPort property" /><meta name="System.Keywords" content="ServerPort.BoundPort property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort.BoundPort" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort.get_BoundPort" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerPort.BoundPort" /><meta name="Description" content="summaryP:Grpc.Core.ServerPort.BoundPort" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerPort_BoundPort" /><meta name="guid" content="P_Grpc_Core_ServerPort_BoundPort" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerPort.htm" title="ServerPort Properties" tocid="Properties_T_Grpc_Core_ServerPort">ServerPort Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_BoundPort.htm" title="BoundPort Property " tocid="P_Grpc_Core_ServerPort_BoundPort">BoundPort Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Credentials.htm" title="Credentials Property " tocid="P_Grpc_Core_ServerPort_Credentials">Credentials Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerPort_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Port.htm" title="Port Property " tocid="P_Grpc_Core_ServerPort_Port">Port Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPort<span id="LSTBDBCF25C_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBDBCF25C_0?cpp=::|nu=.");</script>BoundPort Property </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "P:Grpc.Core.ServerPort.BoundPort"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">int</span> <span class="identifier">BoundPort</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">BoundPort</span> <span class="keyword">As</span> <span class="identifier">Integer</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">int</span> <span class="identifier">BoundPort</span> { + <span class="identifier">int</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">BoundPort</span> : <span class="identifier">int</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">Int32</a><br /> + The port actually bound by the server. This is useful if you let server + pick port automatically. <a href="F_Grpc_Core_ServerPort_PickUnused.htm">PickUnused</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerPort.htm">ServerPort Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..cb062ea866 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Credentials.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPort.Credentials Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Credentials property" /><meta name="System.Keywords" content="ServerPort.Credentials property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort.Credentials" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort.get_Credentials" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerPort.Credentials" /><meta name="Description" content="summaryP:Grpc.Core.ServerPort.Credentials" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerPort_Credentials" /><meta name="guid" content="P_Grpc_Core_ServerPort_Credentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerPort.htm" title="ServerPort Properties" tocid="Properties_T_Grpc_Core_ServerPort">ServerPort Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_BoundPort.htm" title="BoundPort Property " tocid="P_Grpc_Core_ServerPort_BoundPort">BoundPort Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Credentials.htm" title="Credentials Property " tocid="P_Grpc_Core_ServerPort_Credentials">Credentials Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerPort_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Port.htm" title="Port Property " tocid="P_Grpc_Core_ServerPort_Port">Port Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPort<span id="LSTB7958D19_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTB7958D19_0?cpp=::|nu=.");</script>Credentials Property </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "P:Grpc.Core.ServerPort.Credentials"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">ServerCredentials</span> <span class="identifier">Credentials</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Credentials</span> <span class="keyword">As</span> <span class="identifier">ServerCredentials</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">ServerCredentials</span>^ <span class="identifier">Credentials</span> { + <span class="identifier">ServerCredentials</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Credentials</span> : <span class="identifier">ServerCredentials</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_ServerCredentials.htm">ServerCredentials</a><br />The server credentials.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerPort.htm">ServerPort Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5788f1ecda --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Host.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPort.Host Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Host property" /><meta name="System.Keywords" content="ServerPort.Host property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort.Host" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort.get_Host" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerPort.Host" /><meta name="Description" content="summaryP:Grpc.Core.ServerPort.Host" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerPort_Host" /><meta name="guid" content="P_Grpc_Core_ServerPort_Host" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerPort.htm" title="ServerPort Properties" tocid="Properties_T_Grpc_Core_ServerPort">ServerPort Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_BoundPort.htm" title="BoundPort Property " tocid="P_Grpc_Core_ServerPort_BoundPort">BoundPort Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Credentials.htm" title="Credentials Property " tocid="P_Grpc_Core_ServerPort_Credentials">Credentials Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerPort_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Port.htm" title="Port Property " tocid="P_Grpc_Core_ServerPort_Port">Port Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPort<span id="LST41BD6AE5_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST41BD6AE5_0?cpp=::|nu=.");</script>Host Property </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "P:Grpc.Core.ServerPort.Host"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Host</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Host</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Host</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Host</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a><br />The host.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerPort.htm">ServerPort Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5db0562f51 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Port.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPort.Port Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Port property" /><meta name="System.Keywords" content="ServerPort.Port property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort.Port" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort.get_Port" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.ServerPort.Port" /><meta name="Description" content="summaryP:Grpc.Core.ServerPort.Port" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_ServerPort_Port" /><meta name="guid" content="P_Grpc_Core_ServerPort_Port" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerPort.htm" title="ServerPort Properties" tocid="Properties_T_Grpc_Core_ServerPort">ServerPort Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_BoundPort.htm" title="BoundPort Property " tocid="P_Grpc_Core_ServerPort_BoundPort">BoundPort Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Credentials.htm" title="Credentials Property " tocid="P_Grpc_Core_ServerPort_Credentials">Credentials Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerPort_Host">Host Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Port.htm" title="Port Property " tocid="P_Grpc_Core_ServerPort_Port">Port Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPort<span id="LSTBDF3CA22_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBDF3CA22_0?cpp=::|nu=.");</script>Port Property </td></tr></table><span class="introStyle"></span><div class="summary"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <summary> documentation for "P:Grpc.Core.ServerPort.Port"]</p></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">int</span> <span class="identifier">Port</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Port</span> <span class="keyword">As</span> <span class="identifier">Integer</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">int</span> <span class="identifier">Port</span> { + <span class="identifier">int</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Port</span> : <span class="identifier">int</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/td2s409d" target="_blank">Int32</a><br />The port.</div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerPort.htm">ServerPort Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..943d8173ea --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Server_Ports.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.Ports Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Ports property" /><meta name="System.Keywords" content="Server.Ports property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.Ports" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.get_Ports" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Server.Ports" /><meta name="Description" content="Ports on which the server will listen once started. Register a port with this server by adding its definition to this collection." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Server_Ports" /><meta name="guid" content="P_Grpc_Core_Server_Ports" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Server.htm" title="Server Properties" tocid="Properties_T_Grpc_Core_Server">Server Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_Ports.htm" title="Ports Property " tocid="P_Grpc_Core_Server_Ports">Ports Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_Services.htm" title="Services Property " tocid="P_Grpc_Core_Server_Services">Services Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_ShutdownTask.htm" title="ShutdownTask Property " tocid="P_Grpc_Core_Server_ShutdownTask">ShutdownTask Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LSTC46C77DC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC46C77DC_0?cpp=::|nu=.");</script>Ports Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Ports on which the server will listen once started. Register a port with this + server by adding its definition to this collection. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Server<span id="LSTC46C77DC_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC46C77DC_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection</span> <span class="identifier">Ports</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Ports</span> <span class="keyword">As</span> <span class="identifier">Server<span id="LSTC46C77DC_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC46C77DC_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Server<span id="LSTC46C77DC_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC46C77DC_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection</span>^ <span class="identifier">Ports</span> { + <span class="identifier">Server<span id="LSTC46C77DC_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC46C77DC_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Ports</span> : <span class="identifier">Server<span id="LSTC46C77DC_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC46C77DC_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Server_ServerPortCollection.htm">Server<span id="LSTC46C77DC_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC46C77DC_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server.htm">Server Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ae85da5838 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Server_Services.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.Services Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Services property" /><meta name="System.Keywords" content="Server.Services property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.Services" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.get_Services" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Server.Services" /><meta name="Description" content="Services that will be exported by the server once started. Register a service with this server by adding its definition to this collection." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Server_Services" /><meta name="guid" content="P_Grpc_Core_Server_Services" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Server.htm" title="Server Properties" tocid="Properties_T_Grpc_Core_Server">Server Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_Ports.htm" title="Ports Property " tocid="P_Grpc_Core_Server_Ports">Ports Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_Services.htm" title="Services Property " tocid="P_Grpc_Core_Server_Services">Services Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_ShutdownTask.htm" title="ShutdownTask Property " tocid="P_Grpc_Core_Server_ShutdownTask">ShutdownTask Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LST66D89B60_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST66D89B60_0?cpp=::|nu=.");</script>Services Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Services that will be exported by the server once started. Register a service with this + server by adding its definition to this collection. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Server<span id="LST66D89B60_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST66D89B60_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection</span> <span class="identifier">Services</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Services</span> <span class="keyword">As</span> <span class="identifier">Server<span id="LST66D89B60_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST66D89B60_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Server<span id="LST66D89B60_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST66D89B60_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection</span>^ <span class="identifier">Services</span> { + <span class="identifier">Server<span id="LST66D89B60_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST66D89B60_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Services</span> : <span class="identifier">Server<span id="LST66D89B60_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST66D89B60_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm">Server<span id="LST66D89B60_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST66D89B60_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server.htm">Server Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f9b26163d8 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Server_ShutdownTask.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.ShutdownTask Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ShutdownTask property" /><meta name="System.Keywords" content="Server.ShutdownTask property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.ShutdownTask" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.get_ShutdownTask" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Server.ShutdownTask" /><meta name="Description" content="To allow awaiting termination of the server." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Server_ShutdownTask" /><meta name="guid" content="P_Grpc_Core_Server_ShutdownTask" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Server.htm" title="Server Properties" tocid="Properties_T_Grpc_Core_Server">Server Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_Ports.htm" title="Ports Property " tocid="P_Grpc_Core_Server_Ports">Ports Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_Services.htm" title="Services Property " tocid="P_Grpc_Core_Server_Services">Services Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_ShutdownTask.htm" title="ShutdownTask Property " tocid="P_Grpc_Core_Server_ShutdownTask">ShutdownTask Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LSTC8798B05_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC8798B05_0?cpp=::|nu=.");</script>ShutdownTask Property </td></tr></table><span class="introStyle"></span><div class="summary"> + To allow awaiting termination of the server. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">Task</span> <span class="identifier">ShutdownTask</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ShutdownTask</span> <span class="keyword">As</span> <span class="identifier">Task</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">Task</span>^ <span class="identifier">ShutdownTask</span> { + <span class="identifier">Task</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ShutdownTask</span> : <span class="identifier">Task</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server.htm">Server Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..459a8c7a4a --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_KeyCertificatePair.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslCredentials.KeyCertificatePair Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="KeyCertificatePair property" /><meta name="System.Keywords" content="SslCredentials.KeyCertificatePair property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslCredentials.KeyCertificatePair" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslCredentials.get_KeyCertificatePair" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.SslCredentials.KeyCertificatePair" /><meta name="Description" content="Client side key and certificate pair. If null, client will not use key and certificate pair." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_SslCredentials_KeyCertificatePair" /><meta name="guid" content="P_Grpc_Core_SslCredentials_KeyCertificatePair" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_SslCredentials.htm" title="SslCredentials Properties" tocid="Properties_T_Grpc_Core_SslCredentials">SslCredentials Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslCredentials_KeyCertificatePair.htm" title="KeyCertificatePair Property " tocid="P_Grpc_Core_SslCredentials_KeyCertificatePair">KeyCertificatePair Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslCredentials_RootCertificates.htm" title="RootCertificates Property " tocid="P_Grpc_Core_SslCredentials_RootCertificates">RootCertificates Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslCredentials<span id="LSTEE43ACE5_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEE43ACE5_0?cpp=::|nu=.");</script>KeyCertificatePair Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Client side key and certificate pair. + If null, client will not use key and certificate pair. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">KeyCertificatePair</span> <span class="identifier">KeyCertificatePair</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">KeyCertificatePair</span> <span class="keyword">As</span> <span class="identifier">KeyCertificatePair</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">KeyCertificatePair</span>^ <span class="identifier">KeyCertificatePair</span> { + <span class="identifier">KeyCertificatePair</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">KeyCertificatePair</span> : <span class="identifier">KeyCertificatePair</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslCredentials.htm">SslCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..730008cad7 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_RootCertificates.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslCredentials.RootCertificates Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RootCertificates property" /><meta name="System.Keywords" content="SslCredentials.RootCertificates property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslCredentials.RootCertificates" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslCredentials.get_RootCertificates" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.SslCredentials.RootCertificates" /><meta name="Description" content="PEM encoding of the server root certificates." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_SslCredentials_RootCertificates" /><meta name="guid" content="P_Grpc_Core_SslCredentials_RootCertificates" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_SslCredentials.htm" title="SslCredentials Properties" tocid="Properties_T_Grpc_Core_SslCredentials">SslCredentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslCredentials_KeyCertificatePair.htm" title="KeyCertificatePair Property " tocid="P_Grpc_Core_SslCredentials_KeyCertificatePair">KeyCertificatePair Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslCredentials_RootCertificates.htm" title="RootCertificates Property " tocid="P_Grpc_Core_SslCredentials_RootCertificates">RootCertificates Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslCredentials<span id="LST9E8BA0ED_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9E8BA0ED_0?cpp=::|nu=.");</script>RootCertificates Property </td></tr></table><span class="introStyle"></span><div class="summary"> + PEM encoding of the server root certificates. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">RootCertificates</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">RootCertificates</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">RootCertificates</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">RootCertificates</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslCredentials.htm">SslCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0eb8dea6ff --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslServerCredentials.ForceClientAuthentication Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ForceClientAuthentication property" /><meta name="System.Keywords" content="SslServerCredentials.ForceClientAuthentication property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslServerCredentials.ForceClientAuthentication" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslServerCredentials.get_ForceClientAuthentication" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.SslServerCredentials.ForceClientAuthentication" /><meta name="Description" content="If true, the authenticity of client check will be enforced." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication" /><meta name="guid" content="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Properties" tocid="Properties_T_Grpc_Core_SslServerCredentials">SslServerCredentials Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm" title="ForceClientAuthentication Property " tocid="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication">ForceClientAuthentication Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm" title="KeyCertificatePairs Property " tocid="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs">KeyCertificatePairs Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_RootCertificates.htm" title="RootCertificates Property " tocid="P_Grpc_Core_SslServerCredentials_RootCertificates">RootCertificates Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslServerCredentials<span id="LSTCA30CF5E_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCA30CF5E_0?cpp=::|nu=.");</script>ForceClientAuthentication Property </td></tr></table><span class="introStyle"></span><div class="summary"> + If true, the authenticity of client check will be enforced. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">bool</span> <span class="identifier">ForceClientAuthentication</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">ForceClientAuthentication</span> <span class="keyword">As</span> <span class="identifier">Boolean</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">bool</span> <span class="identifier">ForceClientAuthentication</span> { + <span class="identifier">bool</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">ForceClientAuthentication</span> : <span class="identifier">bool</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/a28wyd50" target="_blank">Boolean</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslServerCredentials.htm">SslServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..530f0677db --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslServerCredentials.KeyCertificatePairs Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="KeyCertificatePairs property" /><meta name="System.Keywords" content="SslServerCredentials.KeyCertificatePairs property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslServerCredentials.KeyCertificatePairs" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslServerCredentials.get_KeyCertificatePairs" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.SslServerCredentials.KeyCertificatePairs" /><meta name="Description" content="Key-certificate pairs." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs" /><meta name="guid" content="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Properties" tocid="Properties_T_Grpc_Core_SslServerCredentials">SslServerCredentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm" title="ForceClientAuthentication Property " tocid="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication">ForceClientAuthentication Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm" title="KeyCertificatePairs Property " tocid="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs">KeyCertificatePairs Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_RootCertificates.htm" title="RootCertificates Property " tocid="P_Grpc_Core_SslServerCredentials_RootCertificates">RootCertificates Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslServerCredentials<span id="LST66B91F8F_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST66B91F8F_0?cpp=::|nu=.");</script>KeyCertificatePairs Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Key-certificate pairs. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">IList</span><<span class="identifier">KeyCertificatePair</span>> <span class="identifier">KeyCertificatePairs</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">KeyCertificatePairs</span> <span class="keyword">As</span> <span class="identifier">IList</span>(<span class="keyword">Of</span> <span class="identifier">KeyCertificatePair</span>) + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">IList</span><<span class="identifier">KeyCertificatePair</span>^>^ <span class="identifier">KeyCertificatePairs</span> { + <span class="identifier">IList</span><<span class="identifier">KeyCertificatePair</span>^>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">KeyCertificatePairs</span> : <span class="identifier">IList</span><<span class="identifier">KeyCertificatePair</span>> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/5y536ey6" target="_blank">IList</a><span id="LST66B91F8F_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST66B91F8F_1?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair</a><span id="LST66B91F8F_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST66B91F8F_2?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslServerCredentials.htm">SslServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..44fb25a557 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_RootCertificates.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslServerCredentials.RootCertificates Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RootCertificates property" /><meta name="System.Keywords" content="SslServerCredentials.RootCertificates property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslServerCredentials.RootCertificates" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslServerCredentials.get_RootCertificates" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.SslServerCredentials.RootCertificates" /><meta name="Description" content="PEM encoded client root certificates." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_SslServerCredentials_RootCertificates" /><meta name="guid" content="P_Grpc_Core_SslServerCredentials_RootCertificates" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Properties" tocid="Properties_T_Grpc_Core_SslServerCredentials">SslServerCredentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm" title="ForceClientAuthentication Property " tocid="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication">ForceClientAuthentication Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm" title="KeyCertificatePairs Property " tocid="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs">KeyCertificatePairs Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_RootCertificates.htm" title="RootCertificates Property " tocid="P_Grpc_Core_SslServerCredentials_RootCertificates">RootCertificates Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslServerCredentials<span id="LSTCD107BDA_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCD107BDA_0?cpp=::|nu=.");</script>RootCertificates Property </td></tr></table><span class="introStyle"></span><div class="summary"> + PEM encoded client root certificates. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">RootCertificates</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">RootCertificates</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">RootCertificates</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">RootCertificates</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslServerCredentials.htm">SslServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..7510c98b0a --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Status_Detail.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Status.Detail Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Detail property" /><meta name="System.Keywords" content="Status.Detail property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Status.Detail" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Status.get_Detail" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Status.Detail" /><meta name="Description" content="Gets the detail." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Status_Detail" /><meta name="guid" content="P_Grpc_Core_Status_Detail" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Status.htm" title="Status Properties" tocid="Properties_T_Grpc_Core_Status">Status Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Status_Detail.htm" title="Detail Property " tocid="P_Grpc_Core_Status_Detail">Detail Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Status_StatusCode.htm" title="StatusCode Property " tocid="P_Grpc_Core_Status_StatusCode">StatusCode Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Status<span id="LSTC6E4E64E_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC6E4E64E_0?cpp=::|nu=.");</script>Detail Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the detail. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">string</span> <span class="identifier">Detail</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Detail</span> <span class="keyword">As</span> <span class="identifier">String</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">String</span>^ <span class="identifier">Detail</span> { + <span class="identifier">String</span>^ <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Detail</span> : <span class="identifier">string</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Status.htm">Status Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..accc218630 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_Status_StatusCode.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Status.StatusCode Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="StatusCode property" /><meta name="System.Keywords" content="Status.StatusCode property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Status.StatusCode" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Status.get_StatusCode" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.Status.StatusCode" /><meta name="Description" content="Gets the gRPC status code. OK indicates success, all other values indicate an error." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_Status_StatusCode" /><meta name="guid" content="P_Grpc_Core_Status_StatusCode" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Status.htm" title="Status Properties" tocid="Properties_T_Grpc_Core_Status">Status Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Status_Detail.htm" title="Detail Property " tocid="P_Grpc_Core_Status_Detail">Detail Property </a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Status_StatusCode.htm" title="StatusCode Property " tocid="P_Grpc_Core_Status_StatusCode">StatusCode Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Status<span id="LST8ACAFB60_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8ACAFB60_0?cpp=::|nu=.");</script>StatusCode Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the gRPC status code. OK indicates success, all other values indicate an error. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">StatusCode</span> <span class="identifier">StatusCode</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">StatusCode</span> <span class="keyword">As</span> <span class="identifier">StatusCode</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">StatusCode</span> <span class="identifier">StatusCode</span> { + <span class="identifier">StatusCode</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">StatusCode</span> : <span class="identifier">StatusCode</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_StatusCode.htm">StatusCode</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Status.htm">Status Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..5ef39577b8 --- /dev/null +++ b/doc/ref/csharp/html/html/P_Grpc_Core_WriteOptions_Flags.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>WriteOptions.Flags Property </title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Flags property" /><meta name="System.Keywords" content="WriteOptions.Flags property" /><meta name="Microsoft.Help.F1" content="Grpc.Core.WriteOptions.Flags" /><meta name="Microsoft.Help.F1" content="Grpc.Core.WriteOptions.get_Flags" /><meta name="Microsoft.Help.Id" content="P:Grpc.Core.WriteOptions.Flags" /><meta name="Description" content="Gets the write flags." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="P_Grpc_Core_WriteOptions_Flags" /><meta name="guid" content="P_Grpc_Core_WriteOptions_Flags" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Properties" tocid="Properties_T_Grpc_Core_WriteOptions">WriteOptions Properties</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_WriteOptions_Flags.htm" title="Flags Property " tocid="P_Grpc_Core_WriteOptions_Flags">Flags Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">WriteOptions<span id="LSTD40C32E3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD40C32E3_0?cpp=::|nu=.");</script>Flags Property </td></tr></table><span class="introStyle"></span><div class="summary"> + Gets the write flags. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="identifier">WriteFlags</span> <span class="identifier">Flags</span> { <span class="keyword">get</span>; }</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">ReadOnly</span> <span class="keyword">Property</span> <span class="identifier">Flags</span> <span class="keyword">As</span> <span class="identifier">WriteFlags</span> + <span class="keyword">Get</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span>: +<span class="keyword">property</span> <span class="identifier">WriteFlags</span> <span class="identifier">Flags</span> { + <span class="identifier">WriteFlags</span> <span class="keyword">get</span> (); +}</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">member</span> <span class="identifier">Flags</span> : <span class="identifier">WriteFlags</span> <span class="keyword">with</span> <span class="keyword">get</span> +</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Property Value</h4>Type: <a href="T_Grpc_Core_WriteFlags.htm">WriteFlags</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_WriteOptions.htm">WriteOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..86ce8b1497 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncClientStreamingCall(TRequest, TResponse) Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E class, properties" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse) class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.AsyncClientStreamingCall`2" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_AsyncClientStreamingCall_2" /><meta name="guid" content="Properties_T_Grpc_Core_AsyncClientStreamingCall_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm" title="RequestStream Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream">RequestStream Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm" title="ResponseAsync Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync">ResponseAsync Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncClientStreamingCall<span id="LSTC62EFC7B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC62EFC7B_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTC62EFC7B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC62EFC7B_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LSTC62EFC7B_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC62EFC7B_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC62EFC7B_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC62EFC7B_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm">RequestStream</a></td><td><div class="summary"> + Async stream to send streaming requests. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm">ResponseAsync</a></td><td><div class="summary"> + Asynchronous call result. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm">ResponseHeadersAsync</a></td><td><div class="summary"> + Asynchronous access to response headers. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncClientStreamingCall_2.htm">AsyncClientStreamingCall<span id="LSTC62EFC7B_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC62EFC7B_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC62EFC7B_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC62EFC7B_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..40c4705d23 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncDuplexStreamingCall(TRequest, TResponse) Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E class, properties" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall(Of TRequest%2C TResponse) class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.AsyncDuplexStreamingCall`2" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2" /><meta name="guid" content="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm" title="RequestStream Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream">RequestStream Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm" title="ResponseStream Property " tocid="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream">ResponseStream Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncDuplexStreamingCall<span id="LSTE7F59294_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE7F59294_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTE7F59294_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE7F59294_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall<span id="LSTE7F59294_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE7F59294_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTE7F59294_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE7F59294_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm">RequestStream</a></td><td><div class="summary"> + Async stream to send streaming requests. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm">ResponseHeadersAsync</a></td><td><div class="summary"> + Asynchronous access to response headers. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm">ResponseStream</a></td><td><div class="summary"> + Async stream to read streaming responses. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm">AsyncDuplexStreamingCall<span id="LSTE7F59294_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE7F59294_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTE7F59294_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE7F59294_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..7d3a77b2cb --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncServerStreamingCall(TResponse) Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncServerStreamingCall%3CTResponse%3E class, properties" /><meta name="System.Keywords" content="AsyncServerStreamingCall(Of TResponse) class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.AsyncServerStreamingCall`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_AsyncServerStreamingCall_1" /><meta name="guid" content="Properties_T_Grpc_Core_AsyncServerStreamingCall_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm" title="ResponseStream Property " tocid="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream">ResponseStream Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncServerStreamingCall<span id="LST5247EF2A_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5247EF2A_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LST5247EF2A_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5247EF2A_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm">AsyncServerStreamingCall<span id="LST5247EF2A_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5247EF2A_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST5247EF2A_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5247EF2A_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm">ResponseHeadersAsync</a></td><td><div class="summary"> + Asynchronous access to response headers. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm">ResponseStream</a></td><td><div class="summary"> + Async stream to read streaming responses. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncServerStreamingCall_1.htm">AsyncServerStreamingCall<span id="LST5247EF2A_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5247EF2A_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST5247EF2A_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5247EF2A_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..d9e266b437 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncUnaryCall(TResponse) Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncUnaryCall%3CTResponse%3E class, properties" /><meta name="System.Keywords" content="AsyncUnaryCall(Of TResponse) class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.AsyncUnaryCall`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_AsyncUnaryCall_1" /><meta name="guid" content="Properties_T_Grpc_Core_AsyncUnaryCall_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm" title="ResponseAsync Property " tocid="P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync">ResponseAsync Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm" title="ResponseHeadersAsync Property " tocid="P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync">ResponseHeadersAsync Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncUnaryCall<span id="LSTF5A830B8_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF5A830B8_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LSTF5A830B8_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF5A830B8_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall<span id="LSTF5A830B8_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF5A830B8_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LSTF5A830B8_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF5A830B8_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm">ResponseAsync</a></td><td><div class="summary"> + Asynchronous call result. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm">ResponseHeadersAsync</a></td><td><div class="summary"> + Asynchronous access to response headers. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_AsyncUnaryCall_1.htm">AsyncUnaryCall<span id="LSTF5A830B8_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF5A830B8_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LSTF5A830B8_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF5A830B8_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..258b83626a --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse) Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E structure, properties" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse) structure, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.CallInvocationDetails`2" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_CallInvocationDetails_2" /><meta name="guid" content="Properties_T_Grpc_Core_CallInvocationDetails_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Channel.htm" title="Channel Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Channel">Channel Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Host.htm" title="Host Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Method.htm" title="Method Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_Options.htm" title="Options Property " tocid="P_Grpc_Core_CallInvocationDetails_2_Options">Options Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller">ResponseMarshaller Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LSTD145846E_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD145846E_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTD145846E_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD145846E_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LSTD145846E_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD145846E_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTD145846E_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD145846E_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_Channel.htm">Channel</a></td><td><div class="summary"> + Get channel associated with this call. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_Host.htm">Host</a></td><td><div class="summary"> + Get name of host. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_Method.htm">Method</a></td><td><div class="summary"> + Gets name of method to be called. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_Options.htm">Options</a></td><td><div class="summary"> + Gets the call options. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm">RequestMarshaller</a></td><td><div class="summary"> + Gets marshaller used to serialize requests. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm">ResponseMarshaller</a></td><td><div class="summary"> + Gets marshaller used to deserialized responses. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallInvocationDetails_2.htm">CallInvocationDetails<span id="LSTD145846E_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD145846E_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTD145846E_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD145846E_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..53786c4c48 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallOptions.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CallOptions structure, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.CallOptions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_CallOptions" /><meta name="guid" content="Properties_T_Grpc_Core_CallOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallOptions.htm" title="CallOptions Properties" tocid="Properties_T_Grpc_Core_CallOptions">CallOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_CallOptions_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_CallOptions_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_Headers.htm" title="Headers Property " tocid="P_Grpc_Core_CallOptions_Headers">Headers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_PropagationToken.htm" title="PropagationToken Property " tocid="P_Grpc_Core_CallOptions_PropagationToken">PropagationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_CallOptions_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_CallOptions_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_CallOptions.htm">CallOptions</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallOptions_CancellationToken.htm">CancellationToken</a></td><td><div class="summary"> + Token that can be used for cancelling the call. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallOptions_Deadline.htm">Deadline</a></td><td><div class="summary"> + Call deadline. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallOptions_Headers.htm">Headers</a></td><td><div class="summary"> + Headers to send at the beginning of the call. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallOptions_PropagationToken.htm">PropagationToken</a></td><td><div class="summary"> + Token for propagating parent call context. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallOptions_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + Write options that will be used for this call. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_CallOptions.htm">CallOptions Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..d2b2c776ea --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Channel.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Channel class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.Channel" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_Channel" /><meta name="guid" content="Properties_T_Grpc_Core_Channel" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Channel.htm" title="Channel Properties" tocid="Properties_T_Grpc_Core_Channel">Channel Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_ResolvedTarget.htm" title="ResolvedTarget Property " tocid="P_Grpc_Core_Channel_ResolvedTarget">ResolvedTarget Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_State.htm" title="State Property " tocid="P_Grpc_Core_Channel_State">State Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Channel_Target.htm" title="Target Property " tocid="P_Grpc_Core_Channel_Target">Target Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Channel.htm">Channel</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Channel_ResolvedTarget.htm">ResolvedTarget</a></td><td><div class="summary">Resolved address of the remote endpoint in URI format.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Channel_State.htm">State</a></td><td><div class="summary"> + Gets current connectivity state of this channel. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Channel_Target.htm">Target</a></td><td><div class="summary">The original target used to create the channel.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Channel.htm">Channel Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a788a1d809 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ChannelOption.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOption Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ChannelOption class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.ChannelOption" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_ChannelOption" /><meta name="guid" content="Properties_T_Grpc_Core_ChannelOption" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ChannelOption.htm" title="ChannelOption Properties" tocid="Properties_T_Grpc_Core_ChannelOption">ChannelOption Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_IntValue.htm" title="IntValue Property " tocid="P_Grpc_Core_ChannelOption_IntValue">IntValue Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_Name.htm" title="Name Property " tocid="P_Grpc_Core_ChannelOption_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_StringValue.htm" title="StringValue Property " tocid="P_Grpc_Core_ChannelOption_StringValue">StringValue Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ChannelOption_Type.htm" title="Type Property " tocid="P_Grpc_Core_ChannelOption_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOption Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ChannelOption.htm">ChannelOption</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ChannelOption_IntValue.htm">IntValue</a></td><td><div class="summary"> + Gets the integer value the <span class="code">ChannelOption</span>. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ChannelOption_Name.htm">Name</a></td><td><div class="summary"> + Gets the name of the <span class="code">ChannelOption</span>. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ChannelOption_StringValue.htm">StringValue</a></td><td><div class="summary"> + Gets the string value the <span class="code">ChannelOption</span>. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ChannelOption_Type.htm">Type</a></td><td><div class="summary"> + Gets the type of the <span class="code">ChannelOption</span>. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ChannelOption.htm">ChannelOption Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..eb63eea16b --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ClientBase.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ClientBase Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ClientBase class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.ClientBase" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_ClientBase" /><meta name="guid" content="Properties_T_Grpc_Core_ClientBase" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ClientBase.htm" title="ClientBase Properties" tocid="Properties_T_Grpc_Core_ClientBase">ClientBase Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_Channel.htm" title="Channel Property " tocid="P_Grpc_Core_ClientBase_Channel">Channel Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_HeaderInterceptor.htm" title="HeaderInterceptor Property " tocid="P_Grpc_Core_ClientBase_HeaderInterceptor">HeaderInterceptor Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ClientBase_Host.htm" title="Host Property " tocid="P_Grpc_Core_ClientBase_Host">Host Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ClientBase Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ClientBase.htm">ClientBase</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ClientBase_Channel.htm">Channel</a></td><td><div class="summary"> + Channel associated with this client. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ClientBase_HeaderInterceptor.htm">HeaderInterceptor</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ClientBase_Host.htm">Host</a></td><td><div class="summary"> + 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 <span class="code">null</span> with the meaning + "use default host". + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ClientBase.htm">ClientBase Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f32cf20469 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ContextPropagationOptions.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ContextPropagationOptions Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ContextPropagationOptions class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.ContextPropagationOptions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_ContextPropagationOptions" /><meta name="guid" content="Properties_T_Grpc_Core_ContextPropagationOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Properties" tocid="Properties_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm" title="IsPropagateCancellation Property " tocid="P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation">IsPropagateCancellation Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm" title="IsPropagateDeadline Property " tocid="P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline">IsPropagateDeadline Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ContextPropagationOptions Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm">IsPropagateCancellation</a></td><td><div class="summary"><span class="code">true</span> if parent call's cancellation token should be propagated to the child call.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm">IsPropagateDeadline</a></td><td><div class="summary"><span class="code">true</span> if parent call's deadline should be propagated to the child call.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ContextPropagationOptions.htm">ContextPropagationOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..acc2578652 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Credentials.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Credentials Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Credentials class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.Credentials" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_Credentials" /><meta name="guid" content="Properties_T_Grpc_Core_Credentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Credentials.htm" title="Credentials Properties" tocid="Properties_T_Grpc_Core_Credentials">Credentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Credentials_Insecure.htm" title="Insecure Property " tocid="P_Grpc_Core_Credentials_Insecure">Insecure Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Credentials Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Credentials.htm">Credentials</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="P_Grpc_Core_Credentials_Insecure.htm">Insecure</a></td><td><div class="summary"> + Returns instance of credential that provides no security and + will result in creating an unsecure channel with no encryption whatsoever. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Credentials.htm">Credentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..438d48f35a --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_GrpcEnvironment.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GrpcEnvironment Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GrpcEnvironment class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.GrpcEnvironment" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_GrpcEnvironment" /><meta name="guid" content="Properties_T_Grpc_Core_GrpcEnvironment" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Properties" tocid="Properties_T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_GrpcEnvironment_Logger.htm" title="Logger Property " tocid="P_Grpc_Core_GrpcEnvironment_Logger">Logger Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">GrpcEnvironment Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_GrpcEnvironment.htm">GrpcEnvironment</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="P_Grpc_Core_GrpcEnvironment_Logger.htm">Logger</a></td><td><div class="summary"> + Gets application-wide logger used by gRPC. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_GrpcEnvironment.htm">GrpcEnvironment Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..53aa3b5f90 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamReader_1.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IAsyncStreamReader(T) Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IAsyncStreamReader%3CT%3E interface, properties" /><meta name="System.Keywords" content="IAsyncStreamReader(Of T) interface, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.IAsyncStreamReader`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_IAsyncStreamReader_1" /><meta name="guid" content="Properties_T_Grpc_Core_IAsyncStreamReader_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Properties_T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Properties" tocid="Properties_T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Methods" tocid="Methods_T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IAsyncStreamReader<span id="LSTD20F0A63_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD20F0A63_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTD20F0A63_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD20F0A63_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_IAsyncStreamReader_1.htm">IAsyncStreamReader<span id="LSTD20F0A63_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD20F0A63_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTD20F0A63_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD20F0A63_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><span class="nolink">Current</span></td><td> (Inherited from <span class="nolink">IAsyncEnumerator</span><span id="LSTD20F0A63_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD20F0A63_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><a href="T_Grpc_Core_IAsyncStreamReader_1.htm"><span class="typeparameter">T</span></a><span id="LSTD20F0A63_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD20F0A63_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IAsyncStreamReader_1.htm">IAsyncStreamReader<span id="LSTD20F0A63_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD20F0A63_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTD20F0A63_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTD20F0A63_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ad71094d4b --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IAsyncStreamWriter(T) Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IAsyncStreamWriter%3CT%3E interface, properties" /><meta name="System.Keywords" content="IAsyncStreamWriter(Of T) interface, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.IAsyncStreamWriter`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_IAsyncStreamWriter_1" /><meta name="guid" content="Properties_T_Grpc_Core_IAsyncStreamWriter_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Properties" tocid="Properties_T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IAsyncStreamWriter<span id="LST4B9417F9_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4B9417F9_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST4B9417F9_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4B9417F9_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST4B9417F9_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4B9417F9_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST4B9417F9_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4B9417F9_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + 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. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST4B9417F9_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4B9417F9_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST4B9417F9_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4B9417F9_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f04ab0d40d --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IClientStreamWriter_1.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IClientStreamWriter(T) Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IClientStreamWriter%3CT%3E interface, properties" /><meta name="System.Keywords" content="IClientStreamWriter(Of T) interface, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.IClientStreamWriter`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_IClientStreamWriter_1" /><meta name="guid" content="Properties_T_Grpc_Core_IClientStreamWriter_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Properties_T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Properties" tocid="Properties_T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Methods" tocid="Methods_T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IClientStreamWriter<span id="LST726B2644_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST726B2644_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST726B2644_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST726B2644_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_IClientStreamWriter_1.htm">IClientStreamWriter<span id="LST726B2644_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST726B2644_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST726B2644_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST726B2644_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + 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. + </div> (Inherited from <a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST726B2644_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST726B2644_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST726B2644_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST726B2644_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IClientStreamWriter_1.htm">IClientStreamWriter<span id="LST726B2644_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST726B2644_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST726B2644_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST726B2644_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..fd1f5ca0c2 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IHasWriteOptions.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IHasWriteOptions Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IHasWriteOptions interface, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.IHasWriteOptions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_IHasWriteOptions" /><meta name="guid" content="Properties_T_Grpc_Core_IHasWriteOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Properties" tocid="Properties_T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IHasWriteOptions_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_IHasWriteOptions_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IHasWriteOptions Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_IHasWriteOptions.htm">IHasWriteOptions</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IHasWriteOptions_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + Gets or sets the write options. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IHasWriteOptions.htm">IHasWriteOptions Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..efa7de8377 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IMethod.htm @@ -0,0 +1,12 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IMethod Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IMethod interface, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.IMethod" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_IMethod" /><meta name="guid" content="Properties_T_Grpc_Core_IMethod" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IMethod.htm" title="IMethod Properties" tocid="Properties_T_Grpc_Core_IMethod">IMethod Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_IMethod_FullName">FullName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_Name.htm" title="Name Property " tocid="P_Grpc_Core_IMethod_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_IMethod_ServiceName">ServiceName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_IMethod_Type.htm" title="Type Property " tocid="P_Grpc_Core_IMethod_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IMethod Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_IMethod.htm">IMethod</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IMethod_FullName.htm">FullName</a></td><td><div class="summary"> + Gets the fully qualified name of the method. On the server side, methods are dispatched + based on this name. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IMethod_Name.htm">Name</a></td><td><div class="summary"> + Gets the unqualified name of the method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IMethod_ServiceName.htm">ServiceName</a></td><td><div class="summary"> + Gets the name of the service to which this method belongs. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IMethod_Type.htm">Type</a></td><td><div class="summary"> + Gets the type of the method. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IMethod.htm">IMethod Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0bebdd5711 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IServerStreamWriter_1.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IServerStreamWriter(T) Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IServerStreamWriter%3CT%3E interface, properties" /><meta name="System.Keywords" content="IServerStreamWriter(Of T) interface, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.IServerStreamWriter`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_IServerStreamWriter_1" /><meta name="guid" content="Properties_T_Grpc_Core_IServerStreamWriter_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="Properties_T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Properties" tocid="Properties_T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Methods" tocid="Methods_T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IServerStreamWriter<span id="LST8B285F68_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B285F68_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST8B285F68_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B285F68_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_IServerStreamWriter_1.htm">IServerStreamWriter<span id="LST8B285F68_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B285F68_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST8B285F68_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B285F68_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + 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. + </div> (Inherited from <a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST8B285F68_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B285F68_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST8B285F68_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B285F68_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_IServerStreamWriter_1.htm">IServerStreamWriter<span id="LST8B285F68_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B285F68_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST8B285F68_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8B285F68_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Interface</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..286a0cec9e --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_KeyCertificatePair.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>KeyCertificatePair Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="KeyCertificatePair class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.KeyCertificatePair" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_KeyCertificatePair" /><meta name="guid" content="Properties_T_Grpc_Core_KeyCertificatePair" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Properties" tocid="Properties_T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_KeyCertificatePair_CertificateChain.htm" title="CertificateChain Property " tocid="P_Grpc_Core_KeyCertificatePair_CertificateChain">CertificateChain Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_KeyCertificatePair_PrivateKey.htm" title="PrivateKey Property " tocid="P_Grpc_Core_KeyCertificatePair_PrivateKey">PrivateKey Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">KeyCertificatePair Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_KeyCertificatePair_CertificateChain.htm">CertificateChain</a></td><td><div class="summary"> + PEM encoded certificate chain. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_KeyCertificatePair_PrivateKey.htm">PrivateKey</a></td><td><div class="summary"> + PEM encoded private key. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_KeyCertificatePair.htm">KeyCertificatePair Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..2f8b99b98e --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshaller_1.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Marshaller(T) Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Marshaller%3CT%3E structure, properties" /><meta name="System.Keywords" content="Marshaller(Of T) structure, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.Marshaller`1" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_Marshaller_1" /><meta name="guid" content="Properties_T_Grpc_Core_Marshaller_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Properties" tocid="Properties_T_Grpc_Core_Marshaller_1">Marshaller(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Marshaller_1_Deserializer.htm" title="Deserializer Property " tocid="P_Grpc_Core_Marshaller_1_Deserializer">Deserializer Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Marshaller_1_Serializer.htm" title="Serializer Property " tocid="P_Grpc_Core_Marshaller_1_Serializer">Serializer Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Marshaller<span id="LST8E942DF6_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E942DF6_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST8E942DF6_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E942DF6_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Marshaller_1.htm">Marshaller<span id="LST8E942DF6_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E942DF6_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST8E942DF6_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E942DF6_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Marshaller_1_Deserializer.htm">Deserializer</a></td><td><div class="summary"> + Gets the deserializer function. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Marshaller_1_Serializer.htm">Serializer</a></td><td><div class="summary"> + Gets the serializer function. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Marshaller_1.htm">Marshaller<span id="LST8E942DF6_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E942DF6_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST8E942DF6_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E942DF6_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c104a3c2db --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshallers.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Marshallers Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Marshallers class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.Marshallers" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_Marshallers" /><meta name="guid" content="Properties_T_Grpc_Core_Marshallers" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Marshallers.htm" title="Marshallers Properties" tocid="Properties_T_Grpc_Core_Marshallers">Marshallers Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Marshallers_StringMarshaller.htm" title="StringMarshaller Property " tocid="P_Grpc_Core_Marshallers_StringMarshaller">StringMarshaller Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Marshallers Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Marshallers.htm">Marshallers</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="P_Grpc_Core_Marshallers_StringMarshaller.htm">StringMarshaller</a></td><td><div class="summary"> + Returns a marshaller for <span class="code">string</span> type. This is useful for testing. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Marshallers.htm">Marshallers Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..48674e9e0f --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Metadata class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.Metadata" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_Metadata" /><meta name="guid" content="Properties_T_Grpc_Core_Metadata" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata.htm" title="Metadata Properties" tocid="Properties_T_Grpc_Core_Metadata">Metadata Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Count.htm" title="Count Property " tocid="P_Grpc_Core_Metadata_Count">Count Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_IsReadOnly.htm" title="IsReadOnly Property " tocid="P_Grpc_Core_Metadata_IsReadOnly">IsReadOnly Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Item.htm" title="Item Property " tocid="P_Grpc_Core_Metadata_Item">Item Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Metadata.htm">Metadata</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Count.htm">Count</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_IsReadOnly.htm">IsReadOnly</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Item.htm">Item</a></td><td /></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata.htm">Metadata Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..30f20816be --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata_Entry.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Entry Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Entry structure, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.Metadata.Entry" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_Metadata_Entry" /><meta name="guid" content="Properties_T_Grpc_Core_Metadata_Entry" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata_Entry.htm" title="Entry Properties" tocid="Properties_T_Grpc_Core_Metadata_Entry">Entry Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_IsBinary.htm" title="IsBinary Property " tocid="P_Grpc_Core_Metadata_Entry_IsBinary">IsBinary Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_Key.htm" title="Key Property " tocid="P_Grpc_Core_Metadata_Entry_Key">Key Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_Value.htm" title="Value Property " tocid="P_Grpc_Core_Metadata_Entry_Value">Value Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Metadata_Entry_ValueBytes.htm" title="ValueBytes Property " tocid="P_Grpc_Core_Metadata_Entry_ValueBytes">ValueBytes Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Entry Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST99BD1037_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99BD1037_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Entry_IsBinary.htm">IsBinary</a></td><td><div class="summary"> + Returns <span class="code">true</span> if this entry is a binary-value entry. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Entry_Key.htm">Key</a></td><td><div class="summary"> + Gets the metadata entry key. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Entry_Value.htm">Value</a></td><td><div class="summary"> + Gets the string value of this metadata entry. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Entry_ValueBytes.htm">ValueBytes</a></td><td><div class="summary"> + Gets the binary value of this metadata entry. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Metadata_Entry.htm">Metadata<span id="LST99BD1037_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST99BD1037_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..776f803598 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Method_2.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Method(TRequest, TResponse) Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E class, properties" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse) class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.Method`2" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_Method_2" /><meta name="guid" content="Properties_T_Grpc_Core_Method_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_FullName.htm" title="FullName Property " tocid="P_Grpc_Core_Method_2_FullName">FullName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Name.htm" title="Name Property " tocid="P_Grpc_Core_Method_2_Name">Name Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_RequestMarshaller.htm" title="RequestMarshaller Property " tocid="P_Grpc_Core_Method_2_RequestMarshaller">RequestMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ResponseMarshaller.htm" title="ResponseMarshaller Property " tocid="P_Grpc_Core_Method_2_ResponseMarshaller">ResponseMarshaller Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_ServiceName.htm" title="ServiceName Property " tocid="P_Grpc_Core_Method_2_ServiceName">ServiceName Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Method_2_Type.htm" title="Type Property " tocid="P_Grpc_Core_Method_2_Type">Type Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Method<span id="LST5F3646C5_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5F3646C5_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST5F3646C5_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5F3646C5_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Method_2.htm">Method<span id="LST5F3646C5_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5F3646C5_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST5F3646C5_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5F3646C5_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a> generic type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_FullName.htm">FullName</a></td><td><div class="summary"> + Gets the fully qualified name of the method. On the server side, methods are dispatched + based on this name. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_Name.htm">Name</a></td><td><div class="summary"> + Gets the unqualified name of the method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_RequestMarshaller.htm">RequestMarshaller</a></td><td><div class="summary"> + Gets the marshaller used for request messages. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_ResponseMarshaller.htm">ResponseMarshaller</a></td><td><div class="summary"> + Gets the marshaller used for response messages. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_ServiceName.htm">ServiceName</a></td><td><div class="summary"> + Gets the name of the service to which this method belongs. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_Type.htm">Type</a></td><td><div class="summary"> + Gets the type of the method. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Method_2.htm">Method<span id="LST5F3646C5_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5F3646C5_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST5F3646C5_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5F3646C5_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script> Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..2d40825eef --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_RpcException.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RpcException Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RpcException class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.RpcException" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_RpcException" /><meta name="guid" content="Properties_T_Grpc_Core_RpcException" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_RpcException.htm" title="RpcException Properties" tocid="Properties_T_Grpc_Core_RpcException">RpcException Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_RpcException_Status.htm" title="Status Property " tocid="P_Grpc_Core_RpcException_Status">Status Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">RpcException Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_RpcException.htm">RpcException</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2wyfbc48" target="_blank">Data</a></td><td><div class="summary">Gets a collection of key/value pairs that provide additional user-defined information about the exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/71tawy4s" target="_blank">HelpLink</a></td><td><div class="summary">Gets or sets a link to the help file associated with this exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/sh5cw61c" target="_blank">HResult</a></td><td><div class="summary">Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/902sca80" target="_blank">InnerException</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a> instance that caused the current exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/9btwf6wk" target="_blank">Message</a></td><td><div class="summary">Gets a message that describes the current exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/85weac5w" target="_blank">Source</a></td><td><div class="summary">Gets or sets the name of the application or the object that causes the error.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dxzhy005" target="_blank">StackTrace</a></td><td><div class="summary">Gets a string representation of the immediate frames on the call stack.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_RpcException_Status.htm">Status</a></td><td><div class="summary"> + Resulting status of the call. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2wchw354" target="_blank">TargetSite</a></td><td><div class="summary">Gets the method that throws the current exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_RpcException.htm">RpcException Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..38762cc5a8 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Server.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Server class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.Server" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_Server" /><meta name="guid" content="Properties_T_Grpc_Core_Server" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Server.htm" title="Server Properties" tocid="Properties_T_Grpc_Core_Server">Server Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_Ports.htm" title="Ports Property " tocid="P_Grpc_Core_Server_Ports">Ports Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_Services.htm" title="Services Property " tocid="P_Grpc_Core_Server_Services">Services Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Server_ShutdownTask.htm" title="ShutdownTask Property " tocid="P_Grpc_Core_Server_ShutdownTask">ShutdownTask Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Server.htm">Server</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Server_Ports.htm">Ports</a></td><td><div class="summary"> + Ports on which the server will listen once started. Register a port with this + server by adding its definition to this collection. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Server_Services.htm">Services</a></td><td><div class="summary"> + Services that will be exported by the server once started. Register a service with this + server by adding its definition to this collection. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Server_ShutdownTask.htm">ShutdownTask</a></td><td><div class="summary"> + To allow awaiting termination of the server. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Server.htm">Server Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..4d5d01cccc --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCallContext.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerCallContext class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.ServerCallContext" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_ServerCallContext" /><meta name="guid" content="Properties_T_Grpc_Core_ServerCallContext" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Properties" tocid="Properties_T_Grpc_Core_ServerCallContext">ServerCallContext Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_CancellationToken.htm" title="CancellationToken Property " tocid="P_Grpc_Core_ServerCallContext_CancellationToken">CancellationToken Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Deadline.htm" title="Deadline Property " tocid="P_Grpc_Core_ServerCallContext_Deadline">Deadline Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerCallContext_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Method.htm" title="Method Property " tocid="P_Grpc_Core_ServerCallContext_Method">Method Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Peer.htm" title="Peer Property " tocid="P_Grpc_Core_ServerCallContext_Peer">Peer Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm" title="RequestHeaders Property " tocid="P_Grpc_Core_ServerCallContext_RequestHeaders">RequestHeaders Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" title="ResponseTrailers Property " tocid="P_Grpc_Core_ServerCallContext_ResponseTrailers">ResponseTrailers Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_Status.htm" title="Status Property " tocid="P_Grpc_Core_ServerCallContext_Status">Status Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCallContext_WriteOptions.htm" title="WriteOptions Property " tocid="P_Grpc_Core_ServerCallContext_WriteOptions">WriteOptions Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_CancellationToken.htm">CancellationToken</a></td><td><div class="summary">Cancellation token signals when call is cancelled.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_Deadline.htm">Deadline</a></td><td><div class="summary">Deadline for this RPC.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_Host.htm">Host</a></td><td><div class="summary">Name of host called in this RPC.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_Method.htm">Method</a></td><td><div class="summary">Name of method called in this RPC.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_Peer.htm">Peer</a></td><td><div class="summary">Address of the remote endpoint in URI format.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm">RequestHeaders</a></td><td><div class="summary">Initial metadata sent by client.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm">ResponseTrailers</a></td><td><div class="summary">Trailers to send back to client after RPC finishes.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_Status.htm">Status</a></td><td><div class="summary"> Status to send back to client after RPC finishes.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + 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. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCallContext.htm">ServerCallContext Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..701aba7ee8 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCredentials.htm @@ -0,0 +1,6 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCredentials Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerCredentials class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.ServerCredentials" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_ServerCredentials" /><meta name="guid" content="Properties_T_Grpc_Core_ServerCredentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Properties" tocid="Properties_T_Grpc_Core_ServerCredentials">ServerCredentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerCredentials_Insecure.htm" title="Insecure Property " tocid="P_Grpc_Core_ServerCredentials_Insecure">Insecure Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCredentials Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ServerCredentials.htm">ServerCredentials</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="P_Grpc_Core_ServerCredentials_Insecure.htm">Insecure</a></td><td><div class="summary"> + Returns instance of credential that provides no security and + will result in creating an unsecure server port with no encryption whatsoever. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerCredentials.htm">ServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..454a82575e --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerPort.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPort Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerPort class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.ServerPort" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_ServerPort" /><meta name="guid" content="Properties_T_Grpc_Core_ServerPort" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerPort.htm" title="ServerPort Properties" tocid="Properties_T_Grpc_Core_ServerPort">ServerPort Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_BoundPort.htm" title="BoundPort Property " tocid="P_Grpc_Core_ServerPort_BoundPort">BoundPort Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Credentials.htm" title="Credentials Property " tocid="P_Grpc_Core_ServerPort_Credentials">Credentials Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Host.htm" title="Host Property " tocid="P_Grpc_Core_ServerPort_Host">Host Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_ServerPort_Port.htm" title="Port Property " tocid="P_Grpc_Core_ServerPort_Port">Port Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPort Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_ServerPort.htm">ServerPort</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerPort_BoundPort.htm">BoundPort</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerPort_Credentials.htm">Credentials</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerPort_Host.htm">Host</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerPort_Port.htm">Port</a></td><td /></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_ServerPort.htm">ServerPort Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b808cf05c4 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslCredentials.htm @@ -0,0 +1,8 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslCredentials Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="SslCredentials class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.SslCredentials" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_SslCredentials" /><meta name="guid" content="Properties_T_Grpc_Core_SslCredentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_SslCredentials.htm" title="SslCredentials Properties" tocid="Properties_T_Grpc_Core_SslCredentials">SslCredentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslCredentials_KeyCertificatePair.htm" title="KeyCertificatePair Property " tocid="P_Grpc_Core_SslCredentials_KeyCertificatePair">KeyCertificatePair Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslCredentials_RootCertificates.htm" title="RootCertificates Property " tocid="P_Grpc_Core_SslCredentials_RootCertificates">RootCertificates Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslCredentials Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_SslCredentials.htm">SslCredentials</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_SslCredentials_KeyCertificatePair.htm">KeyCertificatePair</a></td><td><div class="summary"> + Client side key and certificate pair. + If null, client will not use key and certificate pair. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_SslCredentials_RootCertificates.htm">RootCertificates</a></td><td><div class="summary"> + PEM encoding of the server root certificates. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslCredentials.htm">SslCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f879ba0fd4 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslServerCredentials.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslServerCredentials Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="SslServerCredentials class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.SslServerCredentials" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_SslServerCredentials" /><meta name="guid" content="Properties_T_Grpc_Core_SslServerCredentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Properties" tocid="Properties_T_Grpc_Core_SslServerCredentials">SslServerCredentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm" title="ForceClientAuthentication Property " tocid="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication">ForceClientAuthentication Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm" title="KeyCertificatePairs Property " tocid="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs">KeyCertificatePairs Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_SslServerCredentials_RootCertificates.htm" title="RootCertificates Property " tocid="P_Grpc_Core_SslServerCredentials_RootCertificates">RootCertificates Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslServerCredentials Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_SslServerCredentials.htm">SslServerCredentials</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm">ForceClientAuthentication</a></td><td><div class="summary"> + If true, the authenticity of client check will be enforced. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm">KeyCertificatePairs</a></td><td><div class="summary"> + Key-certificate pairs. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_SslServerCredentials_RootCertificates.htm">RootCertificates</a></td><td><div class="summary"> + PEM encoded client root certificates. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_SslServerCredentials.htm">SslServerCredentials Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..cb8c929e81 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Status.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Status Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Status structure, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.Status" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_Status" /><meta name="guid" content="Properties_T_Grpc_Core_Status" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Status.htm" title="Status Properties" tocid="Properties_T_Grpc_Core_Status">Status Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Status_Detail.htm" title="Detail Property " tocid="P_Grpc_Core_Status_Detail">Detail Property </a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_Status_StatusCode.htm" title="StatusCode Property " tocid="P_Grpc_Core_Status_StatusCode">StatusCode Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Status Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_Status.htm">Status</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Status_Detail.htm">Detail</a></td><td><div class="summary"> + Gets the detail. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Status_StatusCode.htm">StatusCode</a></td><td><div class="summary"> + Gets the gRPC status code. OK indicates success, all other values indicate an error. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_Status.htm">Status Structure</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b6e2b08ab0 --- /dev/null +++ b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_WriteOptions.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>WriteOptions Properties</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteOptions class, properties" /><meta name="Microsoft.Help.Id" content="Properties.T:Grpc.Core.WriteOptions" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="Properties_T_Grpc_Core_WriteOptions" /><meta name="guid" content="Properties_T_Grpc_Core_WriteOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Properties" tocid="Properties_T_Grpc_Core_WriteOptions">WriteOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="P_Grpc_Core_WriteOptions_Flags.htm" title="Flags Property " tocid="P_Grpc_Core_WriteOptions_Flags">Flags Property </a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">WriteOptions Properties</td></tr></table><span class="introStyle"></span><p>The <a href="T_Grpc_Core_WriteOptions.htm">WriteOptions</a> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_WriteOptions_Flags.htm">Flags</a></td><td><div class="summary"> + Gets the write flags. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID1RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="T_Grpc_Core_WriteOptions.htm">WriteOptions Class</a></div><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..1c2487cd40 --- /dev/null +++ b/doc/ref/csharp/html/html/R_Project_Documentation.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Namespaces</title><meta name="Language" content="en-us" /><meta name="Microsoft.Help.Id" content="R:Project_Documentation" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="unknown" /><meta name="file" content="R_Project_Documentation" /><meta name="guid" content="R_Project_Documentation" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Auth.htm" title="Grpc.Auth" tocid="N_Grpc_Auth">Grpc.Auth</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Namespaces</td></tr></table><span class="introStyle"></span><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Namespaces</span></div><div id="ID0RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th>Namespace</th><th>Description</th></tr><tr><td><a href="N_Grpc_Auth.htm">Grpc.Auth</a></td><td><div class="summary">Provides OAuth2 based authentication for gRPC. <span class="code">Grpc.Auth</span> currently consists of a set of very lightweight wrappers and uses C# <a href="https://www.nuget.org/packages/Google.Apis.Auth/">Google.Apis.Auth</a> library.</div></td></tr><tr><td><a href="N_Grpc_Core.htm">Grpc.Core</a></td><td><div class="summary">Main namespace for gRPC C# functionality. Contains concepts representing both client side and server side gRPC logic. + +</div></td></tr><tr><td><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a></td><td><div class="summary">Provides functionality to redirect gRPC logs to application-specified destination.</div></td></tr><tr><td><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a></td><td><div class="summary">Various utilities for gRPC C#.</div></td></tr></table></div></div></div><div id="pageFooter" class="pageFooter"> </div></body><script type="text/javascript"> +<!-- + var tocNav = document.getElementById("tocNav"); + var anchor = tocNav.children[0].children[0]; + Toggle(anchor); + tocNav.children[0].className += " current"; +--> +</script> +</html> \ 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 new file mode 100644 index 0000000000..89a0923148 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Auth_AuthInterceptors.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AuthInterceptors Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AuthInterceptors class" /><meta name="System.Keywords" content="Grpc.Auth.AuthInterceptors class" /><meta name="System.Keywords" content="AuthInterceptors class, about AuthInterceptors class" /><meta name="Microsoft.Help.F1" content="Grpc.Auth.AuthInterceptors" /><meta name="Microsoft.Help.Id" content="T:Grpc.Auth.AuthInterceptors" /><meta name="Description" content="Factory methods to create authorization interceptors. Interceptors created can be registered with gRPC client classes (autogenerated client stubs that inherit from )." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Auth" /><meta name="file" content="T_Grpc_Auth_AuthInterceptors" /><meta name="guid" content="T_Grpc_Auth_AuthInterceptors" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Auth.htm" title="Grpc.Auth" tocid="N_Grpc_Auth">Grpc.Auth</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Auth_AuthInterceptors.htm" title="AuthInterceptors Class" tocid="T_Grpc_Auth_AuthInterceptors">AuthInterceptors Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Auth_AuthInterceptors.htm" title="AuthInterceptors Methods" tocid="Methods_T_Grpc_Auth_AuthInterceptors">AuthInterceptors Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AuthInterceptors Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Factory methods to create authorization interceptors. Interceptors created can be registered with gRPC client classes (autogenerated client stubs that + inherit from <a href="T_Grpc_Core_ClientBase.htm">ClientBase</a>). + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTCB2648_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCB2648_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Auth<span id="LSTCB2648_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCB2648_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>AuthInterceptors</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Auth.htm">Grpc.Auth</a><br /><strong>Assembly:</strong> Grpc.Auth (in Grpc.Auth.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class</span> <span class="identifier">AuthInterceptors</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">AuthInterceptors</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">AuthInterceptors</span> <span class="keyword">abstract</span> <span class="keyword">sealed</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">AbstractClassAttribute</span>>] +[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">AuthInterceptors</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">AuthInterceptors</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm">FromAccessToken</a></td><td><div class="summary"> + Creates OAuth2 interceptor that will use given access token as authorization. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Auth_AuthInterceptors_FromCredential.htm">FromCredential</a></td><td><div class="summary"> + Creates interceptor that will obtain access token from any credential type that implements + <span class="code">ITokenAccess</span>. (e.g. <span class="code">GoogleCredential</span>). + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Auth.htm">Grpc.Auth Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ea662d9d73 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_AsyncClientStreamingCall_2.htm @@ -0,0 +1,33 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncClientStreamingCall(TRequest, TResponse) Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E class" /><meta name="System.Keywords" content="Grpc.Core.AsyncClientStreamingCall%3CTRequest%2C TResponse%3E class" /><meta name="System.Keywords" content="AsyncClientStreamingCall%3CTRequest%2C TResponse%3E class, about AsyncClientStreamingCall%3CTRequest%2C TResponse%3E class" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse) class" /><meta name="System.Keywords" content="Grpc.Core.AsyncClientStreamingCall(Of TRequest%2C TResponse) class" /><meta name="System.Keywords" content="AsyncClientStreamingCall(Of TRequest%2C TResponse) class, about AsyncClientStreamingCall(Of TRequest%2C TResponse) class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncClientStreamingCall`2" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.AsyncClientStreamingCall`2" /><meta name="Description" content="Return type for client streaming calls." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_AsyncClientStreamingCall_2" /><meta name="guid" content="T_Grpc_Core_AsyncClientStreamingCall_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncClientStreamingCall<span id="LST1E8FD936_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1E8FD936_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST1E8FD936_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1E8FD936_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Return type for client streaming calls. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST1E8FD936_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1E8FD936_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST1E8FD936_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1E8FD936_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>AsyncClientStreamingCall<span id="LST1E8FD936_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1E8FD936_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST1E8FD936_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1E8FD936_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">sealed</span> <span class="keyword">class</span> <span class="identifier">AsyncClientStreamingCall</span><TRequest, TResponse> : <span class="identifier">IDisposable</span> +</pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">AsyncClientStreamingCall</span>(<span class="keyword">Of</span> TRequest, TResponse) + <span class="keyword">Implements</span> <span class="identifier">IDisposable</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">AsyncClientStreamingCall</span> <span class="keyword">sealed</span> : <span class="identifier">IDisposable</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">AsyncClientStreamingCall</span><'TRequest, 'TResponse> = + <span class="keyword">class</span> + <span class="keyword">interface</span> <span class="identifier">IDisposable</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Request message type for this call.</dd><dt><span class="parameter">TResponse</span></dt><dd>Response message type for this call.</dd></dl></div><p>The <span class="selflink">AsyncClientStreamingCall<span id="LST1E8FD936_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1E8FD936_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST1E8FD936_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1E8FD936_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm">RequestStream</a></td><td><div class="summary"> + Async stream to send streaming requests. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm">ResponseAsync</a></td><td><div class="summary"> + Asynchronous call result. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm">ResponseHeadersAsync</a></td><td><div class="summary"> + Asynchronous access to response headers. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm">Dispose</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm">GetAwaiter</a></td><td><div class="summary"> + Allows awaiting this object directly. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm">GetStatus</a></td><td><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm">GetTrailers</a></td><td><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f81978d67b --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm @@ -0,0 +1,31 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncDuplexStreamingCall(TRequest, TResponse) Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E class" /><meta name="System.Keywords" content="Grpc.Core.AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E class" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E class, about AsyncDuplexStreamingCall%3CTRequest%2C TResponse%3E class" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall(Of TRequest%2C TResponse) class" /><meta name="System.Keywords" content="Grpc.Core.AsyncDuplexStreamingCall(Of TRequest%2C TResponse) class" /><meta name="System.Keywords" content="AsyncDuplexStreamingCall(Of TRequest%2C TResponse) class, about AsyncDuplexStreamingCall(Of TRequest%2C TResponse) class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncDuplexStreamingCall`2" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.AsyncDuplexStreamingCall`2" /><meta name="Description" content="Return type for bidirectional streaming calls." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_AsyncDuplexStreamingCall_2" /><meta name="guid" content="T_Grpc_Core_AsyncDuplexStreamingCall_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncDuplexStreamingCall<span id="LST9B06C801_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B06C801_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST9B06C801_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B06C801_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Return type for bidirectional streaming calls. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST9B06C801_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B06C801_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST9B06C801_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B06C801_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>AsyncDuplexStreamingCall<span id="LST9B06C801_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B06C801_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9B06C801_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B06C801_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">sealed</span> <span class="keyword">class</span> <span class="identifier">AsyncDuplexStreamingCall</span><TRequest, TResponse> : <span class="identifier">IDisposable</span> +</pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">AsyncDuplexStreamingCall</span>(<span class="keyword">Of</span> TRequest, TResponse) + <span class="keyword">Implements</span> <span class="identifier">IDisposable</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">AsyncDuplexStreamingCall</span> <span class="keyword">sealed</span> : <span class="identifier">IDisposable</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">AsyncDuplexStreamingCall</span><'TRequest, 'TResponse> = + <span class="keyword">class</span> + <span class="keyword">interface</span> <span class="identifier">IDisposable</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Request message type for this call.</dd><dt><span class="parameter">TResponse</span></dt><dd>Response message type for this call.</dd></dl></div><p>The <span class="selflink">AsyncDuplexStreamingCall<span id="LST9B06C801_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B06C801_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LST9B06C801_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9B06C801_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm">RequestStream</a></td><td><div class="summary"> + Async stream to send streaming requests. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm">ResponseHeadersAsync</a></td><td><div class="summary"> + Asynchronous access to response headers. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm">ResponseStream</a></td><td><div class="summary"> + Async stream to read streaming responses. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm">Dispose</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm">GetStatus</a></td><td><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm">GetTrailers</a></td><td><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..4b2407ca18 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_AsyncServerStreamingCall_1.htm @@ -0,0 +1,29 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncServerStreamingCall(TResponse) Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncServerStreamingCall%3CTResponse%3E class" /><meta name="System.Keywords" content="Grpc.Core.AsyncServerStreamingCall%3CTResponse%3E class" /><meta name="System.Keywords" content="AsyncServerStreamingCall%3CTResponse%3E class, about AsyncServerStreamingCall%3CTResponse%3E class" /><meta name="System.Keywords" content="AsyncServerStreamingCall(Of TResponse) class" /><meta name="System.Keywords" content="Grpc.Core.AsyncServerStreamingCall(Of TResponse) class" /><meta name="System.Keywords" content="AsyncServerStreamingCall(Of TResponse) class, about AsyncServerStreamingCall(Of TResponse) class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncServerStreamingCall`1" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.AsyncServerStreamingCall`1" /><meta name="Description" content="Return type for server streaming calls." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_AsyncServerStreamingCall_1" /><meta name="guid" content="T_Grpc_Core_AsyncServerStreamingCall_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncServerStreamingCall<span id="LSTC423FE87_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC423FE87_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LSTC423FE87_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC423FE87_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Return type for server streaming calls. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTC423FE87_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC423FE87_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LSTC423FE87_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC423FE87_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>AsyncServerStreamingCall<span id="LSTC423FE87_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC423FE87_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LSTC423FE87_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC423FE87_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">sealed</span> <span class="keyword">class</span> <span class="identifier">AsyncServerStreamingCall</span><TResponse> : <span class="identifier">IDisposable</span> +</pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">AsyncServerStreamingCall</span>(<span class="keyword">Of</span> TResponse) + <span class="keyword">Implements</span> <span class="identifier">IDisposable</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> TResponse> +<span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">AsyncServerStreamingCall</span> <span class="keyword">sealed</span> : <span class="identifier">IDisposable</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">AsyncServerStreamingCall</span><'TResponse> = + <span class="keyword">class</span> + <span class="keyword">interface</span> <span class="identifier">IDisposable</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TResponse</span></dt><dd>Response message type for this call.</dd></dl></div><p>The <span class="selflink">AsyncServerStreamingCall<span id="LSTC423FE87_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC423FE87_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LSTC423FE87_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC423FE87_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm">ResponseHeadersAsync</a></td><td><div class="summary"> + Asynchronous access to response headers. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm">ResponseStream</a></td><td><div class="summary"> + Async stream to read streaming responses. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm">Dispose</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm">GetStatus</a></td><td><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm">GetTrailers</a></td><td><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..e370a9e037 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_AsyncUnaryCall_1.htm @@ -0,0 +1,31 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncUnaryCall(TResponse) Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncUnaryCall%3CTResponse%3E class" /><meta name="System.Keywords" content="Grpc.Core.AsyncUnaryCall%3CTResponse%3E class" /><meta name="System.Keywords" content="AsyncUnaryCall%3CTResponse%3E class, about AsyncUnaryCall%3CTResponse%3E class" /><meta name="System.Keywords" content="AsyncUnaryCall(Of TResponse) class" /><meta name="System.Keywords" content="Grpc.Core.AsyncUnaryCall(Of TResponse) class" /><meta name="System.Keywords" content="AsyncUnaryCall(Of TResponse) class, about AsyncUnaryCall(Of TResponse) class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.AsyncUnaryCall`1" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.AsyncUnaryCall`1" /><meta name="Description" content="Return type for single request - single response call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_AsyncUnaryCall_1" /><meta name="guid" content="T_Grpc_Core_AsyncUnaryCall_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Properties" tocid="Properties_T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Methods" tocid="Methods_T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncUnaryCall<span id="LST2ECA825B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2ECA825B_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TResponse</span><span id="LST2ECA825B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2ECA825B_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Return type for single request - single response call. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST2ECA825B_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2ECA825B_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST2ECA825B_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2ECA825B_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>AsyncUnaryCall<span id="LST2ECA825B_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2ECA825B_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST2ECA825B_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2ECA825B_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">sealed</span> <span class="keyword">class</span> <span class="identifier">AsyncUnaryCall</span><TResponse> : <span class="identifier">IDisposable</span> +</pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">AsyncUnaryCall</span>(<span class="keyword">Of</span> TResponse) + <span class="keyword">Implements</span> <span class="identifier">IDisposable</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> TResponse> +<span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">AsyncUnaryCall</span> <span class="keyword">sealed</span> : <span class="identifier">IDisposable</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">AsyncUnaryCall</span><'TResponse> = + <span class="keyword">class</span> + <span class="keyword">interface</span> <span class="identifier">IDisposable</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TResponse</span></dt><dd>Response message type for this call.</dd></dl></div><p>The <span class="selflink">AsyncUnaryCall<span id="LST2ECA825B_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2ECA825B_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TResponse<span id="LST2ECA825B_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2ECA825B_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm">ResponseAsync</a></td><td><div class="summary"> + Asynchronous call result. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm">ResponseHeadersAsync</a></td><td><div class="summary"> + Asynchronous access to response headers. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm">Dispose</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm">GetAwaiter</a></td><td><div class="summary"> + Allows awaiting this object directly. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm">GetStatus</a></td><td><div class="summary"> + Gets the call status if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm">GetTrailers</a></td><td><div class="summary"> + Gets the call trailing metadata if the call has already finished. + Throws InvalidOperationException otherwise. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..bc7ecf9ed0 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_CallInvocationDetails_2.htm @@ -0,0 +1,33 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallInvocationDetails(TRequest, TResponse) Structure</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E structure" /><meta name="System.Keywords" content="Grpc.Core.CallInvocationDetails%3CTRequest%2C TResponse%3E structure" /><meta name="System.Keywords" content="CallInvocationDetails%3CTRequest%2C TResponse%3E structure, about CallInvocationDetails%3CTRequest%2C TResponse%3E structure" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse) structure" /><meta name="System.Keywords" content="Grpc.Core.CallInvocationDetails(Of TRequest%2C TResponse) structure" /><meta name="System.Keywords" content="CallInvocationDetails(Of TRequest%2C TResponse) structure, about CallInvocationDetails(Of TRequest%2C TResponse) structure" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallInvocationDetails`2" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.CallInvocationDetails`2" /><meta name="Description" content="Details about a client-side call to be invoked." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_CallInvocationDetails_2" /><meta name="guid" content="T_Grpc_Core_CallInvocationDetails_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm" title="CallInvocationDetails(TRequest, TResponse) Constructor " tocid="Overload_Grpc_Core_CallInvocationDetails_2__ctor">CallInvocationDetails(TRequest, TResponse) Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallInvocationDetails<span id="LSTC2463791_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTC2463791_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Structure</td></tr></table><span class="introStyle"></span><div class="summary"> + Details about a client-side call to be invoked. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">struct</span> <span class="identifier">CallInvocationDetails</span><TRequest, TResponse> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Structure</span> <span class="identifier">CallInvocationDetails</span>(<span class="keyword">Of</span> TRequest, TResponse)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">public</span> <span class="keyword">value class</span> <span class="identifier">CallInvocationDetails</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">CallInvocationDetails</span><'TRequest, 'TResponse> = <span class="keyword">struct</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Request message type for the call.</dd><dt><span class="parameter">TResponse</span></dt><dd>Response message type for the call.</dd></dl></div><p>The <span class="selflink">CallInvocationDetails<span id="LSTC2463791_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC2463791_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallInvocationDetails_2__ctor.htm">CallInvocationDetails<span id="LSTC2463791_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC2463791_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script>(Channel, Method<span id="LSTC2463791_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTC2463791_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, CallOptions)</a></td><td><div class="summary"> + Initializes a new instance of the <span class="selflink">CallInvocationDetails<span id="LSTC2463791_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_8?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC2463791_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_9?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> struct. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm">CallInvocationDetails<span id="LSTC2463791_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_10?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC2463791_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_11?cs=>|vb=)|cpp=>|nu=)|fs=>");</script>(Channel, Method<span id="LSTC2463791_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_12?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LSTC2463791_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_13?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, String, CallOptions)</a></td><td><div class="summary"> + Initializes a new instance of the <span class="selflink">CallInvocationDetails<span id="LSTC2463791_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_14?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC2463791_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_15?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> struct. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm">CallInvocationDetails<span id="LSTC2463791_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_16?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC2463791_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_17?cs=>|vb=)|cpp=>|nu=)|fs=>");</script>(Channel, String, String, Marshaller<span id="LSTC2463791_18"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_18?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest<span id="LSTC2463791_19"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_19?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, Marshaller<span id="LSTC2463791_20"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_20?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TResponse<span id="LSTC2463791_21"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_21?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, CallOptions)</a></td><td><div class="summary"> + Initializes a new instance of the <span class="selflink">CallInvocationDetails<span id="LSTC2463791_22"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_22?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC2463791_23"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_23?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> struct. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_Channel.htm">Channel</a></td><td><div class="summary"> + Get channel associated with this call. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_Host.htm">Host</a></td><td><div class="summary"> + Get name of host. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_Method.htm">Method</a></td><td><div class="summary"> + Gets name of method to be called. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_Options.htm">Options</a></td><td><div class="summary"> + Gets the call options. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm">RequestMarshaller</a></td><td><div class="summary"> + Gets marshaller used to serialize requests. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm">ResponseMarshaller</a></td><td><div class="summary"> + Gets marshaller used to deserialized responses. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2dts52z7" target="_blank">Equals</a></td><td><div class="summary">Indicates whether this instance and a specified object are equal.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/y3509fc2" target="_blank">GetHashCode</a></td><td><div class="summary">Returns the hash code for this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/wb77sz3h" target="_blank">ToString</a></td><td><div class="summary">Returns the fully qualified type name of this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm">WithOptions</a></td><td><div class="summary"> + Returns new instance of <span class="selflink">CallInvocationDetails<span id="LSTC2463791_24"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_24?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTC2463791_25"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTC2463791_25?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> with + <span class="code">Options</span> set to the value provided. Values of all other fields are preserved. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..3829d0ddab --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_CallOptions.htm @@ -0,0 +1,31 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CallOptions Structure</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CallOptions structure" /><meta name="System.Keywords" content="Grpc.Core.CallOptions structure" /><meta name="System.Keywords" content="CallOptions structure, about CallOptions structure" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CallOptions" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.CallOptions" /><meta name="Description" content="Options for calls made by client." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_CallOptions" /><meta name="guid" content="T_Grpc_Core_CallOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_CallOptions__ctor.htm" title="CallOptions Constructor " tocid="M_Grpc_Core_CallOptions__ctor">CallOptions Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_CallOptions.htm" title="CallOptions Properties" tocid="Properties_T_Grpc_Core_CallOptions">CallOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_CallOptions.htm" title="CallOptions Methods" tocid="Methods_T_Grpc_Core_CallOptions">CallOptions Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CallOptions Structure</td></tr></table><span class="introStyle"></span><div class="summary"> + Options for calls made by client. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">struct</span> <span class="identifier">CallOptions</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Structure</span> <span class="identifier">CallOptions</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">value class</span> <span class="identifier">CallOptions</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">CallOptions</span> = <span class="keyword">struct</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><p>The <span class="selflink">CallOptions</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallOptions__ctor.htm">CallOptions</a></td><td><div class="summary"> + Creates a new instance of <span class="code">CallOptions</span> struct. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallOptions_CancellationToken.htm">CancellationToken</a></td><td><div class="summary"> + Token that can be used for cancelling the call. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallOptions_Deadline.htm">Deadline</a></td><td><div class="summary"> + Call deadline. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallOptions_Headers.htm">Headers</a></td><td><div class="summary"> + Headers to send at the beginning of the call. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallOptions_PropagationToken.htm">PropagationToken</a></td><td><div class="summary"> + Token for propagating parent call context. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_CallOptions_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + Write options that will be used for this call. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2dts52z7" target="_blank">Equals</a></td><td><div class="summary">Indicates whether this instance and a specified object are equal.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/y3509fc2" target="_blank">GetHashCode</a></td><td><div class="summary">Returns the hash code for this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/wb77sz3h" target="_blank">ToString</a></td><td><div class="summary">Returns the fully qualified type name of this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallOptions_WithCancellationToken.htm">WithCancellationToken</a></td><td><div class="summary"> + Returns new instance of <span class="selflink">CallOptions</span> with + <span class="code">CancellationToken</span> set to the value provided. Values of all other fields are preserved. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallOptions_WithDeadline.htm">WithDeadline</a></td><td><div class="summary"> + Returns new instance of <span class="selflink">CallOptions</span> with + <span class="code">Deadline</span> set to the value provided. Values of all other fields are preserved. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_CallOptions_WithHeaders.htm">WithHeaders</a></td><td><div class="summary"> + Returns new instance of <span class="selflink">CallOptions</span> with + <span class="code">Headers</span> set to the value provided. Values of all other fields are preserved. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ba5465dbd0 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Calls.htm @@ -0,0 +1,24 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Calls Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Calls class" /><meta name="System.Keywords" content="Grpc.Core.Calls class" /><meta name="System.Keywords" content="Calls class, about Calls class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Calls" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Calls" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Calls" /><meta name="guid" content="T_Grpc_Core_Calls" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Calls.htm" title="Calls Methods" tocid="Methods_T_Grpc_Core_Calls">Calls Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Calls Class</td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST92E3202A_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST92E3202A_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Calls</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class</span> <span class="identifier">Calls</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">Calls</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">Calls</span> <span class="keyword">abstract</span> <span class="keyword">sealed</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">AbstractClassAttribute</span>>] +[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">Calls</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">Calls</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm">AsyncClientStreamingCall<span id="LST92E3202A_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST92E3202A_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Invokes a client streaming call asynchronously. + In client streaming scenario, client sends a stream of requests and server responds with a single response. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm">AsyncDuplexStreamingCall<span id="LST92E3202A_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST92E3202A_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm">AsyncServerStreamingCall<span id="LST92E3202A_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST92E3202A_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Invokes a server streaming call asynchronously. + In server streaming scenario, client sends on request and server responds with a stream of responses. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Calls_AsyncUnaryCall__2.htm">AsyncUnaryCall<span id="LST92E3202A_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST92E3202A_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Invokes a simple remote call asynchronously. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Calls_BlockingUnaryCall__2.htm">BlockingUnaryCall<span id="LST92E3202A_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_10?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST92E3202A_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92E3202A_11?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Invokes a simple remote call in a blocking fashion. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0d4fe96397 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Channel.htm @@ -0,0 +1,31 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Channel Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Channel class" /><meta name="System.Keywords" content="Grpc.Core.Channel class" /><meta name="System.Keywords" content="Channel class, about Channel class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Channel" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Channel" /><meta name="Description" content="Represents a gRPC channel. Channels are an abstraction of long-lived connections to remote servers. More client objects can reuse the same channel." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Channel" /><meta name="guid" content="T_Grpc_Core_Channel" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Channel__ctor.htm" title="Channel Constructor " tocid="Overload_Grpc_Core_Channel__ctor">Channel Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Channel.htm" title="Channel Properties" tocid="Properties_T_Grpc_Core_Channel">Channel Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Channel.htm" title="Channel Methods" tocid="Methods_T_Grpc_Core_Channel">Channel Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Channel Class</td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTFA44D63C_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFA44D63C_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LSTFA44D63C_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFA44D63C_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Channel</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Channel</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">Channel</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">Channel</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">Channel</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">Channel</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Channel__ctor.htm">Channel(String, Credentials, IEnumerable<span id="LSTFA44D63C_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFA44D63C_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>ChannelOption<span id="LSTFA44D63C_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFA44D63C_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Channel__ctor_1.htm">Channel(String, Int32, Credentials, IEnumerable<span id="LSTFA44D63C_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFA44D63C_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>ChannelOption<span id="LSTFA44D63C_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFA44D63C_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Creates a channel that connects to a specific host and port. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Channel_ResolvedTarget.htm">ResolvedTarget</a></td><td><div class="summary">Resolved address of the remote endpoint in URI format.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Channel_State.htm">State</a></td><td><div class="summary"> + Gets current connectivity state of this channel. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Channel_Target.htm">Target</a></td><td><div class="summary">The original target used to create the channel.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Channel_ConnectAsync.htm">ConnectAsync</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Channel_ShutdownAsync.htm">ShutdownAsync</a></td><td><div class="summary"> + Waits until there are no more active calls for this channel and then cleans up + resources used by this channel. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Channel_WaitForStateChangedAsync.htm">WaitForStateChangedAsync</a></td><td><div class="summary"> + Returned tasks completes once channel state has become different from + given lastObservedState. + If deadline is reached or and error occurs, returned task is cancelled. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID6RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..eddd74e934 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption.htm @@ -0,0 +1,23 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOption Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ChannelOption class" /><meta name="System.Keywords" content="Grpc.Core.ChannelOption class" /><meta name="System.Keywords" content="ChannelOption class, about ChannelOption class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ChannelOption" /><meta name="Description" content="Channel option specified when creating a channel. Corresponds to grpc_channel_args from grpc/grpc.h." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ChannelOption" /><meta name="guid" content="T_Grpc_Core_ChannelOption" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_ChannelOption__ctor.htm" title="ChannelOption Constructor " tocid="Overload_Grpc_Core_ChannelOption__ctor">ChannelOption Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ChannelOption.htm" title="ChannelOption Properties" tocid="Properties_T_Grpc_Core_ChannelOption">ChannelOption Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ChannelOption.htm" title="ChannelOption Methods" tocid="Methods_T_Grpc_Core_ChannelOption">ChannelOption Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOption Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Channel option specified when creating a channel. + Corresponds to grpc_channel_args from grpc/grpc.h. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST94C316D3_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST94C316D3_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST94C316D3_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST94C316D3_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ChannelOption</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">sealed</span> <span class="keyword">class</span> <span class="identifier">ChannelOption</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">ChannelOption</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ChannelOption</span> <span class="keyword">sealed</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">ChannelOption</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">ChannelOption</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ChannelOption__ctor.htm">ChannelOption(String, Int32)</a></td><td><div class="summary"> + Creates a channel option with an integer value. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ChannelOption__ctor_1.htm">ChannelOption(String, String)</a></td><td><div class="summary"> + Creates a channel option with a string value. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ChannelOption_IntValue.htm">IntValue</a></td><td><div class="summary"> + Gets the integer value the <span class="code">ChannelOption</span>. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ChannelOption_Name.htm">Name</a></td><td><div class="summary"> + Gets the name of the <span class="code">ChannelOption</span>. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ChannelOption_StringValue.htm">StringValue</a></td><td><div class="summary"> + Gets the string value the <span class="code">ChannelOption</span>. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ChannelOption_Type.htm">Type</a></td><td><div class="summary"> + Gets the type of the <span class="code">ChannelOption</span>. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID6RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0953710b29 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption_OptionType.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOption.OptionType Enumeration</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ChannelOption.OptionType enumeration" /><meta name="System.Keywords" content="Grpc.Core.ChannelOption.OptionType enumeration" /><meta name="System.Keywords" content="Integer enumeration member" /><meta name="System.Keywords" content="String enumeration member" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.OptionType" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.OptionType.Integer" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOption.OptionType.String" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ChannelOption.OptionType" /><meta name="Description" content="Type of ChannelOption." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ChannelOption_OptionType" /><meta name="guid" content="T_Grpc_Core_ChannelOption_OptionType" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOption<span id="LST47F86D4_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST47F86D4_0?cpp=::|nu=.");</script>OptionType Enumeration</td></tr></table><span class="introStyle"></span><div class="summary"> + Type of <span class="code">ChannelOption</span>. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">enum</span> <span class="identifier">OptionType</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Enumeration</span> <span class="identifier">OptionType</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">enum class</span> <span class="identifier">OptionType</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">OptionType</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div id="enumerationSection"><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Members</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Member name</th><th>Value</th><th>Description</th></tr><tr><td /><td target="F:Grpc.Core.ChannelOption.OptionType.Integer"><span class="selflink">Integer</span></td><td>0</td><td> + Channel option with integer value. + </td></tr><tr><td /><td target="F:Grpc.Core.ChannelOption.OptionType.String"><span class="selflink">String</span></td><td>1</td><td> + Channel option with string value. + </td></tr></table></div></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID3RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..bd1f0db02c --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOptions.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelOptions Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ChannelOptions class" /><meta name="System.Keywords" content="Grpc.Core.ChannelOptions class" /><meta name="System.Keywords" content="ChannelOptions class, about ChannelOptions class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelOptions" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ChannelOptions" /><meta name="Description" content="Defines names of supported channel options." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ChannelOptions" /><meta name="guid" content="T_Grpc_Core_ChannelOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Fields" tocid="Fields_T_Grpc_Core_ChannelOptions">ChannelOptions Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelOptions Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Defines names of supported channel options. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST63118B5E_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST63118B5E_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST63118B5E_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST63118B5E_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ChannelOptions</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class</span> <span class="identifier">ChannelOptions</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">ChannelOptions</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ChannelOptions</span> <span class="keyword">abstract</span> <span class="keyword">sealed</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">AbstractClassAttribute</span>>] +[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">ChannelOptions</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">ChannelOptions</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_Census.htm">Census</a></td><td><div class="summary">Enable census for tracing and stats collection</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_DefaultAuthority.htm">DefaultAuthority</a></td><td><div class="summary">Default authority for calls.</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm">Http2InitialSequenceNumber</a></td><td><div class="summary">Initial sequence number for http2 transports</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm">MaxConcurrentStreams</a></td><td><div class="summary">Maximum number of concurrent incoming streams to allow on a http2 connection</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_MaxMessageLength.htm">MaxMessageLength</a></td><td><div class="summary">Maximum message length that the channel can receive</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm">PrimaryUserAgentString</a></td><td><div class="summary">Primary user agent: goes at the start of the user-agent metadata</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm">SecondaryUserAgentString</a></td><td><div class="summary">Secondary user agent: goes at the end of the user-agent metadata</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm">SslTargetNameOverride</a></td><td><div class="summary">Override SSL target check. Only to be used for testing.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..da05bfba64 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ChannelState.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ChannelState Enumeration</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ChannelState enumeration" /><meta name="System.Keywords" content="Grpc.Core.ChannelState enumeration" /><meta name="System.Keywords" content="Idle enumeration member" /><meta name="System.Keywords" content="Connecting enumeration member" /><meta name="System.Keywords" content="Ready enumeration member" /><meta name="System.Keywords" content="TransientFailure enumeration member" /><meta name="System.Keywords" content="FatalFailure enumeration member" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelState" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelState.Idle" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelState.Connecting" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelState.Ready" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelState.TransientFailure" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ChannelState.FatalFailure" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ChannelState" /><meta name="Description" content="Connectivity state of a channel. Based on grpc_connectivity_state from grpc/grpc.h" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ChannelState" /><meta name="guid" content="T_Grpc_Core_ChannelState" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ChannelState Enumeration</td></tr></table><span class="introStyle"></span><div class="summary"> + Connectivity state of a channel. + Based on grpc_connectivity_state from grpc/grpc.h + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">enum</span> <span class="identifier">ChannelState</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Enumeration</span> <span class="identifier">ChannelState</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">enum class</span> <span class="identifier">ChannelState</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ChannelState</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div id="enumerationSection"><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Members</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Member name</th><th>Value</th><th>Description</th></tr><tr><td /><td target="F:Grpc.Core.ChannelState.Idle"><span class="selflink">Idle</span></td><td>0</td><td> + Channel is idle + </td></tr><tr><td /><td target="F:Grpc.Core.ChannelState.Connecting"><span class="selflink">Connecting</span></td><td>1</td><td> + Channel is connecting + </td></tr><tr><td /><td target="F:Grpc.Core.ChannelState.Ready"><span class="selflink">Ready</span></td><td>2</td><td> + Channel is ready for work + </td></tr><tr><td /><td target="F:Grpc.Core.ChannelState.TransientFailure"><span class="selflink">TransientFailure</span></td><td>3</td><td> + Channel has seen a failure but expects to recover + </td></tr><tr><td /><td target="F:Grpc.Core.ChannelState.FatalFailure"><span class="selflink">FatalFailure</span></td><td>4</td><td> + Channel has seen a failure that it cannot recover from + </td></tr></table></div></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID3RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..98b64764a3 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ClientBase.htm @@ -0,0 +1,24 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ClientBase Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ClientBase class" /><meta name="System.Keywords" content="Grpc.Core.ClientBase class" /><meta name="System.Keywords" content="ClientBase class, about ClientBase class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientBase" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ClientBase" /><meta name="Description" content="Base class for client-side stubs." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ClientBase" /><meta name="guid" content="T_Grpc_Core_ClientBase" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ClientBase__ctor.htm" title="ClientBase Constructor " tocid="M_Grpc_Core_ClientBase__ctor">ClientBase Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ClientBase.htm" title="ClientBase Properties" tocid="Properties_T_Grpc_Core_ClientBase">ClientBase Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ClientBase.htm" title="ClientBase Methods" tocid="Methods_T_Grpc_Core_ClientBase">ClientBase Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ClientBase Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Base class for client-side stubs. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST325B90DF_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST325B90DF_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST325B90DF_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST325B90DF_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ClientBase</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keyword">class</span> <span class="identifier">ClientBase</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">MustInherit</span> <span class="keyword">Class</span> <span class="identifier">ClientBase</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ClientBase</span> <span class="keyword">abstract</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">AbstractClassAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">ClientBase</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">ClientBase</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ClientBase__ctor.htm">ClientBase</a></td><td><div class="summary"> + Initializes a new instance of <span class="code">ClientBase</span> class. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ClientBase_Channel.htm">Channel</a></td><td><div class="summary"> + Channel associated with this client. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ClientBase_HeaderInterceptor.htm">HeaderInterceptor</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ClientBase_Host.htm">Host</a></td><td><div class="summary"> + 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 <span class="code">null</span> with the meaning + "use default host". + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="protected;declared;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="M_Grpc_Core_ClientBase_CreateCall__2.htm">CreateCall<span id="LST325B90DF_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST325B90DF_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST325B90DF_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST325B90DF_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Creates a new call to given method. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID6RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..d2073102cf --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ClientStreamingServerMethod_2.htm @@ -0,0 +1,21 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ClientStreamingServerMethod(TRequest, TResponse) Delegate</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ClientStreamingServerMethod%3CTRequest%2C TResponse%3E delegate" /><meta name="System.Keywords" content="Grpc.Core.ClientStreamingServerMethod%3CTRequest%2C TResponse%3E delegate" /><meta name="System.Keywords" content="ClientStreamingServerMethod(Of TRequest%2C TResponse) delegate" /><meta name="System.Keywords" content="Grpc.Core.ClientStreamingServerMethod(Of TRequest%2C TResponse) delegate" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ClientStreamingServerMethod`2" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ClientStreamingServerMethod`2" /><meta name="Description" content="Server-side handler for client streaming call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ClientStreamingServerMethod_2" /><meta name="guid" content="T_Grpc_Core_ClientStreamingServerMethod_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ClientStreamingServerMethod<span id="LST97FDF94E_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97FDF94E_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST97FDF94E_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97FDF94E_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Delegate</td></tr></table><span class="introStyle"></span><div class="summary"> + Server-side handler for client streaming call. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">delegate</span> <span class="identifier">Task</span><TResponse> <span class="identifier">ClientStreamingServerMethod</span><TRequest, TResponse>( + <span class="identifier">IAsyncStreamReader</span><TRequest> <span class="parameter">requestStream</span>, + <span class="identifier">ServerCallContext</span> <span class="parameter">context</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Delegate</span> <span class="keyword">Function</span> <span class="identifier">ClientStreamingServerMethod</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">requestStream</span> <span class="keyword">As</span> <span class="identifier">IAsyncStreamReader</span>(<span class="keyword">Of</span> TRequest), + <span class="parameter">context</span> <span class="keyword">As</span> <span class="identifier">ServerCallContext</span> +) <span class="keyword">As</span> <span class="identifier">Task</span>(<span class="keyword">Of</span> TResponse)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="keyword">public</span> <span class="keyword">delegate</span> <span class="identifier">Task</span><TResponse>^ <span class="identifier">ClientStreamingServerMethod</span>( + <span class="identifier">IAsyncStreamReader</span><TRequest>^ <span class="parameter">requestStream</span>, + <span class="identifier">ServerCallContext</span>^ <span class="parameter">context</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ClientStreamingServerMethod</span> = + <span class="keyword">delegate</span> <span class="keyword">of</span> + <span class="parameter">requestStream</span> : <span class="identifier">IAsyncStreamReader</span><'TRequest> * + <span class="parameter">context</span> : <span class="identifier">ServerCallContext</span> <span class="keyword">-></span> <span class="identifier">Task</span><'TResponse></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">requestStream</span></dt><dd>Type: <a href="T_Grpc_Core_IAsyncStreamReader_1.htm">Grpc.Core<span id="LST97FDF94E_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97FDF94E_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IAsyncStreamReader</a><span id="LST97FDF94E_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97FDF94E_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span><span id="LST97FDF94E_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97FDF94E_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /></dd><dt><span class="parameter">context</span></dt><dd>Type: <a href="T_Grpc_Core_ServerCallContext.htm">Grpc.Core<span id="LST97FDF94E_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97FDF94E_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerCallContext</a><br /></dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Request message type for this method.</dd><dt><span class="parameter">TResponse</span></dt><dd>Response message type for this method.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd321424" target="_blank">Task</a><span id="LST97FDF94E_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97FDF94E_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST97FDF94E_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST97FDF94E_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f70286751c --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_CompressionLevel.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CompressionLevel Enumeration</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="CompressionLevel enumeration" /><meta name="System.Keywords" content="Grpc.Core.CompressionLevel enumeration" /><meta name="System.Keywords" content="None enumeration member" /><meta name="System.Keywords" content="Low enumeration member" /><meta name="System.Keywords" content="Medium enumeration member" /><meta name="System.Keywords" content="High enumeration member" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CompressionLevel" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CompressionLevel.None" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CompressionLevel.Low" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CompressionLevel.Medium" /><meta name="Microsoft.Help.F1" content="Grpc.Core.CompressionLevel.High" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.CompressionLevel" /><meta name="Description" content="Compression level based on grpc_compression_level from grpc/compression.h" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_CompressionLevel" /><meta name="guid" content="T_Grpc_Core_CompressionLevel" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">CompressionLevel Enumeration</td></tr></table><span class="introStyle"></span><div class="summary"> + Compression level based on grpc_compression_level from grpc/compression.h + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">enum</span> <span class="identifier">CompressionLevel</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Enumeration</span> <span class="identifier">CompressionLevel</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">enum class</span> <span class="identifier">CompressionLevel</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">CompressionLevel</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div id="enumerationSection"><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Members</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Member name</th><th>Value</th><th>Description</th></tr><tr><td /><td target="F:Grpc.Core.CompressionLevel.None"><span class="selflink">None</span></td><td>0</td><td> + No compression. + </td></tr><tr><td /><td target="F:Grpc.Core.CompressionLevel.Low"><span class="selflink">Low</span></td><td>1</td><td> + Low compression. + </td></tr><tr><td /><td target="F:Grpc.Core.CompressionLevel.Medium"><span class="selflink">Medium</span></td><td>2</td><td> + Medium compression. + </td></tr><tr><td /><td target="F:Grpc.Core.CompressionLevel.High"><span class="selflink">High</span></td><td>3</td><td> + High compression. + </td></tr></table></div></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID3RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..73d262063c --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationOptions.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ContextPropagationOptions Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ContextPropagationOptions class" /><meta name="System.Keywords" content="Grpc.Core.ContextPropagationOptions class" /><meta name="System.Keywords" content="ContextPropagationOptions class, about ContextPropagationOptions class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ContextPropagationOptions" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ContextPropagationOptions" /><meta name="Description" content="Options for ." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ContextPropagationOptions" /><meta name="guid" content="T_Grpc_Core_ContextPropagationOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ContextPropagationOptions__ctor.htm" title="ContextPropagationOptions Constructor " tocid="M_Grpc_Core_ContextPropagationOptions__ctor">ContextPropagationOptions Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Properties" tocid="Properties_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Methods" tocid="Methods_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Fields" tocid="Fields_T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ContextPropagationOptions Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Options for <a href="T_Grpc_Core_ContextPropagationToken.htm">ContextPropagationToken</a>. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST261623D8_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST261623D8_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST261623D8_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST261623D8_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ContextPropagationOptions</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">ContextPropagationOptions</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">ContextPropagationOptions</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ContextPropagationOptions</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ContextPropagationOptions</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">ContextPropagationOptions</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ContextPropagationOptions__ctor.htm">ContextPropagationOptions</a></td><td><div class="summary"> + Creates new context propagation options. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm">IsPropagateCancellation</a></td><td><div class="summary"><span class="code">true</span> if parent call's cancellation token should be propagated to the child call.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm">IsPropagateDeadline</a></td><td><div class="summary"><span class="code">true</span> if parent call's deadline should be propagated to the child call.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID6RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ContextPropagationOptions_Default.htm">Default</a></td><td><div class="summary"> + The context propagation options that will be used by default. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID7RB')" onkeypress="SectionExpandCollapse_CheckKey('ID7RB', event)" tabindex="0"><img id="ID7RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID7RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..64ee49df36 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationToken.htm @@ -0,0 +1,10 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ContextPropagationToken Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ContextPropagationToken class" /><meta name="System.Keywords" content="Grpc.Core.ContextPropagationToken class" /><meta name="System.Keywords" content="ContextPropagationToken class, about ContextPropagationToken class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ContextPropagationToken" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ContextPropagationToken" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ContextPropagationToken" /><meta name="guid" content="T_Grpc_Core_ContextPropagationToken" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Methods" tocid="Methods_T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ContextPropagationToken Class</td></tr></table><span class="introStyle"></span><div class="summary"> + 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. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST3775DBD1_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3775DBD1_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST3775DBD1_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3775DBD1_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ContextPropagationToken</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">ContextPropagationToken</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">ContextPropagationToken</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ContextPropagationToken</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ContextPropagationToken</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">ContextPropagationToken</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b3da8eea78 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Credentials.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Credentials Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Credentials class" /><meta name="System.Keywords" content="Grpc.Core.Credentials class" /><meta name="System.Keywords" content="Credentials class, about Credentials class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Credentials" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Credentials" /><meta name="Description" content="Client-side credentials. Used for creation of a secure channel." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Credentials" /><meta name="guid" content="T_Grpc_Core_Credentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Credentials__ctor.htm" title="Credentials Constructor " tocid="M_Grpc_Core_Credentials__ctor">Credentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Credentials.htm" title="Credentials Properties" tocid="Properties_T_Grpc_Core_Credentials">Credentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_Credentials.htm" title="Credentials Methods" tocid="Methods_T_Grpc_Core_Credentials">Credentials Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Credentials Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Client-side credentials. Used for creation of a secure channel. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST2220AA03_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2220AA03_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST2220AA03_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2220AA03_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Credentials</span><br />    <a href="T_Grpc_Core_SslCredentials.htm">Grpc.Core<span id="LST2220AA03_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST2220AA03_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>SslCredentials</a><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keyword">class</span> <span class="identifier">Credentials</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">MustInherit</span> <span class="keyword">Class</span> <span class="identifier">Credentials</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">Credentials</span> <span class="keyword">abstract</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">AbstractClassAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">Credentials</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">Credentials</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="protected;declared;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="M_Grpc_Core_Credentials__ctor.htm">Credentials</a></td><td><div class="summary">Initializes a new instance of the <span class="selflink">Credentials</span> class</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="P_Grpc_Core_Credentials_Insecure.htm">Insecure</a></td><td><div class="summary"> + Returns instance of credential that provides no security and + will result in creating an unsecure channel with no encryption whatsoever. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID6RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c5783a7416 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm @@ -0,0 +1,25 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>DuplexStreamingServerMethod(TRequest, TResponse) Delegate</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="DuplexStreamingServerMethod%3CTRequest%2C TResponse%3E delegate" /><meta name="System.Keywords" content="Grpc.Core.DuplexStreamingServerMethod%3CTRequest%2C TResponse%3E delegate" /><meta name="System.Keywords" content="DuplexStreamingServerMethod(Of TRequest%2C TResponse) delegate" /><meta name="System.Keywords" content="Grpc.Core.DuplexStreamingServerMethod(Of TRequest%2C TResponse) delegate" /><meta name="Microsoft.Help.F1" content="Grpc.Core.DuplexStreamingServerMethod`2" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.DuplexStreamingServerMethod`2" /><meta name="Description" content="Server-side handler for bidi streaming call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_DuplexStreamingServerMethod_2" /><meta name="guid" content="T_Grpc_Core_DuplexStreamingServerMethod_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">DuplexStreamingServerMethod<span id="LST23CCAC57_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST23CCAC57_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST23CCAC57_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST23CCAC57_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Delegate</td></tr></table><span class="introStyle"></span><div class="summary"> + Server-side handler for bidi streaming call. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">delegate</span> <span class="identifier">Task</span> <span class="identifier">DuplexStreamingServerMethod</span><TRequest, TResponse>( + <span class="identifier">IAsyncStreamReader</span><TRequest> <span class="parameter">requestStream</span>, + <span class="identifier">IServerStreamWriter</span><TResponse> <span class="parameter">responseStream</span>, + <span class="identifier">ServerCallContext</span> <span class="parameter">context</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Delegate</span> <span class="keyword">Function</span> <span class="identifier">DuplexStreamingServerMethod</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">requestStream</span> <span class="keyword">As</span> <span class="identifier">IAsyncStreamReader</span>(<span class="keyword">Of</span> TRequest), + <span class="parameter">responseStream</span> <span class="keyword">As</span> <span class="identifier">IServerStreamWriter</span>(<span class="keyword">Of</span> TResponse), + <span class="parameter">context</span> <span class="keyword">As</span> <span class="identifier">ServerCallContext</span> +) <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="keyword">public</span> <span class="keyword">delegate</span> <span class="identifier">Task</span>^ <span class="identifier">DuplexStreamingServerMethod</span>( + <span class="identifier">IAsyncStreamReader</span><TRequest>^ <span class="parameter">requestStream</span>, + <span class="identifier">IServerStreamWriter</span><TResponse>^ <span class="parameter">responseStream</span>, + <span class="identifier">ServerCallContext</span>^ <span class="parameter">context</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">DuplexStreamingServerMethod</span> = + <span class="keyword">delegate</span> <span class="keyword">of</span> + <span class="parameter">requestStream</span> : <span class="identifier">IAsyncStreamReader</span><'TRequest> * + <span class="parameter">responseStream</span> : <span class="identifier">IServerStreamWriter</span><'TResponse> * + <span class="parameter">context</span> : <span class="identifier">ServerCallContext</span> <span class="keyword">-></span> <span class="identifier">Task</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">requestStream</span></dt><dd>Type: <a href="T_Grpc_Core_IAsyncStreamReader_1.htm">Grpc.Core<span id="LST23CCAC57_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST23CCAC57_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IAsyncStreamReader</a><span id="LST23CCAC57_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST23CCAC57_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TRequest</span></span><span id="LST23CCAC57_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST23CCAC57_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /></dd><dt><span class="parameter">responseStream</span></dt><dd>Type: <a href="T_Grpc_Core_IServerStreamWriter_1.htm">Grpc.Core<span id="LST23CCAC57_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST23CCAC57_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IServerStreamWriter</a><span id="LST23CCAC57_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST23CCAC57_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST23CCAC57_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST23CCAC57_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /></dd><dt><span class="parameter">context</span></dt><dd>Type: <a href="T_Grpc_Core_ServerCallContext.htm">Grpc.Core<span id="LST23CCAC57_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST23CCAC57_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerCallContext</a><br /></dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Request message type for this method.</dd><dt><span class="parameter">TResponse</span></dt><dd>Response message type for this method.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ac67b12fc6 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_GrpcEnvironment.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GrpcEnvironment Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="GrpcEnvironment class" /><meta name="System.Keywords" content="Grpc.Core.GrpcEnvironment class" /><meta name="System.Keywords" content="GrpcEnvironment class, about GrpcEnvironment class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.GrpcEnvironment" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.GrpcEnvironment" /><meta name="Description" content="Encapsulates initialization and shutdown of gRPC library." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_GrpcEnvironment" /><meta name="guid" content="T_Grpc_Core_GrpcEnvironment" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Properties" tocid="Properties_T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Methods" tocid="Methods_T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">GrpcEnvironment Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Encapsulates initialization and shutdown of gRPC library. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST975C6702_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST975C6702_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST975C6702_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST975C6702_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>GrpcEnvironment</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">GrpcEnvironment</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">GrpcEnvironment</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">GrpcEnvironment</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">GrpcEnvironment</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">GrpcEnvironment</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="P_Grpc_Core_GrpcEnvironment_Logger.htm">Logger</a></td><td><div class="summary"> + Gets application-wide logger used by gRPC. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_GrpcEnvironment_SetLogger.htm">SetLogger</a></td><td><div class="summary"> + Sets the application-wide logger that should be used by gRPC. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..d2bc5c9600 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_HeaderInterceptor.htm @@ -0,0 +1,19 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HeaderInterceptor Delegate</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="HeaderInterceptor delegate" /><meta name="System.Keywords" content="Grpc.Core.HeaderInterceptor delegate" /><meta name="Microsoft.Help.F1" content="Grpc.Core.HeaderInterceptor" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.HeaderInterceptor" /><meta name="Description" content="Interceptor for call headers." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_HeaderInterceptor" /><meta name="guid" content="T_Grpc_Core_HeaderInterceptor" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">HeaderInterceptor Delegate</td></tr></table><span class="introStyle"></span><div class="summary"> + Interceptor for call headers. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">delegate</span> <span class="keyword">void</span> <span class="identifier">HeaderInterceptor</span>( + <span class="identifier">IMethod</span> <span class="parameter">method</span>, + <span class="identifier">string</span> <span class="parameter">authUri</span>, + <span class="identifier">Metadata</span> <span class="parameter">metadata</span> +)</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Delegate</span> <span class="keyword">Sub</span> <span class="identifier">HeaderInterceptor</span> ( + <span class="parameter">method</span> <span class="keyword">As</span> <span class="identifier">IMethod</span>, + <span class="parameter">authUri</span> <span class="keyword">As</span> <span class="identifier">String</span>, + <span class="parameter">metadata</span> <span class="keyword">As</span> <span class="identifier">Metadata</span> +)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">delegate</span> <span class="keyword">void</span> <span class="identifier">HeaderInterceptor</span>( + <span class="identifier">IMethod</span>^ <span class="parameter">method</span>, + <span class="identifier">String</span>^ <span class="parameter">authUri</span>, + <span class="identifier">Metadata</span>^ <span class="parameter">metadata</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">HeaderInterceptor</span> = + <span class="keyword">delegate</span> <span class="keyword">of</span> + <span class="parameter">method</span> : <span class="identifier">IMethod</span> * + <span class="parameter">authUri</span> : <span class="identifier">string</span> * + <span class="parameter">metadata</span> : <span class="identifier">Metadata</span> <span class="keyword">-></span> <span class="keyword">unit</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">method</span></dt><dd>Type: <a href="T_Grpc_Core_IMethod.htm">Grpc.Core<span id="LST5065428B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5065428B_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IMethod</a><br /></dd><dt><span class="parameter">authUri</span></dt><dd>Type: <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">System<span id="LST5065428B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5065428B_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>String</a><br /></dd><dt><span class="parameter">metadata</span></dt><dd>Type: <a href="T_Grpc_Core_Metadata.htm">Grpc.Core<span id="LST5065428B_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST5065428B_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Metadata</a><br /></dd></dl></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..07ebcd902e --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamReader_1.htm @@ -0,0 +1,22 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IAsyncStreamReader(T) Interface</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IAsyncStreamReader%3CT%3E interface" /><meta name="System.Keywords" content="Grpc.Core.IAsyncStreamReader%3CT%3E interface" /><meta name="System.Keywords" content="IAsyncStreamReader%3CT%3E interface, about IAsyncStreamReader%3CT%3E interface" /><meta name="System.Keywords" content="IAsyncStreamReader(Of T) interface" /><meta name="System.Keywords" content="Grpc.Core.IAsyncStreamReader(Of T) interface" /><meta name="System.Keywords" content="IAsyncStreamReader(Of T) interface, about IAsyncStreamReader(Of T) interface" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IAsyncStreamReader`1" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.IAsyncStreamReader`1" /><meta name="Description" content="A stream of messages to be read." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_IAsyncStreamReader_1" /><meta name="guid" content="T_Grpc_Core_IAsyncStreamReader_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Properties_T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Properties" tocid="Properties_T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Methods" tocid="Methods_T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IAsyncStreamReader<span id="LST18B58304_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST18B58304_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Interface</td></tr></table><span class="introStyle"></span><div class="summary"> + A stream of messages to be read. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">interface</span> <span class="identifier">IAsyncStreamReader</span><T> : <span class="identifier">IAsyncEnumerator</span><T>, + <span class="identifier">IDisposable</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Interface</span> <span class="identifier">IAsyncStreamReader</span>(<span class="keyword">Of</span> T) + <span class="keyword">Inherits</span> <span class="identifier">IAsyncEnumerator</span>(<span class="keyword">Of</span> T), <span class="identifier">IDisposable</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">public</span> <span class="keyword">interface class</span> <span class="identifier">IAsyncStreamReader</span> : <span class="identifier">IAsyncEnumerator</span><T>, + <span class="identifier">IDisposable</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">IAsyncStreamReader</span><'T> = + <span class="keyword">interface</span> + <span class="keyword">interface</span> <span class="identifier">IAsyncEnumerator</span><'T> + <span class="keyword">interface</span> <span class="identifier">IDisposable</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd>The message type.</dd></dl></div><p>The <span class="selflink">IAsyncStreamReader<span id="LST18B58304_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST18B58304_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><span class="nolink">Current</span></td><td> (Inherited from <span class="nolink">IAsyncEnumerator</span><span id="LST18B58304_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LST18B58304_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/es4s3w1d" target="_blank">Dispose</a></td><td><div class="summary">Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aax125c9" target="_blank">IDisposable</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><span class="nolink">MoveNext</span></td><td> (Inherited from <span class="nolink">IAsyncEnumerator</span><span id="LST18B58304_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">T</span></span><span id="LST18B58304_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Extension Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubextension.gif" alt="Public Extension Method" title="Public Extension Method" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm">ForEachAsync<span id="LST18B58304_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST18B58304_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Reads the entire stream and executes an async action for each element. + </div> (Defined by <a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubextension.gif" alt="Public Extension Method" title="Public Extension Method" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm">ToListAsync<span id="LST18B58304_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_10?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST18B58304_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST18B58304_11?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Reads the entire stream and creates a list containing all the elements read. + </div> (Defined by <a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c60aa5eae4 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamWriter_1.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IAsyncStreamWriter(T) Interface</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IAsyncStreamWriter%3CT%3E interface" /><meta name="System.Keywords" content="Grpc.Core.IAsyncStreamWriter%3CT%3E interface" /><meta name="System.Keywords" content="IAsyncStreamWriter%3CT%3E interface, about IAsyncStreamWriter%3CT%3E interface" /><meta name="System.Keywords" content="IAsyncStreamWriter(Of T) interface" /><meta name="System.Keywords" content="Grpc.Core.IAsyncStreamWriter(Of T) interface" /><meta name="System.Keywords" content="IAsyncStreamWriter(Of T) interface, about IAsyncStreamWriter(Of T) interface" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IAsyncStreamWriter`1" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.IAsyncStreamWriter`1" /><meta name="Description" content="A writable stream of messages." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_IAsyncStreamWriter_1" /><meta name="guid" content="T_Grpc_Core_IAsyncStreamWriter_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Properties" tocid="Properties_T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Methods" tocid="Methods_T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IAsyncStreamWriter<span id="LST39EBAC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39EBAC_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST39EBAC_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39EBAC_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Interface</td></tr></table><span class="introStyle"></span><div class="summary"> + A writable stream of messages. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">interface</span> <span class="identifier">IAsyncStreamWriter</span><T> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Interface</span> <span class="identifier">IAsyncStreamWriter</span>(<span class="keyword">Of</span> T)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">public</span> <span class="keyword">interface class</span> <span class="identifier">IAsyncStreamWriter</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">IAsyncStreamWriter</span><'T> = <span class="keyword">interface</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd>The message type.</dd></dl></div><p>The <span class="selflink">IAsyncStreamWriter<span id="LST39EBAC_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39EBAC_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST39EBAC_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST39EBAC_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + 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. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm">WriteAsync</a></td><td><div class="summary"> + Writes a single asynchronously. Only one write can be pending at a time. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a5e3b47483 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_IClientStreamWriter_1.htm @@ -0,0 +1,27 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IClientStreamWriter(T) Interface</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IClientStreamWriter%3CT%3E interface" /><meta name="System.Keywords" content="Grpc.Core.IClientStreamWriter%3CT%3E interface" /><meta name="System.Keywords" content="IClientStreamWriter%3CT%3E interface, about IClientStreamWriter%3CT%3E interface" /><meta name="System.Keywords" content="IClientStreamWriter(Of T) interface" /><meta name="System.Keywords" content="Grpc.Core.IClientStreamWriter(Of T) interface" /><meta name="System.Keywords" content="IClientStreamWriter(Of T) interface, about IClientStreamWriter(Of T) interface" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IClientStreamWriter`1" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.IClientStreamWriter`1" /><meta name="Description" content="Client-side writable stream of messages with Close capability." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_IClientStreamWriter_1" /><meta name="guid" content="T_Grpc_Core_IClientStreamWriter_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Properties_T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Properties" tocid="Properties_T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Methods" tocid="Methods_T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IClientStreamWriter<span id="LSTCA452815_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCA452815_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTCA452815_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCA452815_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Interface</td></tr></table><span class="introStyle"></span><div class="summary"> + Client-side writable stream of messages with Close capability. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">interface</span> <span class="identifier">IClientStreamWriter</span><T> : <span class="identifier">IAsyncStreamWriter</span><T> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Interface</span> <span class="identifier">IClientStreamWriter</span>(<span class="keyword">Of</span> T) + <span class="keyword">Inherits</span> <span class="identifier">IAsyncStreamWriter</span>(<span class="keyword">Of</span> T)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">public</span> <span class="keyword">interface class</span> <span class="identifier">IClientStreamWriter</span> : <span class="identifier">IAsyncStreamWriter</span><T></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">IClientStreamWriter</span><'T> = + <span class="keyword">interface</span> + <span class="keyword">interface</span> <span class="identifier">IAsyncStreamWriter</span><'T> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd>The message type.</dd></dl></div><p>The <span class="selflink">IClientStreamWriter<span id="LSTCA452815_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCA452815_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTCA452815_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCA452815_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + 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. + </div> (Inherited from <a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LSTCA452815_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCA452815_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTCA452815_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCA452815_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm">CompleteAsync</a></td><td><div class="summary"> + Completes/closes the stream. Can only be called once there is no pending write. No writes should follow calling this. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm">WriteAsync</a></td><td><div class="summary"> + Writes a single asynchronously. Only one write can be pending at a time. + </div> (Inherited from <a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LSTCA452815_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCA452815_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTCA452815_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCA452815_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Extension Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubextension.gif" alt="Public Extension Method" title="Public Extension Method" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm">WriteAllAsync<span id="LSTCA452815_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCA452815_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LSTCA452815_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCA452815_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Writes all elements from given enumerable to the stream. + Completes the stream afterwards unless close = false. + </div> (Defined by <a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..1a6a4f7697 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_IHasWriteOptions.htm @@ -0,0 +1,7 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IHasWriteOptions Interface</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IHasWriteOptions interface" /><meta name="System.Keywords" content="Grpc.Core.IHasWriteOptions interface" /><meta name="System.Keywords" content="IHasWriteOptions interface, about IHasWriteOptions interface" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IHasWriteOptions" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.IHasWriteOptions" /><meta name="Description" content="Allows sharing write options between ServerCallContext and other objects." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_IHasWriteOptions" /><meta name="guid" content="T_Grpc_Core_IHasWriteOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Properties" tocid="Properties_T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Properties</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IHasWriteOptions Interface</td></tr></table><span class="introStyle"></span><div class="summary"> + Allows sharing write options between ServerCallContext and other objects. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">interface</span> <span class="identifier">IHasWriteOptions</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Interface</span> <span class="identifier">IHasWriteOptions</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">interface class</span> <span class="identifier">IHasWriteOptions</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">IHasWriteOptions</span> = <span class="keyword">interface</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><p>The <span class="selflink">IHasWriteOptions</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IHasWriteOptions_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + Gets or sets the write options. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID3RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c76e049dce --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_IMethod.htm @@ -0,0 +1,14 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IMethod Interface</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IMethod interface" /><meta name="System.Keywords" content="Grpc.Core.IMethod interface" /><meta name="System.Keywords" content="IMethod interface, about IMethod interface" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IMethod" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.IMethod" /><meta name="Description" content="A non-generic representation of a remote method." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_IMethod" /><meta name="guid" content="T_Grpc_Core_IMethod" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_IMethod.htm" title="IMethod Properties" tocid="Properties_T_Grpc_Core_IMethod">IMethod Properties</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IMethod Interface</td></tr></table><span class="introStyle"></span><div class="summary"> + A non-generic representation of a remote method. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">interface</span> <span class="identifier">IMethod</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Interface</span> <span class="identifier">IMethod</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">interface class</span> <span class="identifier">IMethod</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">IMethod</span> = <span class="keyword">interface</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><p>The <span class="selflink">IMethod</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IMethod_FullName.htm">FullName</a></td><td><div class="summary"> + Gets the fully qualified name of the method. On the server side, methods are dispatched + based on this name. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IMethod_Name.htm">Name</a></td><td><div class="summary"> + Gets the unqualified name of the method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IMethod_ServiceName.htm">ServiceName</a></td><td><div class="summary"> + Gets the name of the service to which this method belongs. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IMethod_Type.htm">Type</a></td><td><div class="summary"> + Gets the type of the method. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID3RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..c4a194bcbf --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_IServerStreamWriter_1.htm @@ -0,0 +1,24 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>IServerStreamWriter(T) Interface</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="IServerStreamWriter%3CT%3E interface" /><meta name="System.Keywords" content="Grpc.Core.IServerStreamWriter%3CT%3E interface" /><meta name="System.Keywords" content="IServerStreamWriter%3CT%3E interface, about IServerStreamWriter%3CT%3E interface" /><meta name="System.Keywords" content="IServerStreamWriter(Of T) interface" /><meta name="System.Keywords" content="Grpc.Core.IServerStreamWriter(Of T) interface" /><meta name="System.Keywords" content="IServerStreamWriter(Of T) interface, about IServerStreamWriter(Of T) interface" /><meta name="Microsoft.Help.F1" content="Grpc.Core.IServerStreamWriter`1" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.IServerStreamWriter`1" /><meta name="Description" content="A writable stream of messages that is used in server-side handlers." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_IServerStreamWriter_1" /><meta name="guid" content="T_Grpc_Core_IServerStreamWriter_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Properties_T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Properties" tocid="Properties_T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Methods" tocid="Methods_T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">IServerStreamWriter<span id="LST4FC9CC99_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FC9CC99_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LST4FC9CC99_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FC9CC99_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Interface</td></tr></table><span class="introStyle"></span><div class="summary"> + A writable stream of messages that is used in server-side handlers. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">interface</span> <span class="identifier">IServerStreamWriter</span><T> : <span class="identifier">IAsyncStreamWriter</span><T> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Interface</span> <span class="identifier">IServerStreamWriter</span>(<span class="keyword">Of</span> T) + <span class="keyword">Inherits</span> <span class="identifier">IAsyncStreamWriter</span>(<span class="keyword">Of</span> T)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">public</span> <span class="keyword">interface class</span> <span class="identifier">IServerStreamWriter</span> : <span class="identifier">IAsyncStreamWriter</span><T></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">IServerStreamWriter</span><'T> = + <span class="keyword">interface</span> + <span class="keyword">interface</span> <span class="identifier">IAsyncStreamWriter</span><'T> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <typeparam name="T"/> documentation for "T:Grpc.Core.IServerStreamWriter`1"]</p></dd></dl></div><p>The <span class="selflink">IServerStreamWriter<span id="LST4FC9CC99_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FC9CC99_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST4FC9CC99_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FC9CC99_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + 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. + </div> (Inherited from <a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST4FC9CC99_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FC9CC99_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST4FC9CC99_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FC9CC99_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm">WriteAsync</a></td><td><div class="summary"> + Writes a single asynchronously. Only one write can be pending at a time. + </div> (Inherited from <a href="T_Grpc_Core_IAsyncStreamWriter_1.htm">IAsyncStreamWriter<span id="LST4FC9CC99_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FC9CC99_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LST4FC9CC99_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FC9CC99_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Extension Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubextension.gif" alt="Public Extension Method" title="Public Extension Method" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm">WriteAllAsync<span id="LST4FC9CC99_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FC9CC99_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST4FC9CC99_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FC9CC99_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Writes all elements from given enumerable to the stream. + </div> (Defined by <a href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm">AsyncStreamExtensions</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..9cd008f7f1 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_KeyCertificatePair.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>KeyCertificatePair Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="KeyCertificatePair class" /><meta name="System.Keywords" content="Grpc.Core.KeyCertificatePair class" /><meta name="System.Keywords" content="KeyCertificatePair class, about KeyCertificatePair class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.KeyCertificatePair" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.KeyCertificatePair" /><meta name="Description" content="Key certificate pair (in PEM encoding)." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_KeyCertificatePair" /><meta name="guid" content="T_Grpc_Core_KeyCertificatePair" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_KeyCertificatePair__ctor.htm" title="KeyCertificatePair Constructor " tocid="M_Grpc_Core_KeyCertificatePair__ctor">KeyCertificatePair Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Properties" tocid="Properties_T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Methods" tocid="Methods_T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">KeyCertificatePair Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Key certificate pair (in PEM encoding). + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTDF403743_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDF403743_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LSTDF403743_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDF403743_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>KeyCertificatePair</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">sealed</span> <span class="keyword">class</span> <span class="identifier">KeyCertificatePair</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">KeyCertificatePair</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">KeyCertificatePair</span> <span class="keyword">sealed</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">KeyCertificatePair</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">KeyCertificatePair</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_KeyCertificatePair__ctor.htm">KeyCertificatePair</a></td><td><div class="summary"> + Creates a new certificate chain - private key pair. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_KeyCertificatePair_CertificateChain.htm">CertificateChain</a></td><td><div class="summary"> + PEM encoded certificate chain. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_KeyCertificatePair_PrivateKey.htm">PrivateKey</a></td><td><div class="summary"> + PEM encoded private key. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID6RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..469d5dba42 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Logging_ConsoleLogger.htm @@ -0,0 +1,11 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ConsoleLogger Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ConsoleLogger class" /><meta name="System.Keywords" content="Grpc.Core.Logging.ConsoleLogger class" /><meta name="System.Keywords" content="ConsoleLogger class, about ConsoleLogger class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ConsoleLogger" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Logging.ConsoleLogger" /><meta name="Description" content="Logger that logs to System.Console." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="T_Grpc_Core_Logging_ConsoleLogger" /><meta name="guid" content="T_Grpc_Core_Logging_ConsoleLogger" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Class" tocid="T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Logging_ConsoleLogger__ctor.htm" title="ConsoleLogger Constructor " tocid="M_Grpc_Core_Logging_ConsoleLogger__ctor">ConsoleLogger Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" title="ConsoleLogger Methods" tocid="Methods_T_Grpc_Core_Logging_ConsoleLogger">ConsoleLogger Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ConsoleLogger Class</td></tr></table><span class="introStyle"></span><div class="summary">Logger that logs to System.Console.</div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST72F258DD_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core.Logging<span id="LST72F258DD_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ConsoleLogger</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">ConsoleLogger</span> : <span class="identifier">ILogger</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">ConsoleLogger</span> + <span class="keyword">Implements</span> <span class="identifier">ILogger</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ConsoleLogger</span> : <span class="identifier">ILogger</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ConsoleLogger</span> = + <span class="keyword">class</span> + <span class="keyword">interface</span> <span class="identifier">ILogger</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">ConsoleLogger</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger__ctor.htm">ConsoleLogger</a></td><td><div class="summary">Creates a console logger not associated to any specific type.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Debug.htm">Debug</a></td><td><div class="summary">Logs a message with severity Debug.</div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm">Error(String, <span id="LST72F258DD_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_2?cpp=array<");</script>Object<span id="LST72F258DD_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_3?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Error.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Error.htm">Error(Exception, String, <span id="LST72F258DD_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_4?cpp=array<");</script>Object<span id="LST72F258DD_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_5?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Error.</div></td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm">ForType<span id="LST72F258DD_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST72F258DD_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Returns a logger associated with the specified type. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Info.htm">Info</a></td><td><div class="summary">Logs a message with severity Info.</div></td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm">Warning(String, <span id="LST72F258DD_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_8?cpp=array<");</script>Object<span id="LST72F258DD_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_9?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Warning.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ConsoleLogger_Warning.htm">Warning(Exception, String, <span id="LST72F258DD_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_10?cpp=array<");</script>Object<span id="LST72F258DD_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST72F258DD_11?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Warning.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..16971f8dda --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Logging_ILogger.htm @@ -0,0 +1,3 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ILogger Interface</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ILogger interface" /><meta name="System.Keywords" content="Grpc.Core.Logging.ILogger interface" /><meta name="System.Keywords" content="ILogger interface, about ILogger interface" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Logging.ILogger" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Logging.ILogger" /><meta name="Description" content="For logging messages." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Logging" /><meta name="file" content="T_Grpc_Core_Logging_ILogger" /><meta name="guid" content="T_Grpc_Core_Logging_ILogger" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Logging.htm" title="Grpc.Core.Logging" tocid="N_Grpc_Core_Logging">Grpc.Core.Logging</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Logging_ILogger.htm" title="ILogger Interface" tocid="T_Grpc_Core_Logging_ILogger">ILogger Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Logging_ILogger.htm" title="ILogger Methods" tocid="Methods_T_Grpc_Core_Logging_ILogger">ILogger Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ILogger Interface</td></tr></table><span class="introStyle"></span><div class="summary">For logging messages.</div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">interface</span> <span class="identifier">ILogger</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Interface</span> <span class="identifier">ILogger</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">interface class</span> <span class="identifier">ILogger</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ILogger</span> = <span class="keyword">interface</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><p>The <span class="selflink">ILogger</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Debug.htm">Debug</a></td><td><div class="summary">Logs a message with severity Debug.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Error_1.htm">Error(String, <span id="LST7965D647_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7965D647_0?cpp=array<");</script>Object<span id="LST7965D647_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7965D647_1?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Error.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Error.htm">Error(Exception, String, <span id="LST7965D647_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7965D647_2?cpp=array<");</script>Object<span id="LST7965D647_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7965D647_3?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Error.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_ForType__1.htm">ForType<span id="LST7965D647_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7965D647_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST7965D647_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7965D647_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary">Returns a logger associated with the specified type.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Info.htm">Info</a></td><td><div class="summary">Logs a message with severity Info.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Warning_1.htm">Warning(String, <span id="LST7965D647_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7965D647_6?cpp=array<");</script>Object<span id="LST7965D647_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7965D647_7?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message with severity Warning.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Logging_ILogger_Warning.htm">Warning(Exception, String, <span id="LST7965D647_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7965D647_8?cpp=array<");</script>Object<span id="LST7965D647_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7965D647_9?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary">Logs a message and an associated exception with severity Warning.</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID3RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core_Logging.htm">Grpc.Core.Logging Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..20aaf66d94 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Marshaller_1.htm @@ -0,0 +1,18 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Marshaller(T) Structure</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Marshaller%3CT%3E structure" /><meta name="System.Keywords" content="Grpc.Core.Marshaller%3CT%3E structure" /><meta name="System.Keywords" content="Marshaller%3CT%3E structure, about Marshaller%3CT%3E structure" /><meta name="System.Keywords" content="Marshaller(Of T) structure" /><meta name="System.Keywords" content="Grpc.Core.Marshaller(Of T) structure" /><meta name="System.Keywords" content="Marshaller(Of T) structure, about Marshaller(Of T) structure" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Marshaller`1" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Marshaller`1" /><meta name="Description" content="Encapsulates the logic for serializing and deserializing messages." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Marshaller_1" /><meta name="guid" content="T_Grpc_Core_Marshaller_1" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Marshaller_1__ctor.htm" title="Marshaller(T) Constructor " tocid="M_Grpc_Core_Marshaller_1__ctor">Marshaller(T) Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Properties" tocid="Properties_T_Grpc_Core_Marshaller_1">Marshaller(T) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Methods" tocid="Methods_T_Grpc_Core_Marshaller_1">Marshaller(T) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Marshaller<span id="LSTEAB4093D_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEAB4093D_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">T</span><span id="LSTEAB4093D_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEAB4093D_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Structure</td></tr></table><span class="introStyle"></span><div class="summary"> + Encapsulates the logic for serializing and deserializing messages. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">struct</span> <span class="identifier">Marshaller</span><T> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Structure</span> <span class="identifier">Marshaller</span>(<span class="keyword">Of</span> T)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> T> +<span class="keyword">public</span> <span class="keyword">value class</span> <span class="identifier">Marshaller</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">Marshaller</span><'T> = <span class="keyword">struct</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">T</span></dt><dd><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">[Missing <typeparam name="T"/> documentation for "T:Grpc.Core.Marshaller`1"]</p></dd></dl></div><p>The <span class="selflink">Marshaller<span id="LSTEAB4093D_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEAB4093D_2?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTEAB4093D_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEAB4093D_3?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Marshaller_1__ctor.htm">Marshaller<span id="LSTEAB4093D_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEAB4093D_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>T<span id="LSTEAB4093D_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTEAB4093D_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Initializes a new marshaller. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Marshaller_1_Deserializer.htm">Deserializer</a></td><td><div class="summary"> + Gets the deserializer function. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Marshaller_1_Serializer.htm">Serializer</a></td><td><div class="summary"> + Gets the serializer function. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2dts52z7" target="_blank">Equals</a></td><td><div class="summary">Indicates whether this instance and a specified object are equal.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/y3509fc2" target="_blank">GetHashCode</a></td><td><div class="summary">Returns the hash code for this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/wb77sz3h" target="_blank">ToString</a></td><td><div class="summary">Returns the fully qualified type name of this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b79baad914 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Marshallers.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Marshallers Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Marshallers class" /><meta name="System.Keywords" content="Grpc.Core.Marshallers class" /><meta name="System.Keywords" content="Marshallers class, about Marshallers class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Marshallers" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Marshallers" /><meta name="Description" content="Utilities for creating marshallers." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Marshallers" /><meta name="guid" content="T_Grpc_Core_Marshallers" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Marshallers.htm" title="Marshallers Properties" tocid="Properties_T_Grpc_Core_Marshallers">Marshallers Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Marshallers.htm" title="Marshallers Methods" tocid="Methods_T_Grpc_Core_Marshallers">Marshallers Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Marshallers Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Utilities for creating marshallers. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST1C687B3B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1C687B3B_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST1C687B3B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1C687B3B_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Marshallers</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class</span> <span class="identifier">Marshallers</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">Marshallers</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">Marshallers</span> <span class="keyword">abstract</span> <span class="keyword">sealed</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">AbstractClassAttribute</span>>] +[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">Marshallers</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">Marshallers</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="P_Grpc_Core_Marshallers_StringMarshaller.htm">StringMarshaller</a></td><td><div class="summary"> + Returns a marshaller for <span class="code">string</span> type. This is useful for testing. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Marshallers_Create__1.htm">Create<span id="LST1C687B3B_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1C687B3B_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST1C687B3B_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST1C687B3B_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Creates a marshaller from specified serializer and deserializer. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..d457046129 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Metadata.htm @@ -0,0 +1,29 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Metadata class" /><meta name="System.Keywords" content="Grpc.Core.Metadata class" /><meta name="System.Keywords" content="Metadata class, about Metadata class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Metadata" /><meta name="Description" content="A collection of metadata entries that can be exchanged during a call. gRPC supports these types of metadata: Request headersare sent by the client at the beginning of a remote call before any request messages are sent." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Metadata" /><meta name="guid" content="T_Grpc_Core_Metadata" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Metadata__ctor.htm" title="Metadata Constructor " tocid="M_Grpc_Core_Metadata__ctor">Metadata Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata.htm" title="Metadata Properties" tocid="Properties_T_Grpc_Core_Metadata">Metadata Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata.htm" title="Metadata Methods" tocid="Methods_T_Grpc_Core_Metadata">Metadata Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_Metadata.htm" title="Metadata Fields" tocid="Fields_T_Grpc_Core_Metadata">Metadata Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata Class</td></tr></table><span class="introStyle"></span><div class="summary"> + A collection of metadata entries that can be exchanged during a call. + gRPC supports these types of metadata: + <ul><li><strong>Request headers</strong> - are sent by the client at the beginning of a remote call before any request messages are sent.</li><li><strong>Response headers</strong> - are sent by the server at the beginning of a remote call handler before any response messages are sent.</li><li><strong>Response trailers</strong> - are sent by the server at the end of a remote call along with resulting call status.</li></ul></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST821E84B4_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST821E84B4_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Metadata</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">sealed</span> <span class="keyword">class</span> <span class="identifier">Metadata</span> : <span class="identifier">IList</span><<span class="identifier">Metadata<span id="LST821E84B4_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>>, + <span class="identifier">ICollection</span><<span class="identifier">Metadata<span id="LST821E84B4_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>>, <span class="identifier">IEnumerable</span><<span class="identifier">Metadata<span id="LST821E84B4_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>>, <span class="identifier">IEnumerable</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">Metadata</span> + <span class="keyword">Implements</span> <span class="identifier">IList</span>(<span class="keyword">Of</span> <span class="identifier">Metadata<span id="LST821E84B4_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>), <span class="identifier">ICollection</span>(<span class="keyword">Of</span> <span class="identifier">Metadata<span id="LST821E84B4_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>), + <span class="identifier">IEnumerable</span>(<span class="keyword">Of</span> <span class="identifier">Metadata<span id="LST821E84B4_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>), <span class="identifier">IEnumerable</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">Metadata</span> <span class="keyword">sealed</span> : <span class="identifier">IList</span><<span class="identifier">Metadata<span id="LST821E84B4_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>>, + <span class="identifier">ICollection</span><<span class="identifier">Metadata<span id="LST821E84B4_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_9?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>>, <span class="identifier">IEnumerable</span><<span class="identifier">Metadata<span id="LST821E84B4_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_10?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>>, <span class="identifier">IEnumerable</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">Metadata</span> = + <span class="keyword">class</span> + <span class="keyword">interface</span> <span class="identifier">IList</span><<span class="identifier">Metadata<span id="LST821E84B4_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_11?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>> + <span class="keyword">interface</span> <span class="identifier">ICollection</span><<span class="identifier">Metadata<span id="LST821E84B4_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_12?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>> + <span class="keyword">interface</span> <span class="identifier">IEnumerable</span><<span class="identifier">Metadata<span id="LST821E84B4_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_13?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>> + <span class="keyword">interface</span> <span class="identifier">IEnumerable</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">Metadata</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata__ctor.htm">Metadata</a></td><td><div class="summary"> + Initializes a new instance of <span class="code">Metadata</span>. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Count.htm">Count</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_IsReadOnly.htm">IsReadOnly</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Item.htm">Item</a></td><td /></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Add.htm">Add(Metadata<span id="LST821E84B4_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_14?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry)</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Add_1.htm">Add(String, <span id="LST821E84B4_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_15?cpp=array<");</script>Byte<span id="LST821E84B4_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST821E84B4_16?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Add_2.htm">Add(String, String)</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Clear.htm">Clear</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Contains.htm">Contains</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_CopyTo.htm">CopyTo</a></td><td /></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_GetEnumerator.htm">GetEnumerator</a></td><td /></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_IndexOf.htm">IndexOf</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Insert.htm">Insert</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Remove.htm">Remove</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_RemoveAt.htm">RemoveAt</a></td><td /></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID6RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm">BinaryHeaderSuffix</a></td><td><div class="summary"> + All binary headers should have this suffix. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_Metadata_Empty.htm">Empty</a></td><td><div class="summary"> + An read-only instance of metadata containing no entries. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID7RB')" onkeypress="SectionExpandCollapse_CheckKey('ID7RB', event)" tabindex="0"><img id="ID7RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID7RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b7e276ca2e --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Metadata_Entry.htm @@ -0,0 +1,24 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Metadata.Entry Structure</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Metadata.Entry structure" /><meta name="System.Keywords" content="Grpc.Core.Metadata.Entry structure" /><meta name="System.Keywords" content="Metadata.Entry structure, about Metadata.Entry structure" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Metadata.Entry" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Metadata.Entry" /><meta name="Description" content="Metadata entry" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Metadata_Entry" /><meta name="guid" content="T_Grpc_Core_Metadata_Entry" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_Metadata_Entry__ctor.htm" title="Entry Constructor " tocid="Overload_Grpc_Core_Metadata_Entry__ctor">Entry Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Metadata_Entry.htm" title="Entry Properties" tocid="Properties_T_Grpc_Core_Metadata_Entry">Entry Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Metadata_Entry.htm" title="Entry Methods" tocid="Methods_T_Grpc_Core_Metadata_Entry">Entry Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Metadata<span id="LST8E39C28A_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E39C28A_0?cpp=::|nu=.");</script>Entry Structure</td></tr></table><span class="introStyle"></span><div class="summary"> + Metadata entry + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">struct</span> <span class="identifier">Entry</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Structure</span> <span class="identifier">Entry</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">value class</span> <span class="identifier">Entry</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">Entry</span> = <span class="keyword">struct</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><p>The <span class="selflink">Metadata<span id="LST8E39C28A_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E39C28A_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Entry__ctor.htm">Metadata<span id="LST8E39C28A_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E39C28A_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry(String, <span id="LST8E39C28A_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E39C28A_3?cpp=array<");</script>Byte<span id="LST8E39C28A_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E39C28A_4?cpp=>|cs=[]|vb=()|nu=[]|fs=[]");</script>)</a></td><td><div class="summary"> + Initializes a new instance of the <span class="selflink">Metadata<span id="LST8E39C28A_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E39C28A_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> struct with a binary value. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Entry__ctor_1.htm">Metadata<span id="LST8E39C28A_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E39C28A_6?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry(String, String)</a></td><td><div class="summary"> + Initializes a new instance of the <span class="selflink">Metadata<span id="LST8E39C28A_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E39C28A_7?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span> struct holding an ASCII value. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Entry_IsBinary.htm">IsBinary</a></td><td><div class="summary"> + Returns <span class="code">true</span> if this entry is a binary-value entry. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Entry_Key.htm">Key</a></td><td><div class="summary"> + Gets the metadata entry key. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Entry_Value.htm">Value</a></td><td><div class="summary"> + Gets the string value of this metadata entry. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Metadata_Entry_ValueBytes.htm">ValueBytes</a></td><td><div class="summary"> + Gets the binary value of this metadata entry. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2dts52z7" target="_blank">Equals</a></td><td><div class="summary">Indicates whether this instance and a specified object are equal.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/y3509fc2" target="_blank">GetHashCode</a></td><td><div class="summary">Returns the hash code for this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Metadata_Entry_ToString.htm">ToString</a></td><td><div class="summary"> + Returns a <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a> that represents the current <span class="selflink">Metadata<span id="LST8E39C28A_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E39C28A_8?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Entry</span>. + </div> (Overrides <a href="http://msdn2.microsoft.com/en-us/library/wb77sz3h" target="_blank">ValueType<span id="LST8E39C28A_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E39C28A_9?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ToString<span id="LST8E39C28A_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST8E39C28A_10?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..264622b1b6 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_MethodType.htm @@ -0,0 +1,5 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>MethodType Enumeration</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="MethodType enumeration" /><meta name="System.Keywords" content="Grpc.Core.MethodType enumeration" /><meta name="System.Keywords" content="Unary enumeration member" /><meta name="System.Keywords" content="ClientStreaming enumeration member" /><meta name="System.Keywords" content="ServerStreaming enumeration member" /><meta name="System.Keywords" content="DuplexStreaming enumeration member" /><meta name="Microsoft.Help.F1" content="Grpc.Core.MethodType" /><meta name="Microsoft.Help.F1" content="Grpc.Core.MethodType.Unary" /><meta name="Microsoft.Help.F1" content="Grpc.Core.MethodType.ClientStreaming" /><meta name="Microsoft.Help.F1" content="Grpc.Core.MethodType.ServerStreaming" /><meta name="Microsoft.Help.F1" content="Grpc.Core.MethodType.DuplexStreaming" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.MethodType" /><meta name="Description" content="Method types supported by gRPC." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_MethodType" /><meta name="guid" content="T_Grpc_Core_MethodType" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">MethodType Enumeration</td></tr></table><span class="introStyle"></span><div class="summary"> + Method types supported by gRPC. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">enum</span> <span class="identifier">MethodType</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Enumeration</span> <span class="identifier">MethodType</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">enum class</span> <span class="identifier">MethodType</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">MethodType</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div id="enumerationSection"><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Members</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Member name</th><th>Value</th><th>Description</th></tr><tr><td /><td target="F:Grpc.Core.MethodType.Unary"><span class="selflink">Unary</span></td><td>0</td><td>Single request sent from client, single response received from server.</td></tr><tr><td /><td target="F:Grpc.Core.MethodType.ClientStreaming"><span class="selflink">ClientStreaming</span></td><td>1</td><td>Stream of request sent from client, single response received from server.</td></tr><tr><td /><td target="F:Grpc.Core.MethodType.ServerStreaming"><span class="selflink">ServerStreaming</span></td><td>2</td><td>Single request sent from client, stream of responses received from server.</td></tr><tr><td /><td target="F:Grpc.Core.MethodType.DuplexStreaming"><span class="selflink">DuplexStreaming</span></td><td>3</td><td>Both server and client can stream arbitrary number of requests and responses simultaneously.</td></tr></table></div></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID3RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..054329f4bb --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Method_2.htm @@ -0,0 +1,30 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Method(TRequest, TResponse) Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E class" /><meta name="System.Keywords" content="Grpc.Core.Method%3CTRequest%2C TResponse%3E class" /><meta name="System.Keywords" content="Method%3CTRequest%2C TResponse%3E class, about Method%3CTRequest%2C TResponse%3E class" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse) class" /><meta name="System.Keywords" content="Grpc.Core.Method(Of TRequest%2C TResponse) class" /><meta name="System.Keywords" content="Method(Of TRequest%2C TResponse) class, about Method(Of TRequest%2C TResponse) class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Method`2" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Method`2" /><meta name="Description" content="A description of a remote method." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Method_2" /><meta name="guid" content="T_Grpc_Core_Method_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Method_2__ctor.htm" title="Method(TRequest, TResponse) Constructor " tocid="M_Grpc_Core_Method_2__ctor">Method(TRequest, TResponse) Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Properties" tocid="Properties_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Methods" tocid="Methods_T_Grpc_Core_Method_2">Method(TRequest, TResponse) Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Method<span id="LSTE51AEB66_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE51AEB66_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTE51AEB66_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE51AEB66_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Class</td></tr></table><span class="introStyle"></span><div class="summary"> + A description of a remote method. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTE51AEB66_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE51AEB66_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LSTE51AEB66_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE51AEB66_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Method<span id="LSTE51AEB66_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE51AEB66_4?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTE51AEB66_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE51AEB66_5?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Method</span><TRequest, TResponse> : <span class="identifier">IMethod</span> +</pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">Method</span>(<span class="keyword">Of</span> TRequest, TResponse) + <span class="keyword">Implements</span> <span class="identifier">IMethod</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">Method</span> : <span class="identifier">IMethod</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">Method</span><'TRequest, 'TResponse> = + <span class="keyword">class</span> + <span class="keyword">interface</span> <span class="identifier">IMethod</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Request message type for this method.</dd><dt><span class="parameter">TResponse</span></dt><dd>Response message type for this method.</dd></dl></div><p>The <span class="selflink">Method<span id="LSTE51AEB66_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE51AEB66_6?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTE51AEB66_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE51AEB66_7?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Method_2__ctor.htm">Method<span id="LSTE51AEB66_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE51AEB66_8?cs=<|vb=(Of |cpp=<|nu=(|fs=<'");</script>TRequest, TResponse<span id="LSTE51AEB66_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE51AEB66_9?cs=>|vb=)|cpp=>|nu=)|fs=>");</script></a></td><td><div class="summary"> + Initializes a new instance of the <span class="code">Method</span> class. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_FullName.htm">FullName</a></td><td><div class="summary"> + Gets the fully qualified name of the method. On the server side, methods are dispatched + based on this name. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_Name.htm">Name</a></td><td><div class="summary"> + Gets the unqualified name of the method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_RequestMarshaller.htm">RequestMarshaller</a></td><td><div class="summary"> + Gets the marshaller used for request messages. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_ResponseMarshaller.htm">ResponseMarshaller</a></td><td><div class="summary"> + Gets the marshaller used for response messages. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_ServiceName.htm">ServiceName</a></td><td><div class="summary"> + Gets the name of the service to which this method belongs. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Method_2_Type.htm">Type</a></td><td><div class="summary"> + Gets the type of the method. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID6RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..497c69ddbc --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_RpcException.htm @@ -0,0 +1,21 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RpcException Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RpcException class" /><meta name="System.Keywords" content="Grpc.Core.RpcException class" /><meta name="System.Keywords" content="RpcException class, about RpcException class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.RpcException" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.RpcException" /><meta name="Description" content="Thrown when remote procedure call fails. Every RpcException is associated with a resulting of the call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_RpcException" /><meta name="guid" content="T_Grpc_Core_RpcException" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_RpcException__ctor.htm" title="RpcException Constructor " tocid="Overload_Grpc_Core_RpcException__ctor">RpcException Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_RpcException.htm" title="RpcException Properties" tocid="Properties_T_Grpc_Core_RpcException">RpcException Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_RpcException.htm" title="RpcException Methods" tocid="Methods_T_Grpc_Core_RpcException">RpcException Methods</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Events_T_Grpc_Core_RpcException.htm" title="RpcException Events" tocid="Events_T_Grpc_Core_RpcException">RpcException Events</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">RpcException Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Thrown when remote procedure call fails. Every <span class="code">RpcException</span> is associated with a resulting <a href="P_Grpc_Core_RpcException_Status.htm">Status</a> of the call. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST4FAB4D45_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FAB4D45_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">System<span id="LST4FAB4D45_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FAB4D45_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Exception</a><br />    <span class="selflink">Grpc.Core<span id="LST4FAB4D45_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4FAB4D45_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>RpcException</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">RpcException</span> : <span class="identifier">Exception</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">RpcException</span> + <span class="keyword">Inherits</span> <span class="identifier">Exception</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">RpcException</span> : <span class="keyword">public</span> <span class="identifier">Exception</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">RpcException</span> = + <span class="keyword">class</span> + <span class="keyword">inherit</span> <span class="identifier">Exception</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">RpcException</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_RpcException__ctor.htm">RpcException(Status)</a></td><td><div class="summary"> + Creates a new <span class="code">RpcException</span> associated with given status. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_RpcException__ctor_1.htm">RpcException(Status, String)</a></td><td><div class="summary"> + Creates a new <span class="code">RpcException</span> associated with given status and message. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2wyfbc48" target="_blank">Data</a></td><td><div class="summary">Gets a collection of key/value pairs that provide additional user-defined information about the exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/71tawy4s" target="_blank">HelpLink</a></td><td><div class="summary">Gets or sets a link to the help file associated with this exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/sh5cw61c" target="_blank">HResult</a></td><td><div class="summary">Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/902sca80" target="_blank">InnerException</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a> instance that caused the current exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/9btwf6wk" target="_blank">Message</a></td><td><div class="summary">Gets a message that describes the current exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/85weac5w" target="_blank">Source</a></td><td><div class="summary">Gets or sets the name of the application or the object that causes the error.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dxzhy005" target="_blank">StackTrace</a></td><td><div class="summary">Gets a string representation of the immediate frames on the call stack.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_RpcException_Status.htm">Status</a></td><td><div class="summary"> + Resulting status of the call. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2wchw354" target="_blank">TargetSite</a></td><td><div class="summary">Gets the method that throws the current exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/49kcee3b" target="_blank">GetBaseException</a></td><td><div class="summary">When overridden in a derived class, returns the <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a> that is the root cause of one or more subsequent exceptions.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/fwb1489e" target="_blank">GetObjectData</a></td><td><div class="summary">When overridden in a derived class, sets the <a href="http://msdn2.microsoft.com/en-us/library/a9b6042e" target="_blank">SerializationInfo</a> with information about the exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/44zb316t" target="_blank">GetType</a></td><td><div class="summary">Gets the runtime type of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/es4y6f7e" target="_blank">ToString</a></td><td><div class="summary">Creates and returns a string representation of the current exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Events</span></div><div id="ID6RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protevent.gif" alt="Protected event" title="Protected event" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/ee332915" target="_blank">SerializeObjectState</a></td><td><div class="summary">Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/c18k6c59" target="_blank">Exception</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID7RB')" onkeypress="SectionExpandCollapse_CheckKey('ID7RB', event)" tabindex="0"><img id="ID7RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID7RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a32eeceb24 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Server.htm @@ -0,0 +1,28 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Server class" /><meta name="System.Keywords" content="Grpc.Core.Server class" /><meta name="System.Keywords" content="Server class, about Server class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Server" /><meta name="Description" content="gRPC server. A single server can server arbitrary number of services and can listen on more than one ports." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Server" /><meta name="guid" content="T_Grpc_Core_Server" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Server__ctor.htm" title="Server Constructor " tocid="M_Grpc_Core_Server__ctor">Server Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Server.htm" title="Server Properties" tocid="Properties_T_Grpc_Core_Server">Server Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server.htm" title="Server Methods" tocid="Methods_T_Grpc_Core_Server">Server Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server Class</td></tr></table><span class="introStyle"></span><div class="summary"> + gRPC server. A single server can server arbitrary number of services and can listen on more than one ports. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST9A9C4CF6_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9A9C4CF6_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST9A9C4CF6_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST9A9C4CF6_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Server</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Server</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">Server</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">Server</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">Server</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">Server</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server__ctor.htm">Server</a></td><td><div class="summary"> + Create a new server. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Server_Ports.htm">Ports</a></td><td><div class="summary"> + Ports on which the server will listen once started. Register a port with this + server by adding its definition to this collection. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Server_Services.htm">Services</a></td><td><div class="summary"> + Services that will be exported by the server once started. Register a service with this + server by adding its definition to this collection. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Server_ShutdownTask.htm">ShutdownTask</a></td><td><div class="summary"> + To allow awaiting termination of the server. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_KillAsync.htm">KillAsync</a></td><td><div class="summary"> + Requests server shutdown while cancelling all the in-progress calls. + The returned task finishes when shutdown procedure is complete. + </div></td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ShutdownAsync.htm">ShutdownAsync</a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_Start.htm">Start</a></td><td><div class="summary"> + Starts the server. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID6RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0e0c4b4aed --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ServerCallContext.htm @@ -0,0 +1,17 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCallContext Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerCallContext class" /><meta name="System.Keywords" content="Grpc.Core.ServerCallContext class" /><meta name="System.Keywords" content="ServerCallContext class, about ServerCallContext class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCallContext" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ServerCallContext" /><meta name="Description" content="Context for a server-side call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ServerCallContext" /><meta name="guid" content="T_Grpc_Core_ServerCallContext" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Properties" tocid="Properties_T_Grpc_Core_ServerCallContext">ServerCallContext Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Methods" tocid="Methods_T_Grpc_Core_ServerCallContext">ServerCallContext Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCallContext Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Context for a server-side call. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST4688C34B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4688C34B_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST4688C34B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST4688C34B_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerCallContext</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">ServerCallContext</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">ServerCallContext</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ServerCallContext</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ServerCallContext</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">ServerCallContext</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_CancellationToken.htm">CancellationToken</a></td><td><div class="summary">Cancellation token signals when call is cancelled.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_Deadline.htm">Deadline</a></td><td><div class="summary">Deadline for this RPC.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_Host.htm">Host</a></td><td><div class="summary">Name of host called in this RPC.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_Method.htm">Method</a></td><td><div class="summary">Name of method called in this RPC.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_Peer.htm">Peer</a></td><td><div class="summary">Address of the remote endpoint in URI format.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_RequestHeaders.htm">RequestHeaders</a></td><td><div class="summary">Initial metadata sent by client.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_ResponseTrailers.htm">ResponseTrailers</a></td><td><div class="summary">Trailers to send back to client after RPC finishes.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_Status.htm">Status</a></td><td><div class="summary"> Status to send back to client after RPC finishes.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerCallContext_WriteOptions.htm">WriteOptions</a></td><td><div class="summary"> + 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. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm">CreatePropagationToken</a></td><td><div class="summary"> + Creates a propagation token to be used to propagate call context to a child call. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm">WriteResponseHeadersAsync</a></td><td><div class="summary"> + 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 <span class="code">WriteResponseHeadersAsync</span> haven't + been called yet. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..dab5f27320 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ServerCredentials.htm @@ -0,0 +1,13 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerCredentials Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerCredentials class" /><meta name="System.Keywords" content="Grpc.Core.ServerCredentials class" /><meta name="System.Keywords" content="ServerCredentials class, about ServerCredentials class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerCredentials" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ServerCredentials" /><meta name="Description" content="Server side credentials." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ServerCredentials" /><meta name="guid" content="T_Grpc_Core_ServerCredentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerCredentials__ctor.htm" title="ServerCredentials Constructor " tocid="M_Grpc_Core_ServerCredentials__ctor">ServerCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Properties" tocid="Properties_T_Grpc_Core_ServerCredentials">ServerCredentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Methods" tocid="Methods_T_Grpc_Core_ServerCredentials">ServerCredentials Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerCredentials Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Server side credentials. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTE6D34D84_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE6D34D84_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LSTE6D34D84_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE6D34D84_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerCredentials</span><br />    <a href="T_Grpc_Core_SslServerCredentials.htm">Grpc.Core<span id="LSTE6D34D84_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE6D34D84_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>SslServerCredentials</a><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keyword">class</span> <span class="identifier">ServerCredentials</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">MustInherit</span> <span class="keyword">Class</span> <span class="identifier">ServerCredentials</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ServerCredentials</span> <span class="keyword">abstract</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">AbstractClassAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">ServerCredentials</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">ServerCredentials</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="protected;declared;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="M_Grpc_Core_ServerCredentials__ctor.htm">ServerCredentials</a></td><td><div class="summary">Initializes a new instance of the <span class="selflink">ServerCredentials</span> class</div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="P_Grpc_Core_ServerCredentials_Insecure.htm">Insecure</a></td><td><div class="summary"> + Returns instance of credential that provides no security and + will result in creating an unsecure server port with no encryption whatsoever. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID6RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..21ddace1d0 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ServerPort.htm @@ -0,0 +1,16 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerPort Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerPort class" /><meta name="System.Keywords" content="Grpc.Core.ServerPort class" /><meta name="System.Keywords" content="ServerPort class, about ServerPort class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerPort" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ServerPort" /><meta name="Description" content="A port exposed by a server." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ServerPort" /><meta name="guid" content="T_Grpc_Core_ServerPort" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerPort__ctor.htm" title="ServerPort Constructor " tocid="M_Grpc_Core_ServerPort__ctor">ServerPort Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_ServerPort.htm" title="ServerPort Properties" tocid="Properties_T_Grpc_Core_ServerPort">ServerPort Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_ServerPort.htm" title="ServerPort Methods" tocid="Methods_T_Grpc_Core_ServerPort">ServerPort Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_ServerPort.htm" title="ServerPort Fields" tocid="Fields_T_Grpc_Core_ServerPort">ServerPort Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerPort Class</td></tr></table><span class="introStyle"></span><div class="summary"> + A port exposed by a server. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTDA23567B_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDA23567B_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LSTDA23567B_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTDA23567B_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPort</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">ServerPort</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">ServerPort</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ServerPort</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ServerPort</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">ServerPort</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerPort__ctor.htm">ServerPort</a></td><td><div class="summary"> + Creates a new port on which server should listen. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerPort_BoundPort.htm">BoundPort</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerPort_Credentials.htm">Credentials</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerPort_Host.htm">Host</a></td><td /></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_ServerPort_Port.htm">Port</a></td><td /></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID6RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_ServerPort_PickUnused.htm">PickUnused</a></td><td><div class="summary"> + 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 <a href="P_Grpc_Core_ServerPort_BoundPort.htm">BoundPort</a> property. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID7RB')" onkeypress="SectionExpandCollapse_CheckKey('ID7RB', event)" tabindex="0"><img id="ID7RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID7RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a673de01d1 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerServiceDefinition Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerServiceDefinition class" /><meta name="System.Keywords" content="Grpc.Core.ServerServiceDefinition class" /><meta name="System.Keywords" content="ServerServiceDefinition class, about ServerServiceDefinition class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerServiceDefinition" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ServerServiceDefinition" /><meta name="Description" content="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." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ServerServiceDefinition" /><meta name="guid" content="T_Grpc_Core_ServerServiceDefinition" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerServiceDefinition Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Mapping of method names to server call handlers. + Normally, the <span class="code">ServerServiceDefinition</span> objects will be created by the <span class="code">BindService</span> factory method + that is part of the autogenerated code for a protocol buffers service definition. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTCBD91EBC_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCBD91EBC_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LSTCBD91EBC_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTCBD91EBC_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerServiceDefinition</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">ServerServiceDefinition</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">ServerServiceDefinition</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ServerServiceDefinition</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ServerServiceDefinition</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">ServerServiceDefinition</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm">CreateBuilder</a></td><td><div class="summary"> + Creates a new builder object for <span class="code">ServerServiceDefinition</span>. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..442df368ef --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition_Builder.htm @@ -0,0 +1,19 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerServiceDefinition.Builder Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerServiceDefinition.Builder class" /><meta name="System.Keywords" content="Grpc.Core.ServerServiceDefinition.Builder class" /><meta name="System.Keywords" content="ServerServiceDefinition.Builder class, about ServerServiceDefinition.Builder class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerServiceDefinition.Builder" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ServerServiceDefinition.Builder" /><meta name="Description" content="Builder class for ." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ServerServiceDefinition_Builder" /><meta name="guid" content="T_Grpc_Core_ServerServiceDefinition_Builder" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm" title="ServerServiceDefinition.Builder Constructor " tocid="M_Grpc_Core_ServerServiceDefinition_Builder__ctor">ServerServiceDefinition.Builder Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="Builder Methods" tocid="Methods_T_Grpc_Core_ServerServiceDefinition_Builder">Builder Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerServiceDefinition<span id="LST77F651CD_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_0?cpp=::|nu=.");</script>Builder Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Builder class for <a href="T_Grpc_Core_ServerServiceDefinition.htm">ServerServiceDefinition</a>. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST77F651CD_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST77F651CD_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerServiceDefinition<span id="LST77F651CD_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Builder</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">Builder</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">Builder</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">Builder</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">ServerServiceDefinition<span id="LST77F651CD_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm">ServerServiceDefinition<span id="LST77F651CD_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Builder</a></td><td><div class="summary"> + Creates a new instance of builder. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm">AddMethod<span id="LST77F651CD_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LST77F651CD_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, ClientStreamingServerMethod<span id="LST77F651CD_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_10?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_11?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a client streaming method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm">AddMethod<span id="LST77F651CD_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_12?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_13?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LST77F651CD_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_14?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_15?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, DuplexStreamingServerMethod<span id="LST77F651CD_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_16?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_17?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a bidirectional streaming method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm">AddMethod<span id="LST77F651CD_18"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_18?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_19"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_19?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LST77F651CD_20"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_20?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_21"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_21?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, ServerStreamingServerMethod<span id="LST77F651CD_22"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_22?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_23"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_23?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a server streaming method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm">AddMethod<span id="LST77F651CD_24"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_24?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_25"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_25?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(Method<span id="LST77F651CD_26"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_26?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_27"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_27?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, UnaryServerMethod<span id="LST77F651CD_28"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_28?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>TRequest, TResponse<span id="LST77F651CD_29"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST77F651CD_29?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Adds a definitions for a single request - single response method. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm">Build</a></td><td><div class="summary"> + Creates an immutable <span class="code">ServerServiceDefinition</span> from this builder. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID5RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..cf02bb4f6b --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_ServerStreamingServerMethod_2.htm @@ -0,0 +1,25 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ServerStreamingServerMethod(TRequest, TResponse) Delegate</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="ServerStreamingServerMethod%3CTRequest%2C TResponse%3E delegate" /><meta name="System.Keywords" content="Grpc.Core.ServerStreamingServerMethod%3CTRequest%2C TResponse%3E delegate" /><meta name="System.Keywords" content="ServerStreamingServerMethod(Of TRequest%2C TResponse) delegate" /><meta name="System.Keywords" content="Grpc.Core.ServerStreamingServerMethod(Of TRequest%2C TResponse) delegate" /><meta name="Microsoft.Help.F1" content="Grpc.Core.ServerStreamingServerMethod`2" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.ServerStreamingServerMethod`2" /><meta name="Description" content="Server-side handler for server streaming call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_ServerStreamingServerMethod_2" /><meta name="guid" content="T_Grpc_Core_ServerStreamingServerMethod_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">ServerStreamingServerMethod<span id="LSTFFA58EA2_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFFA58EA2_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LSTFFA58EA2_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFFA58EA2_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Delegate</td></tr></table><span class="introStyle"></span><div class="summary"> + Server-side handler for server streaming call. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">delegate</span> <span class="identifier">Task</span> <span class="identifier">ServerStreamingServerMethod</span><TRequest, TResponse>( + TRequest <span class="parameter">request</span>, + <span class="identifier">IServerStreamWriter</span><TResponse> <span class="parameter">responseStream</span>, + <span class="identifier">ServerCallContext</span> <span class="parameter">context</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Delegate</span> <span class="keyword">Function</span> <span class="identifier">ServerStreamingServerMethod</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">request</span> <span class="keyword">As</span> TRequest, + <span class="parameter">responseStream</span> <span class="keyword">As</span> <span class="identifier">IServerStreamWriter</span>(<span class="keyword">Of</span> TResponse), + <span class="parameter">context</span> <span class="keyword">As</span> <span class="identifier">ServerCallContext</span> +) <span class="keyword">As</span> <span class="identifier">Task</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="keyword">public</span> <span class="keyword">delegate</span> <span class="identifier">Task</span>^ <span class="identifier">ServerStreamingServerMethod</span>( + TRequest <span class="parameter">request</span>, + <span class="identifier">IServerStreamWriter</span><TResponse>^ <span class="parameter">responseStream</span>, + <span class="identifier">ServerCallContext</span>^ <span class="parameter">context</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ServerStreamingServerMethod</span> = + <span class="keyword">delegate</span> <span class="keyword">of</span> + <span class="parameter">request</span> : 'TRequest * + <span class="parameter">responseStream</span> : <span class="identifier">IServerStreamWriter</span><'TResponse> * + <span class="parameter">context</span> : <span class="identifier">ServerCallContext</span> <span class="keyword">-></span> <span class="identifier">Task</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">request</span></dt><dd>Type: <span class="selflink"><span class="typeparameter">TRequest</span></span><br /></dd><dt><span class="parameter">responseStream</span></dt><dd>Type: <a href="T_Grpc_Core_IServerStreamWriter_1.htm">Grpc.Core<span id="LSTFFA58EA2_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFFA58EA2_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>IServerStreamWriter</a><span id="LSTFFA58EA2_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFFA58EA2_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LSTFFA58EA2_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFFA58EA2_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script><br /></dd><dt><span class="parameter">context</span></dt><dd>Type: <a href="T_Grpc_Core_ServerCallContext.htm">Grpc.Core<span id="LSTFFA58EA2_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTFFA58EA2_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerCallContext</a><br /></dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Request message type for this method.</dd><dt><span class="parameter">TResponse</span></dt><dd>Response message type for this method.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd235678" target="_blank">Task</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..08ab135f4d --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Server_ServerPortCollection.htm @@ -0,0 +1,19 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.ServerPortCollection Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Server.ServerPortCollection class" /><meta name="System.Keywords" content="Grpc.Core.Server.ServerPortCollection class" /><meta name="System.Keywords" content="Server.ServerPortCollection class, about Server.ServerPortCollection class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.ServerPortCollection" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Server.ServerPortCollection" /><meta name="Description" content="Collection of server ports." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Server_ServerPortCollection" /><meta name="guid" content="T_Grpc_Core_Server_ServerPortCollection" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server_ServerPortCollection.htm" title="ServerPortCollection Methods" tocid="Methods_T_Grpc_Core_Server_ServerPortCollection">ServerPortCollection Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LST92C92938_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92C92938_0?cpp=::|nu=.");</script>ServerPortCollection Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Collection of server ports. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST92C92938_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92C92938_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST92C92938_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92C92938_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Server<span id="LST92C92938_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92C92938_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">ServerPortCollection</span> : <span class="identifier">IEnumerable</span><<span class="identifier">ServerPort</span>>, + <span class="identifier">IEnumerable</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">ServerPortCollection</span> + <span class="keyword">Implements</span> <span class="identifier">IEnumerable</span>(<span class="keyword">Of</span> <span class="identifier">ServerPort</span>), <span class="identifier">IEnumerable</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ServerPortCollection</span> : <span class="identifier">IEnumerable</span><<span class="identifier">ServerPort</span>^>, + <span class="identifier">IEnumerable</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ServerPortCollection</span> = + <span class="keyword">class</span> + <span class="keyword">interface</span> <span class="identifier">IEnumerable</span><<span class="identifier">ServerPort</span>> + <span class="keyword">interface</span> <span class="identifier">IEnumerable</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">Server<span id="LST92C92938_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST92C92938_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerPortCollection</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServerPortCollection_Add.htm">Add(ServerPort)</a></td><td><div class="summary"> + Adds a new port on which server should listen. + Only call this before Start(). + <h4 class="subHeading">Return Value</h4>Type: <br />The port on which server will be listening.</div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServerPortCollection_Add_1.htm">Add(String, Int32, ServerCredentials)</a></td><td><div class="summary"> + Adds a new port on which server should listen. + <h4 class="subHeading">Return Value</h4>Type: <br />The port on which server will be listening.</div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm">GetEnumerator</a></td><td><div class="summary"> + Gets enumerator for this collection. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..054b16bc4d --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm @@ -0,0 +1,17 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Server.ServiceDefinitionCollection Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Server.ServiceDefinitionCollection class" /><meta name="System.Keywords" content="Grpc.Core.Server.ServiceDefinitionCollection class" /><meta name="System.Keywords" content="Server.ServiceDefinitionCollection class, about Server.ServiceDefinitionCollection class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Server.ServiceDefinitionCollection" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Server.ServiceDefinitionCollection" /><meta name="Description" content="Collection of service definitions." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Server_ServiceDefinitionCollection" /><meta name="guid" content="T_Grpc_Core_Server_ServiceDefinitionCollection" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="ServiceDefinitionCollection Methods" tocid="Methods_T_Grpc_Core_Server_ServiceDefinitionCollection">ServiceDefinitionCollection Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Server<span id="LST571DE916_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST571DE916_0?cpp=::|nu=.");</script>ServiceDefinitionCollection Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Collection of service definitions. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST571DE916_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST571DE916_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST571DE916_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST571DE916_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Server<span id="LST571DE916_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST571DE916_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">ServiceDefinitionCollection</span> : <span class="identifier">IEnumerable</span><<span class="identifier">ServerServiceDefinition</span>>, + <span class="identifier">IEnumerable</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">ServiceDefinitionCollection</span> + <span class="keyword">Implements</span> <span class="identifier">IEnumerable</span>(<span class="keyword">Of</span> <span class="identifier">ServerServiceDefinition</span>), <span class="identifier">IEnumerable</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">ServiceDefinitionCollection</span> : <span class="identifier">IEnumerable</span><<span class="identifier">ServerServiceDefinition</span>^>, + <span class="identifier">IEnumerable</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">ServiceDefinitionCollection</span> = + <span class="keyword">class</span> + <span class="keyword">interface</span> <span class="identifier">IEnumerable</span><<span class="identifier">ServerServiceDefinition</span>> + <span class="keyword">interface</span> <span class="identifier">IEnumerable</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">Server<span id="LST571DE916_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST571DE916_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServiceDefinitionCollection</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm">Add</a></td><td><div class="summary"> + Adds a service definition to the server. This is how you register + handlers for a service with the server. Only call this before Start(). + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm">GetEnumerator</a></td><td><div class="summary"> + Gets enumerator for this collection. + </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..84580d7864 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_SslCredentials.htm @@ -0,0 +1,28 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslCredentials Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="SslCredentials class" /><meta name="System.Keywords" content="Grpc.Core.SslCredentials class" /><meta name="System.Keywords" content="SslCredentials class, about SslCredentials class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslCredentials" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.SslCredentials" /><meta name="Description" content="Client-side SSL credentials." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_SslCredentials" /><meta name="guid" content="T_Grpc_Core_SslCredentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_SslCredentials__ctor.htm" title="SslCredentials Constructor " tocid="Overload_Grpc_Core_SslCredentials__ctor">SslCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_SslCredentials.htm" title="SslCredentials Properties" tocid="Properties_T_Grpc_Core_SslCredentials">SslCredentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_SslCredentials.htm" title="SslCredentials Methods" tocid="Methods_T_Grpc_Core_SslCredentials">SslCredentials Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslCredentials Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Client-side SSL credentials. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTBE8D4B43_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBE8D4B43_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <a href="T_Grpc_Core_Credentials.htm">Grpc.Core<span id="LSTBE8D4B43_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBE8D4B43_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Credentials</a><br />    <span class="selflink">Grpc.Core<span id="LSTBE8D4B43_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBE8D4B43_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>SslCredentials</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">sealed</span> <span class="keyword">class</span> <span class="identifier">SslCredentials</span> : <span class="identifier">Credentials</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">SslCredentials</span> + <span class="keyword">Inherits</span> <span class="identifier">Credentials</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">SslCredentials</span> <span class="keyword">sealed</span> : <span class="keyword">public</span> <span class="identifier">Credentials</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">SslCredentials</span> = + <span class="keyword">class</span> + <span class="keyword">inherit</span> <span class="identifier">Credentials</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">SslCredentials</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_SslCredentials__ctor.htm">SslCredentials<span id="LSTBE8D4B43_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTBE8D4B43_3?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a></td><td><div class="summary"> + 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. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_SslCredentials__ctor_1.htm">SslCredentials(String)</a></td><td><div class="summary"> + Creates client-side SSL credentials from + a string containing PEM encoded root certificates. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_SslCredentials__ctor_2.htm">SslCredentials(String, KeyCertificatePair)</a></td><td><div class="summary"> + Creates client-side SSL credentials. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_SslCredentials_KeyCertificatePair.htm">KeyCertificatePair</a></td><td><div class="summary"> + Client side key and certificate pair. + If null, client will not use key and certificate pair. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_SslCredentials_RootCertificates.htm">RootCertificates</a></td><td><div class="summary"> + PEM encoding of the server root certificates. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID6RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..641f2b7a53 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_SslServerCredentials.htm @@ -0,0 +1,25 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>SslServerCredentials Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="SslServerCredentials class" /><meta name="System.Keywords" content="Grpc.Core.SslServerCredentials class" /><meta name="System.Keywords" content="SslServerCredentials class, about SslServerCredentials class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.SslServerCredentials" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.SslServerCredentials" /><meta name="Description" content="Server-side SSL credentials." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_SslServerCredentials" /><meta name="guid" content="T_Grpc_Core_SslServerCredentials" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Overload_Grpc_Core_SslServerCredentials__ctor.htm" title="SslServerCredentials Constructor " tocid="Overload_Grpc_Core_SslServerCredentials__ctor">SslServerCredentials Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Properties" tocid="Properties_T_Grpc_Core_SslServerCredentials">SslServerCredentials Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Methods" tocid="Methods_T_Grpc_Core_SslServerCredentials">SslServerCredentials Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">SslServerCredentials Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Server-side SSL credentials. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTA4AAD890_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA4AAD890_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <a href="T_Grpc_Core_ServerCredentials.htm">Grpc.Core<span id="LSTA4AAD890_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA4AAD890_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerCredentials</a><br />    <span class="selflink">Grpc.Core<span id="LSTA4AAD890_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA4AAD890_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>SslServerCredentials</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">SslServerCredentials</span> : <span class="identifier">ServerCredentials</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">SslServerCredentials</span> + <span class="keyword">Inherits</span> <span class="identifier">ServerCredentials</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">SslServerCredentials</span> : <span class="keyword">public</span> <span class="identifier">ServerCredentials</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">SslServerCredentials</span> = + <span class="keyword">class</span> + <span class="keyword">inherit</span> <span class="identifier">ServerCredentials</span> + <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">SslServerCredentials</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_SslServerCredentials__ctor.htm">SslServerCredentials(IEnumerable<span id="LSTA4AAD890_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA4AAD890_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>KeyCertificatePair<span id="LSTA4AAD890_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA4AAD890_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Creates server-side SSL credentials. + This constructor should be use if you do not wish to autheticate client + using client root certificates. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_SslServerCredentials__ctor_1.htm">SslServerCredentials(IEnumerable<span id="LSTA4AAD890_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA4AAD890_5?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>KeyCertificatePair<span id="LSTA4AAD890_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTA4AAD890_6?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, String, Boolean)</a></td><td><div class="summary"> + Creates server-side SSL credentials. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm">ForceClientAuthentication</a></td><td><div class="summary"> + If true, the authenticity of client check will be enforced. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm">KeyCertificatePairs</a></td><td><div class="summary"> + Key-certificate pairs. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_SslServerCredentials_RootCertificates.htm">RootCertificates</a></td><td><div class="summary"> + PEM encoded client root certificates. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID6RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..7f2848d4ca --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Status.htm @@ -0,0 +1,24 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Status Structure</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Status structure" /><meta name="System.Keywords" content="Grpc.Core.Status structure" /><meta name="System.Keywords" content="Status structure, about Status structure" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Status" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Status" /><meta name="Description" content="Represents RPC result, which consists of and an optional detail string." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_Status" /><meta name="guid" content="T_Grpc_Core_Status" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_Status__ctor.htm" title="Status Constructor " tocid="M_Grpc_Core_Status__ctor">Status Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_Status.htm" title="Status Properties" tocid="Properties_T_Grpc_Core_Status">Status Properties</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Status.htm" title="Status Methods" tocid="Methods_T_Grpc_Core_Status">Status Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_Status.htm" title="Status Fields" tocid="Fields_T_Grpc_Core_Status">Status Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Status Structure</td></tr></table><span class="introStyle"></span><div class="summary"> + Represents RPC result, which consists of <a href="P_Grpc_Core_Status_StatusCode.htm">StatusCode</a> and an optional detail string. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">struct</span> <span class="identifier">Status</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Structure</span> <span class="identifier">Status</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">value class</span> <span class="identifier">Status</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">Status</span> = <span class="keyword">struct</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><p>The <span class="selflink">Status</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Status__ctor.htm">Status</a></td><td><div class="summary"> + Creates a new instance of <span class="code">Status</span>. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Status_Detail.htm">Detail</a></td><td><div class="summary"> + Gets the detail. + </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_Status_StatusCode.htm">StatusCode</a></td><td><div class="summary"> + Gets the gRPC status code. OK indicates success, all other values indicate an error. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/2dts52z7" target="_blank">Equals</a></td><td><div class="summary">Indicates whether this instance and a specified object are equal.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/y3509fc2" target="_blank">GetHashCode</a></td><td><div class="summary">Returns the hash code for this instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/aey3s293" target="_blank">ValueType</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_Status_ToString.htm">ToString</a></td><td><div class="summary"> + Returns a <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a> that represents the current <span class="selflink">Status</span>. + </div> (Overrides <a href="http://msdn2.microsoft.com/en-us/library/wb77sz3h" target="_blank">ValueType<span id="LSTF8554F0F_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF8554F0F_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ToString<span id="LSTF8554F0F_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTF8554F0F_1?cs=()|vb=|cpp=()|nu=()|fs=()");</script></a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_Status_DefaultCancelled.htm">DefaultCancelled</a></td><td><div class="summary"> + Default result of a cancelled RPC. StatusCode=Cancelled, empty details message. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_Status_DefaultSuccess.htm">DefaultSuccess</a></td><td><div class="summary"> + Default result of a successful RPC. StatusCode=OK, empty details message. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID6RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a160be54e8 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_StatusCode.htm @@ -0,0 +1,52 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>StatusCode Enumeration</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="StatusCode enumeration" /><meta name="System.Keywords" content="Grpc.Core.StatusCode enumeration" /><meta name="System.Keywords" content="OK enumeration member" /><meta name="System.Keywords" content="Cancelled enumeration member" /><meta name="System.Keywords" content="Unknown enumeration member" /><meta name="System.Keywords" content="InvalidArgument enumeration member" /><meta name="System.Keywords" content="DeadlineExceeded enumeration member" /><meta name="System.Keywords" content="NotFound enumeration member" /><meta name="System.Keywords" content="AlreadyExists enumeration member" /><meta name="System.Keywords" content="PermissionDenied enumeration member" /><meta name="System.Keywords" content="Unauthenticated enumeration member" /><meta name="System.Keywords" content="ResourceExhausted enumeration member" /><meta name="System.Keywords" content="FailedPrecondition enumeration member" /><meta name="System.Keywords" content="Aborted enumeration member" /><meta name="System.Keywords" content="OutOfRange enumeration member" /><meta name="System.Keywords" content="Unimplemented enumeration member" /><meta name="System.Keywords" content="Internal enumeration member" /><meta name="System.Keywords" content="Unavailable enumeration member" /><meta name="System.Keywords" content="DataLoss enumeration member" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.OK" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.Cancelled" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.Unknown" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.InvalidArgument" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.DeadlineExceeded" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.NotFound" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.AlreadyExists" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.PermissionDenied" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.Unauthenticated" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.ResourceExhausted" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.FailedPrecondition" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.Aborted" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.OutOfRange" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.Unimplemented" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.Internal" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.Unavailable" /><meta name="Microsoft.Help.F1" content="Grpc.Core.StatusCode.DataLoss" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.StatusCode" /><meta name="Description" content="Result of a remote procedure call. Based on grpc_status_code from grpc/status.h" /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_StatusCode" /><meta name="guid" content="T_Grpc_Core_StatusCode" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">StatusCode Enumeration</td></tr></table><span class="introStyle"></span><div class="summary"> + Result of a remote procedure call. + Based on grpc_status_code from grpc/status.h + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">enum</span> <span class="identifier">StatusCode</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Enumeration</span> <span class="identifier">StatusCode</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">enum class</span> <span class="identifier">StatusCode</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">StatusCode</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div id="enumerationSection"><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Members</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Member name</th><th>Value</th><th>Description</th></tr><tr><td /><td target="F:Grpc.Core.StatusCode.OK"><span class="selflink">OK</span></td><td>0</td><td>Not an error; returned on success.</td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.Cancelled"><span class="selflink">Cancelled</span></td><td>1</td><td>The operation was cancelled (typically by the caller).</td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.Unknown"><span class="selflink">Unknown</span></td><td>2</td><td> + 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. + </td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.InvalidArgument"><span class="selflink">InvalidArgument</span></td><td>3</td><td> + 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). + </td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.DeadlineExceeded"><span class="selflink">DeadlineExceeded</span></td><td>4</td><td> + 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. + </td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.NotFound"><span class="selflink">NotFound</span></td><td>5</td><td>Some requested entity (e.g., file or directory) was not found.</td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.AlreadyExists"><span class="selflink">AlreadyExists</span></td><td>6</td><td>Some entity that we attempted to create (e.g., file or directory) already exists.</td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.PermissionDenied"><span class="selflink">PermissionDenied</span></td><td>7</td><td> + 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). + </td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.Unauthenticated"><span class="selflink">Unauthenticated</span></td><td>16</td><td>The request does not have valid authentication credentials for the operation.</td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.ResourceExhausted"><span class="selflink">ResourceExhausted</span></td><td>8</td><td> + Some resource has been exhausted, perhaps a per-user quota, or + perhaps the entire file system is out of space. + </td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.FailedPrecondition"><span class="selflink">FailedPrecondition</span></td><td>9</td><td> + 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. + </td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.Aborted"><span class="selflink">Aborted</span></td><td>10</td><td> + The operation was aborted, typically due to a concurrency issue + like sequencer check failures, transaction aborts, etc. + </td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.OutOfRange"><span class="selflink">OutOfRange</span></td><td>11</td><td> + Operation was attempted past the valid range. E.g., seeking or + reading past end of file. + </td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.Unimplemented"><span class="selflink">Unimplemented</span></td><td>12</td><td>Operation is not implemented or not supported/enabled in this service.</td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.Internal"><span class="selflink">Internal</span></td><td>13</td><td> + Internal errors. Means some invariants expected by underlying + system has been broken. If you see one of these errors, + something is very broken. + </td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.Unavailable"><span class="selflink">Unavailable</span></td><td>14</td><td> + The service is currently unavailable. This is a most likely a + transient condition and may be corrected by retrying with + a backoff. + </td></tr><tr><td /><td target="F:Grpc.Core.StatusCode.DataLoss"><span class="selflink">DataLoss</span></td><td>15</td><td>Unrecoverable data loss or corruption.</td></tr></table></div></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID3RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..f0a32a3015 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_UnaryServerMethod_2.htm @@ -0,0 +1,21 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>UnaryServerMethod(TRequest, TResponse) Delegate</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="UnaryServerMethod%3CTRequest%2C TResponse%3E delegate" /><meta name="System.Keywords" content="Grpc.Core.UnaryServerMethod%3CTRequest%2C TResponse%3E delegate" /><meta name="System.Keywords" content="UnaryServerMethod(Of TRequest%2C TResponse) delegate" /><meta name="System.Keywords" content="Grpc.Core.UnaryServerMethod(Of TRequest%2C TResponse) delegate" /><meta name="Microsoft.Help.F1" content="Grpc.Core.UnaryServerMethod`2" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.UnaryServerMethod`2" /><meta name="Description" content="Server-side handler for unary call." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_UnaryServerMethod_2" /><meta name="guid" content="T_Grpc_Core_UnaryServerMethod_2" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">UnaryServerMethod<span id="LST52BDE5F0_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST52BDE5F0_0?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="typeparameter">TRequest</span>, <span class="typeparameter">TResponse</span><span id="LST52BDE5F0_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST52BDE5F0_1?cs=>|vb=)|cpp=>|fs=>|nu=)");</script> Delegate</td></tr></table><span class="introStyle"></span><div class="summary"> + Server-side handler for unary call. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">delegate</span> <span class="identifier">Task</span><TResponse> <span class="identifier">UnaryServerMethod</span><TRequest, TResponse>( + TRequest <span class="parameter">request</span>, + <span class="identifier">ServerCallContext</span> <span class="parameter">context</span> +) +<span class="keyword">where</span> TRequest : <span class="keyword">class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">class</span> +</pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Delegate</span> <span class="keyword">Function</span> <span class="identifier">UnaryServerMethod</span>(<span class="keyword">Of</span> TRequest <span class="keyword">As</span> <span class="keyword">Class</span>, TResponse <span class="keyword">As</span> <span class="keyword">Class</span>) ( + <span class="parameter">request</span> <span class="keyword">As</span> TRequest, + <span class="parameter">context</span> <span class="keyword">As</span> <span class="identifier">ServerCallContext</span> +) <span class="keyword">As</span> <span class="identifier">Task</span>(<span class="keyword">Of</span> TResponse)</pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">generic</span><<span class="keyword">typename</span> TRequest, <span class="keyword">typename</span> TResponse> +<span class="keyword">where</span> TRequest : <span class="keyword">ref class</span> +<span class="keyword">where</span> TResponse : <span class="keyword">ref class</span> +<span class="keyword">public</span> <span class="keyword">delegate</span> <span class="identifier">Task</span><TResponse>^ <span class="identifier">UnaryServerMethod</span>( + TRequest <span class="parameter">request</span>, + <span class="identifier">ServerCallContext</span>^ <span class="parameter">context</span> +)</pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">UnaryServerMethod</span> = + <span class="keyword">delegate</span> <span class="keyword">of</span> + <span class="parameter">request</span> : 'TRequest * + <span class="parameter">context</span> : <span class="identifier">ServerCallContext</span> <span class="keyword">-></span> <span class="identifier">Task</span><'TResponse></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><h4 class="subHeading">Parameters</h4><dl><dt><span class="parameter">request</span></dt><dd>Type: <span class="selflink"><span class="typeparameter">TRequest</span></span><br /></dd><dt><span class="parameter">context</span></dt><dd>Type: <a href="T_Grpc_Core_ServerCallContext.htm">Grpc.Core<span id="LST52BDE5F0_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST52BDE5F0_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ServerCallContext</a><br /></dd></dl><h4 class="subHeading">Type Parameters</h4><dl><dt><span class="parameter">TRequest</span></dt><dd>Request message type for this method.</dd><dt><span class="parameter">TResponse</span></dt><dd>Response message type for this method.</dd></dl><h4 class="subHeading">Return Value</h4>Type: <a href="http://msdn2.microsoft.com/en-us/library/dd321424" target="_blank">Task</a><span id="LST52BDE5F0_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST52BDE5F0_3?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script><span class="selflink"><span class="typeparameter">TResponse</span></span><span id="LST52BDE5F0_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST52BDE5F0_4?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID2RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..52ddee0058 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm @@ -0,0 +1,19 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AsyncStreamExtensions Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="AsyncStreamExtensions class" /><meta name="System.Keywords" content="Grpc.Core.Utils.AsyncStreamExtensions class" /><meta name="System.Keywords" content="AsyncStreamExtensions class, about AsyncStreamExtensions class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.AsyncStreamExtensions" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Utils.AsyncStreamExtensions" /><meta name="Description" content="Extension methods that simplify work with gRPC streaming calls." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="T_Grpc_Core_Utils_AsyncStreamExtensions" /><meta name="guid" content="T_Grpc_Core_Utils_AsyncStreamExtensions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Class" tocid="T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm" title="AsyncStreamExtensions Methods" tocid="Methods_T_Grpc_Core_Utils_AsyncStreamExtensions">AsyncStreamExtensions Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">AsyncStreamExtensions Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Extension methods that simplify work with gRPC streaming calls. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST61118D82_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core.Utils<span id="LST61118D82_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>AsyncStreamExtensions</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class</span> <span class="identifier">AsyncStreamExtensions</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><<span class="identifier">ExtensionAttribute</span>> +<span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">AsyncStreamExtensions</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<span class="identifier">ExtensionAttribute</span>] +<span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">AsyncStreamExtensions</span> <span class="keyword">abstract</span> <span class="keyword">sealed</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">AbstractClassAttribute</span>>] +[<<span class="identifier">SealedAttribute</span>>] +[<<span class="identifier">ExtensionAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">AsyncStreamExtensions</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">AsyncStreamExtensions</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm">ForEachAsync<span id="LST61118D82_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST61118D82_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Reads the entire stream and executes an async action for each element. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm">ToListAsync<span id="LST61118D82_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST61118D82_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script></a></td><td><div class="summary"> + Reads the entire stream and creates a list containing all the elements read. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm">WriteAllAsync<span id="LST61118D82_6"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_6?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST61118D82_7"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_7?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(IServerStreamWriter<span id="LST61118D82_8"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_8?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST61118D82_9"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_9?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, IEnumerable<span id="LST61118D82_10"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_10?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST61118D82_11"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_11?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>)</a></td><td><div class="summary"> + Writes all elements from given enumerable to the stream. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm">WriteAllAsync<span id="LST61118D82_12"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_12?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST61118D82_13"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_13?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(IClientStreamWriter<span id="LST61118D82_14"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_14?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST61118D82_15"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_15?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, IEnumerable<span id="LST61118D82_16"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_16?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST61118D82_17"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST61118D82_17?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>, Boolean)</a></td><td><div class="summary"> + Writes all elements from given enumerable to the stream. + Completes the stream afterwards unless close = false. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..b05566cedf --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Utils_BenchmarkUtil.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>BenchmarkUtil Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="BenchmarkUtil class" /><meta name="System.Keywords" content="Grpc.Core.Utils.BenchmarkUtil class" /><meta name="System.Keywords" content="BenchmarkUtil class, about BenchmarkUtil class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.BenchmarkUtil" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Utils.BenchmarkUtil" /><meta name="Description" content="Utility methods to run microbenchmarks." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="T_Grpc_Core_Utils_BenchmarkUtil" /><meta name="guid" content="T_Grpc_Core_Utils_BenchmarkUtil" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_BenchmarkUtil.htm" title="BenchmarkUtil Class" tocid="T_Grpc_Core_Utils_BenchmarkUtil">BenchmarkUtil Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm" title="BenchmarkUtil Methods" tocid="Methods_T_Grpc_Core_Utils_BenchmarkUtil">BenchmarkUtil Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">BenchmarkUtil Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Utility methods to run microbenchmarks. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST522BADE5_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST522BADE5_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core.Utils<span id="LST522BADE5_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST522BADE5_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>BenchmarkUtil</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class</span> <span class="identifier">BenchmarkUtil</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">BenchmarkUtil</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">BenchmarkUtil</span> <span class="keyword">abstract</span> <span class="keyword">sealed</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">AbstractClassAttribute</span>>] +[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">BenchmarkUtil</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">BenchmarkUtil</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm">RunBenchmark</a></td><td><div class="summary"> + Runs a simple benchmark preceded by warmup phase. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..0c41403431 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_Utils_Preconditions.htm @@ -0,0 +1,19 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Preconditions Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="Preconditions class" /><meta name="System.Keywords" content="Grpc.Core.Utils.Preconditions class" /><meta name="System.Keywords" content="Preconditions class, about Preconditions class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.Utils.Preconditions" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.Utils.Preconditions" /><meta name="Description" content="Utility methods to simplify checking preconditions in the code." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core.Utils" /><meta name="file" content="T_Grpc_Core_Utils_Preconditions" /><meta name="guid" content="T_Grpc_Core_Utils_Preconditions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core_Utils.htm" title="Grpc.Core.Utils" tocid="N_Grpc_Core_Utils">Grpc.Core.Utils</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Class" tocid="T_Grpc_Core_Utils_Preconditions">Preconditions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Methods_T_Grpc_Core_Utils_Preconditions.htm" title="Preconditions Methods" tocid="Methods_T_Grpc_Core_Utils_Preconditions">Preconditions Methods</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">Preconditions Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Utility methods to simplify checking preconditions in the code. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST13927049_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13927049_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core.Utils<span id="LST13927049_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13927049_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Preconditions</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class</span> <span class="identifier">Preconditions</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">Preconditions</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">Preconditions</span> <span class="keyword">abstract</span> <span class="keyword">sealed</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">AbstractClassAttribute</span>>] +[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">Preconditions</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckArgument.htm">CheckArgument(Boolean)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/3w1b3114" target="_blank">ArgumentException</a> if condition is false. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm">CheckArgument(Boolean, String)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/3w1b3114" target="_blank">ArgumentException</a> with given message if condition is false. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm">CheckNotNull<span id="LST13927049_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13927049_2?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST13927049_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13927049_3?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(T)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/27426hcy" target="_blank">ArgumentNullException</a> if reference is null. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm">CheckNotNull<span id="LST13927049_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13927049_4?cs=<|vb=(Of |cpp=<|fs=<'|nu=(");</script>T<span id="LST13927049_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST13927049_5?cs=>|vb=)|cpp=>|fs=>|nu=)");</script>(T, String)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/27426hcy" target="_blank">ArgumentNullException</a> if reference is null. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckState.htm">CheckState(Boolean)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/2asft85a" target="_blank">InvalidOperationException</a> if condition is false. + </div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="M_Grpc_Core_Utils_Preconditions_CheckState_1.htm">CheckState(Boolean, String)</a></td><td><div class="summary"> + Throws <a href="http://msdn2.microsoft.com/en-us/library/2asft85a" target="_blank">InvalidOperationException</a> with given message if condition is false. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core_Utils.htm">Grpc.Core.Utils Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..a53a4185ab --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_VersionInfo.htm @@ -0,0 +1,9 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>VersionInfo Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="VersionInfo class" /><meta name="System.Keywords" content="Grpc.Core.VersionInfo class" /><meta name="System.Keywords" content="VersionInfo class, about VersionInfo class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.VersionInfo" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.VersionInfo" /><meta name="Description" content="Provides info about current version of gRPC." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_VersionInfo" /><meta name="guid" content="T_Grpc_Core_VersionInfo" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_VersionInfo.htm" title="VersionInfo Fields" tocid="Fields_T_Grpc_Core_VersionInfo">VersionInfo Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">VersionInfo Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Provides info about current version of gRPC. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST3FF00A03_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3FF00A03_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LST3FF00A03_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST3FF00A03_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>VersionInfo</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class</span> <span class="identifier">VersionInfo</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">VersionInfo</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">VersionInfo</span> <span class="keyword">abstract</span> <span class="keyword">sealed</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">AbstractClassAttribute</span>>] +[<<span class="identifier">SealedAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">VersionInfo</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">VersionInfo</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_VersionInfo_CurrentVersion.htm">CurrentVersion</a></td><td><div class="summary"> + Current version of gRPC + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID4RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..ddd3eed654 --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_WriteFlags.htm @@ -0,0 +1,15 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>WriteFlags Enumeration</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteFlags enumeration" /><meta name="System.Keywords" content="Grpc.Core.WriteFlags enumeration" /><meta name="System.Keywords" content="BufferHint enumeration member" /><meta name="System.Keywords" content="NoCompress enumeration member" /><meta name="Microsoft.Help.F1" content="Grpc.Core.WriteFlags" /><meta name="Microsoft.Help.F1" content="Grpc.Core.WriteFlags.BufferHint" /><meta name="Microsoft.Help.F1" content="Grpc.Core.WriteFlags.NoCompress" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.WriteFlags" /><meta name="Description" content="Flags for write operations." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_WriteFlags" /><meta name="guid" content="T_Grpc_Core_WriteFlags" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel1" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncClientStreamingCall_2.htm" title="AsyncClientStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncClientStreamingCall_2">AsyncClientStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" tocid="T_Grpc_Core_AsyncDuplexStreamingCall_2">AsyncDuplexStreamingCall(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncServerStreamingCall_1.htm" title="AsyncServerStreamingCall(TResponse) Class" tocid="T_Grpc_Core_AsyncServerStreamingCall_1">AsyncServerStreamingCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_AsyncUnaryCall_1.htm" title="AsyncUnaryCall(TResponse) Class" tocid="T_Grpc_Core_AsyncUnaryCall_1">AsyncUnaryCall(TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallInvocationDetails_2.htm" title="CallInvocationDetails(TRequest, TResponse) Structure" tocid="T_Grpc_Core_CallInvocationDetails_2">CallInvocationDetails(TRequest, TResponse) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_CallOptions.htm" title="CallOptions Structure" tocid="T_Grpc_Core_CallOptions">CallOptions Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Calls.htm" title="Calls Class" tocid="T_Grpc_Core_Calls">Calls Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Channel.htm" title="Channel Class" tocid="T_Grpc_Core_Channel">Channel Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOption.htm" title="ChannelOption Class" tocid="T_Grpc_Core_ChannelOption">ChannelOption Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelOption_OptionType.htm" title="ChannelOption.OptionType Enumeration" tocid="T_Grpc_Core_ChannelOption_OptionType">ChannelOption.OptionType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ChannelOptions.htm" title="ChannelOptions Class" tocid="T_Grpc_Core_ChannelOptions">ChannelOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ChannelState.htm" title="ChannelState Enumeration" tocid="T_Grpc_Core_ChannelState">ChannelState Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ClientBase.htm" title="ClientBase Class" tocid="T_Grpc_Core_ClientBase">ClientBase Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ClientStreamingServerMethod_2.htm" title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ClientStreamingServerMethod_2">ClientStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_CompressionLevel.htm" title="CompressionLevel Enumeration" tocid="T_Grpc_Core_CompressionLevel">CompressionLevel Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationOptions.htm" title="ContextPropagationOptions Class" tocid="T_Grpc_Core_ContextPropagationOptions">ContextPropagationOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ContextPropagationToken.htm" title="ContextPropagationToken Class" tocid="T_Grpc_Core_ContextPropagationToken">ContextPropagationToken Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Credentials.htm" title="Credentials Class" tocid="T_Grpc_Core_Credentials">Credentials Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_DuplexStreamingServerMethod_2.htm" title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_DuplexStreamingServerMethod_2">DuplexStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_GrpcEnvironment.htm" title="GrpcEnvironment Class" tocid="T_Grpc_Core_GrpcEnvironment">GrpcEnvironment Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_HeaderInterceptor.htm" title="HeaderInterceptor Delegate" tocid="T_Grpc_Core_HeaderInterceptor">HeaderInterceptor Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamReader_1.htm" title="IAsyncStreamReader(T) Interface" tocid="T_Grpc_Core_IAsyncStreamReader_1">IAsyncStreamReader(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IAsyncStreamWriter_1.htm" title="IAsyncStreamWriter(T) Interface" tocid="T_Grpc_Core_IAsyncStreamWriter_1">IAsyncStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IClientStreamWriter_1.htm" title="IClientStreamWriter(T) Interface" tocid="T_Grpc_Core_IClientStreamWriter_1">IClientStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IHasWriteOptions.htm" title="IHasWriteOptions Interface" tocid="T_Grpc_Core_IHasWriteOptions">IHasWriteOptions Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IMethod.htm" title="IMethod Interface" tocid="T_Grpc_Core_IMethod">IMethod Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_IServerStreamWriter_1.htm" title="IServerStreamWriter(T) Interface" tocid="T_Grpc_Core_IServerStreamWriter_1">IServerStreamWriter(T) Interface</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_KeyCertificatePair.htm" title="KeyCertificatePair Class" tocid="T_Grpc_Core_KeyCertificatePair">KeyCertificatePair Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshaller_1.htm" title="Marshaller(T) Structure" tocid="T_Grpc_Core_Marshaller_1">Marshaller(T) Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Marshallers.htm" title="Marshallers Class" tocid="T_Grpc_Core_Marshallers">Marshallers Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata.htm" title="Metadata Class" tocid="T_Grpc_Core_Metadata">Metadata Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Metadata_Entry.htm" title="Metadata.Entry Structure" tocid="T_Grpc_Core_Metadata_Entry">Metadata.Entry Structure</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Method_2.htm" title="Method(TRequest, TResponse) Class" tocid="T_Grpc_Core_Method_2">Method(TRequest, TResponse) Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_MethodType.htm" title="MethodType Enumeration" tocid="T_Grpc_Core_MethodType">MethodType Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_RpcException.htm" title="RpcException Class" tocid="T_Grpc_Core_RpcException">RpcException Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server.htm" title="Server Class" tocid="T_Grpc_Core_Server">Server Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServerPortCollection.htm" title="Server.ServerPortCollection Class" tocid="T_Grpc_Core_Server_ServerPortCollection">Server.ServerPortCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Server_ServiceDefinitionCollection.htm" title="Server.ServiceDefinitionCollection Class" tocid="T_Grpc_Core_Server_ServiceDefinitionCollection">Server.ServiceDefinitionCollection Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCallContext.htm" title="ServerCallContext Class" tocid="T_Grpc_Core_ServerCallContext">ServerCallContext Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerCredentials.htm" title="ServerCredentials Class" tocid="T_Grpc_Core_ServerCredentials">ServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerPort.htm" title="ServerPort Class" tocid="T_Grpc_Core_ServerPort">ServerPort Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition.htm" title="ServerServiceDefinition Class" tocid="T_Grpc_Core_ServerServiceDefinition">ServerServiceDefinition Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_ServerServiceDefinition_Builder.htm" title="ServerServiceDefinition.Builder Class" tocid="T_Grpc_Core_ServerServiceDefinition_Builder">ServerServiceDefinition.Builder Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_ServerStreamingServerMethod_2.htm" title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_ServerStreamingServerMethod_2">ServerStreamingServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslCredentials.htm" title="SslCredentials Class" tocid="T_Grpc_Core_SslCredentials">SslCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_SslServerCredentials.htm" title="SslServerCredentials Class" tocid="T_Grpc_Core_SslServerCredentials">SslServerCredentials Class</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_Status.htm" title="Status Structure" tocid="T_Grpc_Core_Status">Status Structure</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_StatusCode.htm" title="StatusCode Enumeration" tocid="T_Grpc_Core_StatusCode">StatusCode Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_UnaryServerMethod_2.htm" title="UnaryServerMethod(TRequest, TResponse) Delegate" tocid="T_Grpc_Core_UnaryServerMethod_2">UnaryServerMethod(TRequest, TResponse) Delegate</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_VersionInfo.htm" title="VersionInfo Class" tocid="T_Grpc_Core_VersionInfo">VersionInfo Class</a></div><div class="toclevel2 current" data-toclevel="2"><a data-tochassubtree="false" href="T_Grpc_Core_WriteFlags.htm" title="WriteFlags Enumeration" tocid="T_Grpc_Core_WriteFlags">WriteFlags Enumeration</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">WriteFlags Enumeration</td></tr></table><span class="introStyle"></span><div class="summary"> + Flags for write operations. + </div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID1RB')" onkeypress="SectionExpandCollapse_CheckKey('ID1RB', event)" tabindex="0"><img id="ID1RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID1RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID0EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve">[<span class="identifier">FlagsAttribute</span>] +<span class="keyword">public</span> <span class="keyword">enum</span> <span class="identifier">WriteFlags</span></pre></div><div id="ID0EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><<span class="identifier">FlagsAttribute</span>> +<span class="keyword">Public</span> <span class="keyword">Enumeration</span> <span class="identifier">WriteFlags</span></pre></div><div id="ID0EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<span class="identifier">FlagsAttribute</span>] +<span class="keyword">public</span> <span class="keyword">enum class</span> <span class="identifier">WriteFlags</span></pre></div><div id="ID0EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<<span class="identifier">FlagsAttribute</span>>] +<span class="keyword">type</span> <span class="identifier">WriteFlags</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script></div><div id="enumerationSection"><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Members</span></div><div id="ID2RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Member name</th><th>Value</th><th>Description</th></tr><tr><td /><td target="F:Grpc.Core.WriteFlags.BufferHint"><span class="selflink">BufferHint</span></td><td>1</td><td> + 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. + </td></tr><tr><td /><td target="F:Grpc.Core.WriteFlags.NoCompress"><span class="selflink">NoCompress</span></td><td>2</td><td> + Force compression to be disabled for a particular write. + </td></tr></table></div></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID3RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ 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 new file mode 100644 index 0000000000..94460aa93b --- /dev/null +++ b/doc/ref/csharp/html/html/T_Grpc_Core_WriteOptions.htm @@ -0,0 +1,17 @@ +<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>WriteOptions Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="WriteOptions class" /><meta name="System.Keywords" content="Grpc.Core.WriteOptions class" /><meta name="System.Keywords" content="WriteOptions class, about WriteOptions class" /><meta name="Microsoft.Help.F1" content="Grpc.Core.WriteOptions" /><meta name="Microsoft.Help.Id" content="T:Grpc.Core.WriteOptions" /><meta name="Description" content="Options for write operations." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="Grpc.Core" /><meta name="file" content="T_Grpc_Core_WriteOptions" /><meta name="guid" content="T_Grpc_Core_WriteOptions" /><link rel="stylesheet" type="text/css" href="../styles/branding-Website.css" /><script type="text/javascript" src="../scripts/jquery-1.11.0.min.js"></script><script type="text/javascript" src="../scripts/branding-Website.js"></script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="pageHeader" id="PageHeader">gRPC C#<form id="SearchForm" method="get" action="#" onsubmit="javascript:TransferToSearchPage(); return false;"><input id="SearchTextBox" type="text" maxlength="200" /><button id="SearchButton" type="submit"></button></form></div><div class="pageBody"><div class="leftNav" id="leftNav"><div id="tocNav"><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="gRPC C#" tocid="roottoc">gRPC C#</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="R_Project_Documentation.htm" title="Namespaces" tocid="R_Project_Documentation">Namespaces</a></div><div class="toclevel0" data-toclevel="0"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="N_Grpc_Core.htm" title="Grpc.Core" tocid="N_Grpc_Core">Grpc.Core</a></div><div class="toclevel1 current" data-toclevel="1" data-childrenloaded="true"><a class="tocExpanded" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="T_Grpc_Core_WriteOptions.htm" title="WriteOptions Class" tocid="T_Grpc_Core_WriteOptions">WriteOptions Class</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="M_Grpc_Core_WriteOptions__ctor.htm" title="WriteOptions Constructor " tocid="M_Grpc_Core_WriteOptions__ctor">WriteOptions Constructor </a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Properties_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Properties" tocid="Properties_T_Grpc_Core_WriteOptions">WriteOptions Properties</a></div><div class="toclevel2" data-toclevel="2"><a data-tochassubtree="false" href="Methods_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Methods" tocid="Methods_T_Grpc_Core_WriteOptions">WriteOptions Methods</a></div><div class="toclevel2" data-toclevel="2"><a class="tocCollapsed" onclick="javascript: Toggle(this);" href="#!" /><a data-tochassubtree="true" href="Fields_T_Grpc_Core_WriteOptions.htm" title="WriteOptions Fields" tocid="Fields_T_Grpc_Core_WriteOptions">WriteOptions Fields</a></div></div><div id="tocResizableEW" onmousedown="OnMouseDown(event);"></div><div id="TocResize" class="tocResize"><img id="ResizeImageIncrease" src="../icons/TocOpen.gif" onclick="OnIncreaseToc()" alt="Click or drag to resize" title="Click or drag to resize" /><img id="ResizeImageReset" src="../icons/TocClose.gif" style="display:none" onclick="OnResetToc()" alt="Click or drag to resize" title="Click or drag to resize" /></div></div><div class="topicContent" id="TopicContent"><table class="titleTable"><tr><td class="titleColumn">WriteOptions Class</td></tr></table><span class="introStyle"></span><div class="summary"> + Options for write operations. + </div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID0RB')" onkeypress="SectionExpandCollapse_CheckKey('ID0RB', event)" tabindex="0"><img id="ID0RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Inheritance Hierarchy</span></div><div id="ID0RBSection" class="collapsibleSection"><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LSTE5597B5E_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE5597B5E_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">Grpc.Core<span id="LSTE5597B5E_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LSTE5597B5E_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>WriteOptions</span><br /></div><p> </p><strong>Namespace:</strong> <a href="N_Grpc_Core.htm">Grpc.Core</a><br /><strong>Assembly:</strong> Grpc.Core (in Grpc.Core.dll) Version: 0.6.1.0<div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID2RB')" onkeypress="SectionExpandCollapse_CheckKey('ID2RB', event)" tabindex="0"><img id="ID2RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Syntax</span></div><div id="ID2RBSection" class="collapsibleSection"><div class="codeSnippetContainer"><div class="codeSnippetContainerTabs"><div id="ID1EDCA_tab1" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cs','1','4');return false;">C#</a></div><div id="ID1EDCA_tab2" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','vb','2','4');return false;">VB</a></div><div id="ID1EDCA_tab3" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','cpp','3','4');return false;">C++</a></div><div id="ID1EDCA_tab4" class="codeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID1EDCA','fs','4','4');return false;">F#</a></div></div><div class="codeSnippetContainerCodeContainer"><div class="codeSnippetToolBar"><div class="codeSnippetToolBarText"><a id="ID1EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID1EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID1EDCA_code_Div1" class="codeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">WriteOptions</span></pre></div><div id="ID1EDCA_code_Div2" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">WriteOptions</span></pre></div><div id="ID1EDCA_code_Div3" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">WriteOptions</span></pre></div><div id="ID1EDCA_code_Div4" class="codeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">type</span> <span class="identifier">WriteOptions</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID1EDCA");</script></div><p>The <span class="selflink">WriteOptions</span> type exposes the following members.</p><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID3RB')" onkeypress="SectionExpandCollapse_CheckKey('ID3RB', event)" tabindex="0"><img id="ID3RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Constructors</span></div><div id="ID3RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_Grpc_Core_WriteOptions__ctor.htm">WriteOptions</a></td><td><div class="summary"> + Initializes a new instance of <span class="code">WriteOptions</span> class. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID4RB')" onkeypress="SectionExpandCollapse_CheckKey('ID4RB', event)" tabindex="0"><img id="ID4RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Properties</span></div><div id="ID4RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_Grpc_Core_WriteOptions_Flags.htm">Flags</a></td><td><div class="summary"> + Gets the write flags. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID5RB')" onkeypress="SectionExpandCollapse_CheckKey('ID5RB', event)" tabindex="0"><img id="ID5RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Methods</span></div><div id="ID5RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">Determines whether the specified object is equal to the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">Serves as the default hash function. </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">Creates a shallow copy of the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">Returns a string that represents the current object.</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID6RB')" onkeypress="SectionExpandCollapse_CheckKey('ID6RB', event)" tabindex="0"><img id="ID6RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />Fields</span></div><div id="ID6RBSection" class="collapsibleSection"><table id="memberList" class="members"><tr><th class="iconColumn"> +  + </th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubfield.gif" alt="Public field" title="Public field" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="F_Grpc_Core_WriteOptions_Default.htm">Default</a></td><td><div class="summary"> + Default write options. + </div></td></tr></table><a href="#PageHeader">Top</a></div><div class="collapsibleAreaRegion" id="seeAlsoSection"><span class="collapsibleRegionTitle" onclick="SectionExpandCollapse('ID7RB')" onkeypress="SectionExpandCollapse_CheckKey('ID7RB', event)" tabindex="0"><img id="ID7RBToggle" class="collapseToggle" src="../icons/SectionExpanded.png" />See Also</span></div><div id="ID7RBSection" class="collapsibleSection"><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_Grpc_Core.htm">Grpc.Core Namespace</a></div></div></div></div><div id="pageFooter" class="pageFooter"> </div></body></html> \ No newline at end of file diff --git a/doc/ref/csharp/html/icons/AlertCaution.png b/doc/ref/csharp/html/icons/AlertCaution.png new file mode 100644 index 0000000000000000000000000000000000000000..78f246f047efee82e1ee0b64f1adbef606253054 GIT binary patch literal 618 zcmV-w0+s!VP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkO1ZP1_K>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%Q1Ac<M1h3G3s4dPQX(aQ9skkY?o#-0K-dIE z+G1yCXGW|2#5u<_blSlK;6=QBe6Mx#cA8Ex8wc5|Ilr`A@qvR`A~hrZ5uodLnpE@( zBBEpNa)VAgNC5lur2<z9IZ~N4#l|AQetdRmgBF5r+-**X>dkQrp!HXSPCG~edkf_v zbNLd<?DO%OOH*uA0QO?d%m(WsqHDKrfbCC6XAIS5?PrVisRo^PFb`}Msy^vV3TMoP z%7l1Hh2JOxY{l9?8f=PEx^`<BXCj;lFB*g)E(|HJ1c*`^*!<0)(+-NjnqLo4(Gb(? zV$XYQZ`9e|sAGqH?68lr5kbQTSc~uA#YQ^`FQJ1VgXw+)YjDo->`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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/AlertNote.png b/doc/ref/csharp/html/icons/AlertNote.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab92b66aa6ba6ba29e37046059c5314b4971341 GIT binary patch literal 3236 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 WeL_^H9d{o90000<MNUMnLSTZy`2zO< literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/AlertSecurity.png b/doc/ref/csharp/html/icons/AlertSecurity.png new file mode 100644 index 0000000000000000000000000000000000000000..d40fcefc440ed3138f80d57824ddc750c4e2a4eb GIT binary patch literal 503 zcmV<T0SNwyP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005LNkl<ZIE|f> zF>4e-6o9|k-P;^zp(G}o+k;ec1O#g<5k!p<3mXf2!IaktVku~48GAv{RuEBy5X2vl z#t`C}<jCa`Z#TCG$?aul=UGIS?5cR=Rr6-%ee=D?C<^g*@$tiGuh|$3(t2uAETtH8 zWo_J_eQ|H$>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<xH96C?QQXX?lxEZ-&k0H-he32Aep4g|A<hv)lpL z-RS^ej6p=uT4Ri%A4Pm$UndN@S%DW-b1gUkUUeD(*Bv8Cjxx}cSHp1}f^KlaV1mxh z_TLTSI7UP;#$ZfJ)a&u1*&N-#vMiD$K|~M{s=klwx}zKP`%yLvV+_6heOg;vqZ>?m tQ)sP!{{^91t5K;`{%`Q<!+TB}zX14;<IOO*xMu(W002ovPDHLkV1oCw;$Z*) literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/CFW.gif b/doc/ref/csharp/html/icons/CFW.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbcabf1b2d1322c6e205b1ff5f5ab17a4565522d GIT binary patch literal 588 zcmV-S0<--`Nk%w1VGsZi0OorDSXfwYZf<dLapC{r)c@2*Mn=k;Q<1@tnQ%R!(V(Kz zqM3C<nRrE_a6az;?q_Fb%%N3qP&Gh6K+2U(qspV)!f&qLvAnHqlERUg$d-bFf}(3W zx{p+pa#Y!{U73elTwGk3#hth4w!(~4#AG$YVkwtrILxSAh_{Bx#h-nwd&YP@a-eU@ ze>bw-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}SL<b|z~bgN=J9G$c4rK}&ENj)GPzN;_COEO#K8dq;Rh4g)SK zXaJ-Wd3pl`2`F8znRHG_1U*s*ak!3TUso{-2U7^bjSXUFY+M)_Ud)3VLKba9KvWCX zf)OoRA!=qn4B&fEL^4StFBCcIHDF9LQ6n%M>PB)mW!_w<;6q)BF&{is;nBp+15yFz aYzYIwMwU7PNbLy_pn!w|0x}K?1OPh{BoK)J literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/CodeExample.png b/doc/ref/csharp/html/icons/CodeExample.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b9fba4cc5f29460d711dddb32b79b85783af9a GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!AMUR#}Etu<b(xmKfb-aU0-ByCvQTUy1F_~ zkGIScF%|b%W{powXEc{oupZ?OF>Mf8pRk0XW?`S;ryG~}Z?XkE$(i7NV%yAs7l(t? nuW2~*F(>VD=(TZ|HfE5{S-0gp>+@4UOBg&|{an^LB{Ts5mnuH4 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/Search.png b/doc/ref/csharp/html/icons/Search.png new file mode 100644 index 0000000000000000000000000000000000000000..42165b6d64c2ad706179b7eaa0485caa089e6ed9 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv<!3HFE@;uE1QY`6?zK#qG8~eHcB(eheoCO|{ z#XvP+%-Ex}lN~51RpJ^^5}cn_Ql40p$`Fv4nOCCc=Nh6=W~^tbXK3jD*~uKJ>awSc zV~B<S(kTZ8TNHR)S01;{z0klLz`$GZJumgz;ZHYz=5+*y+3uM;anH{domXC(&Q2Vu zvzE!eul3Zt8uY%DUrIJ<qmFmz{(p)MCl*xBdwpqr8$-$QU%S?=y~iqWLS*e@ft`x; zd^>l)>eG>!R=iK_%P!ZR!uvNw-nA5}SoCV%;XLf~kk5Lzl-<LchqIW<nRlsOycfXq zDM?7CyYvrd#A}uX&2A@N7fZHySBmvTzU=dFzVS=;R=<tC!-gsUo?f_kSz*I|zWnBf k+uPRiPMSaQxyX0M-$pr=J%?{u0KLcH>FVdQ&MBb@0IsfxDF6Tf literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/SectionCollapsed.png b/doc/ref/csharp/html/icons/SectionCollapsed.png new file mode 100644 index 0000000000000000000000000000000000000000..8ded1ebc6b03328520aac9416ea15f07e63809a8 GIT binary patch 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<Jn>|_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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/SectionExpanded.png b/doc/ref/csharp/html/icons/SectionExpanded.png new file mode 100644 index 0000000000000000000000000000000000000000..b693921cc92c2b00c06b842c8d098ea63afc1cfc GIT binary patch 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<Jn>|_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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/TocClose.gif b/doc/ref/csharp/html/icons/TocClose.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6d7b5edcc237dc7d59b4a42910a4abab459c94e GIT binary patch literal 893 zcmZ?wbhEHb<YEwK_|5<VO77bW`tI)Dy}Nbc^BJ2ztT_1N`t|G2o;`c_?%mg~Uw{Ap z{r~@eu)<MdGz5lQ2q^w!VPs(V&!7YH7${FLa6~b%|B?2XpupV7%B$xvW5PiuRvu9; z4}p*K4|j4X#rZTmU^v{%XyYX!@aZuVlZq=}N&rKuXA@i0vOgN1pPrg*?0##@4}*i} bdS!i+uH4xC=xCSC#Hf&8{V(@7FjxZslrKn& literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/TocCollapsed.gif b/doc/ref/csharp/html/icons/TocCollapsed.gif new file mode 100644 index 0000000000000000000000000000000000000000..108d492386d7ee4cb692637beff6c88c59d52086 GIT binary patch literal 838 zcmZ?wbhEHb<YeGv_|Cx4*x1<A)HHqi^j*7l?cKX~|Ni|44jedi=+NQAhmRaNa_rc# z6DLlbK7IPknKS3lpTBzb>a}ave*XOV_wV2T|Nk?Lg3%Bd;vt{|az7|9FmPxysB_48 t1Sl}Dva;%BI4C4Ca`Fg?$QUR#H8gQ3@l*tSXkcXLWOnfIFj8Q!1_0$!Io|*P literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/TocExpanded.gif b/doc/ref/csharp/html/icons/TocExpanded.gif new file mode 100644 index 0000000000000000000000000000000000000000..f774d9bb6589737768a8bf788046a8bbe53ca902 GIT binary patch literal 837 zcmZ?wbhEHb<YeGv_|5<VtgNhTY;2N}k_rk6N=iz~%E}rV8ZIs_Zf<UVetw08g{7sX z_4V})4Go_^fByFE+m9bV{{R0E);dazhQQDc0UeO@L3x3JLyJL`L&jsn0!L0k2?dQG j3mO@iSQITd7#=VjWEElLQJ8VyKqC_uUzd)A0E0CE%1R^K literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/TocOpen.gif b/doc/ref/csharp/html/icons/TocOpen.gif new file mode 100644 index 0000000000000000000000000000000000000000..4992a98a2b838039c1920ceba85b67607a22770f GIT binary patch literal 896 zcmZ?wbhEHb<YEwK_|5<VO77bW`tI)Dy}Nbc^BJ2ztT_1N+_`htuU~)m?Ag0_@4kNh z`uq29u)<MdGz5lQ2q^w!VPs(V&!7YH7${FLaKtjO|B?2X@PM(Al~>7O#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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/favicon.ico b/doc/ref/csharp/html/icons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2b9963f814281f0b1b7bb661be8d579191b59a42 GIT binary patch literal 25094 zcmeHv2Yi&(w(s}71ThMTM?F}sl6wFFkxoF80ESQ$K{#STn2>}NIs_sC1R?Yy0#Xy? zSg;`=DoueTg!DF(-jhj%^h_qnlq8c`@4vp8NkNL<bMJe<_j~Tl%2)PUYp=ET+Iz2E zW&}YL9u|fT6Qt|u9)hq_5CmIW^Yg=kFyt{oc=~D6bIe16kkLyJdiFFuFX|!)pTA(i ze_A-*O%NXHYr%h7c&)1-oCj|ce_P>nKS9urvC!KJi>yKKA_xOeCeQ>o0Lyc~L_|_H zwUD4|&<Uz4l|Z<XN+syZ$^_Es1Rd^Ge4m*iTsU@Am_22(po)(Ylz7(VW(ZWG6sW39 zC`(lcx=e*Y1sQ@8`DM|;g6hIaL3!;*p)4^<P$5r;JSqcz1Neg`YUfhn@}ccQ)Ttwa z3Vh1IFW6<ckg<5I5al&iP_CLNWB?S)Cko2-(}avQ(*!!PR8XGSAgIpl6EZ&EE|i@= zA}G&*KKil{{M|`Gl^O-PAV&#!UHDN@cnue#+`)7CSV6&j0m?NKg<$Y6`)Hb=0Dsla zw}i5-Zwb2na|PAjxdI*Y5LAae1Rcr>Uh|efr+kH|kLC&)dp!jDZiApav{X>+1kR}q zLNIj5fILzAeFX|RDO}!<eCVwT|52dSV4*BN81^iKUIS4+WPv;xs~`*HQLcx6kfm(v zG(mR={2>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<laF>~g}t&)Z9<PoKVc__I%T=>h_4NcDSy?k47apZ(8QUzC~BivyNC+m|T<Y<@>z zM*m<IP#qiwEE&GU!GWn}`I-rAJBb8z2-C%9Jdhn6#`ifIVErE7$z-q2?kklrrh5m1 z?p>{b-gk+F?J)nX<0q`FY-Tb6C}#Czg54bnx&z(1?<@(y-roM*<AI_mj<mO*FHubI z$4YN%*SWh5@Vh`_2M1u=+rKr|S`6s2jBlAjHmfh|{FFtar(R%be2_DrQS9vp*#(M$ z@0so;g4ta_FwauJQ@eow+<-Q85coVZ)Ww8vZx24N`f>qg4Z3Zz3J3^<G!}$AuOOK9 zC^UG%R6sXKA24^mB#fD<+kyoP9NWlPBrf0~GrkqXna$`fX7oXQ{$tGZ&$QvQ(zDtH z+9X;9JUnqeu-ov*28iNQ?f6h(KtJmMtG}^@x;+8>r%mV<{;;R`yqlSTUphFv2mG!q zP`BQqmDNalmvQ4P?CsrPPqFJl3qA<uJIn_D&ZijPMii}v0=<75zWqOrT8ZN51ttO( zbN>8Uz_(%i$B|_<W1O3#V}G+a_V&}pvO}zyC=p0{&0qLPfR&X6-)14uJK)<dWevnN zgPDNwUF;?N$Ibl38IG>5j*e~o?d_Kymk3xS7sxu!e&KG&A?dpdoMyVd^pa~weEX%x zU{i6_IN*<SbR0Ksp^cR&$;0}J!zN6aFtDRQaMGS&D6RlLM0FcC6HmJyGucxVSGm9J zKB02~_A6PU(QYpNf$!)x0uQ~-^(Bg%CpkI2JfU*|6MF)ss~6a_Zfo!`Pig_1a3?Nu zcJ_FApyS|W!{3_&890seXAx%hcN{qIC08$&`fm`&Q~~1qQ>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~<v{bI3YK zDWQvhZ)1-Fo{$K{eII|kcgMEn@67oCY0mNw*K_(r%A41n8Cwz>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$!1<R%y#aZx*>Jl zX@k_&Z_@*@O{|zkN_XRom=sBEO%&Qyx*7$<sd&~4!UVn+3c_Q24Hbm0eDxOuE53r6 zh%3-Rptd&fb+g(UWFS;q*YUM?`?ZjtA5&Y0cD!~~Tl@3#omVUKdt5nN_;0-WGrv2_ z!*eLV?;u|xKSO@YRno_z*JiVxWYXJW2a8=Sc9QG{29h0N7_)t?q$?FZ##f%F+5%n$ z{54PgYo7YoJQWS$uk>$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_omV<c?GkeY)Q&4H|AbZv-pdU)`?JD+_W+BXXEJAKGE7>e-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-Lv<J56YtBuso1 zI@mk9y3DW<xe9#eiB_*UJGr{OJ@Q#e_va8O_jjG(f>2u0?|DoECObO~_74!}K=+A# zQ3sCh?i2nlT73k1!PiQ(d1I=lQ=i=+9PBk$6a!~YaGC&e(_G!xPZVESw{GeTj(BYl zGY9l?c6NSkr<q)0V0B=_hIK1?1_oH+@9{;5ZV?LGjx{;DFC-8@*}G%I@;SZyd-=~< zziu4|r#7R_`GW7mKsbD0|DL@&I27Hmbq|Mxk6W@)0z?4Dp@WDf5l?auYxR74HV`&- z4A+p|)wg3d5PbclXrK9DwsA);%jxU8$+ou@))Tt=`TLp#zvI8JC3Si)g=wL^v4Yr@ zjEKAtPHaX@GNBMr3PUKO7Y2VsHw*%zrauA}{7^G}A$T!g=5IhbTppoZj#Hin3<LZX zr~DPC{1vC5A^er@WdTbN(mB6J4?F)}J^MX*ynCm}qKDL5T8UT_={mMOhhGOC8QaGP zE5`w1-@ZJGAlad3?d$WZY|wPX5x#+<jXA?kw0aI<#jE~S!x1~o?jm-T2zrU)a|2}a z?WY~FdfMI|Aw!_pi!*wOk51$<dcMyZFI*gCK2{>$_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*CA<b z=M#)}y|H_1O1;d>K3tt*ueR4HqgQVpYC+cVEfe)JCo=~@Fp4DTh0Q{p&|4@J9uq<_ zlri{YIAh?^=Rsh>Wjf};yqG8R=5eeiz*ge&*S_#y`@(<i3!^FgmF{K%(<o-idG{Zi z`u6qPWM>|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<b|7S}nh`&)^kgln#t#8zT zXH~7Lpt!W4xTL(Qx>}{ir>3qRA60#QL%q7Oq6F&v@ggcS;x$#b8a0|ab$yMxzBE5K z{-;wRAFsZ#abDQEx1v6JKjFZt^s~nb6cH5_6(|L0+Q!EEqO3nsgeoUdt5&fo8a0(= zx6{ua4PEv6^?5Ia%<UiQJ~C#DYn1QnLGSjtKBs@kf>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*E<fe2MW~gjO-;>EvphFF zVuf?4?4?ML5iy=4<Gn}9J%@*`oO<K>RU?tcK-s4cpu{+@kuhE)qdkU)xep7P^I}rK z##$A8p;22~nHLj$M-jJ@B6PJCT78pRU8mUX9V#0b<vB9eYgEEQ>Ek^z-g8*&4v&hM zU-M5Nh+i~1!E<<m_b7Z~y+%fPj0|%d8shSD-qq7;jSg0V?{(x~mmUoVYie%NHn$Yr z{3XnFDBA?&3+>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>lBQ<z4x@v8hF?)xZzi_^Wdi`r3--R%1<GT9o(b81GRM zbBVu6POlNs3&%uXyC|*jP|l}I<6H-J<PR-kyhh!W4N&ayR;$&zrsj?&Qs*Tb^r$x~ z4f-K!!LWqIuOu#cMFAt5jQ~@OKvmv6|E&QPOjL5_lQ@?FZMpJ=kjE~5p<SfgkZ9l6 zYf1}rO)Z++%Ag;<G^v1&%h=iq(t^|b<Ge;BE*+b+^bY<b6Fi3gwr_1|Wi|LWtE;p3 zdBwTC+@=Csa?$7*&k;CsSe2WqYc^;qN}?{EY2!~umaO2*Es8~UDJvY4m)R>8ca(pm z+-rE$qOsS%2~=zKrXsRFMiGO!h=rqotXMn-E)fI%nerxsQCD><`tsQ}{zhXfs7k-z zld^1V`l<=3D;yF#^9LWf=g`PSV<XO=(l)gKxkX)*xyv<v!C=@Yaq$>v4He>+I@IQ- zz|^|xcK)!xv4u&huYQrWdVG%Gq>NSLVImN=8QF9r_Z$+r*giS<A~+yv3NsbU9idwC z(pOTJJ1CZnQLJ)qyro2zuCgTZ;twYI)p<z<Z3A95=f)STpHjGSTCU%uRN%v^9z){Y z;r1_~eVL2!7##7z^y;!(TmTvKj`+wuhJtyT&v>Yuu|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*<K144^Kq^&&d19pLu<jed(xM`lDBqp-nuDSev|YCsd(So+*F(0-oEP6 zBI|OKTASH1NLSbT^#_Kd3mOl|N;gc6`eI+5Mu*qNR>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<tT3)ZP5S@WV#>+K0Yb zN#{3FxtY+Q(^O~4JF@L~UzrxuZY309s3BDpRa~O{?<n~*iaKVzaiBGL9|eDmLMdn` zh3%*0pU5Cp9M@5+`W}N<TPf9<3EDDCMVOVTq1Ic}l1$ogQeCI=%T)Rc-TsxT<fJV( zqrhjH^y>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;h829S<tC>FIGFQKvylgDX z0~L7EF;c!@Fj!?phXALkraWcsv;@y#$xFv_<mvxjvyO-F4J#LekG_~ky_T}P;>|OZ z>!+k6f<naQ#WR<9iB*EzpqRBY>#8e(R(k$0IH#_3Oj<N5FTf9PFib3+&yKChisAUy z*joSfh6?}b1#2fIuA82A`5RT1Tp74FR@M(8T&%ZUm6D6AxcOtsVmm}rY0JmfMqR+0 z7FGF}Ap^muJ~6meqsE)o{J5rr^Xm7!leO{9RCyfUG*y<QZ+Q<snf>MV<|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|k4<oFQ#8nU4P+=JZ33cmD*2g|=cwpcsz{_( z^Z4FeS9Mn=rkA?>L_<BhR)+-J;L|Aps42|44-->XLvpCTBn#XuYPPd9>NQa2^49?m zWMXEO7T%a1uFX%>6{WRQ6}MEEHkT>2c?wN>Bq{G1o}oM^qd-o2VS*F(L!7WL;)MMX zCw~Br3YbB}^<H4YVf;|g7J^3|cwt|~$pF4Qv~a)T1`q{X{QqxDA~^9mP#eJC09ct6 zcwBS@OasgTcmTNhuLAI~iq(MS0B^uNzzo260Mpq5m=E(~zRdrBA~9c%QFxPy%j*N+ z<0AhAECj3r>;UWs90QyHd=B`+44>h89B>e@6R;kz2=Erb9?%c)B;bES50<?Ppa;Mf z@Cx8v!0LBin|SKP_74-n&wPHXOdhJQO^<15$Wa(I`AJ4iUZPQj@d@vnQhqyI7r1?W z_CF_$4+Y(KfUf|o&u#$M5!ago;2(gVfQJBF?!TLu2giU<0R{uO?pK8Wa5ASlC90X_ z)Rkmoj$MlBVl`>iwWMvRCyg1j^(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 zu<T6x0^rpv|N1njF;~&5uY#R5kVB)9WM<h|*4o-ys;Q}wpt`!6Is(7ve0*<G!nNqa zy7OWM``LvP`%6&{*T*TqCjf5$&H!7$qX5?7k0#cY?fycKZjVm66?eT#Q<Q<hutAcW z%eTl}RaHf|Zr!5X++0dZN}{y1G|J1%qw?}{s;sQ+1X#i*#<%Fhx^tcAm~Uw=mBa?= z`o8cSkId{-hXFo-$pBjb+mdbipv1DXzdy6W<!!h6?D%GVZ6&_4td+{*GTD}FUzV?= zxR?~-Ar$)MK?>c!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(<etk4%UI|VF`fyYHrgk-@SBTAM3GgrPnN$y&1~}Y?qF* zb9q>Oq1c_C6vXnH<-FlGj6wl7y~k4A{#BIv<!(wku##??-`{|KtP|_QbTOdM4f(lE z2d-1DTS*5k`UCXA@4h~f>w$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><BbJ+GVVNQzH+B#RQ$c*)dokU(af3=rOC|c|=4NWrYAEC2a*75Hmh~lk z)|cyw^^odf`vNM>N|ki5_>!qTR8c|XZ(7K877z&Fw!mZc6M#EojfXRSJ$(SdxUspp zN%9*@KU1#ErnqhMO>(1LE+5-HlH6EFC+wRLHa6(OzV&qN+BHdEgTX+pt*sI$PalwQ zu<kGE$$D^ou?^T3?1Rz%GP<3UD)mj4HqG^~#bWI@pKRsLF!rOpfcF6X0Ng)zYzI9x zxr(M{_#WGy`!%+G4SXhX{|b|Dcd$1$n@n<hk0k79Nbu{n#dPJ$6{(%G?Ci_jN2MQL zg?z>{>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=z<p?&qb1 z{>IRv2X0f7WH<JmTZ%9WUt~{V@D*-@(UQ&0axaA37BI`kGRFE$qP(wn(ydD;DeL%J z!ahfv>?R#d`f{DI&v89=)FIS!G%0WV+_?@g_HfMd?BAcf2w{%_yaC)7bpr_M#E@<J z(roOTw6ym*m`Eob^fAj0TcIp0k`T70+T~{XJIMaW?>p!K`a5-q+wMkHrNxpTTIvA5 zA3>K+etHYyehF9y;Q0o(V?mQ0UuI~mlYGb0XWohnq6p7Xush2>s)Ouygq0qX4tL59 zed3pmqa@$Sl=Q)5N?tRSu<vpY9ZmHo)dTFpb<1^p6TZrAIzRYa+qlO5+|*D<6-i;u z5SM*u2jC6BbE?=YeRRs?Rs;GRi|^z30HvSUD9Iir$!;gv9g9nZ-8;x{D*H}*$E<Lo z@GlQgb$T4t=P0OAnM!59eRU7{(H_ivSO+XhNo^|}zREfzV0^2sK|Em|mz&^2TKLfG z<Hz!TGtZHDzVHvVBKQM+NhY=n3~lzWyIn-FtELdkj^!-E9y8>&fLZ=KZI9<DpUD(* z=_jfEaR0-pJ~Qrt^0OYS1GZ(+7DmEn(O)baOXXR~ZDTUGOFiZfNB#Y>AUC%GPr$(X zl(27_5fgKHY=8EjvgqFkd&BLrFCIhK(j;u--rIK|f8@$Zbp5B(QoLc5Hc^Qh^OFht ziucrk>(b<pc2b|l?Tr11b;!T;l_Wp+<=m$?*OXE8`LC)VH_t_v1BNta#$Xwv25VYI z;`YmU%Cm<c`)G<=G={JNO^PM25Ek&v^5477MlTyrSHAl~8b_I*WD`{-W$tu&p#1EY z+&6F^!F@FQQ5yPE_8*J<Em)l@O9<6NZk|)~I50w+E3a+U@h&Kq=+I|#9b^ZtH^~mU z6-&nw)-nH({9OK}LtCWyhizf0gSwP(sV(2xUZiKU{aJqQYjL(f>MtUpL*gzEsV=3M z4t8zPVNA`6H$d($0c!vwb@@q6mh~;RR}17%-@SkmmW(CEGJ8q_U<aL&SQp8E?rndT zCuGemx_JIvr#fKUs1k2b(rV}5*8|HB*(KhKF;<`qtY1oPFLCQUs>c{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{-{<S+{u^N9$2jg z?=kREQ(NOU7rSsYC2yBeV_mHj6R>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 zc<KJ{NcP~il?J(Sn1|BXPH1~cE5=EERtKr5xw@3DeszTBGTir!0X(jjUtiEvf-N=k zcxk~`om@@j+uxGl)|NM^0QHdN`zocvP71$ilze0jVVi^sFMUCkVLy@bUmFq6++DAD z_;XHFkmScKKl?)~j)r6(TnfK=MY2og>IsC69;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<s~=3H@*fYF z1u<QW2C45fjvCbeAmn}>!0SN|0R(M!oD@TJBEW<0<O<S!>Pn3VT}TBz%C@o&Q%JGt zT?)H)MOsVaxJpVm)P?=YyUL$@bS<fCaWVw$mJ`P)mHC;Jxor+*L3W%dlG+)!wLI7; z=fgM1P@FE|TK;i-Um6$O2ywaJ906!sM}ZH`;288yAENwlG6Z;2E1>D92i1QvkIJ{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$8eM<ahKgGw#OXFjEY4^Y5wa?oru~fFtm8y5WO{$OI zr@DP}rFK@e_kE&b^L}IpHoUHI_VBI{2s#;H@%uL0n>4^4bFRFE{p|Otg6OxML{|Zq zw?Ur`M5la6dtxc2|MEF06bfnGhTG@865GA3tc)shQmFQ;52^8h3+a!zOMa<4>`n~_ z=MyQ+8?qgkw8AG<=`lLU$m7+E0G_kobsf4Y=JF_gVOlHB*LC1vxy8n56#O#!C{e_x zL_zSYUp5nczmCc;22fU9gtT^^o}Nyrsi_k1T6#uC2Ib`BP*H)BYT~a^)AykHY%$Rn z%i)*sNxt%P(nU)_?N{^(`l58>p^sJ{hs;9(j|1*pcf+gp)R-D}u(_h>E`DTYn|ltY zFTTa5^(olvBvIrcqHDWRFMCNJ^tm(^ltf&nLWb~5R2p%SYD3RZ>!tlfr`HgjU61<P zXae@hbGWZbZ<o2l9gkP>Kc9++bfW=J0=U2Yo!{VHr=-h{leg4$jww2@Mf*y{5sk|@ z&~XX=`ZH1P4}=A0qPPH}u!E+$VPE@o2mB6jZI|g?$UdSQpAdz7Y|=UYYp}h$&vC3! zF27L;!Fb)g7vK-cZc#*+rzkL=Cg>!3=Z8!T5|KE-iUX+X5FAnXjp!D9xZp?Vbebp& z^^^e_xvo;bB1-;(Nd6g78uT@mb!OG!iG98yJAr-P&MbSUzS1J&gRc7g#G)2e1<FDn zbl=2B9ZCVv#~6?L!RZRtsg8BJ3b>BRO9bAb-pD-O-GiS&U5&N>1kKx1otz-wANHAh z>7vbvi*7D2H2(ga!aW4|FTUnJqq(ZYSebaU0J8K2a39|V@IZeD&V3Ww^j<v<M;PjH zzUYB<@h24kKZB-@bcLzLf}6kaKI+o|-mANBKXYG!?~;jix^B9BMNU&`j?vJl;xo*D zQqVilLC^Ch<_CYN`1$B=UJvXJu(Z>E+wON!gAWP0=nImH^~D*j+`qMI>!o=qD&`IW z?|6irS!ZsW&4^WT9;+4W`ju&yzvXz0$0U}U$EE)fxxu$ns!O<LugQ!)tuIQgf-Hun zvV3DpZ5eUhwBmq1>%~_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 z<mV3hS@gEpfrDcHT{>P=V|z(<+uXs9p=P^U>?|F2Mn3s>wfx>(PmtOI{=_*gj-$o{ zcpc_vz{L*mBks2Wcz?$RaA$f(Hv7$uMe>Mx{t7}P&fYYZ<WK_+A@Xz7<+C+UJl^vH zhz<gHuF|6egU9eiq-%|s2kV<#s1#=x5`Q^GIFd~HQP-(jT_>I0smEE3WeZ#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&<B zNRPwbh4Kh?m7f}lvZ!8}L6PsiKnm{>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<ETLlWmni1r<y2Q$LYbTXNx{SLQ|u=<N%=YZyeN70lT>`d595WA zvZI33pntnAC-Ek}42rd>T%x_0H}8@Wq5+IOtyFgPE8+;Op~*;vs~zdKj~yOrsj;k( zwyark1@yfEf<*?ZP!L`4q3WM@QFU<vRn=i#z7*$5zgb7deKUxZangxUeEX8?pJR7v zzEqc!;8ItRA;~Gl%?(jx%s)+rM8w^(m=j5Hsh+=4Lh6Dvdh7McGeOI~+m_V1Niua_ zDrw3wcJg8V4$08cN)5LQ3E#Y6xt&2|?$6rD+iqZwEBLM&;cFiNTyYQHR4fns97r4o ibV`L*=bS>tb58!kIVT*mdLS^KKk!3ASNGUCr~eI_expJF literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/privclass.gif b/doc/ref/csharp/html/icons/privclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..0939694ce08ad44508f6f017b68e46f0f22377b9 GIT binary patch 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*V<n*&;EaZz~tAA-;eHn zui5hQ()C9RRv+4T{Mx6}0VigN?>KPj>%-QMrvo<aKKJ=rPI77Q#$9K_vzm^axw(4# z=`Yu_-|y4^c-sHVwd}7CTHkGzjm>Z0aqv=U>zv((uk1Z`&AIsGhXbbm$u+t4({AM4 zoUwe*+pV&@k6t-)=GK>oZB<<hH`#19P2QSP)|*~F;l-ni9}bvIn71XapmSaYUuZ_- z+pRJwWqtlh)n6aB0X@qw$bjNc7DfgJe+C_pyFhWmz<#R1zsaA0gPob7xvROAT}h#% zr>oaqPkBNogHUHno4%^Ngbh!J5dZ96zXj&rOBmSr#rWBn`?Qta4AyNBlN99gXZF;U z(BWY`VYPQZo4>HAqB^H51EW8i<C!K=R!&({hpSC&TvAQKn$`@=oQ%TPnxt5m{P}F% z1q7UZ_&zYPi05!L1T08k<dgG>_+6gJ+{k9ar8DD%q6<$7gRGgrgar((tRfl{0+c)& nCbWOC3i<HRk&RQ-myPp=#)*SHGA<Jq9C+v;XzSR>z+epk2~OYT literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/privdelegate.gif b/doc/ref/csharp/html/icons/privdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3aa8a65ef5277c6682f106de956da036c50d363 GIT binary patch literal 1045 zcmZ?wbhEHb6krfw_&$x{|NsBD3-0`y@q4k|5=ZZdhfm);e)ek3_S5^0UpsN`=JQu? zFQs0-|M=CZi}!XMxOD0IqaNMfjl0hJCs*%1c5Tz{a|>1<atzJiaqyCbZ~6k8g}3r< zdqkIRKX_@`rsK;u9>0-$^W=rQx9>k+>ALFmyU(xQe4H?EgI8Snr_bMJEZ?*H@RcuL ze=OZ_+&{Ty;o2jswjSAi<Z9pCZB<<hpS^g$VC~@}XKt?Caxx^Xe$#@}N6y@uZ82x( z;miO2{Yx*O@N3!c{D$e*axb|=6zw~Hd3w+051+m`1m#RwxND}_tZ9?B9XxsC*T!Go z@s$To-0)ATPATjA_3O{;*H_o>IO7^wyn6fTZ3ixeXEp6UdL_BEH>IrC+CTH&qnA?_ zZr-r_?BoSIFQ;Fbx_Ik^d0S4LzjJZVqo>#39XfGw&#H^BC%mcZTCnHn)n99Wox5`H z=da%fPF&x-_rl%7FP}Vr9h%+{U)V8w*_Mra&Odl`_2jZ^p&5-&p1+&CaMzAQm*=cF zU=x^q`R1Lk-+rv!ekLNjxp&UC=}Y#m-gbJC-Qv>LIg{q^j4SB0@XI)R`PRnW=VJ5Q zXDr?K;^v1fd(Y(7PdmEh)~oK<vzG6F{QT{-#e3$iJXFvyeeTNLz!+p01>}Z+;!hSv z28L-2Iv@i;d4hrC6N4_N%!&qId44W7EtMCGCW#wQIi?e0vCxHsp-kl9Op6K4Vs;D+ zcRp^uaCVY-@DqoX8<UQycueB>Ynj67>A_%qWsZWPnuD}Kw%&~mCC`=#iz<t;ItVND z@VN--q-H))IMirs#H8|4QK4b6gO`qJLcs#2#S%PqQv?r$xwP{-XDp~NN^j~n;byWC zGDvXXR$yCIv$ATb=L9_|rY~nF9B1nAU{$hrNN7FR#Lryhz~G|d%E+`p-om4$;S7_b zKwrVZq6SAMCQhM%70v0Vd6k{I4jc$r$jHYcuHljR$*rkVL+p!0S8_stvRvzm4F(4; J201WT0|3CZk*@#% literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/privenumeration.gif b/doc/ref/csharp/html/icons/privenumeration.gif new file mode 100644 index 0000000000000000000000000000000000000000..47f387ec2bf4ca4d6b1381cbe8c843912b6c616a GIT binary patch literal 597 zcmZ?wbhEHb6krfwc$UiWcwfN%$FJ6GKkeupkzO_R@v~Qt_WGYVck|T6dnYg4U9kGl z>x;#2uhqQ1RGQZ~`_sezFVAOg+I?={@oQh6&3J#O_0`3qcQ@)kJ)ZdG+03e*WmVnF z^Bd>vIB@CF#g+GVc;49Hc<K71kM}yizdir$_54dKEzT@5{Qh>?*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=O<D^Ga4t%+w%PO*4=AoytudL{q5%6hp+5Ddc{Afde`ddkM{Vbl=a0GbRIc#Yko&u zW192EU1y&jj(mAKv%Aozs%v3+l;yXV`)9Rg`zP1@|NozXszC843nK$VDuWKlR8X8S zuy1NeZE9|5ZA(>RU|^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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/privevent.gif b/doc/ref/csharp/html/icons/privevent.gif new file mode 100644 index 0000000000000000000000000000000000000000..30db46df766c1b49bf86b168eaae03052ce8f292 GIT binary patch literal 580 zcmZ?wbhEHb6krfwcoxC%u)XR2<5$m5ME<&1wr2ZjNAHM}7w(?Ac<;oyoByBGKYsS= z!>2EQo@`jK`p~A`=l*@Vx#Pg4eaEjod-~|o^+*5z|L>^sdbOcGw|?5!19>l>J$(7} z{;?esvXVR|%-eGJOka3b)BFnAZ|^Vv{PMV`DW<w}?xVX`cOSmelcDtNeCMY#Q+|BD zmr~Yy@5Z_37do%+m^5Sgo+D>&#T9hkzICOvb<T^WHOr@@u9=>-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<zI=<ns$rpCznTUfwGvYms)A%KCAiCsm>)Pg~o YNt8WsjZ2WhW2dPS@^dsgL^v3%0lNU+2mk;8 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/privextension.gif b/doc/ref/csharp/html/icons/privextension.gif new file mode 100644 index 0000000000000000000000000000000000000000..51dd267f0f7fa11a657ef51a69cb9159ced8775f GIT binary patch literal 608 zcmZ?wbhEHb6krfwc$Uj>|M9Ey9p}}Y>Kwfz)@(n0{n3wKGk%}Cc<<zeyUOm9PMo{> z_}MGFi~}D&eOa*j(7xl>E?s|g`Sz<#yU*=7aOu<SPrLK?yj%Ldc*+0yHuE2^dF)g7 zaPP5eB}@NTX;&}zU$LiPZ`+3d4mroaJo}PT)*GAOelhEkN5xJ5<eH1QmwwIu{cOhb z505{b+k4GCenWC;?}w`&Cd}J1WBHz6^M8MO@VU>e|7!l#yEE=pbuCOO>kH3nI&$V# zjc)DB39o7_8sE)*uj)OkMz7}o|NlqM+<dhD(eA@nrdmu3>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(%Bisn3<lyXx!h- z=<LD9X2Ym7BR5!7Op`4}D|wNe#!@3YABRQJs;2U0CgDlBQW-MMyzIh3EVdH<)-%`{ zSooyPU1jxi?G@sic%2L#Ls$aRQfF}c8E|kYTj(@%iU&4vFnnSV;MaQ-o7m*S!2C}@ z*kg;Jf<og&HMI=_3=0w(m{^6@Z0S^JV4SU^$Yo)%;BlikXVx{2MJE=xHkxry(y$Ct RJ>JRM%%x*_Q%!)u8UTgK6xaX& literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/privfield.gif b/doc/ref/csharp/html/icons/privfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbf70f7a3fc3875ee62d9a4dacf3a088e60f2eff GIT binary patch literal 574 zcmZ?wbhEHb6krfwcoxXOU_A5w<5$tMZ>-sV+R-~==Gp&`pS{|2<M)YkH&0!>ck;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)<xx&}tIXZDMwl=RUiYzllv%oQuoRi_Mk$Rx=mlD@I`+ z^FVC|mlkVAmhZy6o;}Qr94s6H77~X%oS5WzoGc0yTPE@=NE@6v@!-gTg$@kX0QTwG AKmY&$ literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/privinterface.gif b/doc/ref/csharp/html/icons/privinterface.gif new file mode 100644 index 0000000000000000000000000000000000000000..f3b7950adc741c7b4085da8ab52167435bec317c GIT binary patch literal 585 zcmZ?wbhEHb6krfwcoxoZ|M9Ce+fRS^^yS9gXO7+xS8hId{Or~HkDot%`F`Tu&Hw-Z zpS*DQ)Wv&s{Yx)hf3#`$xr^5y_0QXU=JMSg2QEeDb{sl&^U{rnty5MmSbb>U@oS6M zA3Ad8=A4!LcOSW$UOu6=Z^@K}JJxPL8J*X*|M-=-g3j&xFKyU)V)>?{I}TpXZ<v1I z_>~<8FFA!5q?GmgC)b2$HO1z)FWq>|KdHLBV_s-R<L;wZdS-7*F6r-|yJ^C_EvvVm zPAKYHxaP>-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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/privmethod.gif b/doc/ref/csharp/html/icons/privmethod.gif new file mode 100644 index 0000000000000000000000000000000000000000..71f882264291eb056bc55dce1c73f9b7cae1aa4a GIT binary patch literal 603 zcmZ?wbhEHb6krfwc$UHN|NsB{k6)edIDhH-BS-IuHQP_0ICpc??sJcyy*hRA-iJ?L ze$DuO^1|H}0V}UwUGr|~``!6_zJFL<r&qV*z@>f1uPs=8=+o^_@AkcWyykJKdg;o5 zRcp4cO)Tnsaq-2=r>kFIe7)n~r6Xr<JvsGc#_~OT3igJk*RKj){cOhbPY*s{&bzW^ z%eu8O>+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%%`?<eR>eE&*(~qUwlq@F(Tx>i;Nlc!XZ6ca;`P?Fa5nK| z;ACVKW%g*2m2wwy3o_<nR%T!bwdZOI=k<}4&){HA=HYRQ=4cM6x*>2xq2V9{v&NLh ymNqX2CINOIi^Cfn7?@djBrFazCbqIDYBX3REMswIvEH(0gHSS;U|S;tgEasMh7D{0 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/privproperty.gif b/doc/ref/csharp/html/icons/privproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1e8074654b3fc0601b0302f1be7b39f5bf5eb7b GIT binary patch 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&(<R;elxmFFyQfJ=2;R=Fi10@acS*v;g<d zhef|$Z}|DRzAs6nb53S)X-z^*?CzsicC1<a|APFths{fl{tsT`=<V&dYS*nl|Na~G zNW9u@IJ3WM`>BuL?`9o2b8GLhYo9Mg{CZU6pIo!!;H4vHZhpI+=@Sqfn$b98`JViS z>9P6kH|{<=asK9nd0XypGD<I>aQ4Lh`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{QLiZ<F2zUrEzfuofl3V+I{%S+t<&xE^7qFBf}^lJp>egvM@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%^t<heaSm$DvtV z`dos7jm_tKjlB&R7!+UfGB}F<dckqYZNXyqC{_-j3-}kBRLR(Mgg7K9Gh{I;T>7xQ zt(lQk$EC6HC36D<qk<yehJ#&V!VFwF2Td5)GpOnX7(}T&@or|5<q5Qtc_8pekC$zQ zT!G>tS^a6kC&EH94>aBumn&dwYH7?jjd&y?(eQwQiA89WOHal@#wi@3Dl0lR)+n&> P$sO`(a%OdMV6X-N?RS8o literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/privstructure.gif b/doc/ref/csharp/html/icons/privstructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed6d1ef68f8736e5c05137be2af0ff7714ddb85b GIT binary patch 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 z<Bo%ul1qE{9=rDJ!Nt!PV?HnawCmQF?+@m@p7MI0>HH@xPxjsT^kdVHrL_XzU(fST zu9>&-#=*NkLo*uhoIn5Zxbw$14}LsZ{^>%@yZhUJzFe1EKP^0~>Dz{HpKp~Oxc4o+ ze8Q^<uVyUY^R(mni5t)E72o^%^Us8NTk;#GA31aL+pBr2x1X-+T6pBlt<SegzT7Ig zSN>qrg}0wC#Qc1@2^f+LqyxpDEQ|~cc?>!rt)MtzV87gu*Tlfa%EZvr*_GGAsv#WQ z(cRoC%WNv#-qY2a!kl66Ka)XhQXUiQw9FtmQ57yG_N7gFp3D(BYvs9=`MKGZIy{&| zas!=qE3<QRyYnAp3J?%C;jr^Ntsd^6!>_;~z{nwOo0cu4rD^0GYsjLS9HY&}k>n#O z<Pz<g#iAf$e#oWcgHpSo><^9_#Rm)yEerz82^S71ck}Y`NGQz`RA_YP5iejl$gyCd w0t=&*O2!2Rm&vL;0yA$hJnU(cRXnwYAz4e1RXB9Zfenj}c%OG^WMHrc0AYACZvX%Q literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/protclass.gif b/doc/ref/csharp/html/icons/protclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f9294292a9b5f94a281de7657b5555d06bb4a96 GIT binary patch literal 600 zcmZ?wbhEHb6krfwc;>?J|NsBT?|$SrO#k-o#@{!8qi5gvaU<jIo~VbbM83bjy|_W| zQtIW#B%aGV>U(s18H{JnJp2FehrhQA?)+N&>)iqU6Enm=U(5M5<M*R`-#@&*-=C-S z@pM4VmY44jn4DM{|Mg+(|MNzlP6s@{zWKue)3;k?zFf=x`k?je!?rKiv)^r%{dn5n zx%lL_PcJvwY(Bld^vlDx6RT5h<lKDs>fY;zXP32Fyxl50uY&Kx0h7<KZ-0HW>BEa_ 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+qbB9Ih<aaNuu~H08TEAu*7lrz>JYjEY8z0)sUGw};FY literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/protdelegate.gif b/doc/ref/csharp/html/icons/protdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..b209f2d816d78188dbcd93907917d7a0ef34eaa9 GIT binary patch literal 1041 zcmZ?wbhEHb6krfw_&$N*|NsBD3+~+A6ZPXp#$vlAiyQQQ&G>zJNB#3xZ!e`@es@5B z!P>(;y1i#F-}-;v$UnLI#LD>oJSE4_{Mi<B=B_++EARH(Co5+y-#=yH=1mJuClqz< zICyF4hU2rAty{L~`08z^S8Y9V@Z^ns$FKEd%YS{dDI&Z1?W0pqufKcp{Pn+o|DL^g zKWD`OhoGF$^oCz+e;qn;aeB|@yz+)GUw<rIdt}POT?bEIFKC!PZSkJDD|c6QEr`l( zy?glOvQ~?kX0uK%yEbjown_7ME?hX*E3SO^k*j@kw{6^W-ZirL{JzQYg&i+$e)#nH zTko80+YVehaN_!b6E}YS`m?}h;j8Y~r_Y>x^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{<ZPfzpra{9J*}bn;w!@e<Szit2ZAv?ml;9|Aw{O&n(|~ ze9x+j&#q29cjci?VD_aOk6xUJweZV0y}oqn;;l25?mKb*&Yq)JUr%`B5>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)vf<TM1YzRw5^9ctA zL-{>3EF6*!Fv!K9+hCZoKv#l4gfF7O*r}nJDO8B1BdLL*QL>%yjiiD@LlaY-SSZH> z@l#x!T?!Tw1r}#T<vCvn%s8OH!|mb7!lR+kdR|JfN@z#ohsA<o9^5YSdcn$lGkI(i kE+{Cm2Qf3&D;>G8VDV9AMK_f%j88HWS`1}G*;p8?0XW=!tN;K2 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/protenumeration.gif b/doc/ref/csharp/html/icons/protenumeration.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc96bb635982abc9d306f219ebdd71d29f95757c GIT binary patch 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$9BQxK<x;L>h=+*iB+9Zb^Gs7O8ZGCe4*rPpu?{7E1 zJe@hOGymnO^yk+$KR=Q3;`Xc`Z%*Ie;n|Zd|Lygmm*=Xh;%pvX-v0XbmZyg!|NsBb zKwqHvlZBCiA&Nl<WGyI87}%FIL^U-F0U1)V@`}>UeGH<?yxb!E!d89F3><<IDlAIg z#xt83c*OYxIDL&=qgvZLyLH7RS@amfq9#n5GR-i=&L&jVa`&8h3)I6|-DDh1)OIgl z$*CW~YRkl=;n(D8VYZbekTt*|m{EbbDagyz#XnMq)t!lvk?l>Cw3dOhd6|LdLB<w_ jT5S(YCn1Le42oRFrdPx-1~$lZ*@To#DSUj)fx#L8eG=<# literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/protevent.gif b/doc/ref/csharp/html/icons/protevent.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e510b272cfca80656561d1d699dc644a4bce266 GIT binary patch literal 564 zcmZ?wbhEHb6krfwc;?UWu)XQ-o~R!;GM=A^T->1d>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%<x zmsMe9P<P$KCd0%erYC21%*msfP1ntlk&ngnn7CC7n=}(6BRh*9gQs(=Bqtx!3kv~F ik#;FYCKhFTW8Y0*7EU(RXy9Vy<=|>+3`kU9um%8i0?sP{ literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/protextension.gif b/doc/ref/csharp/html/icons/protextension.gif new file mode 100644 index 0000000000000000000000000000000000000000..dcd07f5e1a673de3120e3f82e6f8c24f8bcd723b GIT binary patch literal 589 zcmZ?wbhEHb6krfwc$Ua;zT^Cl8yR=^L@jR6yZ-3M<sJ2EPIb!elYY(k{qBJNyQS~@ z^OSby@A-85)7wX<POOZ#%Q*1i_5J_njV|AQ^>V_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);<SM=9)m+U;G$H=H2>!TW$=&E7f#Oe`l$Rxz<6f%QVnvsc#lR2=N-PEp0 zi(iQGm23xlsCTmx6C<+(o1{U3LTkHh1k2B0^Nc1&4w;G#3JX3QZsO>Wahl*1IH9w< MpF`rM1P6mP0LI|@H~;_u literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/protfield.gif b/doc/ref/csharp/html/icons/protfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ae6833e0821dae813c941500d1e12a88c7c334f GIT binary patch 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@<H%;hDZ?<4acjGhC8s8*J;P>39u6a3Zboxf5ogJLn-A(TF}ZO&v9g|F zu=S9ZlTv5aVNvF~wvVrg!<31cnVrSMnCoe?Fs};JTbCwl2D?^QW+sjq4K62+*_N}g T@^*Y=aB^}~kW%AeVXy`OyDG~U literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/protinterface.gif b/doc/ref/csharp/html/icons/protinterface.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1b96d2c6a0b681cb6d65d30f8e212a3c2d29081 GIT binary patch literal 562 zcmZ?wbhEHb6krfwc;?OU<3`5aJyDAr^e*qHzj623`;VWm+<frvfc~d1-_KmW8=c$H zpQm*3`lAo8@Bcq<)IV?Yr5g_qox0gNW#x&L@oyiUs_S2R=JK6w`%fpA^l#XCV&R%2 zA6{I0_v+r_^@q0azqI?v)&0k>%v`?v$?aqRzOH$9d)n96>o)B<x2)A-;o2k7d2O}5 z%hzr{=^9!5^z!P&;=bCxCIA2bpS@!L^Xr=*K7I4zMC^`(mzQol_VvxCZ=YVCUSHZX zdsA|0zf*WYLQz+B*OKL%j?P(maLU3RdyZV~pS!8NW8VIwm*=e9-#dHLf#X+RKRnx$ zEe|x1VGskwpDc_F4BiYnAUA^Ign_-k!MmxsrM0b<L(SBUrM;O$LDXH!q1Tv4UZ6!= zl#P{5R?C}*Ly+IuMbk#kiq(MC!`j<P&`d~C-&V&_V;-A0m$v}FkXQ?gp}ni59;dem zv!$@^aXSgFa~I4R7}SmWyqQ&%y%_nJ9x$sgFfy{g=#v)aV|efRz*~utfl1~^)9-tK TqlFrdHL)=l%KQ=MV6X-N7sbeQ literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/protmethod.gif b/doc/ref/csharp/html/icons/protmethod.gif new file mode 100644 index 0000000000000000000000000000000000000000..2bc946873495112cc5b27bf66ea0d10ca8f30367 GIT binary patch literal 183 zcmV;o07(BwNk%w1VG#fj0J9GOr&Or$pYiSGtLoD0&$M{;>hta8)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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/protoperator.gif b/doc/ref/csharp/html/icons/protoperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cb75ab8b05d4b8d65401c5270ae31836ce04f9b GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/protproperty.gif b/doc/ref/csharp/html/icons/protproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..55473d16e1321bc3e4cbcb5a165f51a55f9f07a0 GIT binary patch literal 1039 zcmZ?wbhEHb6krfw_}<0v|Ns9*>yP~Z`}@a@jJtcH7B}eC&b@zmNB#fTdA|N3?+)m% zS<?UiZN@jCy7NW_iQXSx-|x>;^7aopc;aF~qSuL)@dr;_n%Q4<WU}bf%d5|wIyAK< zxS=rS?Q!oPzyD2}yTqtR;@zuzos*VprpZKCME?8#zacyP>680UFSixNI0mLUEZ?`} 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><Z`r|hYu0YKzsczT z1^K=tk?x|vWvv!h&hGm2@BfZ9i=Vywy=+nZtKEi<^Ni-~nAtNSV98Nnp#NtW1+)wS z#h)yU3=CZiIv`6xd4hrC4TC6Wh{}mG-Bww5Vs0FCJhjk<S(G#L5^Lj84Z}S@E>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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/protstructure.gif b/doc/ref/csharp/html/icons/protstructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..af356a1db0b8e8821d2f6c94734b98354875e85d GIT binary patch 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)r41<QZFw!|LfQ5T|Zv0{{DL2kFW24ZU6Oc&A0l!pWfZy{(8#m zo^1Kk>q|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~$0v<UwFd3Pw*kQroaM*>x!9%B@<;gKug_44ZM@5qqv}A&K6gC{1vdDqK8UQ3G B8EpUn literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/pubclass.gif b/doc/ref/csharp/html/icons/pubclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a968ab633207f47ec5e3130ec676f0d43598bb0 GIT binary patch literal 368 zcmZ?wbhEHb6krfwxN5}k|NsAQ?`}lTzVZ0okG0#6JX|I6_s!pL?{8g7z5M<C?fi!6 z48}7XlX!Y`d*@Z~{r&KF=Gp&$-~Roz_Sfx#J11s{f4-LUYsT-d4_iN;4)}CB;QaxU zNB6$hY<X##y!GvuUvIa{+{n54<$CtJt+F2un7-XAyUAwr*9Wa%9=1LI@blHDUms8V zzuPAB<yy9L@yV|b+urZf|8T(M<;R~uS1}L=6o0ZXGB6l1=zx@i{KUZ4>o8Mbf(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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/pubdelegate.gif b/doc/ref/csharp/html/icons/pubdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a43eb261adccddee2206769150a9e2d964ed136 GIT binary patch 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&<!s!6Vr*sI@A`}mk^Emo>b4!;L5-Z7-T}_>mGjR`LrsAj0w1HTP=p6<v zEA9>nY#WHr%q^+<QeNBH)u({Ost>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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/pubenumeration.gif b/doc/ref/csharp/html/icons/pubenumeration.gif new file mode 100644 index 0000000000000000000000000000000000000000..46888adef937f09868b1aff485010ad847625183 GIT binary patch literal 339 zcmV-Z0j&N<Nk%w1VGsZi0M$MK<GxVr(uZeym9CqC>(Pbf!&&RmbLYrp^5KtqjHc?* za^l2s<;7g>)_nBlnc}@q=gfSDY)AL)rrf+_?%03v-ihkZZ{W8?^yiuK<B`k2v-Rts z>(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<o<q%s5u5Fm?5YIFohHkeF>!iiKn z4i!jX__&S%6r$8nkQg@~(+QQv5-foTK=WC#T3itp2L%roH9i4gVq_mXCIcrPD;kPw lY;FuaM>a1!czOUcM>;JygoYO~M<Xyfk&~55w6#S+06WsPrM&<E literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/pubevent.gif b/doc/ref/csharp/html/icons/pubevent.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9226da8b49c88296ed4a10835b0b69212431473 GIT binary patch literal 314 zcmZ?wbhEHb<YM4qxN6Su=gEeDpKd;T`sn@M39lbt`TqUehhvjoK6@DFZqU;d^XTr? zb<-2>-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@<R=EU@B_EciWX%=D4%zUU_O%~IeSUL>MKlJCh@8yFl7ixFRNZ06KZzOwPN+z zv<(MOw%xcR)*I23_It(+G5s19o*Z-S8h+h27B({_t~PU7W=)Mr<}8BjGt3<stN{RG Bnx_B& literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/pubextension.gif b/doc/ref/csharp/html/icons/pubextension.gif new file mode 100644 index 0000000000000000000000000000000000000000..6262d1cca8a4286063ae8f168488a1d7c8587dcc GIT binary patch literal 551 zcmZ?wbhEHb6krfwcoxWTzT>=_Q{DAPKYq>lt?WK&MZn5;OW*I#-&3bo_v!Yh%eP<I zWgKwGIX=f`?w*3Zm$ENEoAErP<3o*J&9B+Nf6e?|rCq%;Xw|bb&t6=7QD;!UGGJA& zY2R}H6(vjmyB1&i{P^>mOK&_XZeGp5`ugJQ8r@p0fCbZnrk_qf<6Hlv&#nK%)epr> z{uingwQcx+G3(OH39sU({EMCR*Qf5`lT%MVJpS<I*_UMj%O9_K>`{L6a^97CgNFGw z^IuPVb20bQulc`y>mR?{_b#mKvrp{<Rqt8v=DvS><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&G<S5i znls3Ec6u;4xZ5!J_ct?mc``HWGnmc@G-GEIW)>0fUL<3?)XqgsXpxwn5}&UoFGrw} zp=^gSE5D_rwY18jKnW>z4j)miKxbWpepgm2Kjl-+3OeG=EZUBDAGz5-V`O9zlv8v% Z#l^^Np~1s+_cM3E&u2`ke^{9qtN|Sl$x;9S literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/pubfield.gif b/doc/ref/csharp/html/icons/pubfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..5aed17576f4493ccfdb12f7a8a55fa2cbd74041c GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/pubinterface.gif b/doc/ref/csharp/html/icons/pubinterface.gif new file mode 100644 index 0000000000000000000000000000000000000000..c38a4c46a9a7603bc498664c294c7c06a713e555 GIT binary patch literal 314 zcmZ?wbhEHb6krfwxN5|3<L<L7Hy^zJ`1#Y9?{)o4FWq=}=JMUvDJyp!zHssSqv+g@ zL#J*oTytdc`a_AueGi|$`Tzg_oR#}eUbx#cd((!UCwgaZ%C4Do;P{pOM=vj2dt~kQ zlQWlXD{Y<S8d>ZVUQpY+eD{&7vsdijaq#l?{g*cFIk#xtz9|cLB$xCr-*j~8#$(6M z-8^&oPXD~kdyZV)fBed}{il;l`>VT_0BvC)4k-R)VPs%1V$cC82l<JCE!<&dfrpM% z|A{3<oiY<#1RIJTD1}G}y;Nq@5-@FPP`L2pgitdp)5eVzZo-T%1&t@8y018fJ}U8% lOk&jMGGf(X*LGo0)Q}M2WAkD#ROg!HGjrDLIbMzo)&M@mjer0E literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/pubmethod.gif b/doc/ref/csharp/html/icons/pubmethod.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c72988f50ab32eba45ccf5e52b5807c4a7ffa1b GIT binary patch literal 329 zcmV-P0k-}}Nk%w1VGsZd0M$PL&uP%CwXX2h@b~bm`k4FfrSH|%th;Z#^4s!$E`F#` zsh&KZ>E)~P;Pd*c`+O~Z`kDLHZ`GDkm))4&({9xIoBQn2?6teCjWv##q^{)3<l?X5 z>yhlKQmSzza_!jd?!NB&pZm<ttn}vejz*7=PLb=;>x!AK(QVR|IF|6^@a~=O^W*cU zPpJB?`{m-RrckHo(dc?Bd*+zuoTskl%;w{)<H5wN>5%GwFo3C0s(vtkd@g)-Cw0$= z&;S4bA^8LW002J#EC2ui01yBR000JNz@KnPMEF$1<j`pIv6MuC59H$b8pMGiaQgW+ z4gvw^8$o}tL!m-|%u2rj!*B~^el3(bw36`79RLvr6C?`>LIW=%7c@T_3Mdpi3m6Y) bKQTH02`MrHm_Hv1IXxz!LKYr1LO}pKPRg(M literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/puboperator.gif b/doc/ref/csharp/html/icons/puboperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ebe10a7ec532625741cc8668b1126f2553cdc9c GIT binary patch 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_<xSg0}0#((7L=+hmV&W>D1)D@O#GT~o%bXk;tN}%7Un2kj literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/pubproperty.gif b/doc/ref/csharp/html/icons/pubproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..dfad7b43006984b0d27846a9c6d23d9bfb94ec95 GIT binary patch literal 609 zcmV-n0-pUxNk%w1VGsZi0OoxFqOZjN|NsB}`$kSweVyO`>u#*1kM{rn|Ltf^PgLme z{K3f4!N}5ZVM<F+QgC5Q{{R0jAp%TKQu*O>Gba^OtU*~#SN;C}nU8wy>*wOldhGfC z-?B2qlNCRgDag;+-oar{IxyDd|Io<7(&G5ItfO0aS?~1wb9H=)lBYqQGU~fAU|e1H z+i8`AQ-Et%&dS31<A3Gk-^<?p^7j3}$I)kCQmVSz&B(u`#s5)eK$*6ah0KNF@c*RK zn(U|%_uXpJ>i;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{<CBGR>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^<C4iAXj(Bn&xizwVASh**P0|^ewTr@;;P#^$1-=!}F literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/pubstructure.gif b/doc/ref/csharp/html/icons/pubstructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..1344416abc3801850d955fb78969243e32976d9d GIT binary patch literal 595 zcmZ?wbhEHb6krfwc;?CQ|NsAQ?`||E@jQO_<KZfi9^KyP**6%BXMTO$UAXPz%(MSJ z=RbBXKKZ2J>Am}xe((G}uY&L6G3OIA#BZnGdAnKS{;jW_hkyQl{pal#iQn)3e7+F# zey`4-_kX^<p8M(6m0!<)zu%+t>eH{!7h~?6KmX}M%-b)&zODK8`Bv%2V=k|!ynfp8 ze4gq2kH?)qEd2O(=Gz~eetcf~>GQ3U$dxanR=jvn{qR!i<yRA4eYsV-v{vBz`#WE5 zm;T!R>&%1CPg<V5yTAS0t9jpE&3(UD_sgx4ZyUbdE53KH{K5Cv^X@Jeja=~p=rx8x z4-|j0FfuTBGU$L@3W^g3_6-f5O`eQE;pWcHRtF)wj;`ibSq>|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<FXSZgG}#~@%J*dV|obY?<_$K?gxJQi-7EFLiM_ct>!GFSrunAz6B literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/slMobile.gif b/doc/ref/csharp/html/icons/slMobile.gif new file mode 100644 index 0000000000000000000000000000000000000000..5edc31f94c61a7a50c3285ef00dcbe86e8690974 GIT binary patch literal 909 zcmZ?wbhEHb6krfw_|Cw<&~QMZ;eZ1WEjW;{;6MWq9XPP;)QA7SKm7myA1FTxMnhm2 zhky>qZ=k%uz){2?%pv2kVSxi92Q!O8!-mAe%}h)j784dUxU@4Vuq~MJz`><Q%2G|C z;A3J_KZlTl#)pfEC;Au+lxk)sICxIx<m9kX_^5WILqt$xOQ-SkbIcqaX*M?tlpUGH f>+3{L1~0m@lAUkDoRe1;9$K%)+a)R?z+epkVS_+3 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/static.gif b/doc/ref/csharp/html/icons/static.gif new file mode 100644 index 0000000000000000000000000000000000000000..33723a92be0a7b2b9fc8057fb6f9a2a3ee729a7e GIT binary patch literal 879 zcmZ?wbhEHb<YnMu_|DJpB3}IG^`qYouXt1I{Bd^P=k?v6me&4$c==s>;QNUQFEiC% z7n}SzyY0{GNB_QlU>F6XAuzl`K=CIFBLf3JgAT}Bpgh6A;lm)$!85^uv7wn=Tt*;+ zVd3FsMix6Afd<D$MnQQS7li|j2l`p$<evQa*x10R#3&%J<AY=KWPVjX0|f;Kk9MJ8 SIUR)!4-T`kD6z3HSOWkbZ#uF7 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/icons/xna.gif b/doc/ref/csharp/html/icons/xna.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e6a9d4bd9ecdc3baf35f6c5a0266e74229bd901 GIT binary patch literal 549 zcmZ?wbhEHb6krfwcoxm@{@uIIu8E&Ne{S!Z^Zxz&wyrrxlI0F=TmS0S%h&M?FJHb~ z)t+}?+q$jG=Dbd3y%Nj4J5}psyjW-Ng7uT?>zk*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 literal 0 HcmV?d00001 diff --git a/doc/ref/csharp/html/index.html b/doc/ref/csharp/html/index.html new file mode 100644 index 0000000000..c7d36cc3c3 --- /dev/null +++ b/doc/ref/csharp/html/index.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<html lang="en-US"> +<head> + <meta charset="UTF-8"> + <meta http-equiv="refresh" content="1;url=html/R_Project_Documentation.htm"> + <script type="text/javascript"> + window.location.replace("html/R_Project_Documentation.htm") + </script> + <title>gRPC C# - Redirect</title> +</head> +<body> + <p>If you are not redirected automatically, follow this link to the <a href="html/R_Project_Documentation.htm">default topic</a>.</p> +</body> +</html> diff --git a/doc/ref/csharp/html/scripts/branding-Website.js b/doc/ref/csharp/html/scripts/branding-Website.js new file mode 100644 index 0000000000..06ab9808cc --- /dev/null +++ b/doc/ref/csharp/html/scripts/branding-Website.js @@ -0,0 +1,624 @@ +//=============================================================================================================== +// 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 $('<div/>').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 = "<a class=\"tocCollapsed\" onclick=\"javascript: Toggle(this);\" href=\"#!\"></a>"; + + var text = "<div class=\"toclevel" + childTocLevel + "\" data-toclevel=\"" + childLevel + "\">" + + expander + "<a data-tochassubtree=\"" + hasChildren + "\" href=\"" + childHRef + "\" title=\"" + + childTitle + "\" tocid=\"" + childId + "\"" + + (childHRef == "#" ? " onclick=\"javascript: Toggle(this.previousSibling);\"" : "") + ">" + + childTitle + "</a></div>"; + + 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 = "<strong>Nothing found</strong>"; + 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 = "<strong>Nothing found</strong>"; + 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) == "<strong>") + method = 1; + } + }); + + if(method == 3) + $.ajax({ + type: "GET", + url: "SearchHelp.php", + async: false, + success: function(html) + { + if(html.substring(0, 8) == "<strong>") + 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 "<strong>Nothing found</strong>"; + + 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 "<strong>Nothing found</strong>"; + + // 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 = "<ol>"; + + for(var r in rankings) + content += "<li><a href=\"" + rankings[r].Filename + "\" target=\"_blank\">" + + rankings[r].PageTitle + "</a></li>"; + + content += "</ol>"; + + if(rankings.length < matchingFileIndices.length) + content += "<p>Omitted " + (matchingFileIndices.length - rankings.length) + " more results</p>"; + + return content; +} diff --git a/doc/ref/csharp/html/scripts/branding.js b/doc/ref/csharp/html/scripts/branding.js new file mode 100644 index 0000000000..9be90f3d47 --- /dev/null +++ b/doc/ref/csharp/html/scripts/branding.js @@ -0,0 +1,528 @@ +//=============================================================================================================== +// 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: +// <input type="hidden" id="userDataCache" class="userDataStyle" /> +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 new file mode 100644 index 0000000000..73f33fb3aa --- /dev/null +++ b/doc/ref/csharp/html/scripts/jquery-1.11.0.min.js @@ -0,0 +1,4 @@ +/*! 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="<div class='a'></div><div class='a i'></div>",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="<select t=''><option selected=''></option></select>",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;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;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 href='#'></a>","#"===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="<input/>",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.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;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=" <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",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<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},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)?"<table>"!==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("<iframe frameborder='0' width='0' height='0'/>")).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=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",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="<div></div>",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=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",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=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",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();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",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("<div>").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 new file mode 100644 index 0000000000..296a4d29da --- /dev/null +++ b/doc/ref/csharp/html/search.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> +<head> + <title>gRPC C# - Search</title> + <link rel="stylesheet" type="text/css" href="styles/branding.css" /> + <link rel="stylesheet" type="text/css" href="styles/branding-Website.css" /> + <script type="text/javascript" src="scripts/jquery-1.11.0.min.js"></script> + <script type="text/javascript" src="scripts/branding.js"></script> + <script type="text/javascript" src="scripts/branding-Website.js"></script> +</head> +<body onload="OnSearchPageLoad();"> + <div class="pageHeader" id="PageHeader"> + gRPC C# - Search + </div> + <div class="pageBody"> + <div class="searchContainer"> + <div style="float: left;"> + <form id="SearchForm" method="get" action="#" onsubmit="javascript:PerformSearch(); return false;"> + <input id="txtSearchText" type="text" maxlength="200" /> + <button id="HeaderSearchButton" type="submit" class="header-search-button"> + </button> + </form> + </div> + <input type="checkbox" id="chkSortByTitle" onclick="javascript:PerformSearch();" /> + Sort by title + <br /> + <br /> + <div id="searchResults"> + </div> + <p> + <a href="html/R_Project_Documentation.htm">Back</a></p> + </div> + </div> +</body> +</html> diff --git a/doc/ref/csharp/html/styles/branding-Help1.css b/doc/ref/csharp/html/styles/branding-Help1.css new file mode 100644 index 0000000000..8f7ba25a3b --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-Help1.css @@ -0,0 +1,40 @@ +/* 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 new file mode 100644 index 0000000000..951621be66 --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-HelpViewer.css @@ -0,0 +1,48 @@ +/* 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 new file mode 100644 index 0000000000..d39e08c771 --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-Website.css @@ -0,0 +1,156 @@ +/* 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 new file mode 100644 index 0000000000..f38de74970 --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-cs-CZ.css @@ -0,0 +1,3 @@ +/* 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 new file mode 100644 index 0000000000..4cf80badda --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-de-DE.css @@ -0,0 +1,3 @@ +/* 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 new file mode 100644 index 0000000000..248cbe5a2a --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-en-US.css @@ -0,0 +1,3 @@ +/* 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 new file mode 100644 index 0000000000..4a7ebbd68d --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-es-ES.css @@ -0,0 +1,3 @@ +/* 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 new file mode 100644 index 0000000000..d924dec965 --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-fr-FR.css @@ -0,0 +1,3 @@ +/* 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 new file mode 100644 index 0000000000..36c6b224fb --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-it-IT.css @@ -0,0 +1,3 @@ +/* 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 new file mode 100644 index 0000000000..403aa6ddf8 --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-ja-JP.css @@ -0,0 +1,18 @@ +/* Start JA-JP locale-specific CSS */ +body +{ + font-family: Segoe UI, Verdana, Arial, ï¼ï¼³ Pゴシック; +} +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-ko-KR.css b/doc/ref/csharp/html/styles/branding-ko-KR.css new file mode 100644 index 0000000000..2b46e923ef --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-ko-KR.css @@ -0,0 +1,19 @@ +/* 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 new file mode 100644 index 0000000000..19e981032d --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-pl-PL.css @@ -0,0 +1,3 @@ +/* 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 new file mode 100644 index 0000000000..a0683b0ef2 --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-pt-BR.css @@ -0,0 +1,3 @@ +/* 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 new file mode 100644 index 0000000000..c31f83a44b --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-ru-RU.css @@ -0,0 +1,3 @@ +/* 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 new file mode 100644 index 0000000000..81ca462ef7 --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-tr-TR.css @@ -0,0 +1,3 @@ +/* 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 new file mode 100644 index 0000000000..cf79e7cd00 --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-zh-CN.css @@ -0,0 +1,18 @@ +/* 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 new file mode 100644 index 0000000000..eab654f8c5 --- /dev/null +++ b/doc/ref/csharp/html/styles/branding-zh-TW.css @@ -0,0 +1,18 @@ +/* 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 new file mode 100644 index 0000000000..7afa70b315 --- /dev/null +++ b/doc/ref/csharp/html/styles/branding.css @@ -0,0 +1,561 @@ +/* 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 new file mode 100644 index 0000000000..3270d758a1 --- /dev/null +++ b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ChannelOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ChannelOptions Fields" Url="html/Fields_T_Grpc_Core_ChannelOptions.htm"><HelpTOCNode Title="Census Field" Url="html/F_Grpc_Core_ChannelOptions_Census.htm" /><HelpTOCNode Title="DefaultAuthority Field" Url="html/F_Grpc_Core_ChannelOptions_DefaultAuthority.htm" /><HelpTOCNode Title="Http2InitialSequenceNumber Field" Url="html/F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm" /><HelpTOCNode Title="MaxConcurrentStreams Field" Url="html/F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm" /><HelpTOCNode Title="MaxMessageLength Field" Url="html/F_Grpc_Core_ChannelOptions_MaxMessageLength.htm" /><HelpTOCNode Title="PrimaryUserAgentString Field" Url="html/F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm" /><HelpTOCNode Title="SecondaryUserAgentString Field" Url="html/F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm" /><HelpTOCNode Title="SslTargetNameOverride Field" Url="html/F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..2c4430b029 --- /dev/null +++ b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ContextPropagationOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ContextPropagationOptions Fields" Url="html/Fields_T_Grpc_Core_ContextPropagationOptions.htm"><HelpTOCNode Title="Default Field" Url="html/F_Grpc_Core_ContextPropagationOptions_Default.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..286d4082d3 --- /dev/null +++ b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Metadata.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Metadata Fields" Url="html/Fields_T_Grpc_Core_Metadata.htm"><HelpTOCNode Title="BinaryHeaderSuffix Field" Url="html/F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm" /><HelpTOCNode Title="Empty Field" Url="html/F_Grpc_Core_Metadata_Empty.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..7c5391eca6 --- /dev/null +++ b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ServerPort.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerPort Fields" Url="html/Fields_T_Grpc_Core_ServerPort.htm"><HelpTOCNode Title="PickUnused Field" Url="html/F_Grpc_Core_ServerPort_PickUnused.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..6757777b9f --- /dev/null +++ b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Status.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Status Fields" Url="html/Fields_T_Grpc_Core_Status.htm"><HelpTOCNode Title="DefaultCancelled Field" Url="html/F_Grpc_Core_Status_DefaultCancelled.htm" /><HelpTOCNode Title="DefaultSuccess Field" Url="html/F_Grpc_Core_Status_DefaultSuccess.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..1962206e76 --- /dev/null +++ b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_VersionInfo.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="VersionInfo Fields" Url="html/Fields_T_Grpc_Core_VersionInfo.htm"><HelpTOCNode Title="CurrentVersion Field" Url="html/F_Grpc_Core_VersionInfo_CurrentVersion.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..21fb6dde0a --- /dev/null +++ b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_WriteOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="WriteOptions Fields" Url="html/Fields_T_Grpc_Core_WriteOptions.htm"><HelpTOCNode Title="Default Field" Url="html/F_Grpc_Core_WriteOptions_Default.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..acf36a906c --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Auth_AuthInterceptors.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AuthInterceptors Methods" Url="html/Methods_T_Grpc_Auth_AuthInterceptors.htm"><HelpTOCNode Title="FromAccessToken Method " Url="html/M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm" /><HelpTOCNode Title="FromCredential Method " Url="html/M_Grpc_Auth_AuthInterceptors_FromCredential.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..22aa4b27f3 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncClientStreamingCall(TRequest, TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm"><HelpTOCNode Title="Dispose Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm" /><HelpTOCNode Title="GetAwaiter Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm" /><HelpTOCNode Title="GetStatus Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm" /><HelpTOCNode Title="GetTrailers Method " Url="html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..1cb7ed0256 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncDuplexStreamingCall(TRequest, TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm"><HelpTOCNode Title="Dispose Method " Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm" /><HelpTOCNode Title="GetStatus Method " Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm" /><HelpTOCNode Title="GetTrailers Method " Url="html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..77cea2d896 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncServerStreamingCall(TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm"><HelpTOCNode Title="Dispose Method " Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm" /><HelpTOCNode Title="GetStatus Method " Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm" /><HelpTOCNode Title="GetTrailers Method " Url="html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..577502e6a0 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncUnaryCall_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncUnaryCall(TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm"><HelpTOCNode Title="Dispose Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm" /><HelpTOCNode Title="GetAwaiter Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm" /><HelpTOCNode Title="GetStatus Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm" /><HelpTOCNode Title="GetTrailers Method " Url="html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..954f9fadb3 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallInvocationDetails_2.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Methods" Url="html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm"><HelpTOCNode Title="WithOptions Method " Url="html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..728aebd0ad --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="CallOptions Methods" Url="html/Methods_T_Grpc_Core_CallOptions.htm"><HelpTOCNode Title="WithCancellationToken Method " Url="html/M_Grpc_Core_CallOptions_WithCancellationToken.htm" /><HelpTOCNode Title="WithDeadline Method " Url="html/M_Grpc_Core_CallOptions_WithDeadline.htm" /><HelpTOCNode Title="WithHeaders Method " Url="html/M_Grpc_Core_CallOptions_WithHeaders.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..15004efc43 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Calls.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Calls Methods" Url="html/Methods_T_Grpc_Core_Calls.htm"><HelpTOCNode Title="AsyncClientStreamingCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm" /><HelpTOCNode Title="AsyncDuplexStreamingCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm" /><HelpTOCNode Title="AsyncServerStreamingCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm" /><HelpTOCNode Title="AsyncUnaryCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm" /><HelpTOCNode Title="BlockingUnaryCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..82a1d9c7a0 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Channel.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Channel Methods" Url="html/Methods_T_Grpc_Core_Channel.htm"><HelpTOCNode Title="ConnectAsync Method " Url="html/M_Grpc_Core_Channel_ConnectAsync.htm" /><HelpTOCNode Title="ShutdownAsync Method " Url="html/M_Grpc_Core_Channel_ShutdownAsync.htm" /><HelpTOCNode Title="WaitForStateChangedAsync Method " Url="html/M_Grpc_Core_Channel_WaitForStateChangedAsync.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..a2f2d35c98 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ClientBase.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ClientBase Methods" Url="html/Methods_T_Grpc_Core_ClientBase.htm"><HelpTOCNode Title="CreateCall(TRequest, TResponse) Method " Url="html/M_Grpc_Core_ClientBase_CreateCall__2.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..2035e72200 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_GrpcEnvironment.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="GrpcEnvironment Methods" Url="html/Methods_T_Grpc_Core_GrpcEnvironment.htm"><HelpTOCNode Title="SetLogger Method " Url="html/M_Grpc_Core_GrpcEnvironment_SetLogger.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..fa63f659de --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IAsyncStreamWriter_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="IAsyncStreamWriter(T) Methods" Url="html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm"><HelpTOCNode Title="WriteAsync Method " Url="html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..2d1cda8c2e --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IClientStreamWriter_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="IClientStreamWriter(T) Methods" Url="html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm"><HelpTOCNode Title="CompleteAsync Method " Url="html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..e43c4157ba --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ConsoleLogger.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ConsoleLogger Methods" Url="html/Methods_T_Grpc_Core_Logging_ConsoleLogger.htm"><HelpTOCNode Title="Debug Method " Url="html/M_Grpc_Core_Logging_ConsoleLogger_Debug.htm" /><HelpTOCNode Title="Error Method " Url="html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm" HasChildren="true" /><HelpTOCNode Title="ForType(T) Method " Url="html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm" /><HelpTOCNode Title="Info Method " Url="html/M_Grpc_Core_Logging_ConsoleLogger_Info.htm" /><HelpTOCNode Title="Warning Method " Url="html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..0b32dd3e9d --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ILogger.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ILogger Methods" Url="html/Methods_T_Grpc_Core_Logging_ILogger.htm"><HelpTOCNode Title="Debug Method " Url="html/M_Grpc_Core_Logging_ILogger_Debug.htm" /><HelpTOCNode Title="Error Method " Url="html/Overload_Grpc_Core_Logging_ILogger_Error.htm" HasChildren="true" /><HelpTOCNode Title="ForType(T) Method " Url="html/M_Grpc_Core_Logging_ILogger_ForType__1.htm" /><HelpTOCNode Title="Info Method " Url="html/M_Grpc_Core_Logging_ILogger_Info.htm" /><HelpTOCNode Title="Warning Method " Url="html/Overload_Grpc_Core_Logging_ILogger_Warning.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..8256f81f19 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Marshallers.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Marshallers Methods" Url="html/Methods_T_Grpc_Core_Marshallers.htm"><HelpTOCNode Title="Create(T) Method " Url="html/M_Grpc_Core_Marshallers_Create__1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..5332983a9b --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Metadata Methods" Url="html/Methods_T_Grpc_Core_Metadata.htm"><HelpTOCNode Title="Add Method " Url="html/Overload_Grpc_Core_Metadata_Add.htm" HasChildren="true" /><HelpTOCNode Title="Clear Method " Url="html/M_Grpc_Core_Metadata_Clear.htm" /><HelpTOCNode Title="Contains Method " Url="html/M_Grpc_Core_Metadata_Contains.htm" /><HelpTOCNode Title="CopyTo Method " Url="html/M_Grpc_Core_Metadata_CopyTo.htm" /><HelpTOCNode Title="GetEnumerator Method " Url="html/M_Grpc_Core_Metadata_GetEnumerator.htm" /><HelpTOCNode Title="IndexOf Method " Url="html/M_Grpc_Core_Metadata_IndexOf.htm" /><HelpTOCNode Title="Insert Method " Url="html/M_Grpc_Core_Metadata_Insert.htm" /><HelpTOCNode Title="Remove Method " Url="html/M_Grpc_Core_Metadata_Remove.htm" /><HelpTOCNode Title="RemoveAt Method " Url="html/M_Grpc_Core_Metadata_RemoveAt.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..906d34512c --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata_Entry.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Entry Methods" Url="html/Methods_T_Grpc_Core_Metadata_Entry.htm"><HelpTOCNode Title="ToString Method " Url="html/M_Grpc_Core_Metadata_Entry_ToString.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..98413ca066 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Server Methods" Url="html/Methods_T_Grpc_Core_Server.htm"><HelpTOCNode Title="KillAsync Method " Url="html/M_Grpc_Core_Server_KillAsync.htm" /><HelpTOCNode Title="ShutdownAsync Method " Url="html/M_Grpc_Core_Server_ShutdownAsync.htm" /><HelpTOCNode Title="Start Method " Url="html/M_Grpc_Core_Server_Start.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..0c49a01fcf --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerCallContext.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerCallContext Methods" Url="html/Methods_T_Grpc_Core_ServerCallContext.htm"><HelpTOCNode Title="CreatePropagationToken Method " Url="html/M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm" /><HelpTOCNode Title="WriteResponseHeadersAsync Method " Url="html/M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..96e06c8217 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerServiceDefinition Methods" Url="html/Methods_T_Grpc_Core_ServerServiceDefinition.htm"><HelpTOCNode Title="CreateBuilder Method " Url="html/M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..7c1e09d746 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Builder Methods" Url="html/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm"><HelpTOCNode Title="AddMethod Method " Url="html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm" HasChildren="true" /><HelpTOCNode Title="Build Method " Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..ae1470ea80 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServerPortCollection.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerPortCollection Methods" Url="html/Methods_T_Grpc_Core_Server_ServerPortCollection.htm"><HelpTOCNode Title="Add Method " Url="html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm" HasChildren="true" /><HelpTOCNode Title="GetEnumerator Method " Url="html/M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..ac1bbdb8b9 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServiceDefinitionCollection Methods" Url="html/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm"><HelpTOCNode Title="Add Method " Url="html/M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm" /><HelpTOCNode Title="GetEnumerator Method " Url="html/M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..b3f16eb9ce --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Status.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Status Methods" Url="html/Methods_T_Grpc_Core_Status.htm"><HelpTOCNode Title="ToString Method " Url="html/M_Grpc_Core_Status_ToString.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..d667d519ff --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncStreamExtensions Methods" Url="html/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm"><HelpTOCNode Title="ForEachAsync(T) Method " Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm" /><HelpTOCNode Title="ToListAsync(T) Method " Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm" /><HelpTOCNode Title="WriteAllAsync Method " Url="html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..ca4c3a5be5 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_BenchmarkUtil.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="BenchmarkUtil Methods" Url="html/Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm"><HelpTOCNode Title="RunBenchmark Method " Url="html/M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..7770ff8019 --- /dev/null +++ b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_Preconditions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Preconditions Methods" Url="html/Methods_T_Grpc_Core_Utils_Preconditions.htm"><HelpTOCNode Title="CheckArgument Method " Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm" HasChildren="true" /><HelpTOCNode Title="CheckNotNull Method " Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm" HasChildren="true" /><HelpTOCNode Title="CheckState Method " Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..c38c9e88bb --- /dev/null +++ b/doc/ref/csharp/html/toc/N_Grpc_Auth.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Grpc.Auth" Url="html/N_Grpc_Auth.htm"><HelpTOCNode Title="AuthInterceptors Class" Url="html/T_Grpc_Auth_AuthInterceptors.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..bf8cd54b21 --- /dev/null +++ b/doc/ref/csharp/html/toc/N_Grpc_Core.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Grpc.Core" Url="html/N_Grpc_Core.htm"><HelpTOCNode Title="AsyncClientStreamingCall(TRequest, TResponse) Class" Url="html/T_Grpc_Core_AsyncClientStreamingCall_2.htm" HasChildren="true" /><HelpTOCNode Title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" Url="html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" HasChildren="true" /><HelpTOCNode Title="AsyncServerStreamingCall(TResponse) Class" Url="html/T_Grpc_Core_AsyncServerStreamingCall_1.htm" HasChildren="true" /><HelpTOCNode Title="AsyncUnaryCall(TResponse) Class" Url="html/T_Grpc_Core_AsyncUnaryCall_1.htm" HasChildren="true" /><HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Structure" Url="html/T_Grpc_Core_CallInvocationDetails_2.htm" HasChildren="true" /><HelpTOCNode Title="CallOptions Structure" Url="html/T_Grpc_Core_CallOptions.htm" HasChildren="true" /><HelpTOCNode Title="Calls Class" Url="html/T_Grpc_Core_Calls.htm" HasChildren="true" /><HelpTOCNode Title="Channel Class" Url="html/T_Grpc_Core_Channel.htm" HasChildren="true" /><HelpTOCNode Title="ChannelOption Class" Url="html/T_Grpc_Core_ChannelOption.htm" HasChildren="true" /><HelpTOCNode Title="ChannelOption.OptionType Enumeration" Url="html/T_Grpc_Core_ChannelOption_OptionType.htm" /><HelpTOCNode Title="ChannelOptions Class" Url="html/T_Grpc_Core_ChannelOptions.htm" HasChildren="true" /><HelpTOCNode Title="ChannelState Enumeration" Url="html/T_Grpc_Core_ChannelState.htm" /><HelpTOCNode Title="ClientBase Class" Url="html/T_Grpc_Core_ClientBase.htm" HasChildren="true" /><HelpTOCNode Title="ClientStreamingServerMethod(TRequest, TResponse) Delegate" Url="html/T_Grpc_Core_ClientStreamingServerMethod_2.htm" /><HelpTOCNode Title="CompressionLevel Enumeration" Url="html/T_Grpc_Core_CompressionLevel.htm" /><HelpTOCNode Title="ContextPropagationOptions Class" Url="html/T_Grpc_Core_ContextPropagationOptions.htm" HasChildren="true" /><HelpTOCNode Title="ContextPropagationToken Class" Url="html/T_Grpc_Core_ContextPropagationToken.htm" HasChildren="true" /><HelpTOCNode Title="Credentials Class" Url="html/T_Grpc_Core_Credentials.htm" HasChildren="true" /><HelpTOCNode Title="DuplexStreamingServerMethod(TRequest, TResponse) Delegate" Url="html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm" /><HelpTOCNode Title="GrpcEnvironment Class" Url="html/T_Grpc_Core_GrpcEnvironment.htm" HasChildren="true" /><HelpTOCNode Title="HeaderInterceptor Delegate" Url="html/T_Grpc_Core_HeaderInterceptor.htm" /><HelpTOCNode Title="IAsyncStreamReader(T) Interface" Url="html/T_Grpc_Core_IAsyncStreamReader_1.htm" HasChildren="true" /><HelpTOCNode Title="IAsyncStreamWriter(T) Interface" Url="html/T_Grpc_Core_IAsyncStreamWriter_1.htm" HasChildren="true" /><HelpTOCNode Title="IClientStreamWriter(T) Interface" Url="html/T_Grpc_Core_IClientStreamWriter_1.htm" HasChildren="true" /><HelpTOCNode Title="IHasWriteOptions Interface" Url="html/T_Grpc_Core_IHasWriteOptions.htm" HasChildren="true" /><HelpTOCNode Title="IMethod Interface" Url="html/T_Grpc_Core_IMethod.htm" HasChildren="true" /><HelpTOCNode Title="IServerStreamWriter(T) Interface" Url="html/T_Grpc_Core_IServerStreamWriter_1.htm" HasChildren="true" /><HelpTOCNode Title="KeyCertificatePair Class" Url="html/T_Grpc_Core_KeyCertificatePair.htm" HasChildren="true" /><HelpTOCNode Title="Marshaller(T) Structure" Url="html/T_Grpc_Core_Marshaller_1.htm" HasChildren="true" /><HelpTOCNode Title="Marshallers Class" Url="html/T_Grpc_Core_Marshallers.htm" HasChildren="true" /><HelpTOCNode Title="Metadata Class" Url="html/T_Grpc_Core_Metadata.htm" HasChildren="true" /><HelpTOCNode Title="Metadata.Entry Structure" Url="html/T_Grpc_Core_Metadata_Entry.htm" HasChildren="true" /><HelpTOCNode Title="Method(TRequest, TResponse) Class" Url="html/T_Grpc_Core_Method_2.htm" HasChildren="true" /><HelpTOCNode Title="MethodType Enumeration" Url="html/T_Grpc_Core_MethodType.htm" /><HelpTOCNode Title="RpcException Class" Url="html/T_Grpc_Core_RpcException.htm" HasChildren="true" /><HelpTOCNode Title="Server Class" Url="html/T_Grpc_Core_Server.htm" HasChildren="true" /><HelpTOCNode Title="Server.ServerPortCollection Class" Url="html/T_Grpc_Core_Server_ServerPortCollection.htm" HasChildren="true" /><HelpTOCNode Title="Server.ServiceDefinitionCollection Class" Url="html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm" HasChildren="true" /><HelpTOCNode Title="ServerCallContext Class" Url="html/T_Grpc_Core_ServerCallContext.htm" HasChildren="true" /><HelpTOCNode Title="ServerCredentials Class" Url="html/T_Grpc_Core_ServerCredentials.htm" HasChildren="true" /><HelpTOCNode Title="ServerPort Class" Url="html/T_Grpc_Core_ServerPort.htm" HasChildren="true" /><HelpTOCNode Title="ServerServiceDefinition Class" Url="html/T_Grpc_Core_ServerServiceDefinition.htm" HasChildren="true" /><HelpTOCNode Title="ServerServiceDefinition.Builder Class" Url="html/T_Grpc_Core_ServerServiceDefinition_Builder.htm" HasChildren="true" /><HelpTOCNode Title="ServerStreamingServerMethod(TRequest, TResponse) Delegate" Url="html/T_Grpc_Core_ServerStreamingServerMethod_2.htm" /><HelpTOCNode Title="SslCredentials Class" Url="html/T_Grpc_Core_SslCredentials.htm" HasChildren="true" /><HelpTOCNode Title="SslServerCredentials Class" Url="html/T_Grpc_Core_SslServerCredentials.htm" HasChildren="true" /><HelpTOCNode Title="Status Structure" Url="html/T_Grpc_Core_Status.htm" HasChildren="true" /><HelpTOCNode Title="StatusCode Enumeration" Url="html/T_Grpc_Core_StatusCode.htm" /><HelpTOCNode Title="UnaryServerMethod(TRequest, TResponse) Delegate" Url="html/T_Grpc_Core_UnaryServerMethod_2.htm" /><HelpTOCNode Title="VersionInfo Class" Url="html/T_Grpc_Core_VersionInfo.htm" HasChildren="true" /><HelpTOCNode Title="WriteFlags Enumeration" Url="html/T_Grpc_Core_WriteFlags.htm" /><HelpTOCNode Title="WriteOptions Class" Url="html/T_Grpc_Core_WriteOptions.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..714ea70204 --- /dev/null +++ b/doc/ref/csharp/html/toc/N_Grpc_Core_Logging.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Grpc.Core.Logging" Url="html/N_Grpc_Core_Logging.htm"><HelpTOCNode Title="ConsoleLogger Class" Url="html/T_Grpc_Core_Logging_ConsoleLogger.htm" HasChildren="true" /><HelpTOCNode Title="ILogger Interface" Url="html/T_Grpc_Core_Logging_ILogger.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..0380ca3af6 --- /dev/null +++ b/doc/ref/csharp/html/toc/N_Grpc_Core_Utils.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Grpc.Core.Utils" Url="html/N_Grpc_Core_Utils.htm"><HelpTOCNode Title="AsyncStreamExtensions Class" Url="html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm" HasChildren="true" /><HelpTOCNode Title="BenchmarkUtil Class" Url="html/T_Grpc_Core_Utils_BenchmarkUtil.htm" HasChildren="true" /><HelpTOCNode Title="Preconditions Class" Url="html/T_Grpc_Core_Utils_Preconditions.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..14136c8343 --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_CallInvocationDetails_2__ctor.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Constructor " Url="html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm"><HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)" Url="html/M_Grpc_Core_CallInvocationDetails_2__ctor.htm" /><HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)" Url="html/M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm" /><HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)" Url="html/M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..2dca1f5a6e --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_ChannelOption__ctor.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ChannelOption Constructor " Url="html/Overload_Grpc_Core_ChannelOption__ctor.htm"><HelpTOCNode Title="ChannelOption Constructor (String, Int32)" Url="html/M_Grpc_Core_ChannelOption__ctor.htm" /><HelpTOCNode Title="ChannelOption Constructor (String, String)" Url="html/M_Grpc_Core_ChannelOption__ctor_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..1b954cd4f7 --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Channel__ctor.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Channel Constructor " Url="html/Overload_Grpc_Core_Channel__ctor.htm"><HelpTOCNode Title="Channel Constructor (String, Credentials, IEnumerable(ChannelOption))" Url="html/M_Grpc_Core_Channel__ctor.htm" /><HelpTOCNode Title="Channel Constructor (String, Int32, Credentials, IEnumerable(ChannelOption))" Url="html/M_Grpc_Core_Channel__ctor_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..7dcdd7f7e1 --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Error.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Error Method " Url="html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm"><HelpTOCNode Title="Error Method (String, Object[])" Url="html/M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm" /><HelpTOCNode Title="Error Method (Exception, String, Object[])" Url="html/M_Grpc_Core_Logging_ConsoleLogger_Error.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..ab90f1c0dc --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Warning Method " Url="html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm"><HelpTOCNode Title="Warning Method (String, Object[])" Url="html/M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm" /><HelpTOCNode Title="Warning Method (Exception, String, Object[])" Url="html/M_Grpc_Core_Logging_ConsoleLogger_Warning.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..dd47a40c1e --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Error.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Error Method " Url="html/Overload_Grpc_Core_Logging_ILogger_Error.htm"><HelpTOCNode Title="Error Method (String, Object[])" Url="html/M_Grpc_Core_Logging_ILogger_Error_1.htm" /><HelpTOCNode Title="Error Method (Exception, String, Object[])" Url="html/M_Grpc_Core_Logging_ILogger_Error.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..b6b2ccc721 --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Warning.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Warning Method " Url="html/Overload_Grpc_Core_Logging_ILogger_Warning.htm"><HelpTOCNode Title="Warning Method (String, Object[])" Url="html/M_Grpc_Core_Logging_ILogger_Warning_1.htm" /><HelpTOCNode Title="Warning Method (Exception, String, Object[])" Url="html/M_Grpc_Core_Logging_ILogger_Warning.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..7ad9ece2b8 --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Add.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Add Method " Url="html/Overload_Grpc_Core_Metadata_Add.htm"><HelpTOCNode Title="Add Method (Metadata.Entry)" Url="html/M_Grpc_Core_Metadata_Add.htm" /><HelpTOCNode Title="Add Method (String, Byte[])" Url="html/M_Grpc_Core_Metadata_Add_1.htm" /><HelpTOCNode Title="Add Method (String, String)" Url="html/M_Grpc_Core_Metadata_Add_2.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..0bb3ab2d92 --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Entry__ctor.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Entry Constructor " Url="html/Overload_Grpc_Core_Metadata_Entry__ctor.htm"><HelpTOCNode Title="Metadata.Entry Constructor (String, Byte[])" Url="html/M_Grpc_Core_Metadata_Entry__ctor.htm" /><HelpTOCNode Title="Metadata.Entry Constructor (String, String)" Url="html/M_Grpc_Core_Metadata_Entry__ctor_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..011031f2fb --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_RpcException__ctor.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="RpcException Constructor " Url="html/Overload_Grpc_Core_RpcException__ctor.htm"><HelpTOCNode Title="RpcException Constructor (Status)" Url="html/M_Grpc_Core_RpcException__ctor.htm" /><HelpTOCNode Title="RpcException Constructor (Status, String)" Url="html/M_Grpc_Core_RpcException__ctor_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..172e33a44b --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AddMethod Method " Url="html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm"><HelpTOCNode Title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm" /><HelpTOCNode Title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm" /><HelpTOCNode Title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm" /><HelpTOCNode Title="AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))" Url="html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..01f69d8a2b --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Server_ServerPortCollection_Add.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Add Method " Url="html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm"><HelpTOCNode Title="Add Method (ServerPort)" Url="html/M_Grpc_Core_Server_ServerPortCollection_Add.htm" /><HelpTOCNode Title="Add Method (String, Int32, ServerCredentials)" Url="html/M_Grpc_Core_Server_ServerPortCollection_Add_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..db12484687 --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_SslCredentials__ctor.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="SslCredentials Constructor " Url="html/Overload_Grpc_Core_SslCredentials__ctor.htm"><HelpTOCNode Title="SslCredentials Constructor " Url="html/M_Grpc_Core_SslCredentials__ctor.htm" /><HelpTOCNode Title="SslCredentials Constructor (String)" Url="html/M_Grpc_Core_SslCredentials__ctor_1.htm" /><HelpTOCNode Title="SslCredentials Constructor (String, KeyCertificatePair)" Url="html/M_Grpc_Core_SslCredentials__ctor_2.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..74ef238258 --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_SslServerCredentials__ctor.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="SslServerCredentials Constructor " Url="html/Overload_Grpc_Core_SslServerCredentials__ctor.htm"><HelpTOCNode Title="SslServerCredentials Constructor (IEnumerable(KeyCertificatePair))" Url="html/M_Grpc_Core_SslServerCredentials__ctor.htm" /><HelpTOCNode Title="SslServerCredentials Constructor (IEnumerable(KeyCertificatePair), String, Boolean)" Url="html/M_Grpc_Core_SslServerCredentials__ctor_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..19ff88af8d --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="WriteAllAsync Method " Url="html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm"><HelpTOCNode Title="WriteAllAsync(T) Method (IServerStreamWriter(T), IEnumerable(T))" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm" /><HelpTOCNode Title="WriteAllAsync(T) Method (IClientStreamWriter(T), IEnumerable(T), Boolean)" Url="html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..c92e748cfc --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="CheckArgument Method " Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm"><HelpTOCNode Title="CheckArgument Method (Boolean)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckArgument.htm" /><HelpTOCNode Title="CheckArgument Method (Boolean, String)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..c70fd8a4a2 --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="CheckNotNull Method " Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm"><HelpTOCNode Title="CheckNotNull(T) Method (T)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm" /><HelpTOCNode Title="CheckNotNull(T) Method (T, String)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..6aa498a170 --- /dev/null +++ b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckState.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="CheckState Method " Url="html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm"><HelpTOCNode Title="CheckState Method (Boolean)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckState.htm" /><HelpTOCNode Title="CheckState Method (Boolean, String)" Url="html/M_Grpc_Core_Utils_Preconditions_CheckState_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..f0b84999df --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncClientStreamingCall(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm"><HelpTOCNode Title="RequestStream Property " Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm" /><HelpTOCNode Title="ResponseAsync Property " Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm" /><HelpTOCNode Title="ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..bcbd985aed --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncDuplexStreamingCall(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm"><HelpTOCNode Title="RequestStream Property " Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm" /><HelpTOCNode Title="ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm" /><HelpTOCNode Title="ResponseStream Property " Url="html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..13a9c18f37 --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncServerStreamingCall(TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm"><HelpTOCNode Title="ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm" /><HelpTOCNode Title="ResponseStream Property " Url="html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..f7aacbd9eb --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncUnaryCall_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncUnaryCall(TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm"><HelpTOCNode Title="ResponseAsync Property " Url="html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm" /><HelpTOCNode Title="ResponseHeadersAsync Property " Url="html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..39900b479f --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallInvocationDetails_2.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm"><HelpTOCNode Title="Channel Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm" /><HelpTOCNode Title="Host Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_Host.htm" /><HelpTOCNode Title="Method Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_Method.htm" /><HelpTOCNode Title="Options Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_Options.htm" /><HelpTOCNode Title="RequestMarshaller Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm" /><HelpTOCNode Title="ResponseMarshaller Property " Url="html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..13d5746aa5 --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="CallOptions Properties" Url="html/Properties_T_Grpc_Core_CallOptions.htm"><HelpTOCNode Title="CancellationToken Property " Url="html/P_Grpc_Core_CallOptions_CancellationToken.htm" /><HelpTOCNode Title="Deadline Property " Url="html/P_Grpc_Core_CallOptions_Deadline.htm" /><HelpTOCNode Title="Headers Property " Url="html/P_Grpc_Core_CallOptions_Headers.htm" /><HelpTOCNode Title="PropagationToken Property " Url="html/P_Grpc_Core_CallOptions_PropagationToken.htm" /><HelpTOCNode Title="WriteOptions Property " Url="html/P_Grpc_Core_CallOptions_WriteOptions.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..3ccb9f7d5f --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Channel.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Channel Properties" Url="html/Properties_T_Grpc_Core_Channel.htm"><HelpTOCNode Title="ResolvedTarget Property " Url="html/P_Grpc_Core_Channel_ResolvedTarget.htm" /><HelpTOCNode Title="State Property " Url="html/P_Grpc_Core_Channel_State.htm" /><HelpTOCNode Title="Target Property " Url="html/P_Grpc_Core_Channel_Target.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..f5035d4b08 --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ChannelOption.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ChannelOption Properties" Url="html/Properties_T_Grpc_Core_ChannelOption.htm"><HelpTOCNode Title="IntValue Property " Url="html/P_Grpc_Core_ChannelOption_IntValue.htm" /><HelpTOCNode Title="Name Property " Url="html/P_Grpc_Core_ChannelOption_Name.htm" /><HelpTOCNode Title="StringValue Property " Url="html/P_Grpc_Core_ChannelOption_StringValue.htm" /><HelpTOCNode Title="Type Property " Url="html/P_Grpc_Core_ChannelOption_Type.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..278b6d2dc7 --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ClientBase.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ClientBase Properties" Url="html/Properties_T_Grpc_Core_ClientBase.htm"><HelpTOCNode Title="Channel Property " Url="html/P_Grpc_Core_ClientBase_Channel.htm" /><HelpTOCNode Title="HeaderInterceptor Property " Url="html/P_Grpc_Core_ClientBase_HeaderInterceptor.htm" /><HelpTOCNode Title="Host Property " Url="html/P_Grpc_Core_ClientBase_Host.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..f1c74ec514 --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ContextPropagationOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ContextPropagationOptions Properties" Url="html/Properties_T_Grpc_Core_ContextPropagationOptions.htm"><HelpTOCNode Title="IsPropagateCancellation Property " Url="html/P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm" /><HelpTOCNode Title="IsPropagateDeadline Property " Url="html/P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..df6433582b --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Credentials.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Credentials Properties" Url="html/Properties_T_Grpc_Core_Credentials.htm"><HelpTOCNode Title="Insecure Property " Url="html/P_Grpc_Core_Credentials_Insecure.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..f817e180bb --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_GrpcEnvironment.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="GrpcEnvironment Properties" Url="html/Properties_T_Grpc_Core_GrpcEnvironment.htm"><HelpTOCNode Title="Logger Property " Url="html/P_Grpc_Core_GrpcEnvironment_Logger.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..6ef46a43fd --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IAsyncStreamWriter_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="IAsyncStreamWriter(T) Properties" Url="html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm"><HelpTOCNode Title="WriteOptions Property " Url="html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..b80fa3a04c --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IHasWriteOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="IHasWriteOptions Properties" Url="html/Properties_T_Grpc_Core_IHasWriteOptions.htm"><HelpTOCNode Title="WriteOptions Property " Url="html/P_Grpc_Core_IHasWriteOptions_WriteOptions.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..e51b6128a3 --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IMethod.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="IMethod Properties" Url="html/Properties_T_Grpc_Core_IMethod.htm"><HelpTOCNode Title="FullName Property " Url="html/P_Grpc_Core_IMethod_FullName.htm" /><HelpTOCNode Title="Name Property " Url="html/P_Grpc_Core_IMethod_Name.htm" /><HelpTOCNode Title="ServiceName Property " Url="html/P_Grpc_Core_IMethod_ServiceName.htm" /><HelpTOCNode Title="Type Property " Url="html/P_Grpc_Core_IMethod_Type.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..597f979731 --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_KeyCertificatePair.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="KeyCertificatePair Properties" Url="html/Properties_T_Grpc_Core_KeyCertificatePair.htm"><HelpTOCNode Title="CertificateChain Property " Url="html/P_Grpc_Core_KeyCertificatePair_CertificateChain.htm" /><HelpTOCNode Title="PrivateKey Property " Url="html/P_Grpc_Core_KeyCertificatePair_PrivateKey.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..5523dadcbe --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshaller_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Marshaller(T) Properties" Url="html/Properties_T_Grpc_Core_Marshaller_1.htm"><HelpTOCNode Title="Deserializer Property " Url="html/P_Grpc_Core_Marshaller_1_Deserializer.htm" /><HelpTOCNode Title="Serializer Property " Url="html/P_Grpc_Core_Marshaller_1_Serializer.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..996f6e7010 --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshallers.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Marshallers Properties" Url="html/Properties_T_Grpc_Core_Marshallers.htm"><HelpTOCNode Title="StringMarshaller Property " Url="html/P_Grpc_Core_Marshallers_StringMarshaller.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..ddafcbeef7 --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Metadata Properties" Url="html/Properties_T_Grpc_Core_Metadata.htm"><HelpTOCNode Title="Count Property " Url="html/P_Grpc_Core_Metadata_Count.htm" /><HelpTOCNode Title="IsReadOnly Property " Url="html/P_Grpc_Core_Metadata_IsReadOnly.htm" /><HelpTOCNode Title="Item Property " Url="html/P_Grpc_Core_Metadata_Item.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..6259d4a1cf --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata_Entry.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Entry Properties" Url="html/Properties_T_Grpc_Core_Metadata_Entry.htm"><HelpTOCNode Title="IsBinary Property " Url="html/P_Grpc_Core_Metadata_Entry_IsBinary.htm" /><HelpTOCNode Title="Key Property " Url="html/P_Grpc_Core_Metadata_Entry_Key.htm" /><HelpTOCNode Title="Value Property " Url="html/P_Grpc_Core_Metadata_Entry_Value.htm" /><HelpTOCNode Title="ValueBytes Property " Url="html/P_Grpc_Core_Metadata_Entry_ValueBytes.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..8159031392 --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Method_2.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Method(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_Method_2.htm"><HelpTOCNode Title="FullName Property " Url="html/P_Grpc_Core_Method_2_FullName.htm" /><HelpTOCNode Title="Name Property " Url="html/P_Grpc_Core_Method_2_Name.htm" /><HelpTOCNode Title="RequestMarshaller Property " Url="html/P_Grpc_Core_Method_2_RequestMarshaller.htm" /><HelpTOCNode Title="ResponseMarshaller Property " Url="html/P_Grpc_Core_Method_2_ResponseMarshaller.htm" /><HelpTOCNode Title="ServiceName Property " Url="html/P_Grpc_Core_Method_2_ServiceName.htm" /><HelpTOCNode Title="Type Property " Url="html/P_Grpc_Core_Method_2_Type.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..5c154e6deb --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_RpcException.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="RpcException Properties" Url="html/Properties_T_Grpc_Core_RpcException.htm"><HelpTOCNode Title="Status Property " Url="html/P_Grpc_Core_RpcException_Status.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..6088ffd72d --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Server.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Server Properties" Url="html/Properties_T_Grpc_Core_Server.htm"><HelpTOCNode Title="Ports Property " Url="html/P_Grpc_Core_Server_Ports.htm" /><HelpTOCNode Title="Services Property " Url="html/P_Grpc_Core_Server_Services.htm" /><HelpTOCNode Title="ShutdownTask Property " Url="html/P_Grpc_Core_Server_ShutdownTask.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..4c22ae168b --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCallContext.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerCallContext Properties" Url="html/Properties_T_Grpc_Core_ServerCallContext.htm"><HelpTOCNode Title="CancellationToken Property " Url="html/P_Grpc_Core_ServerCallContext_CancellationToken.htm" /><HelpTOCNode Title="Deadline Property " Url="html/P_Grpc_Core_ServerCallContext_Deadline.htm" /><HelpTOCNode Title="Host Property " Url="html/P_Grpc_Core_ServerCallContext_Host.htm" /><HelpTOCNode Title="Method Property " Url="html/P_Grpc_Core_ServerCallContext_Method.htm" /><HelpTOCNode Title="Peer Property " Url="html/P_Grpc_Core_ServerCallContext_Peer.htm" /><HelpTOCNode Title="RequestHeaders Property " Url="html/P_Grpc_Core_ServerCallContext_RequestHeaders.htm" /><HelpTOCNode Title="ResponseTrailers Property " Url="html/P_Grpc_Core_ServerCallContext_ResponseTrailers.htm" /><HelpTOCNode Title="Status Property " Url="html/P_Grpc_Core_ServerCallContext_Status.htm" /><HelpTOCNode Title="WriteOptions Property " Url="html/P_Grpc_Core_ServerCallContext_WriteOptions.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..9fc1b103c1 --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCredentials.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerCredentials Properties" Url="html/Properties_T_Grpc_Core_ServerCredentials.htm"><HelpTOCNode Title="Insecure Property " Url="html/P_Grpc_Core_ServerCredentials_Insecure.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..0613dc659a --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerPort.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerPort Properties" Url="html/Properties_T_Grpc_Core_ServerPort.htm"><HelpTOCNode Title="BoundPort Property " Url="html/P_Grpc_Core_ServerPort_BoundPort.htm" /><HelpTOCNode Title="Credentials Property " Url="html/P_Grpc_Core_ServerPort_Credentials.htm" /><HelpTOCNode Title="Host Property " Url="html/P_Grpc_Core_ServerPort_Host.htm" /><HelpTOCNode Title="Port Property " Url="html/P_Grpc_Core_ServerPort_Port.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..b789111c5a --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslCredentials.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="SslCredentials Properties" Url="html/Properties_T_Grpc_Core_SslCredentials.htm"><HelpTOCNode Title="KeyCertificatePair Property " Url="html/P_Grpc_Core_SslCredentials_KeyCertificatePair.htm" /><HelpTOCNode Title="RootCertificates Property " Url="html/P_Grpc_Core_SslCredentials_RootCertificates.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..35284d68fc --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslServerCredentials.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="SslServerCredentials Properties" Url="html/Properties_T_Grpc_Core_SslServerCredentials.htm"><HelpTOCNode Title="ForceClientAuthentication Property " Url="html/P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm" /><HelpTOCNode Title="KeyCertificatePairs Property " Url="html/P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm" /><HelpTOCNode Title="RootCertificates Property " Url="html/P_Grpc_Core_SslServerCredentials_RootCertificates.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..030c8d044a --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Status.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Status Properties" Url="html/Properties_T_Grpc_Core_Status.htm"><HelpTOCNode Title="Detail Property " Url="html/P_Grpc_Core_Status_Detail.htm" /><HelpTOCNode Title="StatusCode Property " Url="html/P_Grpc_Core_Status_StatusCode.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..922857669d --- /dev/null +++ b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_WriteOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="WriteOptions Properties" Url="html/Properties_T_Grpc_Core_WriteOptions.htm"><HelpTOCNode Title="Flags Property " Url="html/P_Grpc_Core_WriteOptions_Flags.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..e8895fc2f0 --- /dev/null +++ b/doc/ref/csharp/html/toc/R_Project_Documentation.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Namespaces" Url="html/R_Project_Documentation.htm"><HelpTOCNode Title="Grpc.Auth" Url="html/N_Grpc_Auth.htm" HasChildren="true" /><HelpTOCNode Title="Grpc.Core" Url="html/N_Grpc_Core.htm" HasChildren="true" /><HelpTOCNode Title="Grpc.Core.Logging" Url="html/N_Grpc_Core_Logging.htm" HasChildren="true" /><HelpTOCNode Title="Grpc.Core.Utils" Url="html/N_Grpc_Core_Utils.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..2e934b724a --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Auth_AuthInterceptors.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AuthInterceptors Class" Url="html/T_Grpc_Auth_AuthInterceptors.htm"><HelpTOCNode Title="AuthInterceptors Methods" Url="html/Methods_T_Grpc_Auth_AuthInterceptors.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..19a77d8a7e --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncClientStreamingCall_2.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncClientStreamingCall(TRequest, TResponse) Class" Url="html/T_Grpc_Core_AsyncClientStreamingCall_2.htm"><HelpTOCNode Title="AsyncClientStreamingCall(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm" HasChildren="true" /><HelpTOCNode Title="AsyncClientStreamingCall(TRequest, TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..7fc7215862 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncDuplexStreamingCall_2.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncDuplexStreamingCall(TRequest, TResponse) Class" Url="html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm"><HelpTOCNode Title="AsyncDuplexStreamingCall(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" HasChildren="true" /><HelpTOCNode Title="AsyncDuplexStreamingCall(TRequest, TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..ef66bf5b86 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncServerStreamingCall_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncServerStreamingCall(TResponse) Class" Url="html/T_Grpc_Core_AsyncServerStreamingCall_1.htm"><HelpTOCNode Title="AsyncServerStreamingCall(TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm" HasChildren="true" /><HelpTOCNode Title="AsyncServerStreamingCall(TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..23b4b52b7f --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncUnaryCall_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncUnaryCall(TResponse) Class" Url="html/T_Grpc_Core_AsyncUnaryCall_1.htm"><HelpTOCNode Title="AsyncUnaryCall(TResponse) Properties" Url="html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm" HasChildren="true" /><HelpTOCNode Title="AsyncUnaryCall(TResponse) Methods" Url="html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..58b3de4887 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_CallInvocationDetails_2.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Structure" Url="html/T_Grpc_Core_CallInvocationDetails_2.htm"><HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Constructor " Url="html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm" HasChildren="true" /><HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm" HasChildren="true" /><HelpTOCNode Title="CallInvocationDetails(TRequest, TResponse) Methods" Url="html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..37363c4d4a --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_CallOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="CallOptions Structure" Url="html/T_Grpc_Core_CallOptions.htm"><HelpTOCNode Title="CallOptions Constructor " Url="html/M_Grpc_Core_CallOptions__ctor.htm" /><HelpTOCNode Title="CallOptions Properties" Url="html/Properties_T_Grpc_Core_CallOptions.htm" HasChildren="true" /><HelpTOCNode Title="CallOptions Methods" Url="html/Methods_T_Grpc_Core_CallOptions.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..a311abaf98 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Calls.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Calls Class" Url="html/T_Grpc_Core_Calls.htm"><HelpTOCNode Title="Calls Methods" Url="html/Methods_T_Grpc_Core_Calls.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..6b1861dced --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Channel.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Channel Class" Url="html/T_Grpc_Core_Channel.htm"><HelpTOCNode Title="Channel Constructor " Url="html/Overload_Grpc_Core_Channel__ctor.htm" HasChildren="true" /><HelpTOCNode Title="Channel Properties" Url="html/Properties_T_Grpc_Core_Channel.htm" HasChildren="true" /><HelpTOCNode Title="Channel Methods" Url="html/Methods_T_Grpc_Core_Channel.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..5d862e65a0 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOption.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ChannelOption Class" Url="html/T_Grpc_Core_ChannelOption.htm"><HelpTOCNode Title="ChannelOption Constructor " Url="html/Overload_Grpc_Core_ChannelOption__ctor.htm" HasChildren="true" /><HelpTOCNode Title="ChannelOption Properties" Url="html/Properties_T_Grpc_Core_ChannelOption.htm" HasChildren="true" /><HelpTOCNode Title="ChannelOption Methods" Url="html/Methods_T_Grpc_Core_ChannelOption.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..691797e6cf --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ChannelOptions Class" Url="html/T_Grpc_Core_ChannelOptions.htm"><HelpTOCNode Title="ChannelOptions Fields" Url="html/Fields_T_Grpc_Core_ChannelOptions.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..349238f4ca --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_ClientBase.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ClientBase Class" Url="html/T_Grpc_Core_ClientBase.htm"><HelpTOCNode Title="ClientBase Constructor " Url="html/M_Grpc_Core_ClientBase__ctor.htm" /><HelpTOCNode Title="ClientBase Properties" Url="html/Properties_T_Grpc_Core_ClientBase.htm" HasChildren="true" /><HelpTOCNode Title="ClientBase Methods" Url="html/Methods_T_Grpc_Core_ClientBase.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..6405e3d2f2 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ContextPropagationOptions Class" Url="html/T_Grpc_Core_ContextPropagationOptions.htm"><HelpTOCNode Title="ContextPropagationOptions Constructor " Url="html/M_Grpc_Core_ContextPropagationOptions__ctor.htm" /><HelpTOCNode Title="ContextPropagationOptions Properties" Url="html/Properties_T_Grpc_Core_ContextPropagationOptions.htm" HasChildren="true" /><HelpTOCNode Title="ContextPropagationOptions Methods" Url="html/Methods_T_Grpc_Core_ContextPropagationOptions.htm" /><HelpTOCNode Title="ContextPropagationOptions Fields" Url="html/Fields_T_Grpc_Core_ContextPropagationOptions.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..9425beff5f --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationToken.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ContextPropagationToken Class" Url="html/T_Grpc_Core_ContextPropagationToken.htm"><HelpTOCNode Title="ContextPropagationToken Methods" Url="html/Methods_T_Grpc_Core_ContextPropagationToken.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..bbac8193ba --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Credentials.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Credentials Class" Url="html/T_Grpc_Core_Credentials.htm"><HelpTOCNode Title="Credentials Constructor " Url="html/M_Grpc_Core_Credentials__ctor.htm" /><HelpTOCNode Title="Credentials Properties" Url="html/Properties_T_Grpc_Core_Credentials.htm" HasChildren="true" /><HelpTOCNode Title="Credentials Methods" Url="html/Methods_T_Grpc_Core_Credentials.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..bbd474189b --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_GrpcEnvironment.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="GrpcEnvironment Class" Url="html/T_Grpc_Core_GrpcEnvironment.htm"><HelpTOCNode Title="GrpcEnvironment Properties" Url="html/Properties_T_Grpc_Core_GrpcEnvironment.htm" HasChildren="true" /><HelpTOCNode Title="GrpcEnvironment Methods" Url="html/Methods_T_Grpc_Core_GrpcEnvironment.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..b055c910a6 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamReader_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="IAsyncStreamReader(T) Interface" Url="html/T_Grpc_Core_IAsyncStreamReader_1.htm"><HelpTOCNode Title="IAsyncStreamReader(T) Properties" Url="html/Properties_T_Grpc_Core_IAsyncStreamReader_1.htm" /><HelpTOCNode Title="IAsyncStreamReader(T) Methods" Url="html/Methods_T_Grpc_Core_IAsyncStreamReader_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..a9b94b5e9a --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamWriter_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="IAsyncStreamWriter(T) Interface" Url="html/T_Grpc_Core_IAsyncStreamWriter_1.htm"><HelpTOCNode Title="IAsyncStreamWriter(T) Properties" Url="html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm" HasChildren="true" /><HelpTOCNode Title="IAsyncStreamWriter(T) Methods" Url="html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..fda5e1d490 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_IClientStreamWriter_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="IClientStreamWriter(T) Interface" Url="html/T_Grpc_Core_IClientStreamWriter_1.htm"><HelpTOCNode Title="IClientStreamWriter(T) Properties" Url="html/Properties_T_Grpc_Core_IClientStreamWriter_1.htm" /><HelpTOCNode Title="IClientStreamWriter(T) Methods" Url="html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..b5cdd29aaa --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_IHasWriteOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="IHasWriteOptions Interface" Url="html/T_Grpc_Core_IHasWriteOptions.htm"><HelpTOCNode Title="IHasWriteOptions Properties" Url="html/Properties_T_Grpc_Core_IHasWriteOptions.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..81f2616049 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_IMethod.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="IMethod Interface" Url="html/T_Grpc_Core_IMethod.htm"><HelpTOCNode Title="IMethod Properties" Url="html/Properties_T_Grpc_Core_IMethod.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..ecd55220fd --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_IServerStreamWriter_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="IServerStreamWriter(T) Interface" Url="html/T_Grpc_Core_IServerStreamWriter_1.htm"><HelpTOCNode Title="IServerStreamWriter(T) Properties" Url="html/Properties_T_Grpc_Core_IServerStreamWriter_1.htm" /><HelpTOCNode Title="IServerStreamWriter(T) Methods" Url="html/Methods_T_Grpc_Core_IServerStreamWriter_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..3bc56c00af --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_KeyCertificatePair.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="KeyCertificatePair Class" Url="html/T_Grpc_Core_KeyCertificatePair.htm"><HelpTOCNode Title="KeyCertificatePair Constructor " Url="html/M_Grpc_Core_KeyCertificatePair__ctor.htm" /><HelpTOCNode Title="KeyCertificatePair Properties" Url="html/Properties_T_Grpc_Core_KeyCertificatePair.htm" HasChildren="true" /><HelpTOCNode Title="KeyCertificatePair Methods" Url="html/Methods_T_Grpc_Core_KeyCertificatePair.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..18b5fb4340 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ConsoleLogger.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ConsoleLogger Class" Url="html/T_Grpc_Core_Logging_ConsoleLogger.htm"><HelpTOCNode Title="ConsoleLogger Constructor " Url="html/M_Grpc_Core_Logging_ConsoleLogger__ctor.htm" /><HelpTOCNode Title="ConsoleLogger Methods" Url="html/Methods_T_Grpc_Core_Logging_ConsoleLogger.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..f49a352d99 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ILogger.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ILogger Interface" Url="html/T_Grpc_Core_Logging_ILogger.htm"><HelpTOCNode Title="ILogger Methods" Url="html/Methods_T_Grpc_Core_Logging_ILogger.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..7a41e05188 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Marshaller_1.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Marshaller(T) Structure" Url="html/T_Grpc_Core_Marshaller_1.htm"><HelpTOCNode Title="Marshaller(T) Constructor " Url="html/M_Grpc_Core_Marshaller_1__ctor.htm" /><HelpTOCNode Title="Marshaller(T) Properties" Url="html/Properties_T_Grpc_Core_Marshaller_1.htm" HasChildren="true" /><HelpTOCNode Title="Marshaller(T) Methods" Url="html/Methods_T_Grpc_Core_Marshaller_1.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..e6cb53d987 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Marshallers.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Marshallers Class" Url="html/T_Grpc_Core_Marshallers.htm"><HelpTOCNode Title="Marshallers Properties" Url="html/Properties_T_Grpc_Core_Marshallers.htm" HasChildren="true" /><HelpTOCNode Title="Marshallers Methods" Url="html/Methods_T_Grpc_Core_Marshallers.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..c1fa355265 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Metadata.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Metadata Class" Url="html/T_Grpc_Core_Metadata.htm"><HelpTOCNode Title="Metadata Constructor " Url="html/M_Grpc_Core_Metadata__ctor.htm" /><HelpTOCNode Title="Metadata Properties" Url="html/Properties_T_Grpc_Core_Metadata.htm" HasChildren="true" /><HelpTOCNode Title="Metadata Methods" Url="html/Methods_T_Grpc_Core_Metadata.htm" HasChildren="true" /><HelpTOCNode Title="Metadata Fields" Url="html/Fields_T_Grpc_Core_Metadata.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..e3b05189aa --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Metadata_Entry.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Metadata.Entry Structure" Url="html/T_Grpc_Core_Metadata_Entry.htm"><HelpTOCNode Title="Entry Constructor " Url="html/Overload_Grpc_Core_Metadata_Entry__ctor.htm" HasChildren="true" /><HelpTOCNode Title="Entry Properties" Url="html/Properties_T_Grpc_Core_Metadata_Entry.htm" HasChildren="true" /><HelpTOCNode Title="Entry Methods" Url="html/Methods_T_Grpc_Core_Metadata_Entry.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..2e4329d5ff --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Method_2.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Method(TRequest, TResponse) Class" Url="html/T_Grpc_Core_Method_2.htm"><HelpTOCNode Title="Method(TRequest, TResponse) Constructor " Url="html/M_Grpc_Core_Method_2__ctor.htm" /><HelpTOCNode Title="Method(TRequest, TResponse) Properties" Url="html/Properties_T_Grpc_Core_Method_2.htm" HasChildren="true" /><HelpTOCNode Title="Method(TRequest, TResponse) Methods" Url="html/Methods_T_Grpc_Core_Method_2.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..d97a369043 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_RpcException.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="RpcException Class" Url="html/T_Grpc_Core_RpcException.htm"><HelpTOCNode Title="RpcException Constructor " Url="html/Overload_Grpc_Core_RpcException__ctor.htm" HasChildren="true" /><HelpTOCNode Title="RpcException Properties" Url="html/Properties_T_Grpc_Core_RpcException.htm" HasChildren="true" /><HelpTOCNode Title="RpcException Methods" Url="html/Methods_T_Grpc_Core_RpcException.htm" /><HelpTOCNode Title="RpcException Events" Url="html/Events_T_Grpc_Core_RpcException.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..78e807def0 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Server.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Server Class" Url="html/T_Grpc_Core_Server.htm"><HelpTOCNode Title="Server Constructor " Url="html/M_Grpc_Core_Server__ctor.htm" /><HelpTOCNode Title="Server Properties" Url="html/Properties_T_Grpc_Core_Server.htm" HasChildren="true" /><HelpTOCNode Title="Server Methods" Url="html/Methods_T_Grpc_Core_Server.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..96856689c4 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_ServerCallContext.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerCallContext Class" Url="html/T_Grpc_Core_ServerCallContext.htm"><HelpTOCNode Title="ServerCallContext Properties" Url="html/Properties_T_Grpc_Core_ServerCallContext.htm" HasChildren="true" /><HelpTOCNode Title="ServerCallContext Methods" Url="html/Methods_T_Grpc_Core_ServerCallContext.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..b7d878f586 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_ServerCredentials.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerCredentials Class" Url="html/T_Grpc_Core_ServerCredentials.htm"><HelpTOCNode Title="ServerCredentials Constructor " Url="html/M_Grpc_Core_ServerCredentials__ctor.htm" /><HelpTOCNode Title="ServerCredentials Properties" Url="html/Properties_T_Grpc_Core_ServerCredentials.htm" HasChildren="true" /><HelpTOCNode Title="ServerCredentials Methods" Url="html/Methods_T_Grpc_Core_ServerCredentials.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..63cd6b4093 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_ServerPort.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerPort Class" Url="html/T_Grpc_Core_ServerPort.htm"><HelpTOCNode Title="ServerPort Constructor " Url="html/M_Grpc_Core_ServerPort__ctor.htm" /><HelpTOCNode Title="ServerPort Properties" Url="html/Properties_T_Grpc_Core_ServerPort.htm" HasChildren="true" /><HelpTOCNode Title="ServerPort Methods" Url="html/Methods_T_Grpc_Core_ServerPort.htm" /><HelpTOCNode Title="ServerPort Fields" Url="html/Fields_T_Grpc_Core_ServerPort.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..ec30762d32 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerServiceDefinition Class" Url="html/T_Grpc_Core_ServerServiceDefinition.htm"><HelpTOCNode Title="ServerServiceDefinition Methods" Url="html/Methods_T_Grpc_Core_ServerServiceDefinition.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..0641ac30d9 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition_Builder.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="ServerServiceDefinition.Builder Class" Url="html/T_Grpc_Core_ServerServiceDefinition_Builder.htm"><HelpTOCNode Title="ServerServiceDefinition.Builder Constructor " Url="html/M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm" /><HelpTOCNode Title="Builder Methods" Url="html/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..9a704ffdf5 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServerPortCollection.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Server.ServerPortCollection Class" Url="html/T_Grpc_Core_Server_ServerPortCollection.htm"><HelpTOCNode Title="ServerPortCollection Methods" Url="html/Methods_T_Grpc_Core_Server_ServerPortCollection.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..e9d7768402 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServiceDefinitionCollection.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Server.ServiceDefinitionCollection Class" Url="html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm"><HelpTOCNode Title="ServiceDefinitionCollection Methods" Url="html/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..bb0f2a98ab --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_SslCredentials.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="SslCredentials Class" Url="html/T_Grpc_Core_SslCredentials.htm"><HelpTOCNode Title="SslCredentials Constructor " Url="html/Overload_Grpc_Core_SslCredentials__ctor.htm" HasChildren="true" /><HelpTOCNode Title="SslCredentials Properties" Url="html/Properties_T_Grpc_Core_SslCredentials.htm" HasChildren="true" /><HelpTOCNode Title="SslCredentials Methods" Url="html/Methods_T_Grpc_Core_SslCredentials.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..fa3e0f8425 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_SslServerCredentials.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="SslServerCredentials Class" Url="html/T_Grpc_Core_SslServerCredentials.htm"><HelpTOCNode Title="SslServerCredentials Constructor " Url="html/Overload_Grpc_Core_SslServerCredentials__ctor.htm" HasChildren="true" /><HelpTOCNode Title="SslServerCredentials Properties" Url="html/Properties_T_Grpc_Core_SslServerCredentials.htm" HasChildren="true" /><HelpTOCNode Title="SslServerCredentials Methods" Url="html/Methods_T_Grpc_Core_SslServerCredentials.htm" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..d1bc2943a0 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Status.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Status Structure" Url="html/T_Grpc_Core_Status.htm"><HelpTOCNode Title="Status Constructor " Url="html/M_Grpc_Core_Status__ctor.htm" /><HelpTOCNode Title="Status Properties" Url="html/Properties_T_Grpc_Core_Status.htm" HasChildren="true" /><HelpTOCNode Title="Status Methods" Url="html/Methods_T_Grpc_Core_Status.htm" HasChildren="true" /><HelpTOCNode Title="Status Fields" Url="html/Fields_T_Grpc_Core_Status.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..c581425d37 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_AsyncStreamExtensions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="AsyncStreamExtensions Class" Url="html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm"><HelpTOCNode Title="AsyncStreamExtensions Methods" Url="html/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..cb5d367aa3 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_BenchmarkUtil.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="BenchmarkUtil Class" Url="html/T_Grpc_Core_Utils_BenchmarkUtil.htm"><HelpTOCNode Title="BenchmarkUtil Methods" Url="html/Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..192b0257e2 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_Preconditions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="Preconditions Class" Url="html/T_Grpc_Core_Utils_Preconditions.htm"><HelpTOCNode Title="Preconditions Methods" Url="html/Methods_T_Grpc_Core_Utils_Preconditions.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..283cbbb83e --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_VersionInfo.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="VersionInfo Class" Url="html/T_Grpc_Core_VersionInfo.htm"><HelpTOCNode Title="VersionInfo Fields" Url="html/Fields_T_Grpc_Core_VersionInfo.htm" HasChildren="true" /></HelpTOCNode> \ 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 new file mode 100644 index 0000000000..5dcda42dc0 --- /dev/null +++ b/doc/ref/csharp/html/toc/T_Grpc_Core_WriteOptions.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOCNode Title="WriteOptions Class" Url="html/T_Grpc_Core_WriteOptions.htm"><HelpTOCNode Title="WriteOptions Constructor " Url="html/M_Grpc_Core_WriteOptions__ctor.htm" /><HelpTOCNode Title="WriteOptions Properties" Url="html/Properties_T_Grpc_Core_WriteOptions.htm" HasChildren="true" /><HelpTOCNode Title="WriteOptions Methods" Url="html/Methods_T_Grpc_Core_WriteOptions.htm" /><HelpTOCNode Title="WriteOptions Fields" Url="html/Fields_T_Grpc_Core_WriteOptions.htm" HasChildren="true" /></HelpTOCNode> \ No newline at end of file diff --git a/doc/ref/csharp/html/toc/roottoc.xml b/doc/ref/csharp/html/toc/roottoc.xml new file mode 100644 index 0000000000..e5d2703f77 --- /dev/null +++ b/doc/ref/csharp/html/toc/roottoc.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><HelpTOC><HelpTOCNode Title="Namespaces" Url="html/R_Project_Documentation.htm" HasChildren="true" /></HelpTOC> \ No newline at end of file -- GitLab From 8caba0500bf62fb526a2139840ace0f5d66b8b98 Mon Sep 17 00:00:00 2001 From: Nathaniel Manista <nathaniel@google.com> Date: Mon, 24 Aug 2015 19:03:25 +0000 Subject: [PATCH 164/178] A test suite for the RPC Framework Face interface While a full Cartesian product across all variables isn't yet present this is still reasonably comprehensive. --- .../framework/interfaces/face/__init__.py | 30 ++ .../_blocking_invocation_inline_service.py | 250 ++++++++++ .../framework/interfaces/face/_digest.py | 444 ++++++++++++++++++ ...nt_invocation_synchronous_event_service.py | 377 +++++++++++++++ ...e_invocation_asynchronous_event_service.py | 378 +++++++++++++++ .../framework/interfaces/face/_invocation.py | 213 +++++++++ .../framework/interfaces/face/_receiver.py | 95 ++++ .../framework/interfaces/face/_service.py | 332 +++++++++++++ .../interfaces/face/_stock_service.py | 396 ++++++++++++++++ .../framework/interfaces/face/test_cases.py | 67 +++ .../interfaces/face/test_interfaces.py | 229 +++++++++ 11 files changed, 2811 insertions(+) create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/face/__init__.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/face/_blocking_invocation_inline_service.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/face/_digest.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/face/_event_invocation_synchronous_event_service.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/face/_future_invocation_asynchronous_event_service.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/face/_invocation.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/face/_receiver.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/face/_service.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/face/_stock_service.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/face/test_cases.py create mode 100644 src/python/grpcio_test/grpc_test/framework/interfaces/face/test_interfaces.py diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/face/__init__.py b/src/python/grpcio_test/grpc_test/framework/interfaces/face/__init__.py new file mode 100644 index 0000000000..7086519106 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/face/__init__.py @@ -0,0 +1,30 @@ +# 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. + + diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/face/_blocking_invocation_inline_service.py b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_blocking_invocation_inline_service.py new file mode 100644 index 0000000000..857ad5cf3e --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_blocking_invocation_inline_service.py @@ -0,0 +1,250 @@ +# 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. + +"""Test code for the Face layer of RPC Framework.""" + +import abc +import unittest + +# test_interfaces is referenced from specification in this module. +from grpc.framework.interfaces.face import face +from grpc_test.framework.common import test_constants +from grpc_test.framework.common import test_control +from grpc_test.framework.common import test_coverage +from grpc_test.framework.interfaces.face import _digest +from grpc_test.framework.interfaces.face import _stock_service +from grpc_test.framework.interfaces.face import test_interfaces # pylint: disable=unused-import + + +class TestCase(test_coverage.Coverage, unittest.TestCase): + """A test of the Face layer of RPC Framework. + + Concrete subclasses must have an "implementation" attribute of type + test_interfaces.Implementation and an "invoker_constructor" attribute of type + _invocation.InvokerConstructor. + """ + __metaclass__ = abc.ABCMeta + + NAME = 'BlockingInvocationInlineServiceTest' + + def setUp(self): + """See unittest.TestCase.setUp for full specification. + + Overriding implementations must call this implementation. + """ + self._control = test_control.PauseFailControl() + self._digest = _digest.digest( + _stock_service.STOCK_TEST_SERVICE, self._control, None) + + generic_stub, dynamic_stubs, self._memo = self.implementation.instantiate( + self._digest.methods, self._digest.inline_method_implementations, None) + self._invoker = self.invoker_constructor.construct_invoker( + generic_stub, dynamic_stubs, self._digest.methods) + + def tearDown(self): + """See unittest.TestCase.tearDown for full specification. + + Overriding implementations must call this implementation. + """ + self.implementation.destantiate(self._memo) + + def testSuccessfulUnaryRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + response = self._invoker.blocking(group, method)( + request, test_constants.LONG_TIMEOUT) + + test_messages.verify(request, response, self) + + def testSuccessfulUnaryRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + response_iterator = self._invoker.blocking(group, method)( + request, test_constants.LONG_TIMEOUT) + responses = list(response_iterator) + + test_messages.verify(request, responses, self) + + def testSuccessfulStreamRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + response = self._invoker.blocking(group, method)( + iter(requests), test_constants.LONG_TIMEOUT) + + test_messages.verify(requests, response, self) + + def testSuccessfulStreamRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + response_iterator = self._invoker.blocking(group, method)( + iter(requests), test_constants.LONG_TIMEOUT) + responses = list(response_iterator) + + test_messages.verify(requests, responses, self) + + def testSequentialInvocations(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + first_request = test_messages.request() + second_request = test_messages.request() + + first_response = self._invoker.blocking(group, method)( + first_request, test_constants.LONG_TIMEOUT) + + test_messages.verify(first_request, first_response, self) + + second_response = self._invoker.blocking(group, method)( + second_request, test_constants.LONG_TIMEOUT) + + test_messages.verify(second_request, second_response, self) + + @unittest.skip('Parallel invocations impossible with blocking control flow!') + def testParallelInvocations(self): + raise NotImplementedError() + + @unittest.skip('Parallel invocations impossible with blocking control flow!') + def testWaitingForSomeButNotAllParallelInvocations(self): + raise NotImplementedError() + + @unittest.skip('Cancellation impossible with blocking control flow!') + def testCancelledUnaryRequestUnaryResponse(self): + raise NotImplementedError() + + @unittest.skip('Cancellation impossible with blocking control flow!') + def testCancelledUnaryRequestStreamResponse(self): + raise NotImplementedError() + + @unittest.skip('Cancellation impossible with blocking control flow!') + def testCancelledStreamRequestUnaryResponse(self): + raise NotImplementedError() + + @unittest.skip('Cancellation impossible with blocking control flow!') + def testCancelledStreamRequestStreamResponse(self): + raise NotImplementedError() + + def testExpiredUnaryRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + with self._control.pause(), self.assertRaises( + face.ExpirationError): + self._invoker.blocking(group, method)( + request, test_constants.SHORT_TIMEOUT) + + def testExpiredUnaryRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + with self._control.pause(), self.assertRaises( + face.ExpirationError): + response_iterator = self._invoker.blocking(group, method)( + request, test_constants.SHORT_TIMEOUT) + list(response_iterator) + + def testExpiredStreamRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + with self._control.pause(), self.assertRaises( + face.ExpirationError): + self._invoker.blocking(group, method)( + iter(requests), test_constants.SHORT_TIMEOUT) + + def testExpiredStreamRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + with self._control.pause(), self.assertRaises( + face.ExpirationError): + response_iterator = self._invoker.blocking(group, method)( + iter(requests), test_constants.SHORT_TIMEOUT) + list(response_iterator) + + def testFailedUnaryRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + with self._control.fail(), self.assertRaises(face.RemoteError): + self._invoker.blocking(group, method)( + request, test_constants.LONG_TIMEOUT) + + def testFailedUnaryRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + with self._control.fail(), self.assertRaises(face.RemoteError): + response_iterator = self._invoker.blocking(group, method)( + request, test_constants.LONG_TIMEOUT) + list(response_iterator) + + def testFailedStreamRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + with self._control.fail(), self.assertRaises(face.RemoteError): + self._invoker.blocking(group, method)( + iter(requests), test_constants.LONG_TIMEOUT) + + def testFailedStreamRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + with self._control.fail(), self.assertRaises(face.RemoteError): + response_iterator = self._invoker.blocking(group, method)( + iter(requests), test_constants.LONG_TIMEOUT) + list(response_iterator) diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/face/_digest.py b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_digest.py new file mode 100644 index 0000000000..da56ed7b27 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_digest.py @@ -0,0 +1,444 @@ +# 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. + +"""Code for making a service.TestService more amenable to use in tests.""" + +import collections +import threading + +# test_control, _service, and test_interfaces are referenced from specification +# in this module. +from grpc.framework.common import cardinality +from grpc.framework.common import style +from grpc.framework.foundation import stream +from grpc.framework.foundation import stream_util +from grpc.framework.interfaces.face import face +from grpc_test.framework.common import test_control # pylint: disable=unused-import +from grpc_test.framework.interfaces.face import _service # pylint: disable=unused-import +from grpc_test.framework.interfaces.face import test_interfaces # pylint: disable=unused-import + +_IDENTITY = lambda x: x + + +class TestServiceDigest( + collections.namedtuple( + 'TestServiceDigest', + ('methods', + 'inline_method_implementations', + 'event_method_implementations', + 'multi_method_implementation', + 'unary_unary_messages_sequences', + 'unary_stream_messages_sequences', + 'stream_unary_messages_sequences', + 'stream_stream_messages_sequences',))): + """A transformation of a service.TestService. + + Attributes: + methods: A dict from method group-name pair to test_interfaces.Method object + describing the RPC methods that may be called during the test. + inline_method_implementations: A dict from method group-name pair to + face.MethodImplementation object to be used in tests of in-line calls to + behaviors under test. + event_method_implementations: A dict from method group-name pair to + face.MethodImplementation object to be used in tests of event-driven calls + to behaviors under test. + multi_method_implementation: A face.MultiMethodImplementation to be used in + tests of generic calls to behaviors under test. + unary_unary_messages_sequences: A dict from method group-name pair to + sequence of service.UnaryUnaryTestMessages objects to be used to test the + identified method. + unary_stream_messages_sequences: A dict from method group-name pair to + sequence of service.UnaryStreamTestMessages objects to be used to test the + identified method. + stream_unary_messages_sequences: A dict from method group-name pair to + sequence of service.StreamUnaryTestMessages objects to be used to test the + identified method. + stream_stream_messages_sequences: A dict from method group-name pair to + sequence of service.StreamStreamTestMessages objects to be used to test + the identified method. + """ + + +class _BufferingConsumer(stream.Consumer): + """A trivial Consumer that dumps what it consumes in a user-mutable buffer.""" + + def __init__(self): + self.consumed = [] + self.terminated = False + + def consume(self, value): + self.consumed.append(value) + + def terminate(self): + self.terminated = True + + def consume_and_terminate(self, value): + self.consumed.append(value) + self.terminated = True + + +class _InlineUnaryUnaryMethod(face.MethodImplementation): + + def __init__(self, unary_unary_test_method, control): + self._test_method = unary_unary_test_method + self._control = control + + self.cardinality = cardinality.Cardinality.UNARY_UNARY + self.style = style.Service.INLINE + + def unary_unary_inline(self, request, context): + response_list = [] + self._test_method.service( + request, response_list.append, context, self._control) + return response_list.pop(0) + + +class _EventUnaryUnaryMethod(face.MethodImplementation): + + def __init__(self, unary_unary_test_method, control, pool): + self._test_method = unary_unary_test_method + self._control = control + self._pool = pool + + self.cardinality = cardinality.Cardinality.UNARY_UNARY + self.style = style.Service.EVENT + + def unary_unary_event(self, request, response_callback, context): + if self._pool is None: + self._test_method.service( + request, response_callback, context, self._control) + else: + self._pool.submit( + self._test_method.service, request, response_callback, context, + self._control) + + +class _InlineUnaryStreamMethod(face.MethodImplementation): + + def __init__(self, unary_stream_test_method, control): + self._test_method = unary_stream_test_method + self._control = control + + self.cardinality = cardinality.Cardinality.UNARY_STREAM + self.style = style.Service.INLINE + + def unary_stream_inline(self, request, context): + response_consumer = _BufferingConsumer() + self._test_method.service( + request, response_consumer, context, self._control) + for response in response_consumer.consumed: + yield response + + +class _EventUnaryStreamMethod(face.MethodImplementation): + + def __init__(self, unary_stream_test_method, control, pool): + self._test_method = unary_stream_test_method + self._control = control + self._pool = pool + + self.cardinality = cardinality.Cardinality.UNARY_STREAM + self.style = style.Service.EVENT + + def unary_stream_event(self, request, response_consumer, context): + if self._pool is None: + self._test_method.service( + request, response_consumer, context, self._control) + else: + self._pool.submit( + self._test_method.service, request, response_consumer, context, + self._control) + + +class _InlineStreamUnaryMethod(face.MethodImplementation): + + def __init__(self, stream_unary_test_method, control): + self._test_method = stream_unary_test_method + self._control = control + + self.cardinality = cardinality.Cardinality.STREAM_UNARY + self.style = style.Service.INLINE + + def stream_unary_inline(self, request_iterator, context): + response_list = [] + request_consumer = self._test_method.service( + response_list.append, context, self._control) + for request in request_iterator: + request_consumer.consume(request) + request_consumer.terminate() + return response_list.pop(0) + + +class _EventStreamUnaryMethod(face.MethodImplementation): + + def __init__(self, stream_unary_test_method, control, pool): + self._test_method = stream_unary_test_method + self._control = control + self._pool = pool + + self.cardinality = cardinality.Cardinality.STREAM_UNARY + self.style = style.Service.EVENT + + def stream_unary_event(self, response_callback, context): + request_consumer = self._test_method.service( + response_callback, context, self._control) + if self._pool is None: + return request_consumer + else: + return stream_util.ThreadSwitchingConsumer(request_consumer, self._pool) + + +class _InlineStreamStreamMethod(face.MethodImplementation): + + def __init__(self, stream_stream_test_method, control): + self._test_method = stream_stream_test_method + self._control = control + + self.cardinality = cardinality.Cardinality.STREAM_STREAM + self.style = style.Service.INLINE + + def stream_stream_inline(self, request_iterator, context): + response_consumer = _BufferingConsumer() + request_consumer = self._test_method.service( + response_consumer, context, self._control) + + for request in request_iterator: + request_consumer.consume(request) + while response_consumer.consumed: + yield response_consumer.consumed.pop(0) + response_consumer.terminate() + + +class _EventStreamStreamMethod(face.MethodImplementation): + + def __init__(self, stream_stream_test_method, control, pool): + self._test_method = stream_stream_test_method + self._control = control + self._pool = pool + + self.cardinality = cardinality.Cardinality.STREAM_STREAM + self.style = style.Service.EVENT + + def stream_stream_event(self, response_consumer, context): + request_consumer = self._test_method.service( + response_consumer, context, self._control) + if self._pool is None: + return request_consumer + else: + return stream_util.ThreadSwitchingConsumer(request_consumer, self._pool) + + +class _UnaryConsumer(stream.Consumer): + """A Consumer that only allows consumption of exactly one value.""" + + def __init__(self, action): + self._lock = threading.Lock() + self._action = action + self._consumed = False + self._terminated = False + + def consume(self, value): + with self._lock: + if self._consumed: + raise ValueError('Unary consumer already consumed!') + elif self._terminated: + raise ValueError('Unary consumer already terminated!') + else: + self._consumed = True + + self._action(value) + + def terminate(self): + with self._lock: + if not self._consumed: + raise ValueError('Unary consumer hasn\'t yet consumed!') + elif self._terminated: + raise ValueError('Unary consumer already terminated!') + else: + self._terminated = True + + def consume_and_terminate(self, value): + with self._lock: + if self._consumed: + raise ValueError('Unary consumer already consumed!') + elif self._terminated: + raise ValueError('Unary consumer already terminated!') + else: + self._consumed = True + self._terminated = True + + self._action(value) + + +class _UnaryUnaryAdaptation(object): + + def __init__(self, unary_unary_test_method): + self._method = unary_unary_test_method + + def service(self, response_consumer, context, control): + def action(request): + self._method.service( + request, response_consumer.consume_and_terminate, context, control) + return _UnaryConsumer(action) + + +class _UnaryStreamAdaptation(object): + + def __init__(self, unary_stream_test_method): + self._method = unary_stream_test_method + + def service(self, response_consumer, context, control): + def action(request): + self._method.service(request, response_consumer, context, control) + return _UnaryConsumer(action) + + +class _StreamUnaryAdaptation(object): + + def __init__(self, stream_unary_test_method): + self._method = stream_unary_test_method + + def service(self, response_consumer, context, control): + return self._method.service( + response_consumer.consume_and_terminate, context, control) + + +class _MultiMethodImplementation(face.MultiMethodImplementation): + + def __init__(self, methods, control, pool): + self._methods = methods + self._control = control + self._pool = pool + + def service(self, group, name, response_consumer, context): + method = self._methods.get(group, name, None) + if method is None: + raise face.NoSuchMethodError(group, name) + elif self._pool is None: + return method(response_consumer, context, self._control) + else: + request_consumer = method(response_consumer, context, self._control) + return stream_util.ThreadSwitchingConsumer(request_consumer, self._pool) + + +class _Assembly( + collections.namedtuple( + '_Assembly', + ['methods', 'inlines', 'events', 'adaptations', 'messages'])): + """An intermediate structure created when creating a TestServiceDigest.""" + + +def _assemble( + scenarios, identifiers, inline_method_constructor, event_method_constructor, + adapter, control, pool): + """Creates an _Assembly from the given scenarios.""" + methods = {} + inlines = {} + events = {} + adaptations = {} + messages = {} + for identifier, scenario in scenarios.iteritems(): + if identifier in identifiers: + raise ValueError('Repeated identifier "(%s, %s)"!' % identifier) + + test_method = scenario[0] + inline_method = inline_method_constructor(test_method, control) + event_method = event_method_constructor(test_method, control, pool) + adaptation = adapter(test_method) + + methods[identifier] = test_method + inlines[identifier] = inline_method + events[identifier] = event_method + adaptations[identifier] = adaptation + messages[identifier] = scenario[1] + + return _Assembly(methods, inlines, events, adaptations, messages) + + +def digest(service, control, pool): + """Creates a TestServiceDigest from a TestService. + + Args: + service: A _service.TestService. + control: A test_control.Control. + pool: If RPC methods should be serviced in a separate thread, a thread pool. + None if RPC methods should be serviced in the thread belonging to the + run-time that calls for their service. + + Returns: + A TestServiceDigest synthesized from the given service.TestService. + """ + identifiers = set() + + unary_unary = _assemble( + service.unary_unary_scenarios(), identifiers, _InlineUnaryUnaryMethod, + _EventUnaryUnaryMethod, _UnaryUnaryAdaptation, control, pool) + identifiers.update(unary_unary.inlines) + + unary_stream = _assemble( + service.unary_stream_scenarios(), identifiers, _InlineUnaryStreamMethod, + _EventUnaryStreamMethod, _UnaryStreamAdaptation, control, pool) + identifiers.update(unary_stream.inlines) + + stream_unary = _assemble( + service.stream_unary_scenarios(), identifiers, _InlineStreamUnaryMethod, + _EventStreamUnaryMethod, _StreamUnaryAdaptation, control, pool) + identifiers.update(stream_unary.inlines) + + stream_stream = _assemble( + service.stream_stream_scenarios(), identifiers, _InlineStreamStreamMethod, + _EventStreamStreamMethod, _IDENTITY, control, pool) + identifiers.update(stream_stream.inlines) + + methods = dict(unary_unary.methods) + methods.update(unary_stream.methods) + methods.update(stream_unary.methods) + methods.update(stream_stream.methods) + adaptations = dict(unary_unary.adaptations) + adaptations.update(unary_stream.adaptations) + adaptations.update(stream_unary.adaptations) + adaptations.update(stream_stream.adaptations) + inlines = dict(unary_unary.inlines) + inlines.update(unary_stream.inlines) + inlines.update(stream_unary.inlines) + inlines.update(stream_stream.inlines) + events = dict(unary_unary.events) + events.update(unary_stream.events) + events.update(stream_unary.events) + events.update(stream_stream.events) + + return TestServiceDigest( + methods, + inlines, + events, + _MultiMethodImplementation(adaptations, control, pool), + unary_unary.messages, + unary_stream.messages, + stream_unary.messages, + stream_stream.messages) diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/face/_event_invocation_synchronous_event_service.py b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_event_invocation_synchronous_event_service.py new file mode 100644 index 0000000000..ea5cdeaea3 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_event_invocation_synchronous_event_service.py @@ -0,0 +1,377 @@ +# 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. + +"""Test code for the Face layer of RPC Framework.""" + +import abc +import unittest + +# test_interfaces is referenced from specification in this module. +from grpc.framework.interfaces.face import face +from grpc_test.framework.common import test_constants +from grpc_test.framework.common import test_control +from grpc_test.framework.common import test_coverage +from grpc_test.framework.interfaces.face import _digest +from grpc_test.framework.interfaces.face import _receiver +from grpc_test.framework.interfaces.face import _stock_service +from grpc_test.framework.interfaces.face import test_interfaces # pylint: disable=unused-import + + +class TestCase(test_coverage.Coverage, unittest.TestCase): + """A test of the Face layer of RPC Framework. + + Concrete subclasses must have an "implementation" attribute of type + test_interfaces.Implementation and an "invoker_constructor" attribute of type + _invocation.InvokerConstructor. + """ + __metaclass__ = abc.ABCMeta + + NAME = 'EventInvocationSynchronousEventServiceTest' + + def setUp(self): + """See unittest.TestCase.setUp for full specification. + + Overriding implementations must call this implementation. + """ + self._control = test_control.PauseFailControl() + self._digest = _digest.digest( + _stock_service.STOCK_TEST_SERVICE, self._control, None) + + generic_stub, dynamic_stubs, self._memo = self.implementation.instantiate( + self._digest.methods, self._digest.event_method_implementations, None) + self._invoker = self.invoker_constructor.construct_invoker( + generic_stub, dynamic_stubs, self._digest.methods) + + def tearDown(self): + """See unittest.TestCase.tearDown for full specification. + + Overriding implementations must call this implementation. + """ + self.implementation.destantiate(self._memo) + + def testSuccessfulUnaryRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + receiver = _receiver.Receiver() + + self._invoker.event(group, method)( + request, receiver, receiver.abort, test_constants.LONG_TIMEOUT) + receiver.block_until_terminated() + response = receiver.unary_response() + + test_messages.verify(request, response, self) + + def testSuccessfulUnaryRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + receiver = _receiver.Receiver() + + self._invoker.event(group, method)( + request, receiver, receiver.abort, test_constants.LONG_TIMEOUT) + receiver.block_until_terminated() + responses = receiver.stream_responses() + + test_messages.verify(request, responses, self) + + def testSuccessfulStreamRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + receiver = _receiver.Receiver() + + call_consumer = self._invoker.event(group, method)( + receiver, receiver.abort, test_constants.LONG_TIMEOUT) + for request in requests: + call_consumer.consume(request) + call_consumer.terminate() + receiver.block_until_terminated() + response = receiver.unary_response() + + test_messages.verify(requests, response, self) + + def testSuccessfulStreamRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + receiver = _receiver.Receiver() + + call_consumer = self._invoker.event(group, method)( + receiver, receiver.abort, test_constants.LONG_TIMEOUT) + for request in requests: + call_consumer.consume(request) + call_consumer.terminate() + receiver.block_until_terminated() + responses = receiver.stream_responses() + + test_messages.verify(requests, responses, self) + + def testSequentialInvocations(self): + # pylint: disable=cell-var-from-loop + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + first_request = test_messages.request() + second_request = test_messages.request() + second_receiver = _receiver.Receiver() + + def make_second_invocation(): + self._invoker.event(group, method)( + second_request, second_receiver, second_receiver.abort, + test_constants.LONG_TIMEOUT) + + class FirstReceiver(_receiver.Receiver): + + def complete(self, terminal_metadata, code, details): + super(FirstReceiver, self).complete( + terminal_metadata, code, details) + make_second_invocation() + + first_receiver = FirstReceiver() + + self._invoker.event(group, method)( + first_request, first_receiver, first_receiver.abort, + test_constants.LONG_TIMEOUT) + second_receiver.block_until_terminated() + + first_response = first_receiver.unary_response() + second_response = second_receiver.unary_response() + test_messages.verify(first_request, first_response, self) + test_messages.verify(second_request, second_response, self) + + def testParallelInvocations(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + first_request = test_messages.request() + first_receiver = _receiver.Receiver() + second_request = test_messages.request() + second_receiver = _receiver.Receiver() + + self._invoker.event(group, method)( + first_request, first_receiver, first_receiver.abort, + test_constants.LONG_TIMEOUT) + self._invoker.event(group, method)( + second_request, second_receiver, second_receiver.abort, + test_constants.LONG_TIMEOUT) + first_receiver.block_until_terminated() + second_receiver.block_until_terminated() + + first_response = first_receiver.unary_response() + second_response = second_receiver.unary_response() + test_messages.verify(first_request, first_response, self) + test_messages.verify(second_request, second_response, self) + + @unittest.skip('TODO(nathaniel): implement.') + def testWaitingForSomeButNotAllParallelInvocations(self): + raise NotImplementedError() + + def testCancelledUnaryRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + receiver = _receiver.Receiver() + + with self._control.pause(): + call = self._invoker.event(group, method)( + request, receiver, receiver.abort, test_constants.LONG_TIMEOUT) + call.cancel() + receiver.block_until_terminated() + + self.assertIs(face.Abortion.Kind.CANCELLED, receiver.abortion().kind) + + def testCancelledUnaryRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + receiver = _receiver.Receiver() + + call = self._invoker.event(group, method)( + request, receiver, receiver.abort, test_constants.LONG_TIMEOUT) + call.cancel() + receiver.block_until_terminated() + + self.assertIs(face.Abortion.Kind.CANCELLED, receiver.abortion().kind) + + def testCancelledStreamRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + receiver = _receiver.Receiver() + + call_consumer = self._invoker.event(group, method)( + receiver, receiver.abort, test_constants.LONG_TIMEOUT) + for request in requests: + call_consumer.consume(request) + call_consumer.cancel() + receiver.block_until_terminated() + + self.assertIs(face.Abortion.Kind.CANCELLED, receiver.abortion().kind) + + def testCancelledStreamRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_stream_messages_sequences.iteritems()): + for unused_test_messages in test_messages_sequence: + receiver = _receiver.Receiver() + + call_consumer = self._invoker.event(group, method)( + receiver, receiver.abort, test_constants.LONG_TIMEOUT) + call_consumer.cancel() + receiver.block_until_terminated() + + self.assertIs(face.Abortion.Kind.CANCELLED, receiver.abortion().kind) + + def testExpiredUnaryRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + receiver = _receiver.Receiver() + + with self._control.pause(): + self._invoker.event(group, method)( + request, receiver, receiver.abort, test_constants.SHORT_TIMEOUT) + receiver.block_until_terminated() + + self.assertIs(face.Abortion.Kind.EXPIRED, receiver.abortion().kind) + + def testExpiredUnaryRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + receiver = _receiver.Receiver() + + with self._control.pause(): + self._invoker.event(group, method)( + request, receiver, receiver.abort, test_constants.SHORT_TIMEOUT) + receiver.block_until_terminated() + + self.assertIs(face.Abortion.Kind.EXPIRED, receiver.abortion().kind) + + def testExpiredStreamRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_unary_messages_sequences.iteritems()): + for unused_test_messages in test_messages_sequence: + receiver = _receiver.Receiver() + + self._invoker.event(group, method)( + receiver, receiver.abort, test_constants.SHORT_TIMEOUT) + receiver.block_until_terminated() + + self.assertIs(face.Abortion.Kind.EXPIRED, receiver.abortion().kind) + + def testExpiredStreamRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + receiver = _receiver.Receiver() + + call_consumer = self._invoker.event(group, method)( + receiver, receiver.abort, test_constants.SHORT_TIMEOUT) + for request in requests: + call_consumer.consume(request) + receiver.block_until_terminated() + + self.assertIs(face.Abortion.Kind.EXPIRED, receiver.abortion().kind) + + def testFailedUnaryRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + receiver = _receiver.Receiver() + + with self._control.fail(): + self._invoker.event(group, method)( + request, receiver, receiver.abort, test_constants.LONG_TIMEOUT) + receiver.block_until_terminated() + + self.assertIs( + face.Abortion.Kind.REMOTE_FAILURE, receiver.abortion().kind) + + def testFailedUnaryRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + receiver = _receiver.Receiver() + + with self._control.fail(): + self._invoker.event(group, method)( + request, receiver, receiver.abort, test_constants.LONG_TIMEOUT) + receiver.block_until_terminated() + + self.assertIs( + face.Abortion.Kind.REMOTE_FAILURE, receiver.abortion().kind) + + def testFailedStreamRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + receiver = _receiver.Receiver() + + with self._control.fail(): + call_consumer = self._invoker.event(group, method)( + receiver, receiver.abort, test_constants.LONG_TIMEOUT) + for request in requests: + call_consumer.consume(request) + call_consumer.terminate() + receiver.block_until_terminated() + + self.assertIs( + face.Abortion.Kind.REMOTE_FAILURE, receiver.abortion().kind) + + def testFailedStreamRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + receiver = _receiver.Receiver() + + with self._control.fail(): + call_consumer = self._invoker.event(group, method)( + receiver, receiver.abort, test_constants.LONG_TIMEOUT) + for request in requests: + call_consumer.consume(request) + call_consumer.terminate() + receiver.block_until_terminated() + + self.assertIs( + face.Abortion.Kind.REMOTE_FAILURE, receiver.abortion().kind) diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/face/_future_invocation_asynchronous_event_service.py b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_future_invocation_asynchronous_event_service.py new file mode 100644 index 0000000000..a649362cef --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_future_invocation_asynchronous_event_service.py @@ -0,0 +1,378 @@ +# 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. + +"""Test code for the Face layer of RPC Framework.""" + +import abc +import contextlib +import threading +import unittest + +# test_interfaces is referenced from specification in this module. +from grpc.framework.foundation import logging_pool +from grpc.framework.interfaces.face import face +from grpc_test.framework.common import test_constants +from grpc_test.framework.common import test_control +from grpc_test.framework.common import test_coverage +from grpc_test.framework.interfaces.face import _digest +from grpc_test.framework.interfaces.face import _stock_service +from grpc_test.framework.interfaces.face import test_interfaces # pylint: disable=unused-import + + +class _PauseableIterator(object): + + def __init__(self, upstream): + self._upstream = upstream + self._condition = threading.Condition() + self._paused = False + + @contextlib.contextmanager + def pause(self): + with self._condition: + self._paused = True + yield + with self._condition: + self._paused = False + self._condition.notify_all() + + def __iter__(self): + return self + + def next(self): + with self._condition: + while self._paused: + self._condition.wait() + return next(self._upstream) + + +class TestCase(test_coverage.Coverage, unittest.TestCase): + """A test of the Face layer of RPC Framework. + + Concrete subclasses must have an "implementation" attribute of type + test_interfaces.Implementation and an "invoker_constructor" attribute of type + _invocation.InvokerConstructor. + """ + __metaclass__ = abc.ABCMeta + + NAME = 'FutureInvocationAsynchronousEventServiceTest' + + def setUp(self): + """See unittest.TestCase.setUp for full specification. + + Overriding implementations must call this implementation. + """ + self._control = test_control.PauseFailControl() + self._digest_pool = logging_pool.pool(test_constants.POOL_SIZE) + self._digest = _digest.digest( + _stock_service.STOCK_TEST_SERVICE, self._control, self._digest_pool) + + generic_stub, dynamic_stubs, self._memo = self.implementation.instantiate( + self._digest.methods, self._digest.event_method_implementations, None) + self._invoker = self.invoker_constructor.construct_invoker( + generic_stub, dynamic_stubs, self._digest.methods) + + def tearDown(self): + """See unittest.TestCase.tearDown for full specification. + + Overriding implementations must call this implementation. + """ + self.implementation.destantiate(self._memo) + self._digest_pool.shutdown(wait=True) + + def testSuccessfulUnaryRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + response_future = self._invoker.future(group, method)( + request, test_constants.LONG_TIMEOUT) + response = response_future.result() + + test_messages.verify(request, response, self) + + def testSuccessfulUnaryRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + response_iterator = self._invoker.future(group, method)( + request, test_constants.LONG_TIMEOUT) + responses = list(response_iterator) + + test_messages.verify(request, responses, self) + + def testSuccessfulStreamRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + request_iterator = _PauseableIterator(iter(requests)) + + # Use of a paused iterator of requests allows us to test that control is + # returned to calling code before the iterator yields any requests. + with request_iterator.pause(): + response_future = self._invoker.future(group, method)( + request_iterator, test_constants.LONG_TIMEOUT) + response = response_future.result() + + test_messages.verify(requests, response, self) + + def testSuccessfulStreamRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + request_iterator = _PauseableIterator(iter(requests)) + + # Use of a paused iterator of requests allows us to test that control is + # returned to calling code before the iterator yields any requests. + with request_iterator.pause(): + response_iterator = self._invoker.future(group, method)( + request_iterator, test_constants.LONG_TIMEOUT) + responses = list(response_iterator) + + test_messages.verify(requests, responses, self) + + def testSequentialInvocations(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + first_request = test_messages.request() + second_request = test_messages.request() + + first_response_future = self._invoker.future(group, method)( + first_request, test_constants.LONG_TIMEOUT) + first_response = first_response_future.result() + + test_messages.verify(first_request, first_response, self) + + second_response_future = self._invoker.future(group, method)( + second_request, test_constants.LONG_TIMEOUT) + second_response = second_response_future.result() + + test_messages.verify(second_request, second_response, self) + + def testParallelInvocations(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + first_request = test_messages.request() + second_request = test_messages.request() + + first_response_future = self._invoker.future(group, method)( + first_request, test_constants.LONG_TIMEOUT) + second_response_future = self._invoker.future(group, method)( + second_request, test_constants.LONG_TIMEOUT) + first_response = first_response_future.result() + second_response = second_response_future.result() + + test_messages.verify(first_request, first_response, self) + test_messages.verify(second_request, second_response, self) + + @unittest.skip('TODO(nathaniel): implement.') + def testWaitingForSomeButNotAllParallelInvocations(self): + raise NotImplementedError() + + def testCancelledUnaryRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + with self._control.pause(): + response_future = self._invoker.future(group, method)( + request, test_constants.LONG_TIMEOUT) + cancel_method_return_value = response_future.cancel() + + self.assertFalse(cancel_method_return_value) + self.assertTrue(response_future.cancelled()) + + def testCancelledUnaryRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + with self._control.pause(): + response_iterator = self._invoker.future(group, method)( + request, test_constants.LONG_TIMEOUT) + response_iterator.cancel() + + with self.assertRaises(face.CancellationError): + next(response_iterator) + + def testCancelledStreamRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + with self._control.pause(): + response_future = self._invoker.future(group, method)( + iter(requests), test_constants.LONG_TIMEOUT) + cancel_method_return_value = response_future.cancel() + + self.assertFalse(cancel_method_return_value) + self.assertTrue(response_future.cancelled()) + + def testCancelledStreamRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + with self._control.pause(): + response_iterator = self._invoker.future(group, method)( + iter(requests), test_constants.LONG_TIMEOUT) + response_iterator.cancel() + + with self.assertRaises(face.CancellationError): + next(response_iterator) + + def testExpiredUnaryRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + with self._control.pause(): + response_future = self._invoker.future( + group, method)(request, test_constants.SHORT_TIMEOUT) + self.assertIsInstance( + response_future.exception(), face.ExpirationError) + with self.assertRaises(face.ExpirationError): + response_future.result() + + def testExpiredUnaryRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + with self._control.pause(): + response_iterator = self._invoker.future(group, method)( + request, test_constants.SHORT_TIMEOUT) + with self.assertRaises(face.ExpirationError): + list(response_iterator) + + def testExpiredStreamRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + with self._control.pause(): + response_future = self._invoker.future(group, method)( + iter(requests), test_constants.SHORT_TIMEOUT) + self.assertIsInstance( + response_future.exception(), face.ExpirationError) + with self.assertRaises(face.ExpirationError): + response_future.result() + + def testExpiredStreamRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + with self._control.pause(): + response_iterator = self._invoker.future(group, method)( + iter(requests), test_constants.SHORT_TIMEOUT) + with self.assertRaises(face.ExpirationError): + list(response_iterator) + + def testFailedUnaryRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + with self._control.fail(): + response_future = self._invoker.future(group, method)( + request, test_constants.SHORT_TIMEOUT) + + # Because the servicer fails outside of the thread from which the + # servicer-side runtime called into it its failure is + # indistinguishable from simply not having called its + # response_callback before the expiration of the RPC. + self.assertIsInstance( + response_future.exception(), face.ExpirationError) + with self.assertRaises(face.ExpirationError): + response_future.result() + + def testFailedUnaryRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.unary_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + request = test_messages.request() + + # Because the servicer fails outside of the thread from which the + # servicer-side runtime called into it its failure is indistinguishable + # from simply not having called its response_consumer before the + # expiration of the RPC. + with self._control.fail(), self.assertRaises(face.ExpirationError): + response_iterator = self._invoker.future(group, method)( + request, test_constants.SHORT_TIMEOUT) + list(response_iterator) + + def testFailedStreamRequestUnaryResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_unary_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + with self._control.fail(): + response_future = self._invoker.future(group, method)( + iter(requests), test_constants.SHORT_TIMEOUT) + + # Because the servicer fails outside of the thread from which the + # servicer-side runtime called into it its failure is + # indistinguishable from simply not having called its + # response_callback before the expiration of the RPC. + self.assertIsInstance( + response_future.exception(), face.ExpirationError) + with self.assertRaises(face.ExpirationError): + response_future.result() + + def testFailedStreamRequestStreamResponse(self): + for (group, method), test_messages_sequence in ( + self._digest.stream_stream_messages_sequences.iteritems()): + for test_messages in test_messages_sequence: + requests = test_messages.requests() + + # Because the servicer fails outside of the thread from which the + # servicer-side runtime called into it its failure is indistinguishable + # from simply not having called its response_consumer before the + # expiration of the RPC. + with self._control.fail(), self.assertRaises(face.ExpirationError): + response_iterator = self._invoker.future(group, method)( + iter(requests), test_constants.SHORT_TIMEOUT) + list(response_iterator) diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/face/_invocation.py b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_invocation.py new file mode 100644 index 0000000000..448e845a08 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_invocation.py @@ -0,0 +1,213 @@ +# 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. + +"""Coverage across the Face layer's generic-to-dynamic range for invocation.""" + +import abc + +from grpc.framework.common import cardinality + +_CARDINALITY_TO_GENERIC_BLOCKING_BEHAVIOR = { + cardinality.Cardinality.UNARY_UNARY: 'blocking_unary_unary', + cardinality.Cardinality.UNARY_STREAM: 'inline_unary_stream', + cardinality.Cardinality.STREAM_UNARY: 'blocking_stream_unary', + cardinality.Cardinality.STREAM_STREAM: 'inline_stream_stream', +} + +_CARDINALITY_TO_GENERIC_FUTURE_BEHAVIOR = { + cardinality.Cardinality.UNARY_UNARY: 'future_unary_unary', + cardinality.Cardinality.UNARY_STREAM: 'inline_unary_stream', + cardinality.Cardinality.STREAM_UNARY: 'future_stream_unary', + cardinality.Cardinality.STREAM_STREAM: 'inline_stream_stream', +} + +_CARDINALITY_TO_GENERIC_EVENT_BEHAVIOR = { + cardinality.Cardinality.UNARY_UNARY: 'event_unary_unary', + cardinality.Cardinality.UNARY_STREAM: 'event_unary_stream', + cardinality.Cardinality.STREAM_UNARY: 'event_stream_unary', + cardinality.Cardinality.STREAM_STREAM: 'event_stream_stream', +} + +_CARDINALITY_TO_MULTI_CALLABLE_ATTRIBUTE = { + cardinality.Cardinality.UNARY_UNARY: 'unary_unary', + cardinality.Cardinality.UNARY_STREAM: 'unary_stream', + cardinality.Cardinality.STREAM_UNARY: 'stream_unary', + cardinality.Cardinality.STREAM_STREAM: 'stream_stream', +} + + +class Invoker(object): + """A type used to invoke test RPCs.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def blocking(self, group, name): + """Invokes an RPC with blocking control flow.""" + raise NotImplementedError() + + @abc.abstractmethod + def future(self, group, name): + """Invokes an RPC with future control flow.""" + raise NotImplementedError() + + @abc.abstractmethod + def event(self, group, name): + """Invokes an RPC with event control flow.""" + raise NotImplementedError() + + +class InvokerConstructor(object): + """A type used to create Invokers.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def name(self): + """Specifies the name of the Invoker constructed by this object.""" + raise NotImplementedError() + + @abc.abstractmethod + def construct_invoker(self, generic_stub, dynamic_stubs, methods): + """Constructs an Invoker for the given stubs and methods.""" + raise NotImplementedError() + + +class _GenericInvoker(Invoker): + + def __init__(self, generic_stub, methods): + self._stub = generic_stub + self._methods = methods + + def _behavior(self, group, name, cardinality_to_generic_method): + method_cardinality = self._methods[group, name].cardinality() + behavior = getattr( + self._stub, cardinality_to_generic_method[method_cardinality]) + return lambda *args, **kwargs: behavior(group, name, *args, **kwargs) + + def blocking(self, group, name): + return self._behavior( + group, name, _CARDINALITY_TO_GENERIC_BLOCKING_BEHAVIOR) + + def future(self, group, name): + return self._behavior(group, name, _CARDINALITY_TO_GENERIC_FUTURE_BEHAVIOR) + + def event(self, group, name): + return self._behavior(group, name, _CARDINALITY_TO_GENERIC_EVENT_BEHAVIOR) + + +class _GenericInvokerConstructor(InvokerConstructor): + + def name(self): + return 'GenericInvoker' + + def construct_invoker(self, generic_stub, dynamic_stub, methods): + return _GenericInvoker(generic_stub, methods) + + +class _MultiCallableInvoker(Invoker): + + def __init__(self, generic_stub, methods): + self._stub = generic_stub + self._methods = methods + + def _multi_callable(self, group, name): + method_cardinality = self._methods[group, name].cardinality() + behavior = getattr( + self._stub, + _CARDINALITY_TO_MULTI_CALLABLE_ATTRIBUTE[method_cardinality]) + return behavior(group, name) + + def blocking(self, group, name): + return self._multi_callable(group, name) + + def future(self, group, name): + method_cardinality = self._methods[group, name].cardinality() + behavior = getattr( + self._stub, + _CARDINALITY_TO_MULTI_CALLABLE_ATTRIBUTE[method_cardinality]) + if method_cardinality in ( + cardinality.Cardinality.UNARY_UNARY, + cardinality.Cardinality.STREAM_UNARY): + return behavior(group, name).future + else: + return behavior(group, name) + + def event(self, group, name): + return self._multi_callable(group, name).event + + +class _MultiCallableInvokerConstructor(InvokerConstructor): + + def name(self): + return 'MultiCallableInvoker' + + def construct_invoker(self, generic_stub, dynamic_stub, methods): + return _MultiCallableInvoker(generic_stub, methods) + + +class _DynamicInvoker(Invoker): + + def __init__(self, dynamic_stubs, methods): + self._stubs = dynamic_stubs + self._methods = methods + + def blocking(self, group, name): + return getattr(self._stubs[group], name) + + def future(self, group, name): + if self._methods[group, name].cardinality() in ( + cardinality.Cardinality.UNARY_UNARY, + cardinality.Cardinality.STREAM_UNARY): + return getattr(self._stubs[group], name).future + else: + return getattr(self._stubs[group], name) + + def event(self, group, name): + return getattr(self._stubs[group], name).event + + +class _DynamicInvokerConstructor(InvokerConstructor): + + def name(self): + return 'DynamicInvoker' + + def construct_invoker(self, generic_stub, dynamic_stubs, methods): + return _DynamicInvoker(dynamic_stubs, methods) + + +def invoker_constructors(): + """Creates a sequence of InvokerConstructors to use in tests of RPCs. + + Returns: + A sequence of InvokerConstructors. + """ + return ( + _GenericInvokerConstructor(), + _MultiCallableInvokerConstructor(), + _DynamicInvokerConstructor(), + ) diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/face/_receiver.py b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_receiver.py new file mode 100644 index 0000000000..2e444ff09d --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_receiver.py @@ -0,0 +1,95 @@ +# 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 utility useful in tests of asynchronous, event-driven interfaces.""" + +import threading + +from grpc.framework.interfaces.face import face + + +class Receiver(face.ResponseReceiver): + """A utility object useful in tests of asynchronous code.""" + + def __init__(self): + self._condition = threading.Condition() + self._initial_metadata = None + self._responses = [] + self._terminal_metadata = None + self._code = None + self._details = None + self._completed = False + self._abortion = None + + def abort(self, abortion): + with self._condition: + self._abortion = abortion + self._condition.notify_all() + + def initial_metadata(self, initial_metadata): + with self._condition: + self._initial_metadata = initial_metadata + + def response(self, response): + with self._condition: + self._responses.append(response) + + def complete(self, terminal_metadata, code, details): + with self._condition: + self._terminal_metadata = terminal_metadata + self._code = code + self._details = details + self._completed = True + self._condition.notify_all() + + def block_until_terminated(self): + with self._condition: + while self._abortion is None and not self._completed: + self._condition.wait() + + def unary_response(self): + with self._condition: + if self._abortion is not None: + raise AssertionError('Aborted with abortion "%s"!' % self._abortion) + elif len(self._responses) != 1: + raise AssertionError( + '%d responses received, not exactly one!', len(self._responses)) + else: + return self._responses[0] + + def stream_responses(self): + with self._condition: + if self._abortion is None: + return list(self._responses) + else: + raise AssertionError('Aborted with abortion "%s"!' % self._abortion) + + def abortion(self): + with self._condition: + return self._abortion diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/face/_service.py b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_service.py new file mode 100644 index 0000000000..e25b8a038c --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_service.py @@ -0,0 +1,332 @@ +# 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. + +"""Private interfaces implemented by data sets used in Face-layer tests.""" + +import abc + +# face is referenced from specification in this module. +from grpc.framework.interfaces.face import face # pylint: disable=unused-import +from grpc_test.framework.interfaces.face import test_interfaces + + +class UnaryUnaryTestMethodImplementation(test_interfaces.Method): + """A controllable implementation of a unary-unary method.""" + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def service(self, request, response_callback, context, control): + """Services an RPC that accepts one message and produces one message. + + Args: + request: The single request message for the RPC. + response_callback: A callback to be called to accept the response message + of the RPC. + context: An face.ServicerContext object. + control: A test_control.Control to control execution of this method. + + Raises: + abandonment.Abandoned: May or may not be raised when the RPC has been + aborted. + """ + raise NotImplementedError() + + +class UnaryUnaryTestMessages(object): + """A type for unary-request-unary-response message pairings.""" + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def request(self): + """Affords a request message. + + Implementations of this method should return a different message with each + call so that multiple test executions of the test method may be made with + different inputs. + + Returns: + A request message. + """ + raise NotImplementedError() + + @abc.abstractmethod + def verify(self, request, response, test_case): + """Verifies that the computed response matches the given request. + + Args: + request: A request message. + response: A response message. + test_case: A unittest.TestCase object affording useful assertion methods. + + Raises: + AssertionError: If the request and response do not match, indicating that + there was some problem executing the RPC under test. + """ + raise NotImplementedError() + + +class UnaryStreamTestMethodImplementation(test_interfaces.Method): + """A controllable implementation of a unary-stream method.""" + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def service(self, request, response_consumer, context, control): + """Services an RPC that takes one message and produces a stream of messages. + + Args: + request: The single request message for the RPC. + response_consumer: A stream.Consumer to be called to accept the response + messages of the RPC. + context: A face.ServicerContext object. + control: A test_control.Control to control execution of this method. + + Raises: + abandonment.Abandoned: May or may not be raised when the RPC has been + aborted. + """ + raise NotImplementedError() + + +class UnaryStreamTestMessages(object): + """A type for unary-request-stream-response message pairings.""" + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def request(self): + """Affords a request message. + + Implementations of this method should return a different message with each + call so that multiple test executions of the test method may be made with + different inputs. + + Returns: + A request message. + """ + raise NotImplementedError() + + @abc.abstractmethod + def verify(self, request, responses, test_case): + """Verifies that the computed responses match the given request. + + Args: + request: A request message. + responses: A sequence of response messages. + test_case: A unittest.TestCase object affording useful assertion methods. + + Raises: + AssertionError: If the request and responses do not match, indicating that + there was some problem executing the RPC under test. + """ + raise NotImplementedError() + + +class StreamUnaryTestMethodImplementation(test_interfaces.Method): + """A controllable implementation of a stream-unary method.""" + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def service(self, response_callback, context, control): + """Services an RPC that takes a stream of messages and produces one message. + + Args: + response_callback: A callback to be called to accept the response message + of the RPC. + context: A face.ServicerContext object. + control: A test_control.Control to control execution of this method. + + Returns: + A stream.Consumer with which to accept the request messages of the RPC. + The consumer returned from this method may or may not be invoked to + completion: in the case of RPC abortion, RPC Framework will simply stop + passing messages to this object. Implementations must not assume that + this object will be called to completion of the request stream or even + called at all. + + Raises: + abandonment.Abandoned: May or may not be raised when the RPC has been + aborted. + """ + raise NotImplementedError() + + +class StreamUnaryTestMessages(object): + """A type for stream-request-unary-response message pairings.""" + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def requests(self): + """Affords a sequence of request messages. + + Implementations of this method should return a different sequences with each + call so that multiple test executions of the test method may be made with + different inputs. + + Returns: + A sequence of request messages. + """ + raise NotImplementedError() + + @abc.abstractmethod + def verify(self, requests, response, test_case): + """Verifies that the computed response matches the given requests. + + Args: + requests: A sequence of request messages. + response: A response message. + test_case: A unittest.TestCase object affording useful assertion methods. + + Raises: + AssertionError: If the requests and response do not match, indicating that + there was some problem executing the RPC under test. + """ + raise NotImplementedError() + + +class StreamStreamTestMethodImplementation(test_interfaces.Method): + """A controllable implementation of a stream-stream method.""" + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def service(self, response_consumer, context, control): + """Services an RPC that accepts and produces streams of messages. + + Args: + response_consumer: A stream.Consumer to be called to accept the response + messages of the RPC. + context: A face.ServicerContext object. + control: A test_control.Control to control execution of this method. + + Returns: + A stream.Consumer with which to accept the request messages of the RPC. + The consumer returned from this method may or may not be invoked to + completion: in the case of RPC abortion, RPC Framework will simply stop + passing messages to this object. Implementations must not assume that + this object will be called to completion of the request stream or even + called at all. + + Raises: + abandonment.Abandoned: May or may not be raised when the RPC has been + aborted. + """ + raise NotImplementedError() + + +class StreamStreamTestMessages(object): + """A type for stream-request-stream-response message pairings.""" + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def requests(self): + """Affords a sequence of request messages. + + Implementations of this method should return a different sequences with each + call so that multiple test executions of the test method may be made with + different inputs. + + Returns: + A sequence of request messages. + """ + raise NotImplementedError() + + @abc.abstractmethod + def verify(self, requests, responses, test_case): + """Verifies that the computed response matches the given requests. + + Args: + requests: A sequence of request messages. + responses: A sequence of response messages. + test_case: A unittest.TestCase object affording useful assertion methods. + + Raises: + AssertionError: If the requests and responses do not match, indicating + that there was some problem executing the RPC under test. + """ + raise NotImplementedError() + + +class TestService(object): + """A specification of implemented methods to use in tests.""" + + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def unary_unary_scenarios(self): + """Affords unary-request-unary-response test methods and their messages. + + Returns: + A dict from method group-name pair to implementation/messages pair. The + first element of the pair is a UnaryUnaryTestMethodImplementation object + and the second element is a sequence of UnaryUnaryTestMethodMessages + objects. + """ + raise NotImplementedError() + + @abc.abstractmethod + def unary_stream_scenarios(self): + """Affords unary-request-stream-response test methods and their messages. + + Returns: + A dict from method group-name pair to implementation/messages pair. The + first element of the pair is a UnaryStreamTestMethodImplementation + object and the second element is a sequence of + UnaryStreamTestMethodMessages objects. + """ + raise NotImplementedError() + + @abc.abstractmethod + def stream_unary_scenarios(self): + """Affords stream-request-unary-response test methods and their messages. + + Returns: + A dict from method group-name pair to implementation/messages pair. The + first element of the pair is a StreamUnaryTestMethodImplementation + object and the second element is a sequence of + StreamUnaryTestMethodMessages objects. + """ + raise NotImplementedError() + + @abc.abstractmethod + def stream_stream_scenarios(self): + """Affords stream-request-stream-response test methods and their messages. + + Returns: + A dict from method group-name pair to implementation/messages pair. The + first element of the pair is a StreamStreamTestMethodImplementation + object and the second element is a sequence of + StreamStreamTestMethodMessages objects. + """ + raise NotImplementedError() diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/face/_stock_service.py b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_stock_service.py new file mode 100644 index 0000000000..1dd2ec3633 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/face/_stock_service.py @@ -0,0 +1,396 @@ +B# 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. + +"""Examples of Python implementations of the stock.proto Stock service.""" + +from grpc.framework.common import cardinality +from grpc.framework.foundation import abandonment +from grpc.framework.foundation import stream +from grpc_test.framework.common import test_constants +from grpc_test.framework.interfaces.face import _service +from grpc_test._junkdrawer import stock_pb2 + +_STOCK_GROUP_NAME = 'Stock' +_SYMBOL_FORMAT = 'test symbol:%03d' + +# A test-appropriate security-pricing function. :-P +_price = lambda symbol_name: float(hash(symbol_name) % 4096) + + +def _get_last_trade_price(stock_request, stock_reply_callback, control, active): + """A unary-request, unary-response test method.""" + control.control() + if active(): + stock_reply_callback( + stock_pb2.StockReply( + symbol=stock_request.symbol, price=_price(stock_request.symbol))) + else: + raise abandonment.Abandoned() + + +def _get_last_trade_price_multiple(stock_reply_consumer, control, active): + """A stream-request, stream-response test method.""" + def stock_reply_for_stock_request(stock_request): + control.control() + if active(): + return stock_pb2.StockReply( + symbol=stock_request.symbol, price=_price(stock_request.symbol)) + else: + raise abandonment.Abandoned() + + class StockRequestConsumer(stream.Consumer): + + def consume(self, stock_request): + stock_reply_consumer.consume(stock_reply_for_stock_request(stock_request)) + + def terminate(self): + control.control() + stock_reply_consumer.terminate() + + def consume_and_terminate(self, stock_request): + stock_reply_consumer.consume_and_terminate( + stock_reply_for_stock_request(stock_request)) + + return StockRequestConsumer() + + +def _watch_future_trades(stock_request, stock_reply_consumer, control, active): + """A unary-request, stream-response test method.""" + base_price = _price(stock_request.symbol) + for index in range(stock_request.num_trades_to_watch): + control.control() + if active(): + stock_reply_consumer.consume( + stock_pb2.StockReply( + symbol=stock_request.symbol, price=base_price + index)) + else: + raise abandonment.Abandoned() + stock_reply_consumer.terminate() + + +def _get_highest_trade_price(stock_reply_callback, control, active): + """A stream-request, unary-response test method.""" + + class StockRequestConsumer(stream.Consumer): + """Keeps an ongoing record of the most valuable symbol yet consumed.""" + + def __init__(self): + self._symbol = None + self._price = None + + def consume(self, stock_request): + control.control() + if active(): + if self._price is None: + self._symbol = stock_request.symbol + self._price = _price(stock_request.symbol) + else: + candidate_price = _price(stock_request.symbol) + if self._price < candidate_price: + self._symbol = stock_request.symbol + self._price = candidate_price + + def terminate(self): + control.control() + if active(): + if self._symbol is None: + raise ValueError() + else: + stock_reply_callback( + stock_pb2.StockReply(symbol=self._symbol, price=self._price)) + self._symbol = None + self._price = None + + def consume_and_terminate(self, stock_request): + control.control() + if active(): + if self._price is None: + stock_reply_callback( + stock_pb2.StockReply( + symbol=stock_request.symbol, + price=_price(stock_request.symbol))) + else: + candidate_price = _price(stock_request.symbol) + if self._price < candidate_price: + stock_reply_callback( + stock_pb2.StockReply( + symbol=stock_request.symbol, price=candidate_price)) + else: + stock_reply_callback( + stock_pb2.StockReply( + symbol=self._symbol, price=self._price)) + + self._symbol = None + self._price = None + + return StockRequestConsumer() + + +class GetLastTradePrice(_service.UnaryUnaryTestMethodImplementation): + """GetLastTradePrice for use in tests.""" + + def group(self): + return _STOCK_GROUP_NAME + + def name(self): + return 'GetLastTradePrice' + + def cardinality(self): + return cardinality.Cardinality.UNARY_UNARY + + def request_class(self): + return stock_pb2.StockRequest + + def response_class(self): + return stock_pb2.StockReply + + def serialize_request(self, request): + return request.SerializeToString() + + def deserialize_request(self, serialized_request): + return stock_pb2.StockRequest.FromString(serialized_request) + + def serialize_response(self, response): + return response.SerializeToString() + + def deserialize_response(self, serialized_response): + return stock_pb2.StockReply.FromString(serialized_response) + + def service(self, request, response_callback, context, control): + _get_last_trade_price( + request, response_callback, control, context.is_active) + + +class GetLastTradePriceMessages(_service.UnaryUnaryTestMessages): + + def __init__(self): + self._index = 0 + + def request(self): + symbol = _SYMBOL_FORMAT % self._index + self._index += 1 + return stock_pb2.StockRequest(symbol=symbol) + + def verify(self, request, response, test_case): + test_case.assertEqual(request.symbol, response.symbol) + test_case.assertEqual(_price(request.symbol), response.price) + + +class GetLastTradePriceMultiple(_service.StreamStreamTestMethodImplementation): + """GetLastTradePriceMultiple for use in tests.""" + + def group(self): + return _STOCK_GROUP_NAME + + def name(self): + return 'GetLastTradePriceMultiple' + + def cardinality(self): + return cardinality.Cardinality.STREAM_STREAM + + def request_class(self): + return stock_pb2.StockRequest + + def response_class(self): + return stock_pb2.StockReply + + def serialize_request(self, request): + return request.SerializeToString() + + def deserialize_request(self, serialized_request): + return stock_pb2.StockRequest.FromString(serialized_request) + + def serialize_response(self, response): + return response.SerializeToString() + + def deserialize_response(self, serialized_response): + return stock_pb2.StockReply.FromString(serialized_response) + + def service(self, response_consumer, context, control): + return _get_last_trade_price_multiple( + response_consumer, control, context.is_active) + + +class GetLastTradePriceMultipleMessages(_service.StreamStreamTestMessages): + """Pairs of message streams for use with GetLastTradePriceMultiple.""" + + def __init__(self): + self._index = 0 + + def requests(self): + base_index = self._index + self._index += 1 + return [ + stock_pb2.StockRequest(symbol=_SYMBOL_FORMAT % (base_index + index)) + for index in range(test_constants.STREAM_LENGTH)] + + def verify(self, requests, responses, test_case): + test_case.assertEqual(len(requests), len(responses)) + for stock_request, stock_reply in zip(requests, responses): + test_case.assertEqual(stock_request.symbol, stock_reply.symbol) + test_case.assertEqual(_price(stock_request.symbol), stock_reply.price) + + +class WatchFutureTrades(_service.UnaryStreamTestMethodImplementation): + """WatchFutureTrades for use in tests.""" + + def group(self): + return _STOCK_GROUP_NAME + + def name(self): + return 'WatchFutureTrades' + + def cardinality(self): + return cardinality.Cardinality.UNARY_STREAM + + def request_class(self): + return stock_pb2.StockRequest + + def response_class(self): + return stock_pb2.StockReply + + def serialize_request(self, request): + return request.SerializeToString() + + def deserialize_request(self, serialized_request): + return stock_pb2.StockRequest.FromString(serialized_request) + + def serialize_response(self, response): + return response.SerializeToString() + + def deserialize_response(self, serialized_response): + return stock_pb2.StockReply.FromString(serialized_response) + + def service(self, request, response_consumer, context, control): + _watch_future_trades(request, response_consumer, control, context.is_active) + + +class WatchFutureTradesMessages(_service.UnaryStreamTestMessages): + """Pairs of a single request message and a sequence of response messages.""" + + def __init__(self): + self._index = 0 + + def request(self): + symbol = _SYMBOL_FORMAT % self._index + self._index += 1 + return stock_pb2.StockRequest( + symbol=symbol, num_trades_to_watch=test_constants.STREAM_LENGTH) + + def verify(self, request, responses, test_case): + test_case.assertEqual(test_constants.STREAM_LENGTH, len(responses)) + base_price = _price(request.symbol) + for index, response in enumerate(responses): + test_case.assertEqual(base_price + index, response.price) + + +class GetHighestTradePrice(_service.StreamUnaryTestMethodImplementation): + """GetHighestTradePrice for use in tests.""" + + def group(self): + return _STOCK_GROUP_NAME + + def name(self): + return 'GetHighestTradePrice' + + def cardinality(self): + return cardinality.Cardinality.STREAM_UNARY + + def request_class(self): + return stock_pb2.StockRequest + + def response_class(self): + return stock_pb2.StockReply + + def serialize_request(self, request): + return request.SerializeToString() + + def deserialize_request(self, serialized_request): + return stock_pb2.StockRequest.FromString(serialized_request) + + def serialize_response(self, response): + return response.SerializeToString() + + def deserialize_response(self, serialized_response): + return stock_pb2.StockReply.FromString(serialized_response) + + def service(self, response_callback, context, control): + return _get_highest_trade_price( + response_callback, control, context.is_active) + + +class GetHighestTradePriceMessages(_service.StreamUnaryTestMessages): + + def requests(self): + return [ + stock_pb2.StockRequest(symbol=_SYMBOL_FORMAT % index) + for index in range(test_constants.STREAM_LENGTH)] + + def verify(self, requests, response, test_case): + price = None + symbol = None + for stock_request in requests: + current_symbol = stock_request.symbol + current_price = _price(current_symbol) + if price is None or price < current_price: + price = current_price + symbol = current_symbol + test_case.assertEqual(price, response.price) + test_case.assertEqual(symbol, response.symbol) + + +class StockTestService(_service.TestService): + """A corpus of test data with one method of each RPC cardinality.""" + + def unary_unary_scenarios(self): + return { + (_STOCK_GROUP_NAME, 'GetLastTradePrice'): ( + GetLastTradePrice(), [GetLastTradePriceMessages()]), + } + + def unary_stream_scenarios(self): + return { + (_STOCK_GROUP_NAME, 'WatchFutureTrades'): ( + WatchFutureTrades(), [WatchFutureTradesMessages()]), + } + + def stream_unary_scenarios(self): + return { + (_STOCK_GROUP_NAME, 'GetHighestTradePrice'): ( + GetHighestTradePrice(), [GetHighestTradePriceMessages()]) + } + + def stream_stream_scenarios(self): + return { + (_STOCK_GROUP_NAME, 'GetLastTradePriceMultiple'): ( + GetLastTradePriceMultiple(), [GetLastTradePriceMultipleMessages()]), + } + + +STOCK_TEST_SERVICE = StockTestService() diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/face/test_cases.py b/src/python/grpcio_test/grpc_test/framework/interfaces/face/test_cases.py new file mode 100644 index 0000000000..ca623662f7 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/face/test_cases.py @@ -0,0 +1,67 @@ +# 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. + +"""Tools for creating tests of implementations of the Face layer.""" + +# unittest is referenced from specification in this module. +import unittest # pylint: disable=unused-import + +# test_interfaces is referenced from specification in this module. +from grpc_test.framework.interfaces.face import _blocking_invocation_inline_service +from grpc_test.framework.interfaces.face import _event_invocation_synchronous_event_service +from grpc_test.framework.interfaces.face import _future_invocation_asynchronous_event_service +from grpc_test.framework.interfaces.face import _invocation +from grpc_test.framework.interfaces.face import test_interfaces # pylint: disable=unused-import + +_TEST_CASE_SUPERCLASSES = ( + _blocking_invocation_inline_service.TestCase, + _event_invocation_synchronous_event_service.TestCase, + _future_invocation_asynchronous_event_service.TestCase, +) + + +def test_cases(implementation): + """Creates unittest.TestCase classes for a given Face layer implementation. + + Args: + implementation: A test_interfaces.Implementation specifying creation and + destruction of a given Face layer implementation. + + Returns: + A sequence of subclasses of unittest.TestCase defining tests of the + specified Face layer implementation. + """ + test_case_classes = [] + for invoker_constructor in _invocation.invoker_constructors(): + for super_class in _TEST_CASE_SUPERCLASSES: + test_case_classes.append( + type(invoker_constructor.name() + super_class.NAME, (super_class,), + {'implementation': implementation, + 'invoker_constructor': invoker_constructor})) + return test_case_classes diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/face/test_interfaces.py b/src/python/grpcio_test/grpc_test/framework/interfaces/face/test_interfaces.py new file mode 100644 index 0000000000..b2b5c10fa6 --- /dev/null +++ b/src/python/grpcio_test/grpc_test/framework/interfaces/face/test_interfaces.py @@ -0,0 +1,229 @@ +# 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. + +"""Interfaces used in tests of implementations of the Face layer.""" + +import abc + +from grpc.framework.common import cardinality # pylint: disable=unused-import +from grpc.framework.interfaces.face import face # pylint: disable=unused-import + + +class Method(object): + """Specifies a method to be used in tests.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def group(self): + """Identify the group of the method. + + Returns: + The group of the method. + """ + raise NotImplementedError() + + @abc.abstractmethod + def name(self): + """Identify the name of the method. + + Returns: + The name of the method. + """ + raise NotImplementedError() + + @abc.abstractmethod + def cardinality(self): + """Identify the cardinality of the method. + + Returns: + A cardinality.Cardinality value describing the streaming semantics of the + method. + """ + raise NotImplementedError() + + @abc.abstractmethod + def request_class(self): + """Identify the class used for the method's request objects. + + Returns: + The class object of the class to which the method's request objects + belong. + """ + raise NotImplementedError() + + @abc.abstractmethod + def response_class(self): + """Identify the class used for the method's response objects. + + Returns: + The class object of the class to which the method's response objects + belong. + """ + raise NotImplementedError() + + @abc.abstractmethod + def serialize_request(self, request): + """Serialize the given request object. + + Args: + request: A request object appropriate for this method. + """ + raise NotImplementedError() + + @abc.abstractmethod + def deserialize_request(self, serialized_request): + """Synthesize a request object from a given bytestring. + + Args: + serialized_request: A bytestring deserializable into a request object + appropriate for this method. + """ + raise NotImplementedError() + + @abc.abstractmethod + def serialize_response(self, response): + """Serialize the given response object. + + Args: + response: A response object appropriate for this method. + """ + raise NotImplementedError() + + @abc.abstractmethod + def deserialize_response(self, serialized_response): + """Synthesize a response object from a given bytestring. + + Args: + serialized_response: A bytestring deserializable into a response object + appropriate for this method. + """ + raise NotImplementedError() + + +class Implementation(object): + """Specifies an implementation of the Face layer.""" + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def instantiate( + self, methods, method_implementations, + multi_method_implementation): + """Instantiates the Face layer implementation to be used in a test. + + Args: + methods: A sequence of Method objects describing the methods available to + be called during the test. + method_implementations: A dictionary from group-name pair to + face.MethodImplementation object specifying implementation of a method. + multi_method_implementation: A face.MultiMethodImplementation or None. + + Returns: + A sequence of length three the first element of which is a + face.GenericStub, the second element of which is dictionary from groups + to face.DynamicStubs affording invocation of the group's methods, and + the third element of which is an arbitrary memo object to be kept and + passed to destantiate at the conclusion of the test. The returned stubs + must be backed by the provided implementations. + """ + raise NotImplementedError() + + @abc.abstractmethod + def destantiate(self, memo): + """Destroys the Face layer implementation under test. + + Args: + memo: The object from the third position of the return value of a call to + instantiate. + """ + raise NotImplementedError() + + @abc.abstractmethod + def invocation_metadata(self): + """Provides the metadata to be used when invoking a test RPC. + + Returns: + An object to use as the supplied-at-invocation-time metadata in a test + RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def initial_metadata(self): + """Provides the metadata for use as a test RPC's first servicer metadata. + + Returns: + An object to use as the from-the-servicer-before-responses metadata in a + test RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def terminal_metadata(self): + """Provides the metadata for use as a test RPC's second servicer metadata. + + Returns: + An object to use as the from-the-servicer-after-all-responses metadata in + a test RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def code(self): + """Provides the value for use as a test RPC's code. + + Returns: + An object to use as the from-the-servicer code in a test RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def details(self): + """Provides the value for use as a test RPC's details. + + Returns: + An object to use as the from-the-servicer details in a test RPC. + """ + raise NotImplementedError() + + @abc.abstractmethod + def metadata_transmitted(self, original_metadata, transmitted_metadata): + """Identifies whether or not metadata was properly transmitted. + + Args: + original_metadata: A metadata value passed to the Face interface + implementation under test. + transmitted_metadata: The same metadata value after having been + transmitted via an RPC performed by the Face interface implementation + under test. + + Returns: + Whether or not the metadata was properly transmitted by the Face interface + implementation under test. + """ + raise NotImplementedError() -- GitLab From 7b92bae20e19c6e94f9652050c50027a0fb5fe0c Mon Sep 17 00:00:00 2001 From: Nathaniel Manista <nathaniel@google.com> Date: Mon, 24 Aug 2015 23:14:23 +0000 Subject: [PATCH 165/178] Status code conformance in grpc._links --- src/python/grpcio/grpc/_links/invocation.py | 4 +- src/python/grpcio/grpc/_links/service.py | 41 +++++++++++++++++---- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/python/grpcio/grpc/_links/invocation.py b/src/python/grpcio/grpc/_links/invocation.py index a74c77ebcc..ee3d72fdbc 100644 --- a/src/python/grpcio/grpc/_links/invocation.py +++ b/src/python/grpcio/grpc/_links/invocation.py @@ -141,6 +141,8 @@ class _Kernel(object): termination = links.Ticket.Termination.CANCELLATION elif event.status.code is _intermediary_low.Code.DEADLINE_EXCEEDED: termination = links.Ticket.Termination.EXPIRATION + elif event.status.code is _intermediary_low.Code.UNKNOWN: + termination = links.Ticket.Termination.LOCAL_FAILURE else: termination = links.Ticket.Termination.TRANSMISSION_FAILURE ticket = links.Ticket( @@ -349,7 +351,7 @@ def invocation_link(channel, host, request_serializers, response_deserializers): """Creates an InvocationLink. Args: - channel: A channel for use by the link. + channel: An _intermediary_low.Channel for use by the link. host: The host to specify when invoking RPCs. request_serializers: A dict from group-method pair to request object serialization behavior. diff --git a/src/python/grpcio/grpc/_links/service.py b/src/python/grpcio/grpc/_links/service.py index de78e82cd6..2d8fab3ee3 100644 --- a/src/python/grpcio/grpc/_links/service.py +++ b/src/python/grpcio/grpc/_links/service.py @@ -40,6 +40,19 @@ from grpc.framework.foundation import logging_pool from grpc.framework.foundation import relay from grpc.framework.interfaces.links import links +_TERMINATION_KIND_TO_CODE = { + links.Ticket.Termination.COMPLETION: _intermediary_low.Code.OK, + links.Ticket.Termination.CANCELLATION: _intermediary_low.Code.CANCELLED, + links.Ticket.Termination.EXPIRATION: + _intermediary_low.Code.DEADLINE_EXCEEDED, + links.Ticket.Termination.SHUTDOWN: _intermediary_low.Code.UNAVAILABLE, + links.Ticket.Termination.RECEPTION_FAILURE: _intermediary_low.Code.INTERNAL, + links.Ticket.Termination.TRANSMISSION_FAILURE: + _intermediary_low.Code.INTERNAL, + links.Ticket.Termination.LOCAL_FAILURE: _intermediary_low.Code.UNKNOWN, + links.Ticket.Termination.REMOTE_FAILURE: _intermediary_low.Code.UNKNOWN, +} + @enum.unique class _Read(enum.Enum): @@ -93,6 +106,15 @@ def _metadatafy(call, metadata): call.add_metadata(metadata_key, metadata_value) +def _status(termination_kind, code, details): + effective_details = b'' if details is None else details + if code is None: + effective_code = _TERMINATION_KIND_TO_CODE[termination_kind] + else: + effective_code = code + return _intermediary_low.Status(effective_code, effective_details) + + class _Kernel(object): def __init__(self, request_deserializers, response_serializers, ticket_relay): @@ -170,8 +192,10 @@ class _Kernel(object): if rpc_state.high_write is _HighWrite.CLOSED: if rpc_state.terminal_metadata is not None: _metadatafy(call, rpc_state.terminal_metadata) - call.status( - _intermediary_low.Status(rpc_state.code, rpc_state.message), call) + status = _status( + links.Ticket.Termination.COMPLETION, rpc_state.code, + rpc_state.message) + call.status(status, call) rpc_state.low_write = _LowWrite.CLOSED else: ticket = links.Ticket( @@ -279,14 +303,17 @@ class _Kernel(object): if rpc_state.low_write is _LowWrite.OPEN: if rpc_state.terminal_metadata is not None: _metadatafy(call, rpc_state.terminal_metadata) - status = _intermediary_low.Status( - _intermediary_low.Code.OK - if rpc_state.code is None else rpc_state.code, - '' if rpc_state.message is None else rpc_state.message) + status = _status( + links.Ticket.Termination.COMPLETION, rpc_state.code, + rpc_state.message) call.status(status, call) rpc_state.low_write = _LowWrite.CLOSED elif ticket.termination is not None: - call.cancel() + if rpc_state.terminal_metadata is not None: + _metadatafy(call, rpc_state.terminal_metadata) + status = _status( + ticket.termination, rpc_state.code, rpc_state.message) + call.status(status, call) self._rpc_states.pop(call, None) def add_port(self, port, server_credentials): -- GitLab From 60478685e72a0bedb740f1f7a5322f3a1bb5e59d Mon Sep 17 00:00:00 2001 From: Nathaniel Manista <nathaniel@google.com> Date: Mon, 24 Aug 2015 22:35:26 +0000 Subject: [PATCH 166/178] Use a custom exception in test_control Use of ValueError is too easily misconstrued as an actual defect in the system under test. --- .../grpc_test/framework/common/test_control.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/python/grpcio_test/grpc_test/framework/common/test_control.py b/src/python/grpcio_test/grpc_test/framework/common/test_control.py index 3960c4e649..8d6eba5c2c 100644 --- a/src/python/grpcio_test/grpc_test/framework/common/test_control.py +++ b/src/python/grpcio_test/grpc_test/framework/common/test_control.py @@ -34,6 +34,14 @@ import contextlib import threading +class Defect(Exception): + """Simulates a programming defect raised into in a system under test. + + Use of a standard exception type is too easily misconstrued as an actual + defect in either the test infrastructure or the system under test. + """ + + class Control(object): """An object that accepts program control from a system under test. @@ -62,7 +70,7 @@ class PauseFailControl(Control): def control(self): with self._condition: if self._fail: - raise ValueError() + raise Defect() while self._paused: self._condition.wait() -- GitLab From 8fd915ab8dfaf2a451fc46ecf225ea4d4400c64b Mon Sep 17 00:00:00 2001 From: Julien Boeuf <jboeuf@google.com> Date: Wed, 19 Aug 2015 21:18:14 -0700 Subject: [PATCH 167/178] Adding grpc::string_ref class. - Strict subset of http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3442.html - Useful to avoid unnecessary string copies. --- BUILD | 4 + Makefile | 49 +++- build.json | 13 ++ include/grpc++/string_ref.h | 119 ++++++++++ src/cpp/util/string_ref.cc | 111 +++++++++ test/cpp/util/string_ref_test.cc | 215 ++++++++++++++++++ tools/doxygen/Doxyfile.c++ | 1 + tools/doxygen/Doxyfile.c++.internal | 2 + tools/run_tests/sources_and_headers.json | 21 ++ tools/run_tests/tests.json | 17 ++ vsprojects/Grpc.mak | 10 +- vsprojects/grpc++/grpc++.vcxproj | 3 + vsprojects/grpc++/grpc++.vcxproj.filters | 6 + .../grpc++_unsecure/grpc++_unsecure.vcxproj | 3 + .../grpc++_unsecure.vcxproj.filters | 6 + 15 files changed, 578 insertions(+), 2 deletions(-) create mode 100644 include/grpc++/string_ref.h create mode 100644 src/cpp/util/string_ref.cc create mode 100644 test/cpp/util/string_ref_test.cc diff --git a/BUILD b/BUILD index 7eb59797d4..03e53aeadb 100644 --- a/BUILD +++ b/BUILD @@ -707,6 +707,7 @@ cc_library( "src/cpp/util/byte_buffer.cc", "src/cpp/util/slice.cc", "src/cpp/util/status.cc", + "src/cpp/util/string_ref.cc", "src/cpp/util/time.cc", ], hdrs = [ @@ -748,6 +749,7 @@ cc_library( "include/grpc++/status.h", "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", + "include/grpc++/string_ref.h", "include/grpc++/stub_options.h", "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", @@ -794,6 +796,7 @@ cc_library( "src/cpp/util/byte_buffer.cc", "src/cpp/util/slice.cc", "src/cpp/util/status.cc", + "src/cpp/util/string_ref.cc", "src/cpp/util/time.cc", ], hdrs = [ @@ -835,6 +838,7 @@ cc_library( "include/grpc++/status.h", "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", + "include/grpc++/string_ref.h", "include/grpc++/stub_options.h", "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", diff --git a/Makefile b/Makefile index d254fd6ecb..436ac4797f 100644 --- a/Makefile +++ b/Makefile @@ -860,6 +860,7 @@ client_crash_test_server: $(BINDIR)/$(CONFIG)/client_crash_test_server credentials_test: $(BINDIR)/$(CONFIG)/credentials_test cxx_byte_buffer_test: $(BINDIR)/$(CONFIG)/cxx_byte_buffer_test cxx_slice_test: $(BINDIR)/$(CONFIG)/cxx_slice_test +cxx_string_ref_test: $(BINDIR)/$(CONFIG)/cxx_string_ref_test cxx_time_test: $(BINDIR)/$(CONFIG)/cxx_time_test dynamic_thread_pool_test: $(BINDIR)/$(CONFIG)/dynamic_thread_pool_test end2end_test: $(BINDIR)/$(CONFIG)/end2end_test @@ -1731,7 +1732,7 @@ buildtests: buildtests_c buildtests_cxx buildtests_zookeeper buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONFIG)/alarm_list_test $(BINDIR)/$(CONFIG)/alarm_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)/dualstack_socket_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_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)/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)/chttp2_fake_security_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_default_host_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_poll_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_default_host_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_posix_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_channel_connectivity_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_poll_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_default_host_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_disappearing_server_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_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_time_test $(BINDIR)/$(CONFIG)/dynamic_thread_pool_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/fixed_size_thread_pool_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)/status_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)/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)/dynamic_thread_pool_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/fixed_size_thread_pool_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)/status_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 @@ -3323,6 +3324,8 @@ test_cxx: test_zookeeper buildtests_cxx $(Q) $(BINDIR)/$(CONFIG)/cxx_byte_buffer_test || ( echo test cxx_byte_buffer_test failed ; exit 1 ) $(E) "[RUN] Testing cxx_slice_test" $(Q) $(BINDIR)/$(CONFIG)/cxx_slice_test || ( echo test cxx_slice_test failed ; exit 1 ) + $(E) "[RUN] Testing cxx_string_ref_test" + $(Q) $(BINDIR)/$(CONFIG)/cxx_string_ref_test || ( echo test cxx_string_ref_test failed ; exit 1 ) $(E) "[RUN] Testing cxx_time_test" $(Q) $(BINDIR)/$(CONFIG)/cxx_time_test || ( echo test cxx_time_test failed ; exit 1 ) $(E) "[RUN] Testing dynamic_thread_pool_test" @@ -4620,6 +4623,7 @@ LIBGRPC++_SRC = \ src/cpp/util/byte_buffer.cc \ src/cpp/util/slice.cc \ src/cpp/util/status.cc \ + src/cpp/util/string_ref.cc \ src/cpp/util/time.cc \ PUBLIC_HEADERS_CXX += \ @@ -4661,6 +4665,7 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/status.h \ include/grpc++/status_code_enum.h \ include/grpc++/stream.h \ + include/grpc++/string_ref.h \ include/grpc++/stub_options.h \ include/grpc++/thread_pool_interface.h \ include/grpc++/time.h \ @@ -4863,6 +4868,7 @@ LIBGRPC++_UNSECURE_SRC = \ src/cpp/util/byte_buffer.cc \ src/cpp/util/slice.cc \ src/cpp/util/status.cc \ + src/cpp/util/string_ref.cc \ src/cpp/util/time.cc \ PUBLIC_HEADERS_CXX += \ @@ -4904,6 +4910,7 @@ PUBLIC_HEADERS_CXX += \ include/grpc++/status.h \ include/grpc++/status_code_enum.h \ include/grpc++/stream.h \ + include/grpc++/string_ref.h \ include/grpc++/stub_options.h \ include/grpc++/thread_pool_interface.h \ include/grpc++/time.h \ @@ -9178,6 +9185,46 @@ endif endif +CXX_STRING_REF_TEST_SRC = \ + test/cpp/util/string_ref_test.cc \ + +CXX_STRING_REF_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(CXX_STRING_REF_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/cxx_string_ref_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)/cxx_string_ref_test: protobuf_dep_error + +else + +$(BINDIR)/$(CONFIG)/cxx_string_ref_test: $(PROTOBUF_DEP) $(CXX_STRING_REF_TEST_OBJS) $(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) $(CXX_STRING_REF_TEST_OBJS) $(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)/cxx_string_ref_test + +endif + +endif + +$(OBJDIR)/$(CONFIG)/test/cpp/util/string_ref_test.o: $(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_cxx_string_ref_test: $(CXX_STRING_REF_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(CXX_STRING_REF_TEST_OBJS:.o=.dep) +endif +endif + + CXX_TIME_TEST_SRC = \ test/cpp/util/time_test.cc \ diff --git a/build.json b/build.json index f7be17eedf..f4528e818a 100644 --- a/build.json +++ b/build.json @@ -68,6 +68,7 @@ "include/grpc++/status.h", "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", + "include/grpc++/string_ref.h", "include/grpc++/stub_options.h", "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h" @@ -101,6 +102,7 @@ "src/cpp/util/byte_buffer.cc", "src/cpp/util/slice.cc", "src/cpp/util/status.cc", + "src/cpp/util/string_ref.cc", "src/cpp/util/time.cc" ] }, @@ -2100,6 +2102,17 @@ "gpr" ] }, + { + "name": "cxx_string_ref_test", + "build": "test", + "language": "c++", + "src": [ + "test/cpp/util/string_ref_test.cc" + ], + "deps": [ + "grpc++" + ] + }, { "name": "cxx_time_test", "build": "test", diff --git a/include/grpc++/string_ref.h b/include/grpc++/string_ref.h new file mode 100644 index 0000000000..dd33ab73c0 --- /dev/null +++ b/include/grpc++/string_ref.h @@ -0,0 +1,119 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef GRPCXX_STRING_REF_H +#define GRPCXX_STRING_REF_H + +#include <iterator> + +#include <grpc++/config.h> + +namespace grpc { + +// This class is a non owning reference to a string. +// It should be a strict subset of the upcoming std::string_ref. See: +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3442.html +class string_ref { + public: + // types + typedef const char* const_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + + // constants + static constexpr size_t npos = size_t(-1); + + // construct/copy. + constexpr string_ref() : data_(nullptr), length_(0) {} + constexpr string_ref(const string_ref& other) + : data_(other.data_), length_(other.length_) {} + string_ref& operator=(const string_ref& rhs); + string_ref(const char* s); + constexpr string_ref(const char* s, size_t l) : data_(s), length_(l) {} + string_ref(const grpc::string& s) : data_(s.data()), length_(s.length()) {} + + // iterators + constexpr const_iterator begin() const { return data_; } + constexpr const_iterator end() const { return data_ + length_; } + constexpr const_iterator cbegin() const { return data_; } + constexpr const_iterator cend() const { return data_ + length_; } + const_reverse_iterator rbegin() const { + return const_reverse_iterator(end()); + } + const_reverse_iterator rend() const { + return const_reverse_iterator(begin()); + } + const_reverse_iterator crbegin() const { + return const_reverse_iterator(end()); + } + const_reverse_iterator crend() const { + return const_reverse_iterator(begin()); + } + + // capacity + constexpr size_t size() const { return length_; } + constexpr size_t length() const { return length_; } + constexpr size_t max_size() const { return length_; } + constexpr bool empty() const { return length_ == 0; } + + // element access + const char* data() const { return data_; } + + // string operations + int compare(string_ref x) const; + bool starts_with(string_ref x) const; + bool ends_with(string_ref x) const; + size_t find(string_ref s) const; + size_t find(char c) const; + + // Defined as constexpr in n3442 but C++11 constexpr semantics do not allow + // the implementation of this function to comply. + /* constrexpr */ string_ref substr(size_t pos, size_t n = npos) const; + + private: + const char* data_; + size_t length_; +}; + +// Comparison operators +bool operator==(string_ref x, string_ref y); +bool operator!=(string_ref x, string_ref y); +bool operator<(string_ref x, string_ref y); +bool operator>(string_ref x, string_ref y); +bool operator<=(string_ref x, string_ref y); +bool operator>=(string_ref x, string_ref y); + +} // namespace grpc + +#endif // GRPCXX_STRING_REF_H + + diff --git a/src/cpp/util/string_ref.cc b/src/cpp/util/string_ref.cc new file mode 100644 index 0000000000..7f91ca95b4 --- /dev/null +++ b/src/cpp/util/string_ref.cc @@ -0,0 +1,111 @@ +/* + * + * 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 <grpc++/string_ref.h> + +#include <string.h> + +#include <algorithm> + +namespace grpc { + +constexpr size_t string_ref::npos; + +string_ref& string_ref::operator=(const string_ref& rhs) { + data_ = rhs.data_; + length_ = rhs.length_; + return *this; +} + +string_ref::string_ref(const char* s) : data_(s), length_(strlen(s)) {} + +string_ref string_ref::substr(size_t pos, size_t n) const { + if (pos > length_) pos = length_; + if (n > (length_ - pos)) n = length_ - pos; + return string_ref(data_ + pos, n); +} + +int string_ref::compare(string_ref x) const { + size_t min_size = length_ < x.length_ ? length_ : x.length_; + int r = memcmp(data_, x.data_, min_size); + if (r < 0) return -1; + if (r > 0) return 1; + if (length_ < x.length_) return -1; + if (length_ > x.length_) return 1; + return 0; +} + +bool string_ref::starts_with(string_ref x) const { + return length_ >= x.length_ && (memcmp(data_, x.data_, x.length_) == 0); +} + +bool string_ref::ends_with(string_ref x) const { + return length_ >= x.length_ && + (memcmp(data_ + (length_ - x.length_), x.data_, x.length_) == 0); +} + +size_t string_ref::find(string_ref s) const { + auto it = std::search(cbegin(), cend(), s.cbegin(), s.cend()); + return it == cend() ? npos : std::distance(cbegin(), it); +} + +size_t string_ref::find(char c) const { + auto it = std::find_if(cbegin(), cend(), [c](char cc) { return cc == c; }); + return it == cend() ? npos : std::distance(cbegin(), it); +} + +bool operator==(string_ref x, string_ref y) { + return x.compare(y) == 0; +} + +bool operator!=(string_ref x, string_ref y) { + return x.compare(y) != 0; +} + +bool operator<(string_ref x, string_ref y) { + return x.compare(y) < 0; +} + +bool operator<=(string_ref x, string_ref y) { + return x.compare(y) <= 0; +} + +bool operator>(string_ref x, string_ref y) { + return x.compare(y) > 0; +} + +bool operator>=(string_ref x, string_ref y) { + return x.compare(y) >= 0; +} + +} // namespace grpc diff --git a/test/cpp/util/string_ref_test.cc b/test/cpp/util/string_ref_test.cc new file mode 100644 index 0000000000..8a16b339f9 --- /dev/null +++ b/test/cpp/util/string_ref_test.cc @@ -0,0 +1,215 @@ +/* + * + * 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 <grpc++/string_ref.h> + +#include <string.h> + +#include <gtest/gtest.h> + +namespace grpc { +namespace { + +const char kTestString[] = "blah"; +const char kTestStringWithEmbeddedNull[] = "blah\0foo"; +const size_t kTestStringWithEmbeddedNullLength = 8; +const char kTestUnrelatedString[] = "foo"; + +class StringRefTest : public ::testing::Test { +}; + +TEST_F(StringRefTest, Empty) { + string_ref s; + EXPECT_EQ(0, s.length()); + EXPECT_EQ(nullptr, s.data()); +} + +TEST_F(StringRefTest, FromCString) { + string_ref s(kTestString); + EXPECT_EQ(strlen(kTestString), s.length()); + EXPECT_EQ(kTestString, s.data()); +} + +TEST_F(StringRefTest, FromCStringWithLength) { + string_ref s(kTestString, 2); + EXPECT_EQ(2, s.length()); + EXPECT_EQ(kTestString, s.data()); +} + +TEST_F(StringRefTest, FromString) { + string copy(kTestString); + string_ref s(copy); + EXPECT_EQ(copy.data(), s.data()); + EXPECT_EQ(copy.length(), s.length()); +} + +TEST_F(StringRefTest, CopyConstructor) { + string_ref s1(kTestString);; + string_ref s2(s1); + EXPECT_EQ(s1.length(), s2.length()); + EXPECT_EQ(s1.data(), s2.data()); +} + +TEST_F(StringRefTest, FromStringWithEmbeddedNull) { + string copy(kTestStringWithEmbeddedNull, kTestStringWithEmbeddedNullLength); + string_ref s(copy); + EXPECT_EQ(copy.data(), s.data()); + EXPECT_EQ(copy.length(), s.length()); + EXPECT_EQ(kTestStringWithEmbeddedNullLength, s.length()); +} + +TEST_F(StringRefTest, Assignment) { + string_ref s1(kTestString);; + string_ref s2; + EXPECT_EQ(nullptr, s2.data()); + s2 = s1; + EXPECT_EQ(s1.length(), s2.length()); + EXPECT_EQ(s1.data(), s2.data()); +} + +TEST_F(StringRefTest, Iterator) { + string_ref s(kTestString); + size_t i = 0; + for (char c : s) { + EXPECT_EQ(kTestString[i++], c); + } + EXPECT_EQ(strlen(kTestString), i); +} + +TEST_F(StringRefTest, ReverseIterator) { + string_ref s(kTestString); + size_t i = strlen(kTestString); + for (auto rit = s.crbegin(); rit != s.crend(); ++rit) { + EXPECT_EQ(kTestString[--i], *rit); + } + EXPECT_EQ(0, i); +} + +TEST_F(StringRefTest, Capacity) { + string_ref empty; + EXPECT_EQ(0, empty.length()); + EXPECT_EQ(0, empty.size()); + EXPECT_EQ(0, empty.max_size()); + EXPECT_EQ(true, empty.empty()); + + string_ref s(kTestString); + EXPECT_EQ(strlen(kTestString), s.length()); + EXPECT_EQ(s.length(), s.size()); + EXPECT_EQ(s.max_size(), s.length()); + EXPECT_EQ(false, s.empty()); +} + +TEST_F(StringRefTest, Compare) { + string_ref s1(kTestString); + string s1_copy(kTestString); + string_ref s2(kTestUnrelatedString); + string_ref s3(kTestStringWithEmbeddedNull, kTestStringWithEmbeddedNullLength); + EXPECT_EQ(0, s1.compare(s1_copy)); + EXPECT_NE(0, s1.compare(s2)); + EXPECT_NE(0, s1.compare(s3)); +} + +TEST_F(StringRefTest, StartsWith) { + string_ref s1(kTestString); + string_ref s2(kTestUnrelatedString); + string_ref s3(kTestStringWithEmbeddedNull, kTestStringWithEmbeddedNullLength); + EXPECT_TRUE(s1.starts_with(s1)); + EXPECT_FALSE(s1.starts_with(s2)); + EXPECT_FALSE(s2.starts_with(s1)); + EXPECT_FALSE(s1.starts_with(s3)); + EXPECT_TRUE(s3.starts_with(s1)); +} + +TEST_F(StringRefTest, Endswith) { + string_ref s1(kTestString); + string_ref s2(kTestUnrelatedString); + string_ref s3(kTestStringWithEmbeddedNull, kTestStringWithEmbeddedNullLength); + EXPECT_TRUE(s1.ends_with(s1)); + EXPECT_FALSE(s1.ends_with(s2)); + EXPECT_FALSE(s2.ends_with(s1)); + EXPECT_FALSE(s2.ends_with(s3)); + EXPECT_TRUE(s3.ends_with(s2)); +} + +TEST_F(StringRefTest, Find) { + string_ref s1(kTestString); + string_ref s2(kTestUnrelatedString); + string_ref s3(kTestStringWithEmbeddedNull, kTestStringWithEmbeddedNullLength); + EXPECT_EQ(0, s1.find(s1)); + EXPECT_EQ(0, s2.find(s2)); + EXPECT_EQ(0, s3.find(s3)); + EXPECT_EQ(string_ref::npos,s1.find(s2) ); + EXPECT_EQ(string_ref::npos,s2.find(s1)); + EXPECT_EQ(string_ref::npos,s1.find(s3)); + EXPECT_EQ(0, s3.find(s1)); + EXPECT_EQ(5, s3.find(s2)); + EXPECT_EQ(string_ref::npos, s1.find('z')); + EXPECT_EQ(1, s2.find('o')); +} + +TEST_F(StringRefTest, SubString) { + string_ref s(kTestStringWithEmbeddedNull, kTestStringWithEmbeddedNullLength); + string_ref sub1 = s.substr(0, 4); + EXPECT_EQ(string_ref(kTestString), sub1); + string_ref sub2 = s.substr(5); + EXPECT_EQ(string_ref(kTestUnrelatedString), sub2); +} + +TEST_F(StringRefTest, ComparisonOperators) { + string_ref s1(kTestString); + string_ref s2(kTestUnrelatedString); + string_ref s3(kTestStringWithEmbeddedNull, kTestStringWithEmbeddedNullLength); + EXPECT_EQ(s1, s1); + EXPECT_EQ(s2, s2); + EXPECT_EQ(s3, s3); + EXPECT_GE(s1, s1); + EXPECT_GE(s2, s2); + EXPECT_GE(s3, s3); + EXPECT_LE(s1, s1); + EXPECT_LE(s2, s2); + EXPECT_LE(s3, s3); + EXPECT_NE(s1, s2); + EXPECT_NE(s1, s3); + EXPECT_NE(s2, s3); + EXPECT_GT(s3, s1); + EXPECT_LT(s1, s3); +} + +} // namespace +} // namespace grpc + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} + diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++ index 790e637b72..0f41125afb 100644 --- a/tools/doxygen/Doxyfile.c++ +++ b/tools/doxygen/Doxyfile.c++ @@ -798,6 +798,7 @@ include/grpc++/slice.h \ include/grpc++/status.h \ include/grpc++/status_code_enum.h \ include/grpc++/stream.h \ +include/grpc++/string_ref.h \ include/grpc++/stub_options.h \ include/grpc++/thread_pool_interface.h \ include/grpc++/time.h diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index cd1279e2a6..82f68246f0 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -798,6 +798,7 @@ include/grpc++/slice.h \ include/grpc++/status.h \ include/grpc++/status_code_enum.h \ include/grpc++/stream.h \ +include/grpc++/string_ref.h \ include/grpc++/stub_options.h \ include/grpc++/thread_pool_interface.h \ include/grpc++/time.h \ @@ -836,6 +837,7 @@ src/cpp/server/server_credentials.cc \ src/cpp/util/byte_buffer.cc \ src/cpp/util/slice.cc \ src/cpp/util/status.cc \ +src/cpp/util/string_ref.cc \ src/cpp/util/time.cc # This tag can be used to specify the character encoding of the source files diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 627e6ac8c8..6154ff090c 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -1154,6 +1154,21 @@ "test/cpp/util/slice_test.cc" ] }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc++", + "grpc_test_util" + ], + "headers": [], + "language": "c++", + "name": "cxx_string_ref_test", + "src": [ + "test/cpp/util/string_ref_test.cc" + ] + }, { "deps": [ "gpr", @@ -13125,6 +13140,7 @@ "include/grpc++/status.h", "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", + "include/grpc++/string_ref.h", "include/grpc++/stub_options.h", "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", @@ -13175,6 +13191,7 @@ "include/grpc++/status.h", "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", + "include/grpc++/string_ref.h", "include/grpc++/stub_options.h", "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", @@ -13213,6 +13230,7 @@ "src/cpp/util/byte_buffer.cc", "src/cpp/util/slice.cc", "src/cpp/util/status.cc", + "src/cpp/util/string_ref.cc", "src/cpp/util/time.cc" ] }, @@ -13299,6 +13317,7 @@ "include/grpc++/status.h", "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", + "include/grpc++/string_ref.h", "include/grpc++/stub_options.h", "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", @@ -13346,6 +13365,7 @@ "include/grpc++/status.h", "include/grpc++/status_code_enum.h", "include/grpc++/stream.h", + "include/grpc++/string_ref.h", "include/grpc++/stub_options.h", "include/grpc++/thread_pool_interface.h", "include/grpc++/time.h", @@ -13376,6 +13396,7 @@ "src/cpp/util/byte_buffer.cc", "src/cpp/util/slice.cc", "src/cpp/util/status.cc", + "src/cpp/util/string_ref.cc", "src/cpp/util/time.cc" ] }, diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 6b3183d48a..6e7a7c8f9a 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -1229,6 +1229,23 @@ "windows" ] }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "flaky": false, + "language": "c++", + "name": "cxx_string_ref_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, { "ci_platforms": [ "linux", diff --git a/vsprojects/Grpc.mak b/vsprojects/Grpc.mak index 96b3a79cf2..479443beaa 100644 --- a/vsprojects/Grpc.mak +++ b/vsprojects/Grpc.mak @@ -83,7 +83,7 @@ buildtests: buildtests_c buildtests_cxx buildtests_c: alarm_heap_test.exe alarm_list_test.exe alarm_test.exe alpn_test.exe bin_encoder_test.exe chttp2_status_conversion_test.exe chttp2_stream_encoder_test.exe chttp2_stream_map_test.exe fling_client.exe fling_server.exe gpr_cmdline_test.exe gpr_env_test.exe gpr_file_test.exe gpr_histogram_test.exe gpr_host_port_test.exe gpr_log_test.exe gpr_slice_buffer_test.exe gpr_slice_test.exe gpr_stack_lockfree_test.exe gpr_string_test.exe gpr_sync_test.exe gpr_thd_test.exe gpr_time_test.exe gpr_tls_test.exe gpr_useful_test.exe grpc_auth_context_test.exe grpc_base64_test.exe grpc_byte_buffer_reader_test.exe grpc_channel_stack_test.exe grpc_completion_queue_test.exe grpc_credentials_test.exe grpc_json_token_test.exe grpc_jwt_verifier_test.exe grpc_security_connector_test.exe grpc_stream_op_test.exe hpack_parser_test.exe hpack_table_test.exe httpcli_format_request_test.exe httpcli_parser_test.exe json_rewrite.exe json_rewrite_test.exe json_test.exe lame_client_test.exe message_compress_test.exe multi_init_test.exe multiple_server_queues_test.exe murmur_hash_test.exe no_server_test.exe resolve_address_test.exe secure_endpoint_test.exe sockaddr_utils_test.exe time_averaged_stats_test.exe timeout_encoding_test.exe timers_test.exe transport_metadata_test.exe transport_security_test.exe uri_parser_test.exe chttp2_fake_security_bad_hostname_test.exe chttp2_fake_security_cancel_after_accept_test.exe chttp2_fake_security_cancel_after_accept_and_writes_closed_test.exe chttp2_fake_security_cancel_after_invoke_test.exe chttp2_fake_security_cancel_before_invoke_test.exe chttp2_fake_security_cancel_in_a_vacuum_test.exe chttp2_fake_security_census_simple_request_test.exe chttp2_fake_security_channel_connectivity_test.exe chttp2_fake_security_default_host_test.exe chttp2_fake_security_disappearing_server_test.exe chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fake_security_early_server_shutdown_finishes_tags_test.exe chttp2_fake_security_empty_batch_test.exe chttp2_fake_security_graceful_server_shutdown_test.exe chttp2_fake_security_invoke_large_request_test.exe chttp2_fake_security_max_concurrent_streams_test.exe chttp2_fake_security_max_message_length_test.exe chttp2_fake_security_no_op_test.exe chttp2_fake_security_ping_pong_streaming_test.exe chttp2_fake_security_registered_call_test.exe chttp2_fake_security_request_response_with_binary_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_metadata_and_payload_test.exe chttp2_fake_security_request_response_with_payload_test.exe chttp2_fake_security_request_response_with_payload_and_call_creds_test.exe chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fake_security_request_with_compressed_payload_test.exe chttp2_fake_security_request_with_flags_test.exe chttp2_fake_security_request_with_large_metadata_test.exe chttp2_fake_security_request_with_payload_test.exe chttp2_fake_security_server_finishes_request_test.exe chttp2_fake_security_simple_delayed_request_test.exe chttp2_fake_security_simple_request_test.exe chttp2_fake_security_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_test.exe chttp2_fullstack_cancel_after_accept_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_cancel_after_invoke_test.exe chttp2_fullstack_cancel_before_invoke_test.exe chttp2_fullstack_cancel_in_a_vacuum_test.exe chttp2_fullstack_census_simple_request_test.exe chttp2_fullstack_channel_connectivity_test.exe chttp2_fullstack_default_host_test.exe chttp2_fullstack_disappearing_server_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_empty_batch_test.exe chttp2_fullstack_graceful_server_shutdown_test.exe chttp2_fullstack_invoke_large_request_test.exe chttp2_fullstack_max_concurrent_streams_test.exe chttp2_fullstack_max_message_length_test.exe chttp2_fullstack_no_op_test.exe chttp2_fullstack_ping_pong_streaming_test.exe chttp2_fullstack_registered_call_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_request_response_with_payload_test.exe chttp2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_request_with_compressed_payload_test.exe chttp2_fullstack_request_with_flags_test.exe chttp2_fullstack_request_with_large_metadata_test.exe chttp2_fullstack_request_with_payload_test.exe chttp2_fullstack_server_finishes_request_test.exe chttp2_fullstack_simple_delayed_request_test.exe chttp2_fullstack_simple_request_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_compression_bad_hostname_test.exe chttp2_fullstack_compression_cancel_after_accept_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_compression_cancel_after_invoke_test.exe chttp2_fullstack_compression_cancel_before_invoke_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_test.exe chttp2_fullstack_compression_census_simple_request_test.exe chttp2_fullstack_compression_channel_connectivity_test.exe chttp2_fullstack_compression_default_host_test.exe chttp2_fullstack_compression_disappearing_server_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_compression_empty_batch_test.exe chttp2_fullstack_compression_graceful_server_shutdown_test.exe chttp2_fullstack_compression_invoke_large_request_test.exe chttp2_fullstack_compression_max_concurrent_streams_test.exe chttp2_fullstack_compression_max_message_length_test.exe chttp2_fullstack_compression_no_op_test.exe chttp2_fullstack_compression_ping_pong_streaming_test.exe chttp2_fullstack_compression_registered_call_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_test.exe chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_compression_request_with_compressed_payload_test.exe chttp2_fullstack_compression_request_with_flags_test.exe chttp2_fullstack_compression_request_with_large_metadata_test.exe chttp2_fullstack_compression_request_with_payload_test.exe chttp2_fullstack_compression_server_finishes_request_test.exe chttp2_fullstack_compression_simple_delayed_request_test.exe chttp2_fullstack_compression_simple_request_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_with_proxy_bad_hostname_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test.exe chttp2_fullstack_with_proxy_cancel_after_invoke_test.exe chttp2_fullstack_with_proxy_cancel_before_invoke_test.exe chttp2_fullstack_with_proxy_cancel_in_a_vacuum_test.exe chttp2_fullstack_with_proxy_census_simple_request_test.exe chttp2_fullstack_with_proxy_default_host_test.exe chttp2_fullstack_with_proxy_disappearing_server_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_test.exe chttp2_fullstack_with_proxy_empty_batch_test.exe chttp2_fullstack_with_proxy_graceful_server_shutdown_test.exe chttp2_fullstack_with_proxy_invoke_large_request_test.exe chttp2_fullstack_with_proxy_max_message_length_test.exe chttp2_fullstack_with_proxy_no_op_test.exe chttp2_fullstack_with_proxy_ping_pong_streaming_test.exe chttp2_fullstack_with_proxy_registered_call_test.exe chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_and_call_creds_test.exe chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test.exe chttp2_fullstack_with_proxy_request_with_large_metadata_test.exe chttp2_fullstack_with_proxy_request_with_payload_test.exe chttp2_fullstack_with_proxy_server_finishes_request_test.exe chttp2_fullstack_with_proxy_simple_delayed_request_test.exe chttp2_fullstack_with_proxy_simple_request_test.exe chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_bad_hostname_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_census_simple_request_test.exe chttp2_simple_ssl_fullstack_channel_connectivity_test.exe chttp2_simple_ssl_fullstack_default_host_test.exe chttp2_simple_ssl_fullstack_disappearing_server_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_empty_batch_test.exe chttp2_simple_ssl_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_fullstack_max_message_length_test.exe chttp2_simple_ssl_fullstack_no_op_test.exe chttp2_simple_ssl_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_registered_call_test.exe chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_fullstack_request_with_flags_test.exe chttp2_simple_ssl_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_request_with_payload_test.exe chttp2_simple_ssl_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_simple_request_test.exe chttp2_simple_ssl_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_fullstack_with_proxy_bad_hostname_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_after_invoke_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_before_invoke_test.exe chttp2_simple_ssl_fullstack_with_proxy_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_fullstack_with_proxy_census_simple_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_default_host_test.exe chttp2_simple_ssl_fullstack_with_proxy_disappearing_server_test.exe chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_fullstack_with_proxy_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_fullstack_with_proxy_empty_batch_test.exe chttp2_simple_ssl_fullstack_with_proxy_graceful_server_shutdown_test.exe chttp2_simple_ssl_fullstack_with_proxy_invoke_large_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_max_message_length_test.exe chttp2_simple_ssl_fullstack_with_proxy_no_op_test.exe chttp2_simple_ssl_fullstack_with_proxy_ping_pong_streaming_test.exe chttp2_simple_ssl_fullstack_with_proxy_registered_call_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_with_large_metadata_test.exe chttp2_simple_ssl_fullstack_with_proxy_request_with_payload_test.exe chttp2_simple_ssl_fullstack_with_proxy_server_finishes_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_delayed_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_request_test.exe chttp2_simple_ssl_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_test.exe chttp2_simple_ssl_with_oauth2_fullstack_bad_hostname_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test.exe chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test.exe chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_channel_connectivity_test.exe chttp2_simple_ssl_with_oauth2_fullstack_default_host_test.exe chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test.exe chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test.exe chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test.exe chttp2_simple_ssl_with_oauth2_fullstack_max_message_length_test.exe chttp2_simple_ssl_with_oauth2_fullstack_no_op_test.exe chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test.exe chttp2_simple_ssl_with_oauth2_fullstack_registered_call_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_and_call_creds_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_compressed_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_flags_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test.exe chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test.exe chttp2_simple_ssl_with_oauth2_fullstack_server_finishes_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test.exe chttp2_simple_ssl_with_oauth2_fullstack_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_bad_hostname_test.exe chttp2_socket_pair_cancel_after_accept_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_cancel_after_invoke_test.exe chttp2_socket_pair_cancel_before_invoke_test.exe chttp2_socket_pair_cancel_in_a_vacuum_test.exe chttp2_socket_pair_census_simple_request_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_empty_batch_test.exe chttp2_socket_pair_graceful_server_shutdown_test.exe chttp2_socket_pair_invoke_large_request_test.exe chttp2_socket_pair_max_concurrent_streams_test.exe chttp2_socket_pair_max_message_length_test.exe chttp2_socket_pair_no_op_test.exe chttp2_socket_pair_ping_pong_streaming_test.exe chttp2_socket_pair_registered_call_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_request_response_with_payload_test.exe chttp2_socket_pair_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_request_with_compressed_payload_test.exe chttp2_socket_pair_request_with_flags_test.exe chttp2_socket_pair_request_with_large_metadata_test.exe chttp2_socket_pair_request_with_payload_test.exe chttp2_socket_pair_server_finishes_request_test.exe chttp2_socket_pair_simple_request_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_test.exe chttp2_socket_pair_with_grpc_trace_no_op_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_and_call_creds_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_test.exe chttp2_fullstack_bad_hostname_unsecure_test.exe chttp2_fullstack_cancel_after_accept_unsecure_test.exe chttp2_fullstack_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_census_simple_request_unsecure_test.exe chttp2_fullstack_channel_connectivity_unsecure_test.exe chttp2_fullstack_default_host_unsecure_test.exe chttp2_fullstack_disappearing_server_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_empty_batch_unsecure_test.exe chttp2_fullstack_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_invoke_large_request_unsecure_test.exe chttp2_fullstack_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_max_message_length_unsecure_test.exe chttp2_fullstack_no_op_unsecure_test.exe chttp2_fullstack_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_registered_call_unsecure_test.exe chttp2_fullstack_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_response_with_payload_unsecure_test.exe chttp2_fullstack_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_request_with_flags_unsecure_test.exe chttp2_fullstack_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_request_with_payload_unsecure_test.exe chttp2_fullstack_server_finishes_request_unsecure_test.exe chttp2_fullstack_simple_delayed_request_unsecure_test.exe chttp2_fullstack_simple_request_unsecure_test.exe chttp2_fullstack_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_compression_bad_hostname_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_unsecure_test.exe chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_compression_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_compression_census_simple_request_unsecure_test.exe chttp2_fullstack_compression_channel_connectivity_unsecure_test.exe chttp2_fullstack_compression_default_host_unsecure_test.exe chttp2_fullstack_compression_disappearing_server_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_compression_empty_batch_unsecure_test.exe chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_compression_invoke_large_request_unsecure_test.exe chttp2_fullstack_compression_max_concurrent_streams_unsecure_test.exe chttp2_fullstack_compression_max_message_length_unsecure_test.exe chttp2_fullstack_compression_no_op_unsecure_test.exe chttp2_fullstack_compression_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_compression_registered_call_unsecure_test.exe chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_payload_unsecure_test.exe chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test.exe chttp2_fullstack_compression_request_with_flags_unsecure_test.exe chttp2_fullstack_compression_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_compression_request_with_payload_unsecure_test.exe chttp2_fullstack_compression_server_finishes_request_unsecure_test.exe chttp2_fullstack_compression_simple_delayed_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_unsecure_test.exe chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_fullstack_with_proxy_bad_hostname_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_after_invoke_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_before_invoke_unsecure_test.exe chttp2_fullstack_with_proxy_cancel_in_a_vacuum_unsecure_test.exe chttp2_fullstack_with_proxy_census_simple_request_unsecure_test.exe chttp2_fullstack_with_proxy_default_host_unsecure_test.exe chttp2_fullstack_with_proxy_disappearing_server_unsecure_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_fullstack_with_proxy_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_fullstack_with_proxy_empty_batch_unsecure_test.exe chttp2_fullstack_with_proxy_graceful_server_shutdown_unsecure_test.exe chttp2_fullstack_with_proxy_invoke_large_request_unsecure_test.exe chttp2_fullstack_with_proxy_max_message_length_unsecure_test.exe chttp2_fullstack_with_proxy_no_op_unsecure_test.exe chttp2_fullstack_with_proxy_ping_pong_streaming_unsecure_test.exe chttp2_fullstack_with_proxy_registered_call_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_fullstack_with_proxy_request_with_large_metadata_unsecure_test.exe chttp2_fullstack_with_proxy_request_with_payload_unsecure_test.exe chttp2_fullstack_with_proxy_server_finishes_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_delayed_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_request_unsecure_test.exe chttp2_fullstack_with_proxy_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_bad_hostname_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_census_simple_request_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_empty_batch_unsecure_test.exe chttp2_socket_pair_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_invoke_large_request_unsecure_test.exe chttp2_socket_pair_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_max_message_length_unsecure_test.exe chttp2_socket_pair_no_op_unsecure_test.exe chttp2_socket_pair_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_registered_call_unsecure_test.exe chttp2_socket_pair_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_request_with_flags_unsecure_test.exe chttp2_socket_pair_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_request_with_payload_unsecure_test.exe chttp2_socket_pair_server_finishes_request_unsecure_test.exe chttp2_socket_pair_simple_request_unsecure_test.exe chttp2_socket_pair_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_bad_hostname_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_census_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_empty_batch_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_max_message_length_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_no_op_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_registered_call_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_flags_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_request_with_payload_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_server_finishes_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_unsecure_test.exe chttp2_socket_pair_one_byte_at_a_time_simple_request_with_high_initial_sequence_number_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_bad_hostname_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_accept_and_writes_closed_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_after_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_before_invoke_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_cancel_in_a_vacuum_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_census_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_inflight_calls_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_early_server_shutdown_finishes_tags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_empty_batch_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_graceful_server_shutdown_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_invoke_large_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_concurrent_streams_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_max_message_length_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_no_op_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_ping_pong_streaming_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_registered_call_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_binary_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_response_with_trailing_metadata_and_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_compressed_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_flags_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_large_metadata_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_request_with_payload_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_server_finishes_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_unsecure_test.exe chttp2_socket_pair_with_grpc_trace_simple_request_with_high_initial_sequence_number_unsecure_test.exe connection_prefix_bad_client_test.exe initial_settings_frame_bad_client_test.exe echo All C tests built. -buildtests_cxx: async_end2end_test.exe auth_property_iterator_test.exe channel_arguments_test.exe cli_call_test.exe client_crash_test_server.exe credentials_test.exe cxx_byte_buffer_test.exe cxx_slice_test.exe cxx_time_test.exe dynamic_thread_pool_test.exe end2end_test.exe fixed_size_thread_pool_test.exe generic_end2end_test.exe grpc_cli.exe mock_test.exe reconnect_interop_client.exe reconnect_interop_server.exe secure_auth_context_test.exe server_crash_test_client.exe status_test.exe thread_stress_test.exe zookeeper_test.exe +buildtests_cxx: async_end2end_test.exe auth_property_iterator_test.exe channel_arguments_test.exe cli_call_test.exe client_crash_test_server.exe credentials_test.exe cxx_byte_buffer_test.exe cxx_slice_test.exe cxx_string_ref_test.exe cxx_time_test.exe dynamic_thread_pool_test.exe end2end_test.exe fixed_size_thread_pool_test.exe generic_end2end_test.exe grpc_cli.exe mock_test.exe reconnect_interop_client.exe reconnect_interop_server.exe secure_auth_context_test.exe server_crash_test_client.exe status_test.exe thread_stress_test.exe zookeeper_test.exe echo All C++ tests built. @@ -655,6 +655,14 @@ cxx_slice_test: cxx_slice_test.exe echo Running cxx_slice_test $(OUT_DIR)\cxx_slice_test.exe +cxx_string_ref_test.exe: build_grpc_test_util build_grpc++ build_grpc build_gpr_test_util build_gpr $(OUT_DIR) + echo Building cxx_string_ref_test + $(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\cpp\util\string_ref_test.cc + $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\cxx_string_ref_test.exe" Debug\grpc_test_util.lib Debug\grpc++.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(CXX_LIBS) $(LIBS) $(OUT_DIR)\string_ref_test.obj +cxx_string_ref_test: cxx_string_ref_test.exe + echo Running cxx_string_ref_test + $(OUT_DIR)\cxx_string_ref_test.exe + cxx_time_test.exe: build_grpc_test_util build_grpc++ build_grpc build_gpr_test_util build_gpr $(OUT_DIR) echo Building cxx_time_test $(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\test\cpp\util\time_test.cc diff --git a/vsprojects/grpc++/grpc++.vcxproj b/vsprojects/grpc++/grpc++.vcxproj index 929bc1500e..c28187b14f 100644 --- a/vsprojects/grpc++/grpc++.vcxproj +++ b/vsprojects/grpc++/grpc++.vcxproj @@ -251,6 +251,7 @@ <ClInclude Include="..\..\include\grpc++\status.h" /> <ClInclude Include="..\..\include\grpc++\status_code_enum.h" /> <ClInclude Include="..\..\include\grpc++\stream.h" /> + <ClInclude Include="..\..\include\grpc++\string_ref.h" /> <ClInclude Include="..\..\include\grpc++\stub_options.h" /> <ClInclude Include="..\..\include\grpc++\thread_pool_interface.h" /> <ClInclude Include="..\..\include\grpc++\time.h" /> @@ -323,6 +324,8 @@ </ClCompile> <ClCompile Include="..\..\src\cpp\util\status.cc"> </ClCompile> + <ClCompile Include="..\..\src\cpp\util\string_ref.cc"> + </ClCompile> <ClCompile Include="..\..\src\cpp\util\time.cc"> </ClCompile> </ItemGroup> diff --git a/vsprojects/grpc++/grpc++.vcxproj.filters b/vsprojects/grpc++/grpc++.vcxproj.filters index 0408fb46a5..6192231c67 100644 --- a/vsprojects/grpc++/grpc++.vcxproj.filters +++ b/vsprojects/grpc++/grpc++.vcxproj.filters @@ -91,6 +91,9 @@ <ClCompile Include="..\..\src\cpp\util\status.cc"> <Filter>src\cpp\util</Filter> </ClCompile> + <ClCompile Include="..\..\src\cpp\util\string_ref.cc"> + <Filter>src\cpp\util</Filter> + </ClCompile> <ClCompile Include="..\..\src\cpp\util\time.cc"> <Filter>src\cpp\util</Filter> </ClCompile> @@ -210,6 +213,9 @@ <ClInclude Include="..\..\include\grpc++\stream.h"> <Filter>include\grpc++</Filter> </ClInclude> + <ClInclude Include="..\..\include\grpc++\string_ref.h"> + <Filter>include\grpc++</Filter> + </ClInclude> <ClInclude Include="..\..\include\grpc++\stub_options.h"> <Filter>include\grpc++</Filter> </ClInclude> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj index 2ff252e04e..12f24db1f7 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj @@ -251,6 +251,7 @@ <ClInclude Include="..\..\include\grpc++\status.h" /> <ClInclude Include="..\..\include\grpc++\status_code_enum.h" /> <ClInclude Include="..\..\include\grpc++\stream.h" /> + <ClInclude Include="..\..\include\grpc++\string_ref.h" /> <ClInclude Include="..\..\include\grpc++\stub_options.h" /> <ClInclude Include="..\..\include\grpc++\thread_pool_interface.h" /> <ClInclude Include="..\..\include\grpc++\time.h" /> @@ -310,6 +311,8 @@ </ClCompile> <ClCompile Include="..\..\src\cpp\util\status.cc"> </ClCompile> + <ClCompile Include="..\..\src\cpp\util\string_ref.cc"> + </ClCompile> <ClCompile Include="..\..\src\cpp\util\time.cc"> </ClCompile> </ItemGroup> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters index b4fae7741c..e0555173df 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters @@ -76,6 +76,9 @@ <ClCompile Include="..\..\src\cpp\util\status.cc"> <Filter>src\cpp\util</Filter> </ClCompile> + <ClCompile Include="..\..\src\cpp\util\string_ref.cc"> + <Filter>src\cpp\util</Filter> + </ClCompile> <ClCompile Include="..\..\src\cpp\util\time.cc"> <Filter>src\cpp\util</Filter> </ClCompile> @@ -195,6 +198,9 @@ <ClInclude Include="..\..\include\grpc++\stream.h"> <Filter>include\grpc++</Filter> </ClInclude> + <ClInclude Include="..\..\include\grpc++\string_ref.h"> + <Filter>include\grpc++</Filter> + </ClInclude> <ClInclude Include="..\..\include\grpc++\stub_options.h"> <Filter>include\grpc++</Filter> </ClInclude> -- GitLab From 814ffd67f5e11efd632c115f6bab2dfdd3598ed5 Mon Sep 17 00:00:00 2001 From: Julien Boeuf <jboeuf@google.com> Date: Tue, 25 Aug 2015 07:37:16 -0700 Subject: [PATCH 168/178] Fixing buildgen output. --- tools/run_tests/tests.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 9aa9f25101..f1c57190af 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -1364,6 +1364,7 @@ "posix", "windows" ], + "exclude_configs": [], "flaky": false, "language": "c++", "name": "cxx_time_test", -- GitLab From bf9a8f8d7ccd030e80403451f0251740940649e8 Mon Sep 17 00:00:00 2001 From: Julien Boeuf <jboeuf@google.com> Date: Tue, 25 Aug 2015 07:45:35 -0700 Subject: [PATCH 169/178] Fixing tests. --- test/cpp/util/string_ref_test.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cpp/util/string_ref_test.cc b/test/cpp/util/string_ref_test.cc index b6ec9f3eec..5264682e5d 100644 --- a/test/cpp/util/string_ref_test.cc +++ b/test/cpp/util/string_ref_test.cc @@ -120,13 +120,13 @@ TEST_F(StringRefTest, Capacity) { EXPECT_EQ(0, empty.length()); EXPECT_EQ(0, empty.size()); EXPECT_EQ(0, empty.max_size()); - EXPECT_EQ(true, empty.empty()); + EXPECT_TRUE(empty.empty()); string_ref s(kTestString); EXPECT_EQ(strlen(kTestString), s.length()); EXPECT_EQ(s.length(), s.size()); EXPECT_EQ(s.max_size(), s.length()); - EXPECT_EQ(false, s.empty()); + EXPECT_FALSE(s.empty()); } TEST_F(StringRefTest, Compare) { -- GitLab From b3e56c473699393698514d7fcd9289befbdee66c Mon Sep 17 00:00:00 2001 From: Nathaniel Manista <nathaniel@google.com> Date: Tue, 25 Aug 2015 15:41:44 +0000 Subject: [PATCH 170/178] Drop whitespace from Python test metadata keys Whitespace is now disallowed in metadata keys. --- .../grpc_test/_adapter/_links_test.py | 4 ++-- .../grpc_test/_links/_transmission_test.py | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/python/grpcio_test/grpc_test/_adapter/_links_test.py b/src/python/grpcio_test/grpc_test/_adapter/_links_test.py index c4686b327a..4077b8e350 100644 --- a/src/python/grpcio_test/grpc_test/_adapter/_links_test.py +++ b/src/python/grpcio_test/grpc_test/_adapter/_links_test.py @@ -46,8 +46,8 @@ _TIMEOUT = 32 # TODO(nathaniel): End-to-end metadata testing. def _transform_metadata(unused_metadata): return ( - ('one unused key', 'one unused value'), - ('another unused key', 'another unused value'), + ('one_unused_key', 'one unused value'), + ('another_unused_key', 'another unused value'), ) diff --git a/src/python/grpcio_test/grpc_test/_links/_transmission_test.py b/src/python/grpcio_test/grpc_test/_links/_transmission_test.py index 9cdc9620f0..75580e2250 100644 --- a/src/python/grpcio_test/grpc_test/_links/_transmission_test.py +++ b/src/python/grpcio_test/grpc_test/_links/_transmission_test.py @@ -66,9 +66,9 @@ class TransmissionTest(test_cases.TransmissionTest, unittest.TestCase): def create_invocation_initial_metadata(self): return ( - ('first invocation initial metadata key', 'just a string value'), - ('second invocation initial metadata key', '0123456789'), - ('third invocation initial metadata key-bin', '\x00\x57' * 100), + ('first_invocation_initial_metadata_key', 'just a string value'), + ('second_invocation_initial_metadata_key', '0123456789'), + ('third_invocation_initial_metadata_key-bin', '\x00\x57' * 100), ) def create_invocation_terminal_metadata(self): @@ -76,16 +76,16 @@ class TransmissionTest(test_cases.TransmissionTest, unittest.TestCase): def create_service_initial_metadata(self): return ( - ('first service initial metadata key', 'just another string value'), - ('second service initial metadata key', '9876543210'), - ('third service initial metadata key-bin', '\x00\x59\x02' * 100), + ('first_service_initial_metadata_key', 'just another string value'), + ('second_service_initial_metadata_key', '9876543210'), + ('third_service_initial_metadata_key-bin', '\x00\x59\x02' * 100), ) def create_service_terminal_metadata(self): return ( - ('first service terminal metadata key', 'yet another string value'), - ('second service terminal metadata key', 'abcdefghij'), - ('third service terminal metadata key-bin', '\x00\x37' * 100), + ('first_service_terminal_metadata_key', 'yet another string value'), + ('second_service_terminal_metadata_key', 'abcdefghij'), + ('third_service_terminal_metadata_key-bin', '\x00\x37' * 100), ) def create_invocation_completion(self): -- GitLab From 2098863a903bef83156dfebb119dc77878e72bbe Mon Sep 17 00:00:00 2001 From: vjpai <vpai@google.com> Date: Tue, 25 Aug 2015 09:08:47 -0700 Subject: [PATCH 171/178] Make certain constants unsigned to please compiler on Mac --- test/cpp/util/string_ref_test.cc | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/cpp/util/string_ref_test.cc b/test/cpp/util/string_ref_test.cc index 5264682e5d..c4ca4fce84 100644 --- a/test/cpp/util/string_ref_test.cc +++ b/test/cpp/util/string_ref_test.cc @@ -50,7 +50,7 @@ class StringRefTest : public ::testing::Test { TEST_F(StringRefTest, Empty) { string_ref s; - EXPECT_EQ(0, s.length()); + EXPECT_EQ(0U, s.length()); EXPECT_EQ(nullptr, s.data()); } @@ -62,7 +62,7 @@ TEST_F(StringRefTest, FromCString) { TEST_F(StringRefTest, FromCStringWithLength) { string_ref s(kTestString, 2); - EXPECT_EQ(2, s.length()); + EXPECT_EQ(2U, s.length()); EXPECT_EQ(kTestString, s.data()); } @@ -112,14 +112,14 @@ TEST_F(StringRefTest, ReverseIterator) { for (auto rit = s.crbegin(); rit != s.crend(); ++rit) { EXPECT_EQ(kTestString[--i], *rit); } - EXPECT_EQ(0, i); + EXPECT_EQ(0U, i); } TEST_F(StringRefTest, Capacity) { string_ref empty; - EXPECT_EQ(0, empty.length()); - EXPECT_EQ(0, empty.size()); - EXPECT_EQ(0, empty.max_size()); + EXPECT_EQ(0U, empty.length()); + EXPECT_EQ(0U, empty.size()); + EXPECT_EQ(0U, empty.max_size()); EXPECT_TRUE(empty.empty()); string_ref s(kTestString); @@ -165,16 +165,16 @@ TEST_F(StringRefTest, Find) { string_ref s1(kTestString); string_ref s2(kTestUnrelatedString); string_ref s3(kTestStringWithEmbeddedNull, kTestStringWithEmbeddedNullLength); - EXPECT_EQ(0, s1.find(s1)); - EXPECT_EQ(0, s2.find(s2)); - EXPECT_EQ(0, s3.find(s3)); + EXPECT_EQ(0U, s1.find(s1)); + EXPECT_EQ(0U, s2.find(s2)); + EXPECT_EQ(0U, s3.find(s3)); EXPECT_EQ(string_ref::npos,s1.find(s2) ); EXPECT_EQ(string_ref::npos,s2.find(s1)); EXPECT_EQ(string_ref::npos,s1.find(s3)); - EXPECT_EQ(0, s3.find(s1)); - EXPECT_EQ(5, s3.find(s2)); + EXPECT_EQ(0U, s3.find(s1)); + EXPECT_EQ(5U, s3.find(s2)); EXPECT_EQ(string_ref::npos, s1.find('z')); - EXPECT_EQ(1, s2.find('o')); + EXPECT_EQ(1U, s2.find('o')); } TEST_F(StringRefTest, SubString) { -- GitLab From 43fef09aecaa81a9e16e2b7ecc5598c223051f15 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Tue, 25 Aug 2015 09:27:10 -0700 Subject: [PATCH 172/178] Don't fail a build on failure to kill a docker instance It's quite ok for a docker instance to already be dead. --- tools/jenkins/run_jenkins.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/jenkins/run_jenkins.sh b/tools/jenkins/run_jenkins.sh index 1ef7bb1ba0..7bae48dc19 100755 --- a/tools/jenkins/run_jenkins.sh +++ b/tools/jenkins/run_jenkins.sh @@ -89,8 +89,9 @@ then bash -l /var/local/jenkins/grpc/tools/jenkins/docker_run_jenkins.sh || DOCKER_FAILED="true" DOCKER_CID=`cat docker.cid` - docker kill $DOCKER_CID + docker kill $DOCKER_CID || true docker cp $DOCKER_CID:/var/local/git/grpc/report.xml $git_root + # TODO(ctiller): why? sleep 4 docker rm $DOCKER_CID || true elif [ "$platform" == "interop" ] -- GitLab From 3d20b000b7195bfdba1e472a7ca3f4bb366d3e75 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Tue, 25 Aug 2015 09:49:02 -0700 Subject: [PATCH 173/178] Add a comment describing out views on killing --- tools/jenkins/run_jenkins.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/jenkins/run_jenkins.sh b/tools/jenkins/run_jenkins.sh index 7bae48dc19..0f15835ea8 100755 --- a/tools/jenkins/run_jenkins.sh +++ b/tools/jenkins/run_jenkins.sh @@ -89,6 +89,9 @@ then bash -l /var/local/jenkins/grpc/tools/jenkins/docker_run_jenkins.sh || DOCKER_FAILED="true" DOCKER_CID=`cat docker.cid` + # forcefully kill the instance if it's still running, otherwise + # continue + # (failure to kill something that's already dead => things are dead) docker kill $DOCKER_CID || true docker cp $DOCKER_CID:/var/local/git/grpc/report.xml $git_root # TODO(ctiller): why? -- GitLab From 9f3b2d7f946bded93b0b2205d37a41bb83b869c2 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Tue, 25 Aug 2015 11:50:57 -0700 Subject: [PATCH 174/178] Expand error handling to ignore all errors printing output --- tools/run_tests/jobset.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/run_tests/jobset.py b/tools/run_tests/jobset.py index 538deac0e3..2a86319125 100755 --- a/tools/run_tests/jobset.py +++ b/tools/run_tests/jobset.py @@ -96,12 +96,12 @@ def message(tag, msg, explanatory_text=None, do_newline=False): return message.old_tag = tag message.old_msg = msg - if platform.system() == 'Windows' or not sys.stdout.isatty(): - if explanatory_text: - print explanatory_text - print '%s: %s' % (tag, msg) - return try: + if platform.system() == 'Windows' or not sys.stdout.isatty(): + if explanatory_text: + print explanatory_text + print '%s: %s' % (tag, msg) + return sys.stdout.write('%s%s%s\x1b[%d;%dm%s\x1b[0m: %s%s' % ( _BEGINNING_OF_LINE, _CLEAR_LINE, -- GitLab From a4d9f267fbd0977c58ed21aad3984d0dbc64fcb3 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch <jtattermusch@google.com> Date: Tue, 25 Aug 2015 12:59:21 -0700 Subject: [PATCH 175/178] fix gpr_slice leak in server on connection reset --- src/core/iomgr/tcp_windows.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/iomgr/tcp_windows.c b/src/core/iomgr/tcp_windows.c index 123f46d71d..901793ec43 100644 --- a/src/core/iomgr/tcp_windows.c +++ b/src/core/iomgr/tcp_windows.c @@ -152,6 +152,7 @@ static void on_read(void *tcpp, int from_iocp) { gpr_log(GPR_ERROR, "ReadFile overlapped error: %s", utf8_message); gpr_free(utf8_message); } + gpr_slice_unref(tcp->read_slice); status = GRPC_ENDPOINT_CB_ERROR; } else { if (info->bytes_transfered != 0) { -- GitLab From 8f56c422f8c91292d4ab9e84919976ab58cf0e69 Mon Sep 17 00:00:00 2001 From: Masood Malekghassemi <soltanmm@users.noreply.github.com> Date: Tue, 25 Aug 2015 10:23:19 -0700 Subject: [PATCH 176/178] Add global per-test timeout to Python test harness --- src/python/grpcio_test/setup.py | 1 + tools/run_tests/run_python.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/python/grpcio_test/setup.py b/src/python/grpcio_test/setup.py index a6203cae2d..898ea204ac 100644 --- a/src/python/grpcio_test/setup.py +++ b/src/python/grpcio_test/setup.py @@ -61,6 +61,7 @@ _SETUP_REQUIRES = ( 'pytest>=2.6', 'pytest-cov>=2.0', 'pytest-xdist>=1.11', + 'pytest-timeout>=0.5', ) _INSTALL_REQUIRES = ( diff --git a/tools/run_tests/run_python.sh b/tools/run_tests/run_python.sh index 6fdca93fd5..858f300800 100755 --- a/tools/run_tests/run_python.sh +++ b/tools/run_tests/run_python.sh @@ -47,4 +47,4 @@ source "python"$PYVER"_virtual_environment"/bin/activate "python"$PYVER -m grpc_test._core_over_links_base_interface_test "python"$PYVER -m grpc_test.framework.core._base_interface_test -"python"$PYVER $GRPCIO_TEST/setup.py test -a "-n8 --cov=grpc --junitxml=./report.xml" +"python"$PYVER $GRPCIO_TEST/setup.py test -a "-n8 --cov=grpc --junitxml=./report.xml --timeout=300" -- GitLab From 31ff8bcc1557537082bf8de32d175e3f766fba3a Mon Sep 17 00:00:00 2001 From: yang-g <yangg@google.com> Date: Tue, 25 Aug 2015 14:09:06 -0700 Subject: [PATCH 177/178] add missing headers from 2495 --- BUILD | 6 ++++++ build.json | 2 ++ gRPC.podspec | 4 ++++ tools/doxygen/Doxyfile.core.internal | 2 ++ tools/run_tests/sources_and_headers.json | 8 ++++++++ vsprojects/grpc/grpc.vcxproj | 2 ++ vsprojects/grpc/grpc.vcxproj.filters | 9 +++++++++ vsprojects/grpc_unsecure/grpc_unsecure.vcxproj | 2 ++ vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters | 9 +++++++++ 9 files changed, 44 insertions(+) diff --git a/BUILD b/BUILD index 607e3f481a..25b26b7b24 100644 --- a/BUILD +++ b/BUILD @@ -209,6 +209,8 @@ cc_library( "src/core/json/json_writer.h", "src/core/profiling/timers.h", "src/core/profiling/timers_preciseclock.h", + "src/core/statistics/census_interface.h", + "src/core/statistics/census_rpc_stats.h", "src/core/surface/byte_buffer_queue.h", "src/core/surface/call.h", "src/core/surface/channel.h", @@ -476,6 +478,8 @@ cc_library( "src/core/json/json_writer.h", "src/core/profiling/timers.h", "src/core/profiling/timers_preciseclock.h", + "src/core/statistics/census_interface.h", + "src/core/statistics/census_rpc_stats.h", "src/core/surface/byte_buffer_queue.h", "src/core/surface/call.h", "src/core/surface/channel.h", @@ -1229,6 +1233,8 @@ objc_library( "src/core/json/json_writer.h", "src/core/profiling/timers.h", "src/core/profiling/timers_preciseclock.h", + "src/core/statistics/census_interface.h", + "src/core/statistics/census_rpc_stats.h", "src/core/surface/byte_buffer_queue.h", "src/core/surface/call.h", "src/core/surface/channel.h", diff --git a/build.json b/build.json index c3e784b4cf..54cae41546 100644 --- a/build.json +++ b/build.json @@ -182,6 +182,8 @@ "src/core/json/json_writer.h", "src/core/profiling/timers.h", "src/core/profiling/timers_preciseclock.h", + "src/core/statistics/census_interface.h", + "src/core/statistics/census_rpc_stats.h", "src/core/surface/byte_buffer_queue.h", "src/core/surface/call.h", "src/core/surface/channel.h", diff --git a/gRPC.podspec b/gRPC.podspec index 0e826b5ba2..f6d09dbaa6 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -211,6 +211,8 @@ Pod::Spec.new do |s| 'src/core/json/json_writer.h', 'src/core/profiling/timers.h', 'src/core/profiling/timers_preciseclock.h', + 'src/core/statistics/census_interface.h', + 'src/core/statistics/census_rpc_stats.h', 'src/core/surface/byte_buffer_queue.h', 'src/core/surface/call.h', 'src/core/surface/channel.h', @@ -481,6 +483,8 @@ Pod::Spec.new do |s| 'src/core/json/json_writer.h', 'src/core/profiling/timers.h', 'src/core/profiling/timers_preciseclock.h', + 'src/core/statistics/census_interface.h', + 'src/core/statistics/census_rpc_stats.h', 'src/core/surface/byte_buffer_queue.h', 'src/core/surface/call.h', 'src/core/surface/channel.h', diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index d27c5d9246..06f0f4ee83 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -846,6 +846,8 @@ src/core/json/json_reader.h \ src/core/json/json_writer.h \ src/core/profiling/timers.h \ src/core/profiling/timers_preciseclock.h \ +src/core/statistics/census_interface.h \ +src/core/statistics/census_rpc_stats.h \ src/core/surface/byte_buffer_queue.h \ src/core/surface/call.h \ src/core/surface/channel.h \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index f2a2abe96d..c7df23a7c4 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -12340,6 +12340,8 @@ "src/core/security/secure_transport_setup.h", "src/core/security/security_connector.h", "src/core/security/security_context.h", + "src/core/statistics/census_interface.h", + "src/core/statistics/census_rpc_stats.h", "src/core/surface/byte_buffer_queue.h", "src/core/surface/call.h", "src/core/surface/channel.h", @@ -12556,6 +12558,8 @@ "src/core/security/security_context.h", "src/core/security/server_auth_filter.c", "src/core/security/server_secure_chttp2.c", + "src/core/statistics/census_interface.h", + "src/core/statistics/census_rpc_stats.h", "src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_queue.h", @@ -12806,6 +12810,8 @@ "src/core/json/json_writer.h", "src/core/profiling/timers.h", "src/core/profiling/timers_preciseclock.h", + "src/core/statistics/census_interface.h", + "src/core/statistics/census_rpc_stats.h", "src/core/surface/byte_buffer_queue.h", "src/core/surface/call.h", "src/core/surface/channel.h", @@ -12992,6 +12998,8 @@ "src/core/profiling/stap_timers.c", "src/core/profiling/timers.h", "src/core/profiling/timers_preciseclock.h", + "src/core/statistics/census_interface.h", + "src/core/statistics/census_rpc_stats.h", "src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_queue.h", diff --git a/vsprojects/grpc/grpc.vcxproj b/vsprojects/grpc/grpc.vcxproj index 500cf9feb5..b17eea9235 100644 --- a/vsprojects/grpc/grpc.vcxproj +++ b/vsprojects/grpc/grpc.vcxproj @@ -308,6 +308,8 @@ <ClInclude Include="..\..\src\core\json\json_writer.h" /> <ClInclude Include="..\..\src\core\profiling\timers.h" /> <ClInclude Include="..\..\src\core\profiling\timers_preciseclock.h" /> + <ClInclude Include="..\..\src\core\statistics\census_interface.h" /> + <ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h" /> <ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h" /> <ClInclude Include="..\..\src\core\surface\call.h" /> <ClInclude Include="..\..\src\core\surface\channel.h" /> diff --git a/vsprojects/grpc/grpc.vcxproj.filters b/vsprojects/grpc/grpc.vcxproj.filters index 02060b7830..a955e9e993 100644 --- a/vsprojects/grpc/grpc.vcxproj.filters +++ b/vsprojects/grpc/grpc.vcxproj.filters @@ -683,6 +683,12 @@ <ClInclude Include="..\..\src\core\profiling\timers_preciseclock.h"> <Filter>src\core\profiling</Filter> </ClInclude> + <ClInclude Include="..\..\src\core\statistics\census_interface.h"> + <Filter>src\core\statistics</Filter> + </ClInclude> + <ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h"> + <Filter>src\core\statistics</Filter> + </ClInclude> <ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h"> <Filter>src\core\surface</Filter> </ClInclude> @@ -845,6 +851,9 @@ <Filter Include="src\core\security"> <UniqueIdentifier>{1d850ac6-e639-4eab-5338-4ba40272fcc9}</UniqueIdentifier> </Filter> + <Filter Include="src\core\statistics"> + <UniqueIdentifier>{0ef49896-2313-4a3f-1ce2-716fa0e5c6ca}</UniqueIdentifier> + </Filter> <Filter Include="src\core\surface"> <UniqueIdentifier>{aeb18e82-5d25-0aad-8b02-a0a3470073ce}</UniqueIdentifier> </Filter> diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj index 13c018c020..a692c48f81 100644 --- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj +++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj @@ -291,6 +291,8 @@ <ClInclude Include="..\..\src\core\json\json_writer.h" /> <ClInclude Include="..\..\src\core\profiling\timers.h" /> <ClInclude Include="..\..\src\core\profiling\timers_preciseclock.h" /> + <ClInclude Include="..\..\src\core\statistics\census_interface.h" /> + <ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h" /> <ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h" /> <ClInclude Include="..\..\src\core\surface\call.h" /> <ClInclude Include="..\..\src\core\surface\channel.h" /> diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters index 5adcdd6092..1c4036d464 100644 --- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters +++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters @@ -581,6 +581,12 @@ <ClInclude Include="..\..\src\core\profiling\timers_preciseclock.h"> <Filter>src\core\profiling</Filter> </ClInclude> + <ClInclude Include="..\..\src\core\statistics\census_interface.h"> + <Filter>src\core\statistics</Filter> + </ClInclude> + <ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h"> + <Filter>src\core\statistics</Filter> + </ClInclude> <ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h"> <Filter>src\core\surface</Filter> </ClInclude> @@ -740,6 +746,9 @@ <Filter Include="src\core\profiling"> <UniqueIdentifier>{7f91d9bf-c9de-835a-d74d-b16f843b89a9}</UniqueIdentifier> </Filter> + <Filter Include="src\core\statistics"> + <UniqueIdentifier>{e084164c-a069-00e3-db35-4e0b1cd6f0b7}</UniqueIdentifier> + </Filter> <Filter Include="src\core\surface"> <UniqueIdentifier>{6cd0127e-c24b-d43c-38f5-198db8d4322a}</UniqueIdentifier> </Filter> -- GitLab From 04ecfa1ad7193d466ae3b4098d314f06c17caa2f Mon Sep 17 00:00:00 2001 From: David Garcia Quintas <dgq@google.com> Date: Tue, 25 Aug 2015 14:19:48 -0700 Subject: [PATCH 178/178] Added missing payloads to streaming compressed test --- test/cpp/interop/interop_client.cc | 31 +++++++++++++++++++++++------- test/cpp/interop/server.cc | 8 +++++--- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index fa358585d4..ca13cdc53d 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -362,20 +362,37 @@ void InteropClient::DoResponseCompressedStreaming() { request.set_response_type(payload_types[i]); request.set_response_compression(compression_types[j]); - for (unsigned int i = 0; i < response_stream_sizes.size(); ++i) { + for (size_t k = 0; k < response_stream_sizes.size(); ++k) { ResponseParameters* response_parameter = request.add_response_parameters(); - response_parameter->set_size(response_stream_sizes[i]); + response_parameter->set_size(response_stream_sizes[k]); } StreamingOutputCallResponse response; std::unique_ptr<ClientReader<StreamingOutputCallResponse>> stream( stub->StreamingOutputCall(&context, request)); - unsigned int i = 0; + size_t k = 0; while (stream->Read(&response)) { - GPR_ASSERT(response.payload().body() == - grpc::string(response_stream_sizes[i], '\0')); + // Payload related checks. + if (request.response_type() != PayloadType::RANDOM) { + GPR_ASSERT(response.payload().type() == request.response_type()); + } + switch (response.payload().type()) { + case PayloadType::COMPRESSABLE: + GPR_ASSERT(response.payload().body() == + grpc::string(response_stream_sizes[k], '\0')); + break; + case PayloadType::UNCOMPRESSABLE: { + std::ifstream rnd_file(kRandomFile); + GPR_ASSERT(rnd_file.good()); + for (int n = 0; n < response_stream_sizes[k]; n++) { + GPR_ASSERT(response.payload().body()[n] == (char)rnd_file.get()); + } + } break; + default: + GPR_ASSERT(false); + } // Compression related checks. GPR_ASSERT(request.response_compression() == @@ -391,10 +408,10 @@ void InteropClient::DoResponseCompressedStreaming() { GRPC_WRITE_INTERNAL_COMPRESS); } - ++i; + ++k; } - GPR_ASSERT(response_stream_sizes.size() == i); + GPR_ASSERT(response_stream_sizes.size() == k); Status s = stream->Finish(); AssertOkOrPrintErrorStatus(s); diff --git a/test/cpp/interop/server.cc b/test/cpp/interop/server.cc index 35ec890aa0..4921fde9fa 100644 --- a/test/cpp/interop/server.cc +++ b/test/cpp/interop/server.cc @@ -158,11 +158,13 @@ class TestServiceImpl : public TestService::Service { SetResponseCompression(context, *request); StreamingOutputCallResponse response; bool write_success = true; - response.mutable_payload()->set_type(request->response_type()); for (int i = 0; write_success && i < request->response_parameters_size(); i++) { - response.mutable_payload()->set_body( - grpc::string(request->response_parameters(i).size(), '\0')); + if (!SetPayload(request->response_type(), + request->response_parameters(i).size(), + response.mutable_payload())) { + return Status(grpc::StatusCode::INTERNAL, "Error creating payload."); + } write_success = writer->Write(response); } if (write_success) { -- GitLab