From 905a65b2d08a3a4876a9a2e9870dd53a792da963 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 19 Jun 2015 15:28:07 -0700 Subject: Expanded testing protocol --- test/proto/messages.proto | 28 ++++++++++++++++++++++++++++ test/proto/test.proto | 8 ++++++++ 2 files changed, 36 insertions(+) diff --git a/test/proto/messages.proto b/test/proto/messages.proto index 65a8140465..35a73b4349 100644 --- a/test/proto/messages.proto +++ b/test/proto/messages.proto @@ -46,6 +46,14 @@ enum PayloadType { RANDOM = 2; } +// Compression algorithms +enum CompressionType { + // No compression + NONE = 0; + GZIP = 1; + DEFLATE = 2; +} + // A block of data, to simply increase gRPC message size. message Payload { // The type of data in body. @@ -54,6 +62,14 @@ message Payload { optional bytes body = 2; } +// A protobuf representation for grpc status. This is used by test +// clients to specify a status that the server should attempt to return. +message Status +{ + optional int code = 1; + optional string message = 2; +} + // Unary request. message SimpleRequest { // Desired payload type in the response from the server. @@ -72,6 +88,12 @@ message SimpleRequest { // Whether SimpleResponse should include OAuth scope. optional bool fill_oauth_scope = 5; + + // Compression algorithm to be used by the server for the response (stream) + optional CompressionType response_compression = 6; + + // Whether server should return a given status + optional Status response_status = 7; } // Unary response, as configured by the request. @@ -123,6 +145,12 @@ message StreamingOutputCallRequest { // Optional input payload sent along with the request. optional Payload payload = 3; + + // Compression algorithm to be used by the server for the response (stream) + optional CompressionType response_compression = 6; + + // Whether server should return a given status + optional Status response_status = 7; } // Server-streaming response, as configured by the request and parameters. diff --git a/test/proto/test.proto b/test/proto/test.proto index b9483d8437..b493dcd049 100644 --- a/test/proto/test.proto +++ b/test/proto/test.proto @@ -71,3 +71,11 @@ service TestService { rpc HalfDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse); } + + +// A simple service NOT implemented at servers so clients can test for +// that case. +service UnImplementedService { + // A call that no server should implement + rpc UnimplementedCall(grpc.testing.Empty) returns(grpc.testing.Empty); +} -- cgit v1.2.3 From 747cdbf9c031e4cfb5d792ddac51c9ad15749674 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 19 Jun 2015 15:53:37 -0700 Subject: Fixed bug : int -> int32 --- test/proto/messages.proto | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/proto/messages.proto b/test/proto/messages.proto index 35a73b4349..63ce737f7d 100644 --- a/test/proto/messages.proto +++ b/test/proto/messages.proto @@ -64,9 +64,8 @@ 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 Status -{ - optional int code = 1; +message Status { + optional int32 code = 1; optional string message = 2; } -- cgit v1.2.3 From 80ca516640c068f85e8523c50c74d8e790c7bd9c Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 22 Jun 2015 14:31:44 -0700 Subject: Return dummy data for empty histograms --- src/core/support/histogram.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/support/histogram.c b/src/core/support/histogram.c index 673affde71..d16ea6c3f7 100644 --- a/src/core/support/histogram.c +++ b/src/core/support/histogram.c @@ -164,7 +164,9 @@ static double threshold_for_count_below(gpr_histogram *h, double count_below) { size_t lower_idx; size_t upper_idx; - GPR_ASSERT(h->count >= 1); + if (h->count == 0) { + return 0.0; + } if (count_below <= 0) { return h->min_seen; -- cgit v1.2.3 From eb6b216004d5c8b34fc8db9591b0e4696abd7d02 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Tue, 23 Jun 2015 09:52:50 -0700 Subject: Rename Status -> EchoStatus to avoid conflict --- test/proto/messages.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/proto/messages.proto b/test/proto/messages.proto index 63ce737f7d..500e79cc81 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 Status { +message EchoStatus { optional int32 code = 1; optional string message = 2; } @@ -92,7 +92,7 @@ message SimpleRequest { optional CompressionType response_compression = 6; // Whether server should return a given status - optional Status response_status = 7; + optional EchoStatus response_status = 7; } // Unary response, as configured by the request. @@ -149,7 +149,7 @@ message StreamingOutputCallRequest { optional CompressionType response_compression = 6; // Whether server should return a given status - optional Status response_status = 7; + optional EchoStatus response_status = 7; } // Server-streaming response, as configured by the request and parameters. -- cgit v1.2.3 From 31489e3abaab3bd0d4238d35e2d68477316eb6d9 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 23 Jun 2015 14:27:34 -0700 Subject: Move some code out of src/ into tools/ It shouldn't count towards coverage --- .travis.yml | 2 +- Makefile | 8 +- build.json | 3 +- src/core/transport/chttp2/gen_hpack_tables.c | 362 --------------------------- tools/codegen/core/gen_hpack_tables.c | 362 +++++++++++++++++++++++++++ vsprojects/Grpc.mak | 4 +- 6 files changed, 370 insertions(+), 371 deletions(-) delete mode 100644 src/core/transport/chttp2/gen_hpack_tables.c create mode 100644 tools/codegen/core/gen_hpack_tables.c diff --git a/.travis.yml b/.travis.yml index c626242557..97cf99d71e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,7 +34,7 @@ script: - if [ ! -z "$USE_GCC" ] ; then export CC=gcc-$USE_GCC ; export CXX=g++-$USE_GCC ; fi - ./tools/run_tests/run_tests.py -l $TEST -t -j $JOBS -c $CONFIG -s 4.0 after_success: - - if [ "$CONFIG" = "gcov" ] ; then coveralls --exclude third_party --exclude gens --exclude test --exclude src/compiler -b. --gcov-options '\-p' ; fi + - if [ "$CONFIG" = "gcov" ] ; then coveralls --exclude third_party --exclude gens --exclude test --exclude tools --exclude src/compiler -b. --gcov-options '\-p' ; fi notifications: email: false webhooks: diff --git a/Makefile b/Makefile index 26899c5c05..ff14757925 100644 --- a/Makefile +++ b/Makefile @@ -5691,7 +5691,7 @@ endif GEN_HPACK_TABLES_SRC = \ - src/core/transport/chttp2/gen_hpack_tables.c \ + tools/codegen/core/gen_hpack_tables.c \ GEN_HPACK_TABLES_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GEN_HPACK_TABLES_SRC)))) ifeq ($(NO_SECURE),true) @@ -5702,14 +5702,14 @@ $(BINDIR)/$(CONFIG)/gen_hpack_tables: openssl_dep_error else -$(BINDIR)/$(CONFIG)/gen_hpack_tables: $(GEN_HPACK_TABLES_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a +$(BINDIR)/$(CONFIG)/gen_hpack_tables: $(GEN_HPACK_TABLES_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(E) "[LD] Linking $@" $(Q) mkdir -p `dirname $@` - $(Q) $(LD) $(LDFLAGS) $(GEN_HPACK_TABLES_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/gen_hpack_tables + $(Q) $(LD) $(LDFLAGS) $(GEN_HPACK_TABLES_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/gen_hpack_tables endif -$(OBJDIR)/$(CONFIG)/src/core/transport/chttp2/gen_hpack_tables.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a +$(OBJDIR)/$(CONFIG)/tools/codegen/core/gen_hpack_tables.o: $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a deps_gen_hpack_tables: $(GEN_HPACK_TABLES_OBJS:.o=.dep) ifneq ($(NO_SECURE),true) diff --git a/build.json b/build.json index e01a419bbe..4b9a26e94d 100644 --- a/build.json +++ b/build.json @@ -957,10 +957,9 @@ "build": "tool", "language": "c", "src": [ - "src/core/transport/chttp2/gen_hpack_tables.c" + "tools/codegen/core/gen_hpack_tables.c" ], "deps": [ - "grpc_test_util", "gpr", "grpc" ] diff --git a/src/core/transport/chttp2/gen_hpack_tables.c b/src/core/transport/chttp2/gen_hpack_tables.c deleted file mode 100644 index bdaa3cf094..0000000000 --- a/src/core/transport/chttp2/gen_hpack_tables.c +++ /dev/null @@ -1,362 +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. - * - */ - -/* generates constant tables for hpack.c */ - -#include -#include -#include -#include - -#include -#include "src/core/transport/chttp2/huffsyms.h" - -/* - * first byte LUT generation - */ - -typedef struct { - const char *call; - /* bit prefix for the field type */ - unsigned char prefix; - /* length of the bit prefix for the field type */ - unsigned char prefix_length; - /* index value: 0 = all zeros, 2 = all ones, 1 otherwise */ - unsigned char index; -} spec; - -static const spec fields[] = {{"INDEXED_FIELD", 0X80, 1, 1}, - {"INDEXED_FIELD_X", 0X80, 1, 2}, - {"LITHDR_INCIDX", 0X40, 2, 1}, - {"LITHDR_INCIDX_X", 0X40, 2, 2}, - {"LITHDR_INCIDX_V", 0X40, 2, 0}, - {"LITHDR_NOTIDX", 0X00, 4, 1}, - {"LITHDR_NOTIDX_X", 0X00, 4, 2}, - {"LITHDR_NOTIDX_V", 0X00, 4, 0}, - {"LITHDR_NVRIDX", 0X10, 4, 1}, - {"LITHDR_NVRIDX_X", 0X10, 4, 2}, - {"LITHDR_NVRIDX_V", 0X10, 4, 0}, - {"MAX_TBL_SIZE", 0X20, 3, 1}, - {"MAX_TBL_SIZE_X", 0X20, 3, 2}, }; - -static const int num_fields = sizeof(fields) / sizeof(*fields); - -static unsigned char prefix_mask(unsigned char prefix_len) { - unsigned char i; - unsigned char out = 0; - for (i = 0; i < prefix_len; i++) { - out |= 1 << (7 - i); - } - return out; -} - -static unsigned char suffix_mask(unsigned char prefix_len) { - return ~prefix_mask(prefix_len); -} - -static void generate_first_byte_lut(void) { - int i, j, n; - const spec *chrspec; - unsigned char suffix; - - n = printf("static CALLTYPE first_byte[256] = {"); - /* for each potential first byte of a header */ - for (i = 0; i < 256; i++) { - /* find the field type that matches it */ - chrspec = NULL; - for (j = 0; j < num_fields; j++) { - if ((prefix_mask(fields[j].prefix_length) & i) == fields[j].prefix) { - suffix = suffix_mask(fields[j].prefix_length) & i; - if (suffix == suffix_mask(fields[j].prefix_length)) { - if (fields[j].index != 2) continue; - } else if (suffix == 0) { - if (fields[j].index != 0) continue; - } else { - if (fields[j].index != 1) continue; - } - GPR_ASSERT(chrspec == NULL); - chrspec = &fields[j]; - } - } - if (chrspec) { - n += printf("%s, ", chrspec->call); - } else { - n += printf("ILLEGAL, "); - } - /* make some small effort towards readable output */ - if (n > 70) { - printf("\n "); - n = 2; - } - } - printf("};\n"); -} - -/* - * Huffman decoder table generation - */ - -#define MAXHUFFSTATES 1024 - -/* represents a set of symbols as an array of booleans indicating inclusion */ -typedef struct { - char included[GRPC_CHTTP2_NUM_HUFFSYMS]; -} symset; -/* represents a lookup table indexed by a nibble */ -typedef struct { - int values[16]; -} nibblelut; - -/* returns a symset that includes all possible symbols */ -static symset symset_all(void) { - symset x; - memset(x.included, 1, sizeof(x.included)); - return x; -} - -/* returns a symset that includes no symbols */ -static symset symset_none(void) { - symset x; - memset(x.included, 0, sizeof(x.included)); - return x; -} - -/* returns an empty nibblelut */ -static nibblelut nibblelut_empty(void) { - nibblelut x; - int i; - for (i = 0; i < 16; i++) { - x.values[i] = -1; - } - return x; -} - -/* counts symbols in a symset - only used for debug builds */ -#ifndef NDEBUG -static int nsyms(symset s) { - int i; - int c = 0; - for (i = 0; i < GRPC_CHTTP2_NUM_HUFFSYMS; i++) { - c += s.included[i] != 0; - } - return c; -} -#endif - -/* global table of discovered huffman decoding states */ -static struct { - /* the bit offset that this state starts at */ - int bitofs; - /* the set of symbols that this state started with */ - symset syms; - - /* lookup table for the next state */ - nibblelut next; - /* lookup table for what to emit */ - nibblelut emit; -} huffstates[MAXHUFFSTATES]; -static int nhuffstates = 0; - -/* given a number of decoded bits and a set of symbols that are live, - return the index into the decoder table for this state. - set isnew to 1 if this state was previously undiscovered */ -static int state_index(int bitofs, symset syms, int *isnew) { - int i; - for (i = 0; i < nhuffstates; i++) { - if (huffstates[i].bitofs != bitofs) continue; - if (0 != memcmp(huffstates[i].syms.included, syms.included, - GRPC_CHTTP2_NUM_HUFFSYMS)) - continue; - *isnew = 0; - return i; - } - GPR_ASSERT(nhuffstates != MAXHUFFSTATES); - i = nhuffstates++; - huffstates[i].bitofs = bitofs; - huffstates[i].syms = syms; - huffstates[i].next = nibblelut_empty(); - huffstates[i].emit = nibblelut_empty(); - *isnew = 1; - return i; -} - -/* recursively build a decoding table - - state - the huffman state that we are trying to fill in - nibble - the current nibble - nibbits - the number of bits in the nibble that have been filled in - bitofs - the number of bits of symbol that have been decoded - emit - the symbol to emit on this nibble (or -1 if no symbol has been - found) - syms - the set of symbols that could be matched */ -static void build_dec_tbl(int state, int nibble, int nibbits, unsigned bitofs, - int emit, symset syms) { - int i; - unsigned bit; - - /* If we have four bits in the nibble we're looking at, then we can fill in - a slot in the lookup tables. */ - if (nibbits == 4) { - int isnew; - /* Find the state that we are in: this may be a new state, in which case - we recurse to fill it in, or we may have already seen this state, in - which case the recursion terminates */ - int st = state_index(bitofs, syms, &isnew); - GPR_ASSERT(huffstates[state].next.values[nibble] == -1); - huffstates[state].next.values[nibble] = st; - huffstates[state].emit.values[nibble] = emit; - if (isnew) { - build_dec_tbl(st, 0, 0, bitofs, -1, syms); - } - return; - } - - assert(nsyms(syms)); - - /* A bit can be 0 or 1 */ - for (bit = 0; bit < 2; bit++) { - /* walk over active symbols and see if they have this bit set */ - symset nextsyms = symset_none(); - for (i = 0; i < GRPC_CHTTP2_NUM_HUFFSYMS; i++) { - if (!syms.included[i]) continue; /* disregard inactive symbols */ - if (((grpc_chttp2_huffsyms[i].bits >> - (grpc_chttp2_huffsyms[i].length - bitofs - 1)) & - 1) == bit) { - /* the bit is set, include it in the next recursive set */ - if (grpc_chttp2_huffsyms[i].length == bitofs + 1) { - /* additionally, we've gotten to the end of a symbol - this is a - special recursion step: re-activate all the symbols, reset - bitofs to zero, and recurse */ - build_dec_tbl(state, (nibble << 1) | bit, nibbits + 1, 0, i, - symset_all()); - /* skip the remainder of this loop */ - goto next; - } - nextsyms.included[i] = 1; - } - } - /* recurse down for this bit */ - build_dec_tbl(state, (nibble << 1) | bit, nibbits + 1, bitofs + 1, emit, - nextsyms); - next: - ; - } -} - -static nibblelut ctbl[MAXHUFFSTATES]; -static int nctbl; - -static int ctbl_idx(nibblelut x) { - int i; - for (i = 0; i < nctbl; i++) { - if (0 == memcmp(&x, ctbl + i, sizeof(nibblelut))) return i; - } - ctbl[i] = x; - nctbl++; - return i; -} - -static void dump_ctbl(const char *name) { - int i, j; - printf("static const gpr_int16 %s[%d*16] = {\n", name, nctbl); - for (i = 0; i < nctbl; i++) { - for (j = 0; j < 16; j++) { - printf("%d,", ctbl[i].values[j]); - } - printf("\n"); - } - printf("};\n"); -} - -static void generate_huff_tables(void) { - int i; - build_dec_tbl(state_index(0, symset_all(), &i), 0, 0, 0, -1, symset_all()); - - nctbl = 0; - printf("static const gpr_uint8 next_tbl[%d] = {", nhuffstates); - for (i = 0; i < nhuffstates; i++) { - printf("%d,", ctbl_idx(huffstates[i].next)); - } - printf("};\n"); - dump_ctbl("next_sub_tbl"); - - nctbl = 0; - printf("static const gpr_uint16 emit_tbl[%d] = {", nhuffstates); - for (i = 0; i < nhuffstates; i++) { - printf("%d,", ctbl_idx(huffstates[i].emit)); - } - printf("};\n"); - dump_ctbl("emit_sub_tbl"); -} - -static void generate_base64_huff_encoder_table(void) { - static const char alphabet[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - int i; - - printf( - "static const struct { gpr_uint16 bits, gpr_uint8 length } " - "base64_syms[64] = {\n"); - for (i = 0; i < 64; i++) { - printf("{0x%x, %d},", grpc_chttp2_huffsyms[(unsigned char)alphabet[i]].bits, - grpc_chttp2_huffsyms[(unsigned char)alphabet[i]].length); - } - printf("};\n"); -} - -static void generate_base64_inverse_table(void) { - static const char alphabet[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - unsigned char inverse[256]; - unsigned i; - - memset(inverse, 255, sizeof(inverse)); - for (i = 0; i < strlen(alphabet); i++) { - inverse[(unsigned char)alphabet[i]] = i; - } - - printf("static const gpr_uint8 inverse_base64[256] = {"); - for (i = 0; i < 256; i++) { - printf("%d,", inverse[i]); - } - printf("};\n"); -} - -int main(void) { - generate_huff_tables(); - generate_first_byte_lut(); - generate_base64_huff_encoder_table(); - generate_base64_inverse_table(); - - return 0; -} diff --git a/tools/codegen/core/gen_hpack_tables.c b/tools/codegen/core/gen_hpack_tables.c new file mode 100644 index 0000000000..bdaa3cf094 --- /dev/null +++ b/tools/codegen/core/gen_hpack_tables.c @@ -0,0 +1,362 @@ +/* + * + * 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 tables for hpack.c */ + +#include +#include +#include +#include + +#include +#include "src/core/transport/chttp2/huffsyms.h" + +/* + * first byte LUT generation + */ + +typedef struct { + const char *call; + /* bit prefix for the field type */ + unsigned char prefix; + /* length of the bit prefix for the field type */ + unsigned char prefix_length; + /* index value: 0 = all zeros, 2 = all ones, 1 otherwise */ + unsigned char index; +} spec; + +static const spec fields[] = {{"INDEXED_FIELD", 0X80, 1, 1}, + {"INDEXED_FIELD_X", 0X80, 1, 2}, + {"LITHDR_INCIDX", 0X40, 2, 1}, + {"LITHDR_INCIDX_X", 0X40, 2, 2}, + {"LITHDR_INCIDX_V", 0X40, 2, 0}, + {"LITHDR_NOTIDX", 0X00, 4, 1}, + {"LITHDR_NOTIDX_X", 0X00, 4, 2}, + {"LITHDR_NOTIDX_V", 0X00, 4, 0}, + {"LITHDR_NVRIDX", 0X10, 4, 1}, + {"LITHDR_NVRIDX_X", 0X10, 4, 2}, + {"LITHDR_NVRIDX_V", 0X10, 4, 0}, + {"MAX_TBL_SIZE", 0X20, 3, 1}, + {"MAX_TBL_SIZE_X", 0X20, 3, 2}, }; + +static const int num_fields = sizeof(fields) / sizeof(*fields); + +static unsigned char prefix_mask(unsigned char prefix_len) { + unsigned char i; + unsigned char out = 0; + for (i = 0; i < prefix_len; i++) { + out |= 1 << (7 - i); + } + return out; +} + +static unsigned char suffix_mask(unsigned char prefix_len) { + return ~prefix_mask(prefix_len); +} + +static void generate_first_byte_lut(void) { + int i, j, n; + const spec *chrspec; + unsigned char suffix; + + n = printf("static CALLTYPE first_byte[256] = {"); + /* for each potential first byte of a header */ + for (i = 0; i < 256; i++) { + /* find the field type that matches it */ + chrspec = NULL; + for (j = 0; j < num_fields; j++) { + if ((prefix_mask(fields[j].prefix_length) & i) == fields[j].prefix) { + suffix = suffix_mask(fields[j].prefix_length) & i; + if (suffix == suffix_mask(fields[j].prefix_length)) { + if (fields[j].index != 2) continue; + } else if (suffix == 0) { + if (fields[j].index != 0) continue; + } else { + if (fields[j].index != 1) continue; + } + GPR_ASSERT(chrspec == NULL); + chrspec = &fields[j]; + } + } + if (chrspec) { + n += printf("%s, ", chrspec->call); + } else { + n += printf("ILLEGAL, "); + } + /* make some small effort towards readable output */ + if (n > 70) { + printf("\n "); + n = 2; + } + } + printf("};\n"); +} + +/* + * Huffman decoder table generation + */ + +#define MAXHUFFSTATES 1024 + +/* represents a set of symbols as an array of booleans indicating inclusion */ +typedef struct { + char included[GRPC_CHTTP2_NUM_HUFFSYMS]; +} symset; +/* represents a lookup table indexed by a nibble */ +typedef struct { + int values[16]; +} nibblelut; + +/* returns a symset that includes all possible symbols */ +static symset symset_all(void) { + symset x; + memset(x.included, 1, sizeof(x.included)); + return x; +} + +/* returns a symset that includes no symbols */ +static symset symset_none(void) { + symset x; + memset(x.included, 0, sizeof(x.included)); + return x; +} + +/* returns an empty nibblelut */ +static nibblelut nibblelut_empty(void) { + nibblelut x; + int i; + for (i = 0; i < 16; i++) { + x.values[i] = -1; + } + return x; +} + +/* counts symbols in a symset - only used for debug builds */ +#ifndef NDEBUG +static int nsyms(symset s) { + int i; + int c = 0; + for (i = 0; i < GRPC_CHTTP2_NUM_HUFFSYMS; i++) { + c += s.included[i] != 0; + } + return c; +} +#endif + +/* global table of discovered huffman decoding states */ +static struct { + /* the bit offset that this state starts at */ + int bitofs; + /* the set of symbols that this state started with */ + symset syms; + + /* lookup table for the next state */ + nibblelut next; + /* lookup table for what to emit */ + nibblelut emit; +} huffstates[MAXHUFFSTATES]; +static int nhuffstates = 0; + +/* given a number of decoded bits and a set of symbols that are live, + return the index into the decoder table for this state. + set isnew to 1 if this state was previously undiscovered */ +static int state_index(int bitofs, symset syms, int *isnew) { + int i; + for (i = 0; i < nhuffstates; i++) { + if (huffstates[i].bitofs != bitofs) continue; + if (0 != memcmp(huffstates[i].syms.included, syms.included, + GRPC_CHTTP2_NUM_HUFFSYMS)) + continue; + *isnew = 0; + return i; + } + GPR_ASSERT(nhuffstates != MAXHUFFSTATES); + i = nhuffstates++; + huffstates[i].bitofs = bitofs; + huffstates[i].syms = syms; + huffstates[i].next = nibblelut_empty(); + huffstates[i].emit = nibblelut_empty(); + *isnew = 1; + return i; +} + +/* recursively build a decoding table + + state - the huffman state that we are trying to fill in + nibble - the current nibble + nibbits - the number of bits in the nibble that have been filled in + bitofs - the number of bits of symbol that have been decoded + emit - the symbol to emit on this nibble (or -1 if no symbol has been + found) + syms - the set of symbols that could be matched */ +static void build_dec_tbl(int state, int nibble, int nibbits, unsigned bitofs, + int emit, symset syms) { + int i; + unsigned bit; + + /* If we have four bits in the nibble we're looking at, then we can fill in + a slot in the lookup tables. */ + if (nibbits == 4) { + int isnew; + /* Find the state that we are in: this may be a new state, in which case + we recurse to fill it in, or we may have already seen this state, in + which case the recursion terminates */ + int st = state_index(bitofs, syms, &isnew); + GPR_ASSERT(huffstates[state].next.values[nibble] == -1); + huffstates[state].next.values[nibble] = st; + huffstates[state].emit.values[nibble] = emit; + if (isnew) { + build_dec_tbl(st, 0, 0, bitofs, -1, syms); + } + return; + } + + assert(nsyms(syms)); + + /* A bit can be 0 or 1 */ + for (bit = 0; bit < 2; bit++) { + /* walk over active symbols and see if they have this bit set */ + symset nextsyms = symset_none(); + for (i = 0; i < GRPC_CHTTP2_NUM_HUFFSYMS; i++) { + if (!syms.included[i]) continue; /* disregard inactive symbols */ + if (((grpc_chttp2_huffsyms[i].bits >> + (grpc_chttp2_huffsyms[i].length - bitofs - 1)) & + 1) == bit) { + /* the bit is set, include it in the next recursive set */ + if (grpc_chttp2_huffsyms[i].length == bitofs + 1) { + /* additionally, we've gotten to the end of a symbol - this is a + special recursion step: re-activate all the symbols, reset + bitofs to zero, and recurse */ + build_dec_tbl(state, (nibble << 1) | bit, nibbits + 1, 0, i, + symset_all()); + /* skip the remainder of this loop */ + goto next; + } + nextsyms.included[i] = 1; + } + } + /* recurse down for this bit */ + build_dec_tbl(state, (nibble << 1) | bit, nibbits + 1, bitofs + 1, emit, + nextsyms); + next: + ; + } +} + +static nibblelut ctbl[MAXHUFFSTATES]; +static int nctbl; + +static int ctbl_idx(nibblelut x) { + int i; + for (i = 0; i < nctbl; i++) { + if (0 == memcmp(&x, ctbl + i, sizeof(nibblelut))) return i; + } + ctbl[i] = x; + nctbl++; + return i; +} + +static void dump_ctbl(const char *name) { + int i, j; + printf("static const gpr_int16 %s[%d*16] = {\n", name, nctbl); + for (i = 0; i < nctbl; i++) { + for (j = 0; j < 16; j++) { + printf("%d,", ctbl[i].values[j]); + } + printf("\n"); + } + printf("};\n"); +} + +static void generate_huff_tables(void) { + int i; + build_dec_tbl(state_index(0, symset_all(), &i), 0, 0, 0, -1, symset_all()); + + nctbl = 0; + printf("static const gpr_uint8 next_tbl[%d] = {", nhuffstates); + for (i = 0; i < nhuffstates; i++) { + printf("%d,", ctbl_idx(huffstates[i].next)); + } + printf("};\n"); + dump_ctbl("next_sub_tbl"); + + nctbl = 0; + printf("static const gpr_uint16 emit_tbl[%d] = {", nhuffstates); + for (i = 0; i < nhuffstates; i++) { + printf("%d,", ctbl_idx(huffstates[i].emit)); + } + printf("};\n"); + dump_ctbl("emit_sub_tbl"); +} + +static void generate_base64_huff_encoder_table(void) { + static const char alphabet[] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + int i; + + printf( + "static const struct { gpr_uint16 bits, gpr_uint8 length } " + "base64_syms[64] = {\n"); + for (i = 0; i < 64; i++) { + printf("{0x%x, %d},", grpc_chttp2_huffsyms[(unsigned char)alphabet[i]].bits, + grpc_chttp2_huffsyms[(unsigned char)alphabet[i]].length); + } + printf("};\n"); +} + +static void generate_base64_inverse_table(void) { + static const char alphabet[] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + unsigned char inverse[256]; + unsigned i; + + memset(inverse, 255, sizeof(inverse)); + for (i = 0; i < strlen(alphabet); i++) { + inverse[(unsigned char)alphabet[i]] = i; + } + + printf("static const gpr_uint8 inverse_base64[256] = {"); + for (i = 0; i < 256; i++) { + printf("%d,", inverse[i]); + } + printf("};\n"); +} + +int main(void) { + generate_huff_tables(); + generate_first_byte_lut(); + generate_base64_huff_encoder_table(); + generate_base64_inverse_table(); + + return 0; +} diff --git a/vsprojects/Grpc.mak b/vsprojects/Grpc.mak index 27f0b3aec3..b3be4fcf24 100644 --- a/vsprojects/Grpc.mak +++ b/vsprojects/Grpc.mak @@ -135,8 +135,8 @@ fling_server: fling_server.exe $(OUT_DIR)\fling_server.exe gen_hpack_tables.exe: build_libs $(OUT_DIR) echo Building gen_hpack_tables - $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\src\core\transport\chttp2\gen_hpack_tables.c - $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gen_hpack_tables.exe" Debug\grpc_test_util.lib Debug\gpr.lib Debug\grpc.lib $(LIBS) $(OUT_DIR)\gen_hpack_tables.obj + $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\tools\codegen\core\gen_hpack_tables.c + $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gen_hpack_tables.exe" Debug\gpr.lib Debug\grpc.lib $(LIBS) $(OUT_DIR)\gen_hpack_tables.obj gen_hpack_tables: gen_hpack_tables.exe echo Running gen_hpack_tables $(OUT_DIR)\gen_hpack_tables.exe -- cgit v1.2.3 From eb327fba7ca55e97ab889a33c7c70e0401b767eb Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 23 Jun 2015 16:51:38 -0700 Subject: Make it less likely a build.json change triggers a merge conflict --- gRPC.podspec | 406 ++++++++++++++++++++++++++++++- templates/gRPC.podspec.template | 42 ++-- templates/tools/doxygen/Doxyfile.include | 2 +- tools/doxygen/Doxyfile.c++ | 38 ++- tools/doxygen/Doxyfile.c++.internal | 68 +++++- tools/doxygen/Doxyfile.core | 36 ++- tools/doxygen/Doxyfile.core.internal | 297 +++++++++++++++++++++- 7 files changed, 859 insertions(+), 30 deletions(-) diff --git a/gRPC.podspec b/gRPC.podspec index 9bd847be28..da68302e0d 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -60,8 +60,410 @@ Pod::Spec.new do |s| # Core cross-platform gRPC library, written in C. s.subspec 'C-Core' do |cs| - cs.source_files = 'src/core/support/env.h', 'src/core/support/file.h', 'src/core/support/murmur_hash.h', 'src/core/support/grpc_string.h', 'src/core/support/string_win32.h', 'src/core/support/thd_internal.h', 'include/grpc/support/alloc.h', 'include/grpc/support/atm.h', 'include/grpc/support/atm_gcc_atomic.h', 'include/grpc/support/atm_gcc_sync.h', 'include/grpc/support/atm_win32.h', 'include/grpc/support/cancellable_platform.h', 'include/grpc/support/cmdline.h', 'include/grpc/support/cpu.h', 'include/grpc/support/histogram.h', 'include/grpc/support/host_port.h', 'include/grpc/support/log.h', 'include/grpc/support/log_win32.h', 'include/grpc/support/port_platform.h', 'include/grpc/support/slice.h', 'include/grpc/support/slice_buffer.h', 'include/grpc/support/string_util.h', 'include/grpc/support/subprocess.h', 'include/grpc/support/sync.h', 'include/grpc/support/sync_generic.h', 'include/grpc/support/sync_posix.h', 'include/grpc/support/sync_win32.h', 'include/grpc/support/thd.h', 'include/grpc/support/grpc_time.h', 'include/grpc/support/tls.h', 'include/grpc/support/tls_gcc.h', 'include/grpc/support/tls_msvc.h', 'include/grpc/support/tls_pthread.h', 'include/grpc/support/useful.h', 'src/core/support/alloc.c', 'src/core/support/cancellable.c', 'src/core/support/cmdline.c', 'src/core/support/cpu_iphone.c', 'src/core/support/cpu_linux.c', 'src/core/support/cpu_posix.c', 'src/core/support/cpu_windows.c', 'src/core/support/env_linux.c', 'src/core/support/env_posix.c', 'src/core/support/env_win32.c', 'src/core/support/file.c', 'src/core/support/file_posix.c', 'src/core/support/file_win32.c', 'src/core/support/histogram.c', 'src/core/support/host_port.c', 'src/core/support/log.c', 'src/core/support/log_android.c', 'src/core/support/log_linux.c', 'src/core/support/log_posix.c', 'src/core/support/log_win32.c', 'src/core/support/murmur_hash.c', 'src/core/support/slice.c', 'src/core/support/slice_buffer.c', 'src/core/support/string.c', 'src/core/support/string_posix.c', 'src/core/support/string_win32.c', 'src/core/support/subprocess_posix.c', 'src/core/support/sync.c', 'src/core/support/sync_posix.c', 'src/core/support/sync_win32.c', 'src/core/support/thd.c', 'src/core/support/thd_posix.c', 'src/core/support/thd_win32.c', 'src/core/support/time.c', 'src/core/support/time_posix.c', 'src/core/support/time_win32.c', 'src/core/support/tls_pthread.c', 'src/core/httpcli/format_request.h', 'src/core/httpcli/httpcli.h', 'src/core/httpcli/httpcli_security_connector.h', 'src/core/httpcli/parser.h', 'src/core/security/auth_filters.h', 'src/core/security/base64.h', 'src/core/security/credentials.h', 'src/core/security/json_token.h', 'src/core/security/secure_endpoint.h', 'src/core/security/secure_transport_setup.h', 'src/core/security/security_connector.h', 'src/core/security/security_context.h', '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/grpc_context.h', 'src/core/channel/census_filter.h', 'src/core/channel/channel_args.h', 'src/core/channel/channel_stack.h', 'src/core/channel/child_channel.h', 'src/core/channel/client_channel.h', 'src/core/channel/client_setup.h', 'src/core/channel/connected_channel.h', 'src/core/channel/context.h', 'src/core/channel/http_client_filter.h', 'src/core/channel/http_server_filter.h', 'src/core/channel/noop_filter.h', 'src/core/compression/message_compress.h', 'src/core/debug/trace.h', 'src/core/iomgr/alarm.h', 'src/core/iomgr/alarm_heap.h', 'src/core/iomgr/alarm_internal.h', 'src/core/iomgr/endpoint.h', 'src/core/iomgr/endpoint_pair.h', 'src/core/iomgr/fd_posix.h', 'src/core/iomgr/iocp_windows.h', 'src/core/iomgr/iomgr.h', 'src/core/iomgr/iomgr_internal.h', 'src/core/iomgr/iomgr_posix.h', 'src/core/iomgr/pollset.h', 'src/core/iomgr/pollset_kick_posix.h', 'src/core/iomgr/pollset_posix.h', 'src/core/iomgr/pollset_set.h', 'src/core/iomgr/pollset_set_posix.h', 'src/core/iomgr/pollset_set_windows.h', 'src/core/iomgr/pollset_windows.h', 'src/core/iomgr/resolve_address.h', 'src/core/iomgr/sockaddr.h', 'src/core/iomgr/sockaddr_posix.h', 'src/core/iomgr/sockaddr_utils.h', 'src/core/iomgr/sockaddr_win32.h', 'src/core/iomgr/socket_utils_posix.h', 'src/core/iomgr/socket_windows.h', 'src/core/iomgr/tcp_client.h', 'src/core/iomgr/tcp_posix.h', 'src/core/iomgr/tcp_server.h', 'src/core/iomgr/tcp_windows.h', 'src/core/iomgr/time_averaged_stats.h', 'src/core/iomgr/wakeup_fd_pipe.h', 'src/core/iomgr/wakeup_fd_posix.h', 'src/core/json/json.h', 'src/core/json/json_common.h', 'src/core/json/json_reader.h', 'src/core/json/json_writer.h', 'src/core/profiling/timers.h', 'src/core/profiling/timers_preciseclock.h', 'src/core/surface/byte_buffer_queue.h', 'src/core/surface/call.h', 'src/core/surface/channel.h', 'src/core/surface/client.h', 'src/core/surface/completion_queue.h', 'src/core/surface/event_string.h', 'src/core/surface/init.h', 'src/core/surface/server.h', 'src/core/surface/surface_trace.h', 'src/core/transport/chttp2/alpn.h', 'src/core/transport/chttp2/bin_encoder.h', 'src/core/transport/chttp2/frame.h', 'src/core/transport/chttp2/frame_data.h', 'src/core/transport/chttp2/frame_goaway.h', 'src/core/transport/chttp2/frame_ping.h', 'src/core/transport/chttp2/frame_rst_stream.h', 'src/core/transport/chttp2/frame_settings.h', 'src/core/transport/chttp2/frame_window_update.h', 'src/core/transport/chttp2/hpack_parser.h', 'src/core/transport/chttp2/hpack_table.h', 'src/core/transport/chttp2/http2_errors.h', 'src/core/transport/chttp2/huffsyms.h', 'src/core/transport/chttp2/status_conversion.h', 'src/core/transport/chttp2/stream_encoder.h', 'src/core/transport/chttp2/stream_map.h', 'src/core/transport/chttp2/timeout_encoding.h', 'src/core/transport/chttp2/varint.h', 'src/core/transport/chttp2_transport.h', 'src/core/transport/metadata.h', 'src/core/transport/stream_op.h', 'src/core/transport/transport.h', 'src/core/transport/transport_impl.h', 'src/core/census/context.h', 'include/grpc/grpc_security.h', 'include/grpc/byte_buffer.h', 'include/grpc/byte_buffer_reader.h', 'include/grpc/compression.h', 'include/grpc/grpc.h', 'include/grpc/status.h', 'include/grpc/census.h', 'src/core/httpcli/format_request.c', 'src/core/httpcli/httpcli.c', 'src/core/httpcli/httpcli_security_connector.c', 'src/core/httpcli/parser.c', 'src/core/security/base64.c', 'src/core/security/client_auth_filter.c', 'src/core/security/credentials.c', 'src/core/security/credentials_metadata.c', 'src/core/security/credentials_posix.c', 'src/core/security/credentials_win32.c', 'src/core/security/google_default_credentials.c', 'src/core/security/json_token.c', 'src/core/security/secure_endpoint.c', 'src/core/security/secure_transport_setup.c', 'src/core/security/security_connector.c', 'src/core/security/security_context.c', 'src/core/security/server_auth_filter.c', 'src/core/security/server_secure_chttp2.c', 'src/core/surface/init_secure.c', 'src/core/surface/secure_channel_create.c', 'src/core/tsi/fake_transport_security.c', 'src/core/tsi/ssl_transport_security.c', 'src/core/tsi/transport_security.c', 'src/core/census/grpc_context.c', 'src/core/channel/channel_args.c', 'src/core/channel/channel_stack.c', 'src/core/channel/child_channel.c', 'src/core/channel/client_channel.c', 'src/core/channel/client_setup.c', 'src/core/channel/connected_channel.c', 'src/core/channel/http_client_filter.c', 'src/core/channel/http_server_filter.c', 'src/core/channel/noop_filter.c', 'src/core/compression/algorithm.c', 'src/core/compression/message_compress.c', 'src/core/debug/trace.c', 'src/core/iomgr/alarm.c', 'src/core/iomgr/alarm_heap.c', 'src/core/iomgr/endpoint.c', 'src/core/iomgr/endpoint_pair_posix.c', 'src/core/iomgr/endpoint_pair_windows.c', 'src/core/iomgr/fd_posix.c', 'src/core/iomgr/iocp_windows.c', 'src/core/iomgr/iomgr.c', 'src/core/iomgr/iomgr_posix.c', 'src/core/iomgr/iomgr_windows.c', 'src/core/iomgr/pollset_kick_posix.c', 'src/core/iomgr/pollset_multipoller_with_epoll.c', 'src/core/iomgr/pollset_multipoller_with_poll_posix.c', 'src/core/iomgr/pollset_posix.c', 'src/core/iomgr/pollset_set_posix.c', 'src/core/iomgr/pollset_set_windows.c', 'src/core/iomgr/pollset_windows.c', 'src/core/iomgr/resolve_address_posix.c', 'src/core/iomgr/resolve_address_windows.c', 'src/core/iomgr/sockaddr_utils.c', 'src/core/iomgr/socket_utils_common_posix.c', 'src/core/iomgr/socket_utils_linux.c', 'src/core/iomgr/socket_utils_posix.c', 'src/core/iomgr/socket_windows.c', 'src/core/iomgr/tcp_client_posix.c', 'src/core/iomgr/tcp_client_windows.c', 'src/core/iomgr/tcp_posix.c', 'src/core/iomgr/tcp_server_posix.c', 'src/core/iomgr/tcp_server_windows.c', 'src/core/iomgr/tcp_windows.c', 'src/core/iomgr/time_averaged_stats.c', 'src/core/iomgr/wakeup_fd_eventfd.c', 'src/core/iomgr/wakeup_fd_nospecial.c', 'src/core/iomgr/wakeup_fd_pipe.c', 'src/core/iomgr/wakeup_fd_posix.c', 'src/core/json/json.c', 'src/core/json/json_reader.c', 'src/core/json/json_string.c', 'src/core/json/json_writer.c', 'src/core/profiling/basic_timers.c', 'src/core/profiling/stap_timers.c', 'src/core/surface/byte_buffer.c', 'src/core/surface/byte_buffer_queue.c', 'src/core/surface/byte_buffer_reader.c', 'src/core/surface/call.c', 'src/core/surface/call_details.c', 'src/core/surface/call_log_batch.c', 'src/core/surface/channel.c', 'src/core/surface/channel_create.c', 'src/core/surface/client.c', 'src/core/surface/completion_queue.c', 'src/core/surface/event_string.c', 'src/core/surface/init.c', 'src/core/surface/lame_client.c', 'src/core/surface/metadata_array.c', 'src/core/surface/server.c', 'src/core/surface/server_chttp2.c', 'src/core/surface/server_create.c', 'src/core/surface/surface_trace.c', 'src/core/transport/chttp2/alpn.c', 'src/core/transport/chttp2/bin_encoder.c', 'src/core/transport/chttp2/frame_data.c', 'src/core/transport/chttp2/frame_goaway.c', 'src/core/transport/chttp2/frame_ping.c', 'src/core/transport/chttp2/frame_rst_stream.c', 'src/core/transport/chttp2/frame_settings.c', 'src/core/transport/chttp2/frame_window_update.c', 'src/core/transport/chttp2/hpack_parser.c', 'src/core/transport/chttp2/hpack_table.c', 'src/core/transport/chttp2/huffsyms.c', 'src/core/transport/chttp2/status_conversion.c', 'src/core/transport/chttp2/stream_encoder.c', 'src/core/transport/chttp2/stream_map.c', 'src/core/transport/chttp2/timeout_encoding.c', 'src/core/transport/chttp2/varint.c', 'src/core/transport/chttp2_transport.c', 'src/core/transport/metadata.c', 'src/core/transport/stream_op.c', 'src/core/transport/transport.c', 'src/core/transport/transport_op_string.c', 'src/core/census/context.c', 'src/core/census/initialize.c', - cs.private_header_files = 'src/core/support/env.h', 'src/core/support/file.h', 'src/core/support/murmur_hash.h', 'src/core/support/string.h', 'src/core/support/string_win32.h', 'src/core/support/thd_internal.h', 'src/core/httpcli/format_request.h', 'src/core/httpcli/httpcli.h', 'src/core/httpcli/httpcli_security_connector.h', 'src/core/httpcli/parser.h', 'src/core/security/auth_filters.h', 'src/core/security/base64.h', 'src/core/security/credentials.h', 'src/core/security/json_token.h', 'src/core/security/secure_endpoint.h', 'src/core/security/secure_transport_setup.h', 'src/core/security/security_connector.h', 'src/core/security/security_context.h', '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/grpc_context.h', 'src/core/channel/census_filter.h', 'src/core/channel/channel_args.h', 'src/core/channel/channel_stack.h', 'src/core/channel/child_channel.h', 'src/core/channel/client_channel.h', 'src/core/channel/client_setup.h', 'src/core/channel/connected_channel.h', 'src/core/channel/context.h', 'src/core/channel/http_client_filter.h', 'src/core/channel/http_server_filter.h', 'src/core/channel/noop_filter.h', 'src/core/compression/message_compress.h', 'src/core/debug/trace.h', 'src/core/iomgr/alarm.h', 'src/core/iomgr/alarm_heap.h', 'src/core/iomgr/alarm_internal.h', 'src/core/iomgr/endpoint.h', 'src/core/iomgr/endpoint_pair.h', 'src/core/iomgr/fd_posix.h', 'src/core/iomgr/iocp_windows.h', 'src/core/iomgr/iomgr.h', 'src/core/iomgr/iomgr_internal.h', 'src/core/iomgr/iomgr_posix.h', 'src/core/iomgr/pollset.h', 'src/core/iomgr/pollset_kick_posix.h', 'src/core/iomgr/pollset_posix.h', 'src/core/iomgr/pollset_set.h', 'src/core/iomgr/pollset_set_posix.h', 'src/core/iomgr/pollset_set_windows.h', 'src/core/iomgr/pollset_windows.h', 'src/core/iomgr/resolve_address.h', 'src/core/iomgr/sockaddr.h', 'src/core/iomgr/sockaddr_posix.h', 'src/core/iomgr/sockaddr_utils.h', 'src/core/iomgr/sockaddr_win32.h', 'src/core/iomgr/socket_utils_posix.h', 'src/core/iomgr/socket_windows.h', 'src/core/iomgr/tcp_client.h', 'src/core/iomgr/tcp_posix.h', 'src/core/iomgr/tcp_server.h', 'src/core/iomgr/tcp_windows.h', 'src/core/iomgr/time_averaged_stats.h', 'src/core/iomgr/wakeup_fd_pipe.h', 'src/core/iomgr/wakeup_fd_posix.h', 'src/core/json/json.h', 'src/core/json/json_common.h', 'src/core/json/json_reader.h', 'src/core/json/json_writer.h', 'src/core/profiling/timers.h', 'src/core/profiling/timers_preciseclock.h', 'src/core/surface/byte_buffer_queue.h', 'src/core/surface/call.h', 'src/core/surface/channel.h', 'src/core/surface/client.h', 'src/core/surface/completion_queue.h', 'src/core/surface/event_string.h', 'src/core/surface/init.h', 'src/core/surface/server.h', 'src/core/surface/surface_trace.h', 'src/core/transport/chttp2/alpn.h', 'src/core/transport/chttp2/bin_encoder.h', 'src/core/transport/chttp2/frame.h', 'src/core/transport/chttp2/frame_data.h', 'src/core/transport/chttp2/frame_goaway.h', 'src/core/transport/chttp2/frame_ping.h', 'src/core/transport/chttp2/frame_rst_stream.h', 'src/core/transport/chttp2/frame_settings.h', 'src/core/transport/chttp2/frame_window_update.h', 'src/core/transport/chttp2/hpack_parser.h', 'src/core/transport/chttp2/hpack_table.h', 'src/core/transport/chttp2/http2_errors.h', 'src/core/transport/chttp2/huffsyms.h', 'src/core/transport/chttp2/status_conversion.h', 'src/core/transport/chttp2/stream_encoder.h', 'src/core/transport/chttp2/stream_map.h', 'src/core/transport/chttp2/timeout_encoding.h', 'src/core/transport/chttp2/varint.h', 'src/core/transport/chttp2_transport.h', 'src/core/transport/metadata.h', 'src/core/transport/stream_op.h', 'src/core/transport/transport.h', 'src/core/transport/transport_impl.h', 'src/core/census/context.h', + cs.source_files = 'src/core/support/env.h', + 'src/core/support/file.h', + 'src/core/support/murmur_hash.h', + 'src/core/support/grpc_string.h', + 'src/core/support/string_win32.h', + 'src/core/support/thd_internal.h', + 'include/grpc/support/alloc.h', + 'include/grpc/support/atm.h', + 'include/grpc/support/atm_gcc_atomic.h', + 'include/grpc/support/atm_gcc_sync.h', + 'include/grpc/support/atm_win32.h', + 'include/grpc/support/cancellable_platform.h', + 'include/grpc/support/cmdline.h', + 'include/grpc/support/cpu.h', + 'include/grpc/support/histogram.h', + 'include/grpc/support/host_port.h', + 'include/grpc/support/log.h', + 'include/grpc/support/log_win32.h', + 'include/grpc/support/port_platform.h', + 'include/grpc/support/slice.h', + 'include/grpc/support/slice_buffer.h', + 'include/grpc/support/string_util.h', + 'include/grpc/support/subprocess.h', + 'include/grpc/support/sync.h', + 'include/grpc/support/sync_generic.h', + 'include/grpc/support/sync_posix.h', + 'include/grpc/support/sync_win32.h', + 'include/grpc/support/thd.h', + 'include/grpc/support/grpc_time.h', + 'include/grpc/support/tls.h', + 'include/grpc/support/tls_gcc.h', + 'include/grpc/support/tls_msvc.h', + 'include/grpc/support/tls_pthread.h', + 'include/grpc/support/useful.h', + 'src/core/support/alloc.c', + 'src/core/support/cancellable.c', + 'src/core/support/cmdline.c', + 'src/core/support/cpu_iphone.c', + 'src/core/support/cpu_linux.c', + 'src/core/support/cpu_posix.c', + 'src/core/support/cpu_windows.c', + 'src/core/support/env_linux.c', + 'src/core/support/env_posix.c', + 'src/core/support/env_win32.c', + 'src/core/support/file.c', + 'src/core/support/file_posix.c', + 'src/core/support/file_win32.c', + 'src/core/support/histogram.c', + 'src/core/support/host_port.c', + 'src/core/support/log.c', + 'src/core/support/log_android.c', + 'src/core/support/log_linux.c', + 'src/core/support/log_posix.c', + 'src/core/support/log_win32.c', + 'src/core/support/murmur_hash.c', + 'src/core/support/slice.c', + 'src/core/support/slice_buffer.c', + 'src/core/support/string.c', + 'src/core/support/string_posix.c', + 'src/core/support/string_win32.c', + 'src/core/support/subprocess_posix.c', + 'src/core/support/sync.c', + 'src/core/support/sync_posix.c', + 'src/core/support/sync_win32.c', + 'src/core/support/thd.c', + 'src/core/support/thd_posix.c', + 'src/core/support/thd_win32.c', + 'src/core/support/time.c', + 'src/core/support/time_posix.c', + 'src/core/support/time_win32.c', + 'src/core/support/tls_pthread.c', + 'src/core/httpcli/format_request.h', + 'src/core/httpcli/httpcli.h', + 'src/core/httpcli/httpcli_security_connector.h', + 'src/core/httpcli/parser.h', + 'src/core/security/auth_filters.h', + 'src/core/security/base64.h', + 'src/core/security/credentials.h', + 'src/core/security/json_token.h', + 'src/core/security/secure_endpoint.h', + 'src/core/security/secure_transport_setup.h', + 'src/core/security/security_connector.h', + 'src/core/security/security_context.h', + '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/grpc_context.h', + 'src/core/channel/census_filter.h', + 'src/core/channel/channel_args.h', + 'src/core/channel/channel_stack.h', + 'src/core/channel/child_channel.h', + 'src/core/channel/client_channel.h', + 'src/core/channel/client_setup.h', + 'src/core/channel/connected_channel.h', + 'src/core/channel/context.h', + 'src/core/channel/http_client_filter.h', + 'src/core/channel/http_server_filter.h', + 'src/core/channel/noop_filter.h', + 'src/core/compression/message_compress.h', + 'src/core/debug/trace.h', + 'src/core/iomgr/alarm.h', + 'src/core/iomgr/alarm_heap.h', + 'src/core/iomgr/alarm_internal.h', + 'src/core/iomgr/endpoint.h', + 'src/core/iomgr/endpoint_pair.h', + 'src/core/iomgr/fd_posix.h', + 'src/core/iomgr/iocp_windows.h', + 'src/core/iomgr/iomgr.h', + 'src/core/iomgr/iomgr_internal.h', + 'src/core/iomgr/iomgr_posix.h', + 'src/core/iomgr/pollset.h', + 'src/core/iomgr/pollset_kick_posix.h', + 'src/core/iomgr/pollset_posix.h', + 'src/core/iomgr/pollset_set.h', + 'src/core/iomgr/pollset_set_posix.h', + 'src/core/iomgr/pollset_set_windows.h', + 'src/core/iomgr/pollset_windows.h', + 'src/core/iomgr/resolve_address.h', + 'src/core/iomgr/sockaddr.h', + 'src/core/iomgr/sockaddr_posix.h', + 'src/core/iomgr/sockaddr_utils.h', + 'src/core/iomgr/sockaddr_win32.h', + 'src/core/iomgr/socket_utils_posix.h', + 'src/core/iomgr/socket_windows.h', + 'src/core/iomgr/tcp_client.h', + 'src/core/iomgr/tcp_posix.h', + 'src/core/iomgr/tcp_server.h', + 'src/core/iomgr/tcp_windows.h', + 'src/core/iomgr/time_averaged_stats.h', + 'src/core/iomgr/wakeup_fd_pipe.h', + 'src/core/iomgr/wakeup_fd_posix.h', + 'src/core/json/json.h', + 'src/core/json/json_common.h', + 'src/core/json/json_reader.h', + 'src/core/json/json_writer.h', + 'src/core/profiling/timers.h', + 'src/core/profiling/timers_preciseclock.h', + 'src/core/surface/byte_buffer_queue.h', + 'src/core/surface/call.h', + 'src/core/surface/channel.h', + 'src/core/surface/client.h', + 'src/core/surface/completion_queue.h', + 'src/core/surface/event_string.h', + 'src/core/surface/init.h', + 'src/core/surface/server.h', + 'src/core/surface/surface_trace.h', + 'src/core/transport/chttp2/alpn.h', + 'src/core/transport/chttp2/bin_encoder.h', + 'src/core/transport/chttp2/frame.h', + 'src/core/transport/chttp2/frame_data.h', + 'src/core/transport/chttp2/frame_goaway.h', + 'src/core/transport/chttp2/frame_ping.h', + 'src/core/transport/chttp2/frame_rst_stream.h', + 'src/core/transport/chttp2/frame_settings.h', + 'src/core/transport/chttp2/frame_window_update.h', + 'src/core/transport/chttp2/hpack_parser.h', + 'src/core/transport/chttp2/hpack_table.h', + 'src/core/transport/chttp2/http2_errors.h', + 'src/core/transport/chttp2/huffsyms.h', + 'src/core/transport/chttp2/status_conversion.h', + 'src/core/transport/chttp2/stream_encoder.h', + 'src/core/transport/chttp2/stream_map.h', + 'src/core/transport/chttp2/timeout_encoding.h', + 'src/core/transport/chttp2/varint.h', + 'src/core/transport/chttp2_transport.h', + 'src/core/transport/metadata.h', + 'src/core/transport/stream_op.h', + 'src/core/transport/transport.h', + 'src/core/transport/transport_impl.h', + 'src/core/census/context.h', + 'include/grpc/grpc_security.h', + 'include/grpc/byte_buffer.h', + 'include/grpc/byte_buffer_reader.h', + 'include/grpc/compression.h', + 'include/grpc/grpc.h', + 'include/grpc/status.h', + 'include/grpc/census.h', + 'src/core/httpcli/format_request.c', + 'src/core/httpcli/httpcli.c', + 'src/core/httpcli/httpcli_security_connector.c', + 'src/core/httpcli/parser.c', + 'src/core/security/base64.c', + 'src/core/security/client_auth_filter.c', + 'src/core/security/credentials.c', + 'src/core/security/credentials_metadata.c', + 'src/core/security/credentials_posix.c', + 'src/core/security/credentials_win32.c', + 'src/core/security/google_default_credentials.c', + 'src/core/security/json_token.c', + 'src/core/security/secure_endpoint.c', + 'src/core/security/secure_transport_setup.c', + 'src/core/security/security_connector.c', + 'src/core/security/security_context.c', + 'src/core/security/server_auth_filter.c', + 'src/core/security/server_secure_chttp2.c', + 'src/core/surface/init_secure.c', + 'src/core/surface/secure_channel_create.c', + 'src/core/tsi/fake_transport_security.c', + 'src/core/tsi/ssl_transport_security.c', + 'src/core/tsi/transport_security.c', + 'src/core/census/grpc_context.c', + 'src/core/channel/channel_args.c', + 'src/core/channel/channel_stack.c', + 'src/core/channel/child_channel.c', + 'src/core/channel/client_channel.c', + 'src/core/channel/client_setup.c', + 'src/core/channel/connected_channel.c', + 'src/core/channel/http_client_filter.c', + 'src/core/channel/http_server_filter.c', + 'src/core/channel/noop_filter.c', + 'src/core/compression/algorithm.c', + 'src/core/compression/message_compress.c', + 'src/core/debug/trace.c', + 'src/core/iomgr/alarm.c', + 'src/core/iomgr/alarm_heap.c', + 'src/core/iomgr/endpoint.c', + 'src/core/iomgr/endpoint_pair_posix.c', + 'src/core/iomgr/endpoint_pair_windows.c', + 'src/core/iomgr/fd_posix.c', + 'src/core/iomgr/iocp_windows.c', + 'src/core/iomgr/iomgr.c', + 'src/core/iomgr/iomgr_posix.c', + 'src/core/iomgr/iomgr_windows.c', + 'src/core/iomgr/pollset_kick_posix.c', + 'src/core/iomgr/pollset_multipoller_with_epoll.c', + 'src/core/iomgr/pollset_multipoller_with_poll_posix.c', + 'src/core/iomgr/pollset_posix.c', + 'src/core/iomgr/pollset_set_posix.c', + 'src/core/iomgr/pollset_set_windows.c', + 'src/core/iomgr/pollset_windows.c', + 'src/core/iomgr/resolve_address_posix.c', + 'src/core/iomgr/resolve_address_windows.c', + 'src/core/iomgr/sockaddr_utils.c', + 'src/core/iomgr/socket_utils_common_posix.c', + 'src/core/iomgr/socket_utils_linux.c', + 'src/core/iomgr/socket_utils_posix.c', + 'src/core/iomgr/socket_windows.c', + 'src/core/iomgr/tcp_client_posix.c', + 'src/core/iomgr/tcp_client_windows.c', + 'src/core/iomgr/tcp_posix.c', + 'src/core/iomgr/tcp_server_posix.c', + 'src/core/iomgr/tcp_server_windows.c', + 'src/core/iomgr/tcp_windows.c', + 'src/core/iomgr/time_averaged_stats.c', + 'src/core/iomgr/wakeup_fd_eventfd.c', + 'src/core/iomgr/wakeup_fd_nospecial.c', + 'src/core/iomgr/wakeup_fd_pipe.c', + 'src/core/iomgr/wakeup_fd_posix.c', + 'src/core/json/json.c', + 'src/core/json/json_reader.c', + 'src/core/json/json_string.c', + 'src/core/json/json_writer.c', + 'src/core/profiling/basic_timers.c', + 'src/core/profiling/stap_timers.c', + 'src/core/surface/byte_buffer.c', + 'src/core/surface/byte_buffer_queue.c', + 'src/core/surface/byte_buffer_reader.c', + 'src/core/surface/call.c', + 'src/core/surface/call_details.c', + 'src/core/surface/call_log_batch.c', + 'src/core/surface/channel.c', + 'src/core/surface/channel_create.c', + 'src/core/surface/client.c', + 'src/core/surface/completion_queue.c', + 'src/core/surface/event_string.c', + 'src/core/surface/init.c', + 'src/core/surface/lame_client.c', + 'src/core/surface/metadata_array.c', + 'src/core/surface/server.c', + 'src/core/surface/server_chttp2.c', + 'src/core/surface/server_create.c', + 'src/core/surface/surface_trace.c', + 'src/core/transport/chttp2/alpn.c', + 'src/core/transport/chttp2/bin_encoder.c', + 'src/core/transport/chttp2/frame_data.c', + 'src/core/transport/chttp2/frame_goaway.c', + 'src/core/transport/chttp2/frame_ping.c', + 'src/core/transport/chttp2/frame_rst_stream.c', + 'src/core/transport/chttp2/frame_settings.c', + 'src/core/transport/chttp2/frame_window_update.c', + 'src/core/transport/chttp2/hpack_parser.c', + 'src/core/transport/chttp2/hpack_table.c', + 'src/core/transport/chttp2/huffsyms.c', + 'src/core/transport/chttp2/status_conversion.c', + 'src/core/transport/chttp2/stream_encoder.c', + 'src/core/transport/chttp2/stream_map.c', + 'src/core/transport/chttp2/timeout_encoding.c', + 'src/core/transport/chttp2/varint.c', + 'src/core/transport/chttp2_transport.c', + 'src/core/transport/metadata.c', + 'src/core/transport/stream_op.c', + 'src/core/transport/transport.c', + 'src/core/transport/transport_op_string.c', + 'src/core/census/context.c', + 'src/core/census/initialize.c' + + cs.private_header_files = 'src/core/support/env.h', + 'src/core/support/file.h', + 'src/core/support/murmur_hash.h', + 'src/core/support/string.h', + 'src/core/support/string_win32.h', + 'src/core/support/thd_internal.h', + 'src/core/httpcli/format_request.h', + 'src/core/httpcli/httpcli.h', + 'src/core/httpcli/httpcli_security_connector.h', + 'src/core/httpcli/parser.h', + 'src/core/security/auth_filters.h', + 'src/core/security/base64.h', + 'src/core/security/credentials.h', + 'src/core/security/json_token.h', + 'src/core/security/secure_endpoint.h', + 'src/core/security/secure_transport_setup.h', + 'src/core/security/security_connector.h', + 'src/core/security/security_context.h', + '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/grpc_context.h', + 'src/core/channel/census_filter.h', + 'src/core/channel/channel_args.h', + 'src/core/channel/channel_stack.h', + 'src/core/channel/child_channel.h', + 'src/core/channel/client_channel.h', + 'src/core/channel/client_setup.h', + 'src/core/channel/connected_channel.h', + 'src/core/channel/context.h', + 'src/core/channel/http_client_filter.h', + 'src/core/channel/http_server_filter.h', + 'src/core/channel/noop_filter.h', + 'src/core/compression/message_compress.h', + 'src/core/debug/trace.h', + 'src/core/iomgr/alarm.h', + 'src/core/iomgr/alarm_heap.h', + 'src/core/iomgr/alarm_internal.h', + 'src/core/iomgr/endpoint.h', + 'src/core/iomgr/endpoint_pair.h', + 'src/core/iomgr/fd_posix.h', + 'src/core/iomgr/iocp_windows.h', + 'src/core/iomgr/iomgr.h', + 'src/core/iomgr/iomgr_internal.h', + 'src/core/iomgr/iomgr_posix.h', + 'src/core/iomgr/pollset.h', + 'src/core/iomgr/pollset_kick_posix.h', + 'src/core/iomgr/pollset_posix.h', + 'src/core/iomgr/pollset_set.h', + 'src/core/iomgr/pollset_set_posix.h', + 'src/core/iomgr/pollset_set_windows.h', + 'src/core/iomgr/pollset_windows.h', + 'src/core/iomgr/resolve_address.h', + 'src/core/iomgr/sockaddr.h', + 'src/core/iomgr/sockaddr_posix.h', + 'src/core/iomgr/sockaddr_utils.h', + 'src/core/iomgr/sockaddr_win32.h', + 'src/core/iomgr/socket_utils_posix.h', + 'src/core/iomgr/socket_windows.h', + 'src/core/iomgr/tcp_client.h', + 'src/core/iomgr/tcp_posix.h', + 'src/core/iomgr/tcp_server.h', + 'src/core/iomgr/tcp_windows.h', + 'src/core/iomgr/time_averaged_stats.h', + 'src/core/iomgr/wakeup_fd_pipe.h', + 'src/core/iomgr/wakeup_fd_posix.h', + 'src/core/json/json.h', + 'src/core/json/json_common.h', + 'src/core/json/json_reader.h', + 'src/core/json/json_writer.h', + 'src/core/profiling/timers.h', + 'src/core/profiling/timers_preciseclock.h', + 'src/core/surface/byte_buffer_queue.h', + 'src/core/surface/call.h', + 'src/core/surface/channel.h', + 'src/core/surface/client.h', + 'src/core/surface/completion_queue.h', + 'src/core/surface/event_string.h', + 'src/core/surface/init.h', + 'src/core/surface/server.h', + 'src/core/surface/surface_trace.h', + 'src/core/transport/chttp2/alpn.h', + 'src/core/transport/chttp2/bin_encoder.h', + 'src/core/transport/chttp2/frame.h', + 'src/core/transport/chttp2/frame_data.h', + 'src/core/transport/chttp2/frame_goaway.h', + 'src/core/transport/chttp2/frame_ping.h', + 'src/core/transport/chttp2/frame_rst_stream.h', + 'src/core/transport/chttp2/frame_settings.h', + 'src/core/transport/chttp2/frame_window_update.h', + 'src/core/transport/chttp2/hpack_parser.h', + 'src/core/transport/chttp2/hpack_table.h', + 'src/core/transport/chttp2/http2_errors.h', + 'src/core/transport/chttp2/huffsyms.h', + 'src/core/transport/chttp2/status_conversion.h', + 'src/core/transport/chttp2/stream_encoder.h', + 'src/core/transport/chttp2/stream_map.h', + 'src/core/transport/chttp2/timeout_encoding.h', + 'src/core/transport/chttp2/varint.h', + 'src/core/transport/chttp2_transport.h', + 'src/core/transport/metadata.h', + 'src/core/transport/stream_op.h', + 'src/core/transport/transport.h', + 'src/core/transport/transport_impl.h', + 'src/core/census/context.h' + cs.header_mappings_dir = '.' # The core library includes its headers as either "src/core/..." or "grpc/...", meaning we have # to tell XCode to look for headers under the "include" subdirectory too. diff --git a/templates/gRPC.podspec.template b/templates/gRPC.podspec.template index 03c303b414..da5ca127fb 100644 --- a/templates/gRPC.podspec.template +++ b/templates/gRPC.podspec.template @@ -41,6 +41,22 @@ def fix_header_name(name): return '/'.join(split_name[:-1] + ['grpc_' + split_name[-1]]) else: return name + +def grpc_files(libs): + out = [] + for lib in libs: + if lib.name in ("grpc", "gpr"): + out.extend(fix_header_name(h) for h in lib.get('headers', [])) + out.extend(fix_header_name(h) for h in lib.get('public_headers', [])) + out.extend(lib.get('src', [])) + return out; + +def grpc_private_headers(libs): + out = [] + for lib in libs: + if lib.name in ("grpc", "gpr"): + out.extend(lib.get('headers', [])) + return out %> Pod::Spec.new do |s| @@ -68,29 +84,9 @@ Pod::Spec.new do |s| # Core cross-platform gRPC library, written in C. s.subspec 'C-Core' do |cs| - cs.source_files = \ -% for lib in libs: -% if lib.name in ("grpc", "gpr"): -% for hdr in lib.get("headers", []): -'${fix_header_name(hdr)}', \ -% endfor -% for hdr in lib.get("public_headers", []): -'${fix_header_name(hdr)}', \ -% endfor -% for src in lib.src: -'${src}', \ -% endfor -% endif -% endfor - - cs.private_header_files = \ -% for lib in libs: -% if lib.name in ("grpc", "gpr"): -% for hdr in lib.get("headers", []): -'${hdr}', \ -% endfor -% endif -% endfor + cs.source_files = ${(',\n' + 22*' ').join('\'%s\'' % f for f in grpc_files(libs))} + + cs.private_header_files = ${(',\n' + 30*' ').join('\'%s\'' % f for f in grpc_private_headers(libs))} cs.header_mappings_dir = '.' # The core library includes its headers as either "src/core/..." or "grpc/...", meaning we have diff --git a/templates/tools/doxygen/Doxyfile.include b/templates/tools/doxygen/Doxyfile.include index 1391016348..2934ebe7d8 100644 --- a/templates/tools/doxygen/Doxyfile.include +++ b/templates/tools/doxygen/Doxyfile.include @@ -778,7 +778,7 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = ${' '.join( +INPUT = ${' \\\n'.join( itertools.chain.from_iterable( target.public_headers + ([] diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++ index f947b7823e..d782dc18f7 100644 --- a/tools/doxygen/Doxyfile.c++ +++ b/tools/doxygen/Doxyfile.c++ @@ -760,7 +760,43 @@ 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++/byte_buffer.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 include/grpc++/config_protobuf.h include/grpc++/create_channel.h include/grpc++/credentials.h 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 include/grpc++/impl/serialization_traits.h include/grpc++/impl/service_type.h include/grpc++/impl/sync.h include/grpc++/impl/sync_cxx11.h include/grpc++/impl/sync_no_cxx11.h include/grpc++/impl/thd.h include/grpc++/impl/thd_cxx11.h include/grpc++/impl/thd_no_cxx11.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++/status_code_enum.h include/grpc++/stream.h include/grpc++/thread_pool_interface.h include/grpc++/time.h +INPUT = 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_interface.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++/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 \ +include/grpc++/impl/serialization_traits.h \ +include/grpc++/impl/service_type.h \ +include/grpc++/impl/sync.h \ +include/grpc++/impl/sync_cxx11.h \ +include/grpc++/impl/sync_no_cxx11.h \ +include/grpc++/impl/thd.h \ +include/grpc++/impl/thd_cxx11.h \ +include/grpc++/impl/thd_no_cxx11.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++/status_code_enum.h \ +include/grpc++/stream.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 # 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 a19f89ac7b..4e0b672b41 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -760,7 +760,73 @@ 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++/byte_buffer.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 include/grpc++/config_protobuf.h include/grpc++/create_channel.h include/grpc++/credentials.h 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 include/grpc++/impl/serialization_traits.h include/grpc++/impl/service_type.h include/grpc++/impl/sync.h include/grpc++/impl/sync_cxx11.h include/grpc++/impl/sync_no_cxx11.h include/grpc++/impl/thd.h include/grpc++/impl/thd_cxx11.h include/grpc++/impl/thd_no_cxx11.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++/status_code_enum.h include/grpc++/stream.h include/grpc++/thread_pool_interface.h include/grpc++/time.h src/cpp/client/secure_credentials.h src/cpp/server/secure_server_credentials.h src/cpp/client/channel.h src/cpp/server/thread_pool.h src/cpp/client/secure_credentials.cc src/cpp/server/secure_server_credentials.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/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 src/cpp/proto/proto_utils.cc src/cpp/server/async_generic_service.cc src/cpp/server/create_default_thread_pool.cc 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.cc src/cpp/util/byte_buffer.cc src/cpp/util/slice.cc src/cpp/util/status.cc src/cpp/util/time.cc +INPUT = 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_interface.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++/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 \ +include/grpc++/impl/serialization_traits.h \ +include/grpc++/impl/service_type.h \ +include/grpc++/impl/sync.h \ +include/grpc++/impl/sync_cxx11.h \ +include/grpc++/impl/sync_no_cxx11.h \ +include/grpc++/impl/thd.h \ +include/grpc++/impl/thd_cxx11.h \ +include/grpc++/impl/thd_no_cxx11.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++/status_code_enum.h \ +include/grpc++/stream.h \ +include/grpc++/thread_pool_interface.h \ +include/grpc++/time.h \ +src/cpp/client/secure_credentials.h \ +src/cpp/server/secure_server_credentials.h \ +src/cpp/client/channel.h \ +src/cpp/server/thread_pool.h \ +src/cpp/client/secure_credentials.cc \ +src/cpp/server/secure_server_credentials.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/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 \ +src/cpp/proto/proto_utils.cc \ +src/cpp/server/async_generic_service.cc \ +src/cpp/server/create_default_thread_pool.cc \ +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.cc \ +src/cpp/util/byte_buffer.cc \ +src/cpp/util/slice.cc \ +src/cpp/util/status.cc \ +src/cpp/util/time.cc # 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.core b/tools/doxygen/Doxyfile.core index 7cc96b2e06..1bfd787528 100644 --- a/tools/doxygen/Doxyfile.core +++ b/tools/doxygen/Doxyfile.core @@ -760,7 +760,41 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = include/grpc/grpc_security.h include/grpc/byte_buffer.h include/grpc/byte_buffer_reader.h include/grpc/compression.h include/grpc/grpc.h include/grpc/status.h include/grpc/census.h include/grpc/support/alloc.h include/grpc/support/atm.h include/grpc/support/atm_gcc_atomic.h include/grpc/support/atm_gcc_sync.h include/grpc/support/atm_win32.h include/grpc/support/cancellable_platform.h include/grpc/support/cmdline.h include/grpc/support/cpu.h include/grpc/support/histogram.h include/grpc/support/host_port.h include/grpc/support/log.h include/grpc/support/log_win32.h include/grpc/support/port_platform.h include/grpc/support/slice.h include/grpc/support/slice_buffer.h include/grpc/support/string_util.h include/grpc/support/subprocess.h include/grpc/support/sync.h include/grpc/support/sync_generic.h include/grpc/support/sync_posix.h include/grpc/support/sync_win32.h include/grpc/support/thd.h include/grpc/support/time.h include/grpc/support/tls.h include/grpc/support/tls_gcc.h include/grpc/support/tls_msvc.h include/grpc/support/tls_pthread.h include/grpc/support/useful.h +INPUT = include/grpc/grpc_security.h \ +include/grpc/byte_buffer.h \ +include/grpc/byte_buffer_reader.h \ +include/grpc/compression.h \ +include/grpc/grpc.h \ +include/grpc/status.h \ +include/grpc/census.h \ +include/grpc/support/alloc.h \ +include/grpc/support/atm.h \ +include/grpc/support/atm_gcc_atomic.h \ +include/grpc/support/atm_gcc_sync.h \ +include/grpc/support/atm_win32.h \ +include/grpc/support/cancellable_platform.h \ +include/grpc/support/cmdline.h \ +include/grpc/support/cpu.h \ +include/grpc/support/histogram.h \ +include/grpc/support/host_port.h \ +include/grpc/support/log.h \ +include/grpc/support/log_win32.h \ +include/grpc/support/port_platform.h \ +include/grpc/support/slice.h \ +include/grpc/support/slice_buffer.h \ +include/grpc/support/string_util.h \ +include/grpc/support/subprocess.h \ +include/grpc/support/sync.h \ +include/grpc/support/sync_generic.h \ +include/grpc/support/sync_posix.h \ +include/grpc/support/sync_win32.h \ +include/grpc/support/thd.h \ +include/grpc/support/time.h \ +include/grpc/support/tls.h \ +include/grpc/support/tls_gcc.h \ +include/grpc/support/tls_msvc.h \ +include/grpc/support/tls_pthread.h \ +include/grpc/support/useful.h # 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.core.internal b/tools/doxygen/Doxyfile.core.internal index ce18bb4f27..0fa529f89e 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -760,7 +760,302 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = include/grpc/grpc_security.h include/grpc/byte_buffer.h include/grpc/byte_buffer_reader.h include/grpc/compression.h include/grpc/grpc.h include/grpc/status.h include/grpc/census.h src/core/httpcli/format_request.h src/core/httpcli/httpcli.h src/core/httpcli/httpcli_security_connector.h src/core/httpcli/parser.h src/core/security/auth_filters.h src/core/security/base64.h src/core/security/credentials.h src/core/security/json_token.h src/core/security/secure_endpoint.h src/core/security/secure_transport_setup.h src/core/security/security_connector.h src/core/security/security_context.h 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/grpc_context.h src/core/channel/census_filter.h src/core/channel/channel_args.h src/core/channel/channel_stack.h src/core/channel/child_channel.h src/core/channel/client_channel.h src/core/channel/client_setup.h src/core/channel/connected_channel.h src/core/channel/context.h src/core/channel/http_client_filter.h src/core/channel/http_server_filter.h src/core/channel/noop_filter.h src/core/compression/message_compress.h src/core/debug/trace.h src/core/iomgr/alarm.h src/core/iomgr/alarm_heap.h src/core/iomgr/alarm_internal.h src/core/iomgr/endpoint.h src/core/iomgr/endpoint_pair.h src/core/iomgr/fd_posix.h src/core/iomgr/iocp_windows.h src/core/iomgr/iomgr.h src/core/iomgr/iomgr_internal.h src/core/iomgr/iomgr_posix.h src/core/iomgr/pollset.h src/core/iomgr/pollset_kick_posix.h src/core/iomgr/pollset_posix.h src/core/iomgr/pollset_set.h src/core/iomgr/pollset_set_posix.h src/core/iomgr/pollset_set_windows.h src/core/iomgr/pollset_windows.h src/core/iomgr/resolve_address.h src/core/iomgr/sockaddr.h src/core/iomgr/sockaddr_posix.h src/core/iomgr/sockaddr_utils.h src/core/iomgr/sockaddr_win32.h src/core/iomgr/socket_utils_posix.h src/core/iomgr/socket_windows.h src/core/iomgr/tcp_client.h src/core/iomgr/tcp_posix.h src/core/iomgr/tcp_server.h src/core/iomgr/tcp_windows.h src/core/iomgr/time_averaged_stats.h src/core/iomgr/wakeup_fd_pipe.h src/core/iomgr/wakeup_fd_posix.h src/core/json/json.h src/core/json/json_common.h src/core/json/json_reader.h src/core/json/json_writer.h src/core/profiling/timers.h src/core/profiling/timers_preciseclock.h src/core/surface/byte_buffer_queue.h src/core/surface/call.h src/core/surface/channel.h src/core/surface/client.h src/core/surface/completion_queue.h src/core/surface/event_string.h src/core/surface/init.h src/core/surface/server.h src/core/surface/surface_trace.h src/core/transport/chttp2/alpn.h src/core/transport/chttp2/bin_encoder.h src/core/transport/chttp2/frame.h src/core/transport/chttp2/frame_data.h src/core/transport/chttp2/frame_goaway.h src/core/transport/chttp2/frame_ping.h src/core/transport/chttp2/frame_rst_stream.h src/core/transport/chttp2/frame_settings.h src/core/transport/chttp2/frame_window_update.h src/core/transport/chttp2/hpack_parser.h src/core/transport/chttp2/hpack_table.h src/core/transport/chttp2/http2_errors.h src/core/transport/chttp2/huffsyms.h src/core/transport/chttp2/status_conversion.h src/core/transport/chttp2/stream_encoder.h src/core/transport/chttp2/stream_map.h src/core/transport/chttp2/timeout_encoding.h src/core/transport/chttp2/varint.h src/core/transport/chttp2_transport.h src/core/transport/metadata.h src/core/transport/stream_op.h src/core/transport/transport.h src/core/transport/transport_impl.h src/core/census/context.h src/core/httpcli/format_request.c src/core/httpcli/httpcli.c src/core/httpcli/httpcli_security_connector.c src/core/httpcli/parser.c src/core/security/base64.c src/core/security/client_auth_filter.c src/core/security/credentials.c src/core/security/credentials_metadata.c src/core/security/credentials_posix.c src/core/security/credentials_win32.c src/core/security/google_default_credentials.c src/core/security/json_token.c src/core/security/secure_endpoint.c src/core/security/secure_transport_setup.c src/core/security/security_connector.c src/core/security/security_context.c src/core/security/server_auth_filter.c src/core/security/server_secure_chttp2.c src/core/surface/init_secure.c src/core/surface/secure_channel_create.c src/core/tsi/fake_transport_security.c src/core/tsi/ssl_transport_security.c src/core/tsi/transport_security.c src/core/census/grpc_context.c src/core/channel/channel_args.c src/core/channel/channel_stack.c src/core/channel/child_channel.c src/core/channel/client_channel.c src/core/channel/client_setup.c src/core/channel/connected_channel.c src/core/channel/http_client_filter.c src/core/channel/http_server_filter.c src/core/channel/noop_filter.c src/core/compression/algorithm.c src/core/compression/message_compress.c src/core/debug/trace.c src/core/iomgr/alarm.c src/core/iomgr/alarm_heap.c src/core/iomgr/endpoint.c src/core/iomgr/endpoint_pair_posix.c src/core/iomgr/endpoint_pair_windows.c src/core/iomgr/fd_posix.c src/core/iomgr/iocp_windows.c src/core/iomgr/iomgr.c src/core/iomgr/iomgr_posix.c src/core/iomgr/iomgr_windows.c src/core/iomgr/pollset_kick_posix.c src/core/iomgr/pollset_multipoller_with_epoll.c src/core/iomgr/pollset_multipoller_with_poll_posix.c src/core/iomgr/pollset_posix.c src/core/iomgr/pollset_set_posix.c src/core/iomgr/pollset_set_windows.c src/core/iomgr/pollset_windows.c src/core/iomgr/resolve_address_posix.c src/core/iomgr/resolve_address_windows.c src/core/iomgr/sockaddr_utils.c src/core/iomgr/socket_utils_common_posix.c src/core/iomgr/socket_utils_linux.c src/core/iomgr/socket_utils_posix.c src/core/iomgr/socket_windows.c src/core/iomgr/tcp_client_posix.c src/core/iomgr/tcp_client_windows.c src/core/iomgr/tcp_posix.c src/core/iomgr/tcp_server_posix.c src/core/iomgr/tcp_server_windows.c src/core/iomgr/tcp_windows.c src/core/iomgr/time_averaged_stats.c src/core/iomgr/wakeup_fd_eventfd.c src/core/iomgr/wakeup_fd_nospecial.c src/core/iomgr/wakeup_fd_pipe.c src/core/iomgr/wakeup_fd_posix.c src/core/json/json.c src/core/json/json_reader.c src/core/json/json_string.c src/core/json/json_writer.c src/core/profiling/basic_timers.c src/core/profiling/stap_timers.c src/core/surface/byte_buffer.c src/core/surface/byte_buffer_queue.c src/core/surface/byte_buffer_reader.c src/core/surface/call.c src/core/surface/call_details.c src/core/surface/call_log_batch.c src/core/surface/channel.c src/core/surface/channel_create.c src/core/surface/client.c src/core/surface/completion_queue.c src/core/surface/event_string.c src/core/surface/init.c src/core/surface/lame_client.c src/core/surface/metadata_array.c src/core/surface/server.c src/core/surface/server_chttp2.c src/core/surface/server_create.c src/core/surface/surface_trace.c src/core/transport/chttp2/alpn.c src/core/transport/chttp2/bin_encoder.c src/core/transport/chttp2/frame_data.c src/core/transport/chttp2/frame_goaway.c src/core/transport/chttp2/frame_ping.c src/core/transport/chttp2/frame_rst_stream.c src/core/transport/chttp2/frame_settings.c src/core/transport/chttp2/frame_window_update.c src/core/transport/chttp2/hpack_parser.c src/core/transport/chttp2/hpack_table.c src/core/transport/chttp2/huffsyms.c src/core/transport/chttp2/status_conversion.c src/core/transport/chttp2/stream_encoder.c src/core/transport/chttp2/stream_map.c src/core/transport/chttp2/timeout_encoding.c src/core/transport/chttp2/varint.c src/core/transport/chttp2_transport.c src/core/transport/metadata.c src/core/transport/stream_op.c src/core/transport/transport.c src/core/transport/transport_op_string.c src/core/census/context.c src/core/census/initialize.c include/grpc/support/alloc.h include/grpc/support/atm.h include/grpc/support/atm_gcc_atomic.h include/grpc/support/atm_gcc_sync.h include/grpc/support/atm_win32.h include/grpc/support/cancellable_platform.h include/grpc/support/cmdline.h include/grpc/support/cpu.h include/grpc/support/histogram.h include/grpc/support/host_port.h include/grpc/support/log.h include/grpc/support/log_win32.h include/grpc/support/port_platform.h include/grpc/support/slice.h include/grpc/support/slice_buffer.h include/grpc/support/string_util.h include/grpc/support/subprocess.h include/grpc/support/sync.h include/grpc/support/sync_generic.h include/grpc/support/sync_posix.h include/grpc/support/sync_win32.h include/grpc/support/thd.h include/grpc/support/time.h include/grpc/support/tls.h include/grpc/support/tls_gcc.h include/grpc/support/tls_msvc.h include/grpc/support/tls_pthread.h include/grpc/support/useful.h src/core/support/env.h src/core/support/file.h src/core/support/murmur_hash.h src/core/support/string.h src/core/support/string_win32.h src/core/support/thd_internal.h src/core/support/alloc.c src/core/support/cancellable.c src/core/support/cmdline.c src/core/support/cpu_iphone.c src/core/support/cpu_linux.c src/core/support/cpu_posix.c src/core/support/cpu_windows.c src/core/support/env_linux.c src/core/support/env_posix.c src/core/support/env_win32.c src/core/support/file.c src/core/support/file_posix.c src/core/support/file_win32.c src/core/support/histogram.c src/core/support/host_port.c src/core/support/log.c src/core/support/log_android.c src/core/support/log_linux.c src/core/support/log_posix.c src/core/support/log_win32.c src/core/support/murmur_hash.c src/core/support/slice.c src/core/support/slice_buffer.c src/core/support/string.c src/core/support/string_posix.c src/core/support/string_win32.c src/core/support/subprocess_posix.c src/core/support/sync.c src/core/support/sync_posix.c src/core/support/sync_win32.c src/core/support/thd.c src/core/support/thd_posix.c src/core/support/thd_win32.c src/core/support/time.c src/core/support/time_posix.c src/core/support/time_win32.c src/core/support/tls_pthread.c +INPUT = include/grpc/grpc_security.h \ +include/grpc/byte_buffer.h \ +include/grpc/byte_buffer_reader.h \ +include/grpc/compression.h \ +include/grpc/grpc.h \ +include/grpc/status.h \ +include/grpc/census.h \ +src/core/httpcli/format_request.h \ +src/core/httpcli/httpcli.h \ +src/core/httpcli/httpcli_security_connector.h \ +src/core/httpcli/parser.h \ +src/core/security/auth_filters.h \ +src/core/security/base64.h \ +src/core/security/credentials.h \ +src/core/security/json_token.h \ +src/core/security/secure_endpoint.h \ +src/core/security/secure_transport_setup.h \ +src/core/security/security_connector.h \ +src/core/security/security_context.h \ +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/grpc_context.h \ +src/core/channel/census_filter.h \ +src/core/channel/channel_args.h \ +src/core/channel/channel_stack.h \ +src/core/channel/child_channel.h \ +src/core/channel/client_channel.h \ +src/core/channel/client_setup.h \ +src/core/channel/connected_channel.h \ +src/core/channel/context.h \ +src/core/channel/http_client_filter.h \ +src/core/channel/http_server_filter.h \ +src/core/channel/noop_filter.h \ +src/core/compression/message_compress.h \ +src/core/debug/trace.h \ +src/core/iomgr/alarm.h \ +src/core/iomgr/alarm_heap.h \ +src/core/iomgr/alarm_internal.h \ +src/core/iomgr/endpoint.h \ +src/core/iomgr/endpoint_pair.h \ +src/core/iomgr/fd_posix.h \ +src/core/iomgr/iocp_windows.h \ +src/core/iomgr/iomgr.h \ +src/core/iomgr/iomgr_internal.h \ +src/core/iomgr/iomgr_posix.h \ +src/core/iomgr/pollset.h \ +src/core/iomgr/pollset_kick_posix.h \ +src/core/iomgr/pollset_posix.h \ +src/core/iomgr/pollset_set.h \ +src/core/iomgr/pollset_set_posix.h \ +src/core/iomgr/pollset_set_windows.h \ +src/core/iomgr/pollset_windows.h \ +src/core/iomgr/resolve_address.h \ +src/core/iomgr/sockaddr.h \ +src/core/iomgr/sockaddr_posix.h \ +src/core/iomgr/sockaddr_utils.h \ +src/core/iomgr/sockaddr_win32.h \ +src/core/iomgr/socket_utils_posix.h \ +src/core/iomgr/socket_windows.h \ +src/core/iomgr/tcp_client.h \ +src/core/iomgr/tcp_posix.h \ +src/core/iomgr/tcp_server.h \ +src/core/iomgr/tcp_windows.h \ +src/core/iomgr/time_averaged_stats.h \ +src/core/iomgr/wakeup_fd_pipe.h \ +src/core/iomgr/wakeup_fd_posix.h \ +src/core/json/json.h \ +src/core/json/json_common.h \ +src/core/json/json_reader.h \ +src/core/json/json_writer.h \ +src/core/profiling/timers.h \ +src/core/profiling/timers_preciseclock.h \ +src/core/surface/byte_buffer_queue.h \ +src/core/surface/call.h \ +src/core/surface/channel.h \ +src/core/surface/client.h \ +src/core/surface/completion_queue.h \ +src/core/surface/event_string.h \ +src/core/surface/init.h \ +src/core/surface/server.h \ +src/core/surface/surface_trace.h \ +src/core/transport/chttp2/alpn.h \ +src/core/transport/chttp2/bin_encoder.h \ +src/core/transport/chttp2/frame.h \ +src/core/transport/chttp2/frame_data.h \ +src/core/transport/chttp2/frame_goaway.h \ +src/core/transport/chttp2/frame_ping.h \ +src/core/transport/chttp2/frame_rst_stream.h \ +src/core/transport/chttp2/frame_settings.h \ +src/core/transport/chttp2/frame_window_update.h \ +src/core/transport/chttp2/hpack_parser.h \ +src/core/transport/chttp2/hpack_table.h \ +src/core/transport/chttp2/http2_errors.h \ +src/core/transport/chttp2/huffsyms.h \ +src/core/transport/chttp2/status_conversion.h \ +src/core/transport/chttp2/stream_encoder.h \ +src/core/transport/chttp2/stream_map.h \ +src/core/transport/chttp2/timeout_encoding.h \ +src/core/transport/chttp2/varint.h \ +src/core/transport/chttp2_transport.h \ +src/core/transport/metadata.h \ +src/core/transport/stream_op.h \ +src/core/transport/transport.h \ +src/core/transport/transport_impl.h \ +src/core/census/context.h \ +src/core/httpcli/format_request.c \ +src/core/httpcli/httpcli.c \ +src/core/httpcli/httpcli_security_connector.c \ +src/core/httpcli/parser.c \ +src/core/security/base64.c \ +src/core/security/client_auth_filter.c \ +src/core/security/credentials.c \ +src/core/security/credentials_metadata.c \ +src/core/security/credentials_posix.c \ +src/core/security/credentials_win32.c \ +src/core/security/google_default_credentials.c \ +src/core/security/json_token.c \ +src/core/security/secure_endpoint.c \ +src/core/security/secure_transport_setup.c \ +src/core/security/security_connector.c \ +src/core/security/security_context.c \ +src/core/security/server_auth_filter.c \ +src/core/security/server_secure_chttp2.c \ +src/core/surface/init_secure.c \ +src/core/surface/secure_channel_create.c \ +src/core/tsi/fake_transport_security.c \ +src/core/tsi/ssl_transport_security.c \ +src/core/tsi/transport_security.c \ +src/core/census/grpc_context.c \ +src/core/channel/channel_args.c \ +src/core/channel/channel_stack.c \ +src/core/channel/child_channel.c \ +src/core/channel/client_channel.c \ +src/core/channel/client_setup.c \ +src/core/channel/connected_channel.c \ +src/core/channel/http_client_filter.c \ +src/core/channel/http_server_filter.c \ +src/core/channel/noop_filter.c \ +src/core/compression/algorithm.c \ +src/core/compression/message_compress.c \ +src/core/debug/trace.c \ +src/core/iomgr/alarm.c \ +src/core/iomgr/alarm_heap.c \ +src/core/iomgr/endpoint.c \ +src/core/iomgr/endpoint_pair_posix.c \ +src/core/iomgr/endpoint_pair_windows.c \ +src/core/iomgr/fd_posix.c \ +src/core/iomgr/iocp_windows.c \ +src/core/iomgr/iomgr.c \ +src/core/iomgr/iomgr_posix.c \ +src/core/iomgr/iomgr_windows.c \ +src/core/iomgr/pollset_kick_posix.c \ +src/core/iomgr/pollset_multipoller_with_epoll.c \ +src/core/iomgr/pollset_multipoller_with_poll_posix.c \ +src/core/iomgr/pollset_posix.c \ +src/core/iomgr/pollset_set_posix.c \ +src/core/iomgr/pollset_set_windows.c \ +src/core/iomgr/pollset_windows.c \ +src/core/iomgr/resolve_address_posix.c \ +src/core/iomgr/resolve_address_windows.c \ +src/core/iomgr/sockaddr_utils.c \ +src/core/iomgr/socket_utils_common_posix.c \ +src/core/iomgr/socket_utils_linux.c \ +src/core/iomgr/socket_utils_posix.c \ +src/core/iomgr/socket_windows.c \ +src/core/iomgr/tcp_client_posix.c \ +src/core/iomgr/tcp_client_windows.c \ +src/core/iomgr/tcp_posix.c \ +src/core/iomgr/tcp_server_posix.c \ +src/core/iomgr/tcp_server_windows.c \ +src/core/iomgr/tcp_windows.c \ +src/core/iomgr/time_averaged_stats.c \ +src/core/iomgr/wakeup_fd_eventfd.c \ +src/core/iomgr/wakeup_fd_nospecial.c \ +src/core/iomgr/wakeup_fd_pipe.c \ +src/core/iomgr/wakeup_fd_posix.c \ +src/core/json/json.c \ +src/core/json/json_reader.c \ +src/core/json/json_string.c \ +src/core/json/json_writer.c \ +src/core/profiling/basic_timers.c \ +src/core/profiling/stap_timers.c \ +src/core/surface/byte_buffer.c \ +src/core/surface/byte_buffer_queue.c \ +src/core/surface/byte_buffer_reader.c \ +src/core/surface/call.c \ +src/core/surface/call_details.c \ +src/core/surface/call_log_batch.c \ +src/core/surface/channel.c \ +src/core/surface/channel_create.c \ +src/core/surface/client.c \ +src/core/surface/completion_queue.c \ +src/core/surface/event_string.c \ +src/core/surface/init.c \ +src/core/surface/lame_client.c \ +src/core/surface/metadata_array.c \ +src/core/surface/server.c \ +src/core/surface/server_chttp2.c \ +src/core/surface/server_create.c \ +src/core/surface/surface_trace.c \ +src/core/transport/chttp2/alpn.c \ +src/core/transport/chttp2/bin_encoder.c \ +src/core/transport/chttp2/frame_data.c \ +src/core/transport/chttp2/frame_goaway.c \ +src/core/transport/chttp2/frame_ping.c \ +src/core/transport/chttp2/frame_rst_stream.c \ +src/core/transport/chttp2/frame_settings.c \ +src/core/transport/chttp2/frame_window_update.c \ +src/core/transport/chttp2/hpack_parser.c \ +src/core/transport/chttp2/hpack_table.c \ +src/core/transport/chttp2/huffsyms.c \ +src/core/transport/chttp2/status_conversion.c \ +src/core/transport/chttp2/stream_encoder.c \ +src/core/transport/chttp2/stream_map.c \ +src/core/transport/chttp2/timeout_encoding.c \ +src/core/transport/chttp2/varint.c \ +src/core/transport/chttp2_transport.c \ +src/core/transport/metadata.c \ +src/core/transport/stream_op.c \ +src/core/transport/transport.c \ +src/core/transport/transport_op_string.c \ +src/core/census/context.c \ +src/core/census/initialize.c \ +include/grpc/support/alloc.h \ +include/grpc/support/atm.h \ +include/grpc/support/atm_gcc_atomic.h \ +include/grpc/support/atm_gcc_sync.h \ +include/grpc/support/atm_win32.h \ +include/grpc/support/cancellable_platform.h \ +include/grpc/support/cmdline.h \ +include/grpc/support/cpu.h \ +include/grpc/support/histogram.h \ +include/grpc/support/host_port.h \ +include/grpc/support/log.h \ +include/grpc/support/log_win32.h \ +include/grpc/support/port_platform.h \ +include/grpc/support/slice.h \ +include/grpc/support/slice_buffer.h \ +include/grpc/support/string_util.h \ +include/grpc/support/subprocess.h \ +include/grpc/support/sync.h \ +include/grpc/support/sync_generic.h \ +include/grpc/support/sync_posix.h \ +include/grpc/support/sync_win32.h \ +include/grpc/support/thd.h \ +include/grpc/support/time.h \ +include/grpc/support/tls.h \ +include/grpc/support/tls_gcc.h \ +include/grpc/support/tls_msvc.h \ +include/grpc/support/tls_pthread.h \ +include/grpc/support/useful.h \ +src/core/support/env.h \ +src/core/support/file.h \ +src/core/support/murmur_hash.h \ +src/core/support/string.h \ +src/core/support/string_win32.h \ +src/core/support/thd_internal.h \ +src/core/support/alloc.c \ +src/core/support/cancellable.c \ +src/core/support/cmdline.c \ +src/core/support/cpu_iphone.c \ +src/core/support/cpu_linux.c \ +src/core/support/cpu_posix.c \ +src/core/support/cpu_windows.c \ +src/core/support/env_linux.c \ +src/core/support/env_posix.c \ +src/core/support/env_win32.c \ +src/core/support/file.c \ +src/core/support/file_posix.c \ +src/core/support/file_win32.c \ +src/core/support/histogram.c \ +src/core/support/host_port.c \ +src/core/support/log.c \ +src/core/support/log_android.c \ +src/core/support/log_linux.c \ +src/core/support/log_posix.c \ +src/core/support/log_win32.c \ +src/core/support/murmur_hash.c \ +src/core/support/slice.c \ +src/core/support/slice_buffer.c \ +src/core/support/string.c \ +src/core/support/string_posix.c \ +src/core/support/string_win32.c \ +src/core/support/subprocess_posix.c \ +src/core/support/sync.c \ +src/core/support/sync_posix.c \ +src/core/support/sync_win32.c \ +src/core/support/thd.c \ +src/core/support/thd_posix.c \ +src/core/support/thd_win32.c \ +src/core/support/time.c \ +src/core/support/time_posix.c \ +src/core/support/time_win32.c \ +src/core/support/tls_pthread.c # 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 -- cgit v1.2.3 From d8c04b3603242c1c1d7e0ce779b19858449c4290 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Wed, 24 Jun 2015 02:21:17 +0200 Subject: std::function is no longer implicitly included. Fixing this. --- include/grpc++/impl/call.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/grpc++/impl/call.h b/include/grpc++/impl/call.h index 33e66816f5..64fa5d6efb 100644 --- a/include/grpc++/impl/call.h +++ b/include/grpc++/impl/call.h @@ -41,6 +41,7 @@ #include #include +#include #include #include -- cgit v1.2.3 From 3857d233f4b6a6abf0c8a287296be036127ab3df Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Wed, 24 Jun 2015 19:32:51 +0200 Subject: Let's inform the system of the lock to unlock... Fixes #2190. In grpc_pollset_work we need to pass down which lock to unlock before actually doing something. --- src/core/iomgr/pollset_windows.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/iomgr/pollset_windows.c b/src/core/iomgr/pollset_windows.c index d0507af960..495627ee0a 100644 --- a/src/core/iomgr/pollset_windows.c +++ b/src/core/iomgr/pollset_windows.c @@ -68,10 +68,10 @@ int grpc_pollset_work(grpc_pollset *pollset, gpr_timespec deadline) { if (gpr_time_cmp(now, deadline) > 0) { return 0 /* GPR_FALSE */; } - if (grpc_maybe_call_delayed_callbacks(NULL, 1 /* GPR_TRUE */)) { + if (grpc_maybe_call_delayed_callbacks(&pollset->mu, 1 /* GPR_TRUE */)) { return 1 /* GPR_TRUE */; } - if (grpc_alarm_check(NULL, now, &deadline)) { + if (grpc_alarm_check(&pollset->mu, now, &deadline)) { return 1 /* GPR_TRUE */; } gpr_cv_wait(&pollset->cv, &pollset->mu, deadline); -- cgit v1.2.3 From e57dd66c9d2cb9ee804d2b3c384ac8b19d86133a Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Wed, 24 Jun 2015 23:28:05 +0200 Subject: Cascade-kick pollsets when shutting down. In the case we're using a threadpool, depending on where the threads are waiting in completion queue's next, they'll get stuck on shutdown because we're only kicking one of them. Instead, let's cascade-kick the pollsets when we shutdown so that we make sure all of them are exitting properly. --- 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 bd0fabf9da..063a23cfb1 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -208,6 +208,7 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, } if (cc->shutdown) { ev = create_shutdown_event(); + grpc_pollset_kick(&cc->pollset); break; } if (!grpc_pollset_work(&cc->pollset, deadline)) { -- cgit v1.2.3 From fcb16e1a9c8558a36f7875733b8c9a19368595c8 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Wed, 24 Jun 2015 23:45:30 +0200 Subject: On pollset shutdown, we need to unconditionally start the kick cascade. --- src/core/iomgr/pollset_windows.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/iomgr/pollset_windows.c b/src/core/iomgr/pollset_windows.c index d0507af960..1f750f6d39 100644 --- a/src/core/iomgr/pollset_windows.c +++ b/src/core/iomgr/pollset_windows.c @@ -39,6 +39,7 @@ #include "src/core/iomgr/alarm_internal.h" #include "src/core/iomgr/iomgr_internal.h" +#include "src/core/iomgr/pollset.h" #include "src/core/iomgr/pollset_windows.h" /* There isn't really any such thing as a pollset under Windows, due to the @@ -54,6 +55,7 @@ void grpc_pollset_init(grpc_pollset *pollset) { void grpc_pollset_shutdown(grpc_pollset *pollset, void (*shutdown_done)(void *arg), void *shutdown_done_arg) { + grpc_pollset_kick(pollset); shutdown_done(shutdown_done_arg); } -- cgit v1.2.3 From 7bce516b3b8632bfe8a7d1af9ae258ed37c93d7b Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Wed, 24 Jun 2015 15:36:40 -0700 Subject: Spelling fix: UnImplementedService -> UnimplementedService --- test/proto/test.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/proto/test.proto b/test/proto/test.proto index b493dcd049..1214152513 100644 --- a/test/proto/test.proto +++ b/test/proto/test.proto @@ -75,7 +75,7 @@ service TestService { // A simple service NOT implemented at servers so clients can test for // that case. -service UnImplementedService { +service UnimplementedService { // A call that no server should implement rpc UnimplementedCall(grpc.testing.Empty) returns(grpc.testing.Empty); } -- cgit v1.2.3 From 4a77f3b311c0859a97a8b69d39f90da21330ffba Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 24 Jun 2015 16:21:51 -0700 Subject: Remove const cast warning in GRPCSecureChannel.m --- src/objective-c/GRPCClient/private/GRPCSecureChannel.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/objective-c/GRPCClient/private/GRPCSecureChannel.m b/src/objective-c/GRPCClient/private/GRPCSecureChannel.m index 2cbc6e0f83..0f6eece885 100644 --- a/src/objective-c/GRPCClient/private/GRPCSecureChannel.m +++ b/src/objective-c/GRPCClient/private/GRPCSecureChannel.m @@ -38,7 +38,7 @@ @implementation GRPCSecureChannel - (instancetype)initWithHost:(NSString *)host { - static const grpc_credentials *kCredentials; + static grpc_credentials *kCredentials; static dispatch_once_t loading; dispatch_once(&loading, ^{ // Do not use NSBundle.mainBundle, as it's nil for tests of library projects. -- cgit v1.2.3