diff options
author | Craig Tiller <craig.tiller@gmail.com> | 2015-02-23 17:13:40 -0800 |
---|---|---|
committer | Craig Tiller <craig.tiller@gmail.com> | 2015-02-23 17:13:40 -0800 |
commit | b9d91eb454ae7f72926e3c9f1dc6f723d23d51e2 (patch) | |
tree | 333eed8b5e106faffe927bc437b831622ed5da2e /src | |
parent | e4fe844b67191b46ee5d1942714e43cb2e12672b (diff) | |
parent | 0b9dfcf02a09d480af681e9c3c1b1f85f5f2978d (diff) |
Merge github.com:google/grpc into deprecate-c++
Conflicts:
test/cpp/end2end/async_end2end_test.cc
test/cpp/end2end/end2end_test.cc
Diffstat (limited to 'src')
59 files changed, 4731 insertions, 1412 deletions
diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc index f10824e6b0..891032343b 100644 --- a/src/compiler/cpp_generator.cc +++ b/src/compiler/cpp_generator.cc @@ -183,34 +183,40 @@ void PrintHeaderClientMethod(google::protobuf::io::Printer *printer, printer->Print(*vars, "::grpc::Status $Method$(::grpc::ClientContext* context, " "const $Request$& request, $Response$* response);\n"); - printer->Print(*vars, - "::grpc::ClientAsyncResponseReader< $Response$>* " - "$Method$(::grpc::ClientContext* context, " - "const $Request$& request, " - "::grpc::CompletionQueue* cq, void* tag);\n"); + printer->Print( + *vars, + "std::unique_ptr< ::grpc::ClientAsyncResponseReader< $Response$>> " + "$Method$(::grpc::ClientContext* context, " + "const $Request$& request, " + "::grpc::CompletionQueue* cq, void* tag);\n"); } else if (ClientOnlyStreaming(method)) { - printer->Print(*vars, - "::grpc::ClientWriter< $Request$>* $Method$(" - "::grpc::ClientContext* context, $Response$* response);\n"); - printer->Print(*vars, - "::grpc::ClientAsyncWriter< $Request$>* $Method$(" - "::grpc::ClientContext* context, $Response$* response, " - "::grpc::CompletionQueue* cq, void* tag);\n"); + printer->Print( + *vars, + "std::unique_ptr< ::grpc::ClientWriter< $Request$>> $Method$(" + "::grpc::ClientContext* context, $Response$* response);\n"); + printer->Print( + *vars, + "std::unique_ptr< ::grpc::ClientAsyncWriter< $Request$>> $Method$(" + "::grpc::ClientContext* context, $Response$* response, " + "::grpc::CompletionQueue* cq, void* tag);\n"); } else if (ServerOnlyStreaming(method)) { printer->Print( *vars, - "::grpc::ClientReader< $Response$>* $Method$(" + "std::unique_ptr< ::grpc::ClientReader< $Response$>> $Method$(" "::grpc::ClientContext* context, const $Request$& request);\n"); - printer->Print(*vars, - "::grpc::ClientAsyncReader< $Response$>* $Method$(" - "::grpc::ClientContext* context, const $Request$& request, " - "::grpc::CompletionQueue* cq, void* tag);\n"); + printer->Print( + *vars, + "std::unique_ptr< ::grpc::ClientAsyncReader< $Response$>> $Method$(" + "::grpc::ClientContext* context, const $Request$& request, " + "::grpc::CompletionQueue* cq, void* tag);\n"); } else if (BidiStreaming(method)) { + printer->Print( + *vars, + "std::unique_ptr< ::grpc::ClientReaderWriter< $Request$, $Response$>> " + "$Method$(::grpc::ClientContext* context);\n"); printer->Print(*vars, - "::grpc::ClientReaderWriter< $Request$, $Response$>* " - "$Method$(::grpc::ClientContext* context);\n"); - printer->Print(*vars, - "::grpc::ClientAsyncReaderWriter< $Request$, $Response$>* " + "std::unique_ptr< ::grpc::ClientAsyncReaderWriter< " + "$Request$, $Response$>> " "$Method$(::grpc::ClientContext* context, " "::grpc::CompletionQueue* cq, void* tag);\n"); } @@ -309,7 +315,8 @@ void PrintHeaderService(google::protobuf::io::Printer *printer, printer->Outdent(); printer->Print("};\n"); printer->Print( - "static Stub* NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& " + "static std::unique_ptr<Stub> NewStub(const std::shared_ptr< " + "::grpc::ChannelInterface>& " "channel);\n"); printer->Print("\n"); @@ -380,91 +387,101 @@ void PrintSourceClientMethod(google::protobuf::io::Printer *printer, "::grpc::RpcMethod($Service$_method_names[$Idx$]), " "context, request, response);\n" "}\n\n"); + printer->Print( + *vars, + "std::unique_ptr< ::grpc::ClientAsyncResponseReader< $Response$>> " + "$Service$::Stub::$Method$(::grpc::ClientContext* context, " + "const $Request$& request, " + "::grpc::CompletionQueue* cq, void* tag) {\n"); printer->Print(*vars, - "::grpc::ClientAsyncResponseReader< $Response$>* " - "$Service$::Stub::$Method$(::grpc::ClientContext* context, " - "const $Request$& request, " - "::grpc::CompletionQueue* cq, void* tag) {\n"); - printer->Print(*vars, - " return new ::grpc::ClientAsyncResponseReader< $Response$>(" + " return std::unique_ptr< " + "::grpc::ClientAsyncResponseReader< $Response$>>(new " + "::grpc::ClientAsyncResponseReader< $Response$>(" "channel(), cq, " "::grpc::RpcMethod($Service$_method_names[$Idx$]), " - "context, request, tag);\n" + "context, request, tag));\n" "}\n\n"); } else if (ClientOnlyStreaming(method)) { - printer->Print( - *vars, - "::grpc::ClientWriter< $Request$>* $Service$::Stub::$Method$(" - "::grpc::ClientContext* context, $Response$* response) {\n"); printer->Print(*vars, - " return new ::grpc::ClientWriter< $Request$>(" + "std::unique_ptr< ::grpc::ClientWriter< $Request$>> " + "$Service$::Stub::$Method$(" + "::grpc::ClientContext* context, $Response$* response) {\n"); + printer->Print(*vars, + " return std::unique_ptr< ::grpc::ClientWriter< " + "$Request$>>(new ::grpc::ClientWriter< $Request$>(" "channel()," "::grpc::RpcMethod($Service$_method_names[$Idx$], " "::grpc::RpcMethod::RpcType::CLIENT_STREAMING), " - "context, response);\n" + "context, response));\n" "}\n\n"); - printer->Print( - *vars, - "::grpc::ClientAsyncWriter< $Request$>* $Service$::Stub::$Method$(" - "::grpc::ClientContext* context, $Response$* response, " - "::grpc::CompletionQueue* cq, void* tag) {\n"); printer->Print(*vars, - " return new ::grpc::ClientAsyncWriter< $Request$>(" + "std::unique_ptr< ::grpc::ClientAsyncWriter< $Request$>> " + "$Service$::Stub::$Method$(" + "::grpc::ClientContext* context, $Response$* response, " + "::grpc::CompletionQueue* cq, void* tag) {\n"); + printer->Print(*vars, + " return std::unique_ptr< ::grpc::ClientAsyncWriter< " + "$Request$>>(new ::grpc::ClientAsyncWriter< $Request$>(" "channel(), cq, " "::grpc::RpcMethod($Service$_method_names[$Idx$], " "::grpc::RpcMethod::RpcType::CLIENT_STREAMING), " - "context, response, tag);\n" + "context, response, tag));\n" "}\n\n"); } else if (ServerOnlyStreaming(method)) { printer->Print( *vars, - "::grpc::ClientReader< $Response$>* $Service$::Stub::$Method$(" + "std::unique_ptr< ::grpc::ClientReader< $Response$>> " + "$Service$::Stub::$Method$(" "::grpc::ClientContext* context, const $Request$& request) {\n"); printer->Print(*vars, - " return new ::grpc::ClientReader< $Response$>(" + " return std::unique_ptr< ::grpc::ClientReader< " + "$Response$>>(new ::grpc::ClientReader< $Response$>(" "channel()," "::grpc::RpcMethod($Service$_method_names[$Idx$], " "::grpc::RpcMethod::RpcType::SERVER_STREAMING), " - "context, request);\n" + "context, request));\n" "}\n\n"); - printer->Print( - *vars, - "::grpc::ClientAsyncReader< $Response$>* $Service$::Stub::$Method$(" - "::grpc::ClientContext* context, const $Request$& request, " - "::grpc::CompletionQueue* cq, void* tag) {\n"); printer->Print(*vars, - " return new ::grpc::ClientAsyncReader< $Response$>(" + "std::unique_ptr< ::grpc::ClientAsyncReader< $Response$>> " + "$Service$::Stub::$Method$(" + "::grpc::ClientContext* context, const $Request$& request, " + "::grpc::CompletionQueue* cq, void* tag) {\n"); + printer->Print(*vars, + " return std::unique_ptr< ::grpc::ClientAsyncReader< " + "$Response$>>(new ::grpc::ClientAsyncReader< $Response$>(" "channel(), cq, " "::grpc::RpcMethod($Service$_method_names[$Idx$], " "::grpc::RpcMethod::RpcType::SERVER_STREAMING), " - "context, request, tag);\n" + "context, request, tag));\n" "}\n\n"); } else if (BidiStreaming(method)) { printer->Print( *vars, - "::grpc::ClientReaderWriter< $Request$, $Response$>* " + "std::unique_ptr< ::grpc::ClientReaderWriter< $Request$, $Response$>> " "$Service$::Stub::$Method$(::grpc::ClientContext* context) {\n"); - printer->Print( - *vars, - " return new ::grpc::ClientReaderWriter< $Request$, $Response$>(" - "channel()," - "::grpc::RpcMethod($Service$_method_names[$Idx$], " - "::grpc::RpcMethod::RpcType::BIDI_STREAMING), " - "context);\n" - "}\n\n"); - printer->Print( - *vars, - "::grpc::ClientAsyncReaderWriter< $Request$, $Response$>* " - "$Service$::Stub::$Method$(::grpc::ClientContext* context, " - "::grpc::CompletionQueue* cq, void* tag) {\n"); - printer->Print( - *vars, - " return new ::grpc::ClientAsyncReaderWriter< $Request$, $Response$>(" - "channel(), cq, " - "::grpc::RpcMethod($Service$_method_names[$Idx$], " - "::grpc::RpcMethod::RpcType::BIDI_STREAMING), " - "context, tag);\n" - "}\n\n"); + printer->Print(*vars, + " return std::unique_ptr< ::grpc::ClientReaderWriter< " + "$Request$, $Response$>>(new ::grpc::ClientReaderWriter< " + "$Request$, $Response$>(" + "channel()," + "::grpc::RpcMethod($Service$_method_names[$Idx$], " + "::grpc::RpcMethod::RpcType::BIDI_STREAMING), " + "context));\n" + "}\n\n"); + printer->Print(*vars, + "std::unique_ptr< ::grpc::ClientAsyncReaderWriter< " + "$Request$, $Response$>> " + "$Service$::Stub::$Method$(::grpc::ClientContext* context, " + "::grpc::CompletionQueue* cq, void* tag) {\n"); + printer->Print(*vars, + " return std::unique_ptr< ::grpc::ClientAsyncReaderWriter< " + "$Request$, $Response$>>(new " + "::grpc::ClientAsyncReaderWriter< $Request$, $Response$>(" + "channel(), cq, " + "::grpc::RpcMethod($Service$_method_names[$Idx$], " + "::grpc::RpcMethod::RpcType::BIDI_STREAMING), " + "context, tag));\n" + "}\n\n"); } } @@ -587,9 +604,9 @@ void PrintSourceService(google::protobuf::io::Printer *printer, printer->Print( *vars, - "$Service$::Stub* $Service$::NewStub(" + "std::unique_ptr< $Service$::Stub> $Service$::NewStub(" "const std::shared_ptr< ::grpc::ChannelInterface>& channel) {\n" - " $Service$::Stub* stub = new $Service$::Stub();\n" + " std::unique_ptr< $Service$::Stub> stub(new $Service$::Stub());\n" " stub->set_channel(channel);\n" " return stub;\n" "};\n\n"); diff --git a/src/core/httpcli/httpcli.c b/src/core/httpcli/httpcli.c index d372e694e9..d2cf09a8df 100644 --- a/src/core/httpcli/httpcli.c +++ b/src/core/httpcli/httpcli.c @@ -216,6 +216,7 @@ static void on_resolved(void *arg, grpc_resolved_addresses *addresses) { gpr_log(GPR_DEBUG, "%s", __FUNCTION__); if (!addresses) { finish(req, 0); + return; } req->addresses = addresses; req->next_address = 0; diff --git a/src/core/json/json.c b/src/core/json/json.c index df7108a94d..96e11eebb1 100644 --- a/src/core/json/json.c +++ b/src/core/json/json.c @@ -38,8 +38,8 @@ #include "src/core/json/json.h" grpc_json *grpc_json_create(grpc_json_type type) { - grpc_json *json = gpr_malloc(sizeof(grpc_json)); - memset(json, 0, sizeof(grpc_json)); + grpc_json *json = gpr_malloc(sizeof(*json)); + memset(json, 0, sizeof(*json)); json->type = type; return json; diff --git a/src/core/json/json_reader.c b/src/core/json/json_reader.c index 774faa5f23..5ea4e9569c 100644 --- a/src/core/json/json_reader.c +++ b/src/core/json/json_reader.c @@ -93,7 +93,7 @@ static void json_reader_set_null(grpc_json_reader* reader) { /* Call this function to initialize the reader structure. */ void grpc_json_reader_init(grpc_json_reader* reader, grpc_json_reader_vtable* vtable, void* userdata) { - memset(reader, 0, sizeof(grpc_json_reader)); + memset(reader, 0, sizeof(*reader)); reader->vtable = vtable; reader->userdata = userdata; json_reader_string_clear(reader); diff --git a/src/core/json/json_writer.c b/src/core/json/json_writer.c index 4c0bf30780..a40bf1733e 100644 --- a/src/core/json/json_writer.c +++ b/src/core/json/json_writer.c @@ -51,7 +51,7 @@ static void json_writer_output_string_with_len(grpc_json_writer* writer, const c void grpc_json_writer_init(grpc_json_writer* writer, int indent, grpc_json_writer_vtable* vtable, void* userdata) { - memset(writer, 0, sizeof(grpc_json_writer)); + memset(writer, 0, sizeof(*writer)); writer->container_empty = 1; writer->indent = indent; writer->vtable = vtable; @@ -77,7 +77,7 @@ static void json_writer_output_indent( while (spaces >= (sizeof(spacesstr) - 1)) { json_writer_output_string_with_len(writer, spacesstr, - sizeof(spacesstr) - 1); + sizeof(spacesstr) - 1); spaces -= (sizeof(spacesstr) - 1); } @@ -117,10 +117,10 @@ static void json_writer_escape_string(grpc_json_writer* writer, gpr_uint8 c = (gpr_uint8)*string++; if (c == 0) { break; - } else if ((c >= 32) && (c <= 127)) { + } else if ((c >= 32) && (c <= 126)) { if ((c == '\\') || (c == '"')) json_writer_output_char(writer, '\\'); json_writer_output_char(writer, c); - } else if (c < 32) { + } else if ((c < 32) || (c == 127)) { switch (c) { case '\b': json_writer_output_string_with_len(writer, "\\b", 2); @@ -161,6 +161,7 @@ static void json_writer_escape_string(grpc_json_writer* writer, for (i = 0; i < extra; i++) { utf32 <<= 6; c = *string++; + /* Breaks out and bail on any invalid UTF-8 sequence, including \0. */ if ((c & 0xc0) != 0x80) { valid = 0; break; diff --git a/src/core/security/auth.c b/src/core/security/auth.c index 92878e3b7e..9b67d59cb8 100644 --- a/src/core/security/auth.c +++ b/src/core/security/auth.c @@ -234,6 +234,9 @@ static void destroy_call_elem(grpc_call_element *elem) { if (calld->host != NULL) { grpc_mdstr_unref(calld->host); } + if (calld->method != NULL) { + grpc_mdstr_unref(calld->method); + } } /* Constructor for channel_data */ @@ -276,6 +279,9 @@ static void destroy_channel_elem(grpc_channel_element *elem) { if (channeld->error_msg_key != NULL) { grpc_mdstr_unref(channeld->error_msg_key); } + if (channeld->path_string != NULL) { + grpc_mdstr_unref(channeld->path_string); + } } const grpc_channel_filter grpc_client_auth_filter = { diff --git a/src/core/security/credentials.c b/src/core/security/credentials.c index 42d1a900fc..7e72b238c8 100644 --- a/src/core/security/credentials.c +++ b/src/core/security/credentials.c @@ -1076,7 +1076,3 @@ grpc_credentials *grpc_iam_credentials_create(const char *token, c->md_ctx, GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY, authority_selector); return &c->base; } - -/* -- Default credentials TODO(jboeuf). -- */ - -grpc_credentials *grpc_default_credentials_create(void) { return NULL; } diff --git a/src/core/security/credentials.h b/src/core/security/credentials.h index 7b8929492b..0a0074c1d5 100644 --- a/src/core/security/credentials.h +++ b/src/core/security/credentials.h @@ -60,8 +60,15 @@ typedef enum { "x-goog-iam-authorization-token" #define GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY "x-goog-iam-authority-selector" +#define GRPC_GOOGLE_CLOUD_SDK_CONFIG_DIRECTORY "gcloud" +#define GRPC_GOOGLE_WELL_KNOWN_CREDENTIALS_FILE \ + "application_default_credentials.json" + /* --- grpc_credentials. --- */ +/* It is the caller's responsibility to gpr_free the result if not NULL. */ +char *grpc_get_well_known_google_credentials_file_path(void); + typedef void (*grpc_credentials_metadata_cb)(void *user_data, grpc_mdelem **md_elems, size_t num_md, diff --git a/src/core/security/credentials_posix.c b/src/core/security/credentials_posix.c new file mode 100644 index 0000000000..79622cb024 --- /dev/null +++ b/src/core/security/credentials_posix.c @@ -0,0 +1,60 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include <grpc/support/port_platform.h> + +#ifdef GPR_POSIX_FILE + +#include "src/core/security/credentials.h" + +#include <grpc/support/alloc.h> +#include <grpc/support/log.h> + +#include "src/core/support/env.h" +#include "src/core/support/string.h" + +char *grpc_get_well_known_google_credentials_file_path(void) { + char *result = NULL; + char *home = gpr_getenv("HOME"); + if (home == NULL) { + gpr_log(GPR_ERROR, "Could not get HOME environment variable."); + return NULL; + } + gpr_asprintf(&result, "%s/.config/%s/%s", home, + GRPC_GOOGLE_CLOUD_SDK_CONFIG_DIRECTORY, + GRPC_GOOGLE_WELL_KNOWN_CREDENTIALS_FILE); + gpr_free(home); + return result; +} + +#endif /* GPR_POSIX_FILE */ diff --git a/src/core/security/credentials_win32.c b/src/core/security/credentials_win32.c new file mode 100644 index 0000000000..ddb310468b --- /dev/null +++ b/src/core/security/credentials_win32.c @@ -0,0 +1,60 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include <grpc/support/port_platform.h> + +#ifdef GPR_WIN32 + +#include "src/core/security/credentials.h" + +#include <grpc/support/alloc.h> +#include <grpc/support/log.h> + +#include "src/core/support/env.h" +#include "src/core/support/string.h" + +char *grpc_get_well_known_google_credentials_file_path(void) { + char *result = NULL; + char *appdata_path = gpr_getenv("APPDATA"); + if (appdata_path == NULL) { + gpr_log(GPR_ERROR, "Could not get APPDATA environment variable."); + return NULL; + } + gpr_asprintf(&result, "%s/%s/%s", appdata_path, + GRPC_GOOGLE_CLOUD_SDK_CONFIG_DIRECTORY, + GRPC_GOOGLE_WELL_KNOWN_CREDENTIALS_FILE); + gpr_free(appdata_path); + return result; +} + +#endif /* GPR_WIN32 */ diff --git a/src/core/security/google_default_credentials.c b/src/core/security/google_default_credentials.c new file mode 100644 index 0000000000..dc0e453b87 --- /dev/null +++ b/src/core/security/google_default_credentials.c @@ -0,0 +1,185 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "src/core/security/credentials.h" + +#include <string.h> + +#include <grpc/support/alloc.h> +#include <grpc/support/log.h> +#include <grpc/support/sync.h> + +#include "src/core/httpcli/httpcli.h" +#include "src/core/support/env.h" +#include "src/core/support/file.h" + +/* -- Constants. -- */ + +#define GRPC_COMPUTE_ENGINE_DETECTION_HOST "metadata.google.internal" +#define GRPC_GOOGLE_CREDENTIALS_ENV_VAR "GOOGLE_APPLICATION_CREDENTIALS" + +/* -- Default credentials. -- */ + +static grpc_credentials *default_credentials = NULL; +static int compute_engine_detection_done = 0; +static gpr_mu g_mu; +static gpr_once g_once = GPR_ONCE_INIT; + +static void init_default_credentials(void) { + gpr_mu_init(&g_mu); +} + +typedef struct { + gpr_cv cv; + gpr_mu mu; + int is_done; + int success; +} compute_engine_detector; + +static void on_compute_engine_detection_http_response( + void *user_data, const grpc_httpcli_response *response) { + compute_engine_detector *detector = (compute_engine_detector *)user_data; + if (response != NULL && response->status == 200 && response->hdr_count > 0) { + /* Internet providers can return a generic response to all requests, so + it is necessary to check that metadata header is present also. */ + size_t i; + for (i = 0; i < response->hdr_count; i++) { + grpc_httpcli_header *header = &response->hdrs[i]; + if (!strcmp(header->key, "Metadata-Flavor") && + !strcmp(header->value, "Google")) { + detector->success = 1; + break; + } + } + } + gpr_mu_lock(&detector->mu); + detector->is_done = 1; + gpr_mu_unlock(&detector->mu); + gpr_cv_signal(&detector->cv); +} + +static int is_stack_running_on_compute_engine(void) { + compute_engine_detector detector; + grpc_httpcli_request request; + + /* The http call is local. If it takes more than one sec, it is for sure not + on compute engine. */ + gpr_timespec max_detection_delay = {1, 0}; + + gpr_mu_init(&detector.mu); + gpr_cv_init(&detector.cv); + detector.is_done = 0; + detector.success = 0; + + memset(&request, 0, sizeof(grpc_httpcli_request)); + request.host = GRPC_COMPUTE_ENGINE_DETECTION_HOST; + request.path = "/"; + + grpc_httpcli_get(&request, gpr_time_add(gpr_now(), max_detection_delay), + on_compute_engine_detection_http_response, &detector); + + /* Block until we get the response. This is not ideal but this should only be + called once for the lifetime of the process by the default credentials. */ + gpr_mu_lock(&detector.mu); + while (!detector.is_done) { + gpr_cv_wait(&detector.cv, &detector.mu, gpr_inf_future); + } + gpr_mu_unlock(&detector.mu); + + gpr_mu_destroy(&detector.mu); + gpr_cv_destroy(&detector.cv); + return detector.success; +} + +/* Takes ownership of creds_path if not NULL. */ +static grpc_credentials *create_jwt_creds_from_path(char *creds_path) { + grpc_credentials *result = NULL; + gpr_slice creds_data; + int file_ok = 0; + if (creds_path == NULL) return NULL; + creds_data = gpr_load_file(creds_path, &file_ok); + gpr_free(creds_path); + if (file_ok) { + result = grpc_jwt_credentials_create( + (const char *)GPR_SLICE_START_PTR(creds_data), + grpc_max_auth_token_lifetime); + gpr_slice_unref(creds_data); + } + return result; +} + +grpc_credentials *grpc_google_default_credentials_create(void) { + grpc_credentials *result = NULL; + int serving_cached_credentials = 0; + gpr_once_init(&g_once, init_default_credentials); + + gpr_mu_lock(&g_mu); + + if (default_credentials != NULL) { + result = default_credentials; + serving_cached_credentials = 1; + goto end; + } + + /* First, try the environment variable. */ + result = + create_jwt_creds_from_path(gpr_getenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR)); + if (result != NULL) goto end; + + /* Then the well-known file. */ + result = create_jwt_creds_from_path( + grpc_get_well_known_google_credentials_file_path()); + if (result != NULL) goto end; + + /* At last try to see if we're on compute engine (do the detection only once + since it requires a network test). */ + if (!compute_engine_detection_done) { + int need_compute_engine_creds = is_stack_running_on_compute_engine(); + compute_engine_detection_done = 1; + if (need_compute_engine_creds) { + result = grpc_compute_engine_credentials_create(); + } + } + +end: + if (!serving_cached_credentials && result != NULL) { + /* Blend with default ssl credentials and add a global reference so that it + can be cached and re-served. */ + result = grpc_composite_credentials_create( + grpc_ssl_credentials_create(NULL, NULL), result); + GPR_ASSERT(result != NULL); + default_credentials = grpc_credentials_ref(result); + } + gpr_mu_unlock(&g_mu); + return result; +} diff --git a/src/core/security/security_context.c b/src/core/security/security_context.c index fd8baff539..9dce5af740 100644 --- a/src/core/security/security_context.c +++ b/src/core/security/security_context.c @@ -641,9 +641,3 @@ grpc_channel *grpc_secure_channel_create_with_factories( creds->type); return grpc_lame_client_channel_create(); } - -grpc_channel *grpc_default_secure_channel_create( - const char *target, const grpc_channel_args *args) { - return grpc_secure_channel_create(grpc_default_credentials_create(), target, - args); -} diff --git a/src/core/support/log_win32.c b/src/core/support/log_win32.c index cff130ae18..720dc141f5 100644 --- a/src/core/support/log_win32.c +++ b/src/core/support/log_win32.c @@ -90,7 +90,7 @@ void gpr_default_log(gpr_log_func_args *args) { strcpy(time_buffer, "error:strftime"); } - fprintf(stderr, "%s%s.%09u %5u %s:%d: %s\n", + fprintf(stderr, "%s%s.%09u %5u %s:%d] %s\n", gpr_log_severity_string(args->severity), time_buffer, (int)(now.tv_nsec), GetCurrentThreadId(), args->file, args->line, args->message); diff --git a/src/core/support/string_posix.c b/src/core/support/string_posix.c index 8a678b3103..25c333db4e 100644 --- a/src/core/support/string_posix.c +++ b/src/core/support/string_posix.c @@ -51,7 +51,7 @@ int gpr_asprintf(char **strp, const char *format, ...) { va_start(args, format); ret = vsnprintf(buf, sizeof(buf), format, args); va_end(args); - if (!(0 <= ret)) { + if (ret < 0) { *strp = NULL; return -1; } diff --git a/src/core/support/sync.c b/src/core/support/sync.c index 1a5cf57c4f..ccfe1e25f4 100644 --- a/src/core/support/sync.c +++ b/src/core/support/sync.c @@ -41,7 +41,7 @@ Should be a prime. */ enum { event_sync_partitions = 31 }; -/* Event are partitioned by address to avoid lock contention. */ +/* Events are partitioned by address to avoid lock contention. */ static struct sync_array_s { gpr_mu mu; gpr_cv cv; @@ -71,10 +71,10 @@ void gpr_event_set(gpr_event *ev, void *value) { struct sync_array_s *s = hash(ev); gpr_mu_lock(&s->mu); GPR_ASSERT(gpr_atm_acq_load(&ev->state) == 0); - GPR_ASSERT(value != NULL); gpr_atm_rel_store(&ev->state, (gpr_atm)value); gpr_cv_broadcast(&s->cv); gpr_mu_unlock(&s->mu); + GPR_ASSERT(value != NULL); } void *gpr_event_get(gpr_event *ev) { diff --git a/src/core/support/time.c b/src/core/support/time.c index 67f7665650..7dbf95059f 100644 --- a/src/core/support/time.c +++ b/src/core/support/time.c @@ -85,12 +85,12 @@ gpr_timespec gpr_time_from_nanos(long ns) { } else if (ns == LONG_MIN) { result = gpr_inf_past; } else if (ns >= 0) { - result.tv_sec = ns / 1000000000; - result.tv_nsec = ns - result.tv_sec * 1000000000; + result.tv_sec = ns / GPR_NS_PER_SEC; + result.tv_nsec = ns - result.tv_sec * GPR_NS_PER_SEC; } else { /* Calculation carefully formulated to avoid any possible under/overflow. */ - result.tv_sec = (-(999999999 - (ns + 1000000000)) / 1000000000) - 1; - result.tv_nsec = ns - result.tv_sec * 1000000000; + result.tv_sec = (-(999999999 - (ns + GPR_NS_PER_SEC)) / GPR_NS_PER_SEC) - 1; + result.tv_nsec = ns - result.tv_sec * GPR_NS_PER_SEC; } return result; } @@ -172,8 +172,8 @@ gpr_timespec gpr_time_add(gpr_timespec a, gpr_timespec b) { gpr_timespec sum; int inc = 0; sum.tv_nsec = a.tv_nsec + b.tv_nsec; - if (sum.tv_nsec >= 1000000000) { - sum.tv_nsec -= 1000000000; + if (sum.tv_nsec >= GPR_NS_PER_SEC) { + sum.tv_nsec -= GPR_NS_PER_SEC; inc++; } if (a.tv_sec == TYPE_MAX(time_t) || a.tv_sec == TYPE_MIN(time_t)) { @@ -200,7 +200,7 @@ gpr_timespec gpr_time_sub(gpr_timespec a, gpr_timespec b) { int dec = 0; diff.tv_nsec = a.tv_nsec - b.tv_nsec; if (diff.tv_nsec < 0) { - diff.tv_nsec += 1000000000; + diff.tv_nsec += GPR_NS_PER_SEC; dec++; } if (a.tv_sec == TYPE_MAX(time_t) || a.tv_sec == TYPE_MIN(time_t)) { diff --git a/src/cpp/client/credentials.cc b/src/cpp/client/credentials.cc index 66571cad73..a140f551e0 100644 --- a/src/cpp/client/credentials.cc +++ b/src/cpp/client/credentials.cc @@ -45,8 +45,8 @@ Credentials::Credentials(grpc_credentials *c_creds) : creds_(c_creds) {} Credentials::~Credentials() { grpc_credentials_release(creds_); } grpc_credentials *Credentials::GetRawCreds() { return creds_; } -std::unique_ptr<Credentials> CredentialsFactory::DefaultCredentials() { - grpc_credentials *c_creds = grpc_default_credentials_create(); +std::unique_ptr<Credentials> CredentialsFactory::GoogleDefaultCredentials() { + grpc_credentials *c_creds = grpc_google_default_credentials_create(); std::unique_ptr<Credentials> cpp_creds(new Credentials(c_creds)); return cpp_creds; } @@ -86,6 +86,18 @@ std::unique_ptr<Credentials> CredentialsFactory::ServiceAccountCredentials( return cpp_creds; } +// Builds JWT credentials. +std::unique_ptr<Credentials> CredentialsFactory::JWTCredentials( + const grpc::string &json_key, std::chrono::seconds token_lifetime) { + gpr_timespec lifetime = gpr_time_from_seconds( + token_lifetime.count() > 0 ? token_lifetime.count() : 0); + grpc_credentials *c_creds = + grpc_jwt_credentials_create(json_key.c_str(), lifetime); + std::unique_ptr<Credentials> cpp_creds( + c_creds == nullptr ? nullptr : new Credentials(c_creds)); + return cpp_creds; +} + // Builds IAM credentials. std::unique_ptr<Credentials> CredentialsFactory::IAMCredentials( const grpc::string &authorization_token, @@ -98,7 +110,7 @@ std::unique_ptr<Credentials> CredentialsFactory::IAMCredentials( } // Combines two credentials objects into a composite credentials. -std::unique_ptr<Credentials> CredentialsFactory::ComposeCredentials( +std::unique_ptr<Credentials> CredentialsFactory::CompositeCredentials( const std::unique_ptr<Credentials> &creds1, const std::unique_ptr<Credentials> &creds2) { // Note that we are not saving unique_ptrs to the two credentials diff --git a/src/cpp/server/thread_pool.cc b/src/cpp/server/thread_pool.cc index 1ca98129d3..fa11ddd04c 100644 --- a/src/cpp/server/thread_pool.cc +++ b/src/cpp/server/thread_pool.cc @@ -37,11 +37,11 @@ namespace grpc { ThreadPool::ThreadPool(int num_threads) { for (int i = 0; i < num_threads; i++) { - threads_.push_back(std::thread([=]() { + threads_.push_back(std::thread([this]() { for (;;) { - std::unique_lock<std::mutex> lock(mu_); // Wait until work is available or we are shutting down. - auto have_work = [=]() { return shutdown_ || !callbacks_.empty(); }; + auto have_work = [this]() { return shutdown_ || !callbacks_.empty(); }; + std::unique_lock<std::mutex> lock(mu_); if (!have_work()) { cv_.wait(lock, have_work); } diff --git a/src/node/examples/pubsub/empty.proto b/src/node/examples/pubsub/empty.proto new file mode 100644 index 0000000000..5d6eb10841 --- /dev/null +++ b/src/node/examples/pubsub/empty.proto @@ -0,0 +1,44 @@ +// This file will be moved to a new location. + +// Copyright 2015, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto2"; + +package proto2; + +// An empty message that you can re-use to avoid defining duplicated empty +// messages in your project. A typical example is to use it as argument or the +// return value of a service API. For instance: +// +// service Foo { +// rpc Bar (proto2.Empty) returns (proto2.Empty) { }; +// }; +// +message Empty {} diff --git a/src/node/examples/pubsub/label.proto b/src/node/examples/pubsub/label.proto new file mode 100644 index 0000000000..0af15a25a6 --- /dev/null +++ b/src/node/examples/pubsub/label.proto @@ -0,0 +1,79 @@ +// This file will be moved to a new location. + +// 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. + +// Labels provide a way to associate user-defined metadata with various +// objects. Labels may be used to organize objects into non-hierarchical +// groups; think metadata tags attached to mp3s. + +syntax = "proto2"; + +package tech.label; + +// A key-value pair applied to a given object. +message Label { + // The key of a label is a syntactically valid URL (as per RFC 1738) with + // the "scheme" and initial slashes omitted and with the additional + // restrictions noted below. Each key should be globally unique. The + // "host" portion is called the "namespace" and is not necessarily + // resolvable to a network endpoint. Instead, the namespace indicates what + // system or entity defines the semantics of the label. Namespaces do not + // restrict the set of objects to which a label may be associated. + // + // Keys are defined by the following grammar: + // + // key = hostname "/" kpath + // kpath = ksegment *[ "/" ksegment ] + // ksegment = alphadigit | *[ alphadigit | "-" | "_" | "." ] + // + // where "hostname" and "alphadigit" are defined as in RFC 1738. + // + // Example key: + // spanner.google.com/universe + required string key = 1; + + // The value of the label. + oneof value { + // A string value. + string str_value = 2; + // An integer value. + int64 num_value = 3; + } +} + +// A collection of labels, such as the set of all labels attached to an +// object. Each label in the set must have a different key. +// +// Users should prefer to embed "repeated Label" directly when possible. +// This message should only be used in cases where that isn't possible (e.g. +// with oneof). +message Labels { + repeated Label label = 1; +} diff --git a/src/node/examples/pubsub/pubsub.proto b/src/node/examples/pubsub/pubsub.proto new file mode 100644 index 0000000000..41a354773f --- /dev/null +++ b/src/node/examples/pubsub/pubsub.proto @@ -0,0 +1,734 @@ +// This file will be moved to a new location. + +// 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. + + +// Specification of the Pubsub API. + +syntax = "proto2"; + +import "empty.proto"; +import "label.proto"; + +package tech.pubsub; + +// ----------------------------------------------------------------------------- +// Overview of the Pubsub API +// ----------------------------------------------------------------------------- + +// This file describes an API for a Pubsub system. This system provides a +// reliable many-to-many communication mechanism between independently written +// publishers and subscribers where the publisher publishes messages to "topics" +// and each subscriber creates a "subscription" and consumes messages from it. +// +// (a) The pubsub system maintains bindings between topics and subscriptions. +// (b) A publisher publishes messages into a topic. +// (c) The pubsub system delivers messages from topics into relevant +// subscriptions. +// (d) A subscriber receives pending messages from its subscription and +// acknowledges or nacks each one to the pubsub system. +// (e) The pubsub system removes acknowledged messages from that subscription. + +// ----------------------------------------------------------------------------- +// Data Model +// ----------------------------------------------------------------------------- + +// The data model consists of the following: +// +// * Topic: A topic is a resource to which messages are published by publishers. +// Topics are named, and the name of the topic is unique within the pubsub +// system. +// +// * Subscription: A subscription records the subscriber's interest in a topic. +// It can optionally include a query to select a subset of interesting +// messages. The pubsub system maintains a logical cursor tracking the +// matching messages which still need to be delivered and acked so that +// they can retried as needed. The set of messages that have not been +// acknowledged is called the subscription backlog. +// +// * Message: A message is a unit of data that flows in the system. It contains +// opaque data from the publisher along with its labels. +// +// * Message Labels (optional): A set of opaque key, value pairs assigned +// by the publisher which the subscriber can use for filtering out messages +// in the topic. For example, a label with key "foo.com/device_type" and +// value "mobile" may be added for messages that are only relevant for a +// mobile subscriber; a subscriber on a phone may decide to create a +// subscription only for messages that have this label. + +// ----------------------------------------------------------------------------- +// Publisher Flow +// ----------------------------------------------------------------------------- + +// A publisher publishes messages to the topic using the Publish request: +// +// PubsubMessage message; +// message.set_data("...."); +// Label label; +// label.set_key("foo.com/key1"); +// label.set_str_value("value1"); +// message.add_label(label); +// PublishRequest request; +// request.set_topic("topicName"); +// request.set_message(message); +// PublisherService.Publish(request); + +// ----------------------------------------------------------------------------- +// Subscriber Flow +// ----------------------------------------------------------------------------- + +// The subscriber part of the API is richer than the publisher part and has a +// number of concepts w.r.t. subscription creation and monitoring: +// +// (1) A subscriber creates a subscription using the CreateSubscription call. +// It may specify an optional "query" to indicate that it wants to receive +// only messages with a certain set of labels using the label query syntax. +// It may also specify an optional truncation policy to indicate when old +// messages from the subcription can be removed. +// +// (2) A subscriber receives messages in one of two ways: via push or pull. +// +// (a) To receive messages via push, the PushConfig field must be specified in +// the Subscription parameter when creating a subscription. The PushConfig +// specifies an endpoint at which the subscriber must expose the +// PushEndpointService. Messages are received via the HandlePubsubEvent +// method. The push subscriber responds to the HandlePubsubEvent method +// with a result code that indicates one of three things: Ack (the message +// has been successfully processed and the Pubsub system may delete it), +// Nack (the message has been rejected, the Pubsub system should resend it +// at a later time), or Push-Back (this is a Nack with the additional +// semantics that the subscriber is overloaded and the pubsub system should +// back off on the rate at which it is invoking HandlePubsubEvent). The +// endpoint may be a load balancer for better scalability. +// +// (b) To receive messages via pull a subscriber calls the Pull method on the +// SubscriberService to get messages from the subscription. For each +// individual message, the subscriber may use the ack_id received in the +// PullResponse to Ack the message, Nack the message, or modify the ack +// deadline with ModifyAckDeadline. See the +// Subscription.ack_deadline_seconds field documentation for details on the +// ack deadline behavior. +// +// Note: Messages may be consumed in parallel by multiple subscribers making +// Pull calls to the same subscription; this will result in the set of +// messages from the subscription being shared and each subscriber +// receiving a subset of the messages. +// +// (4) The subscriber can explicitly truncate the current subscription. +// +// (5) "Truncated" events are delivered when a subscription is +// truncated, whether due to the subscription's truncation policy +// or an explicit request from the subscriber. +// +// Subscription creation: +// +// Subscription subscription; +// subscription.set_topic("topicName"); +// subscription.set_name("subscriptionName"); +// subscription.push_config().set_push_endpoint("machinename:8888"); +// SubscriberService.CreateSubscription(subscription); +// +// Consuming messages via push: +// +// TODO(eschapira): Add HTTP push example. +// +// The port 'machinename:8888' must be bound to a stubby server that implements +// the PushEndpointService with the following method: +// +// int HandlePubsubEvent(PubsubEvent event) { +// if (event.subscription().equals("subscriptionName")) { +// if (event.has_message()) { +// Process(event.message().data()); +// } else if (event.truncated()) { +// ProcessTruncatedEvent(); +// } +// } +// return OK; // This return code implies an acknowledgment +// } +// +// Consuming messages via pull: +// +// The subscription must be created without setting the push_config field. +// +// PullRequest pull_request; +// pull_request.set_subscription("subscriptionName"); +// pull_request.set_return_immediately(false); +// while (true) { +// PullResponse pull_response; +// if (SubscriberService.Pull(pull_request, pull_response) == OK) { +// PubsubEvent event = pull_response.pubsub_event(); +// if (event.has_message()) { +// Process(event.message().data()); +// } else if (event.truncated()) { +// ProcessTruncatedEvent(); +// } +// AcknowledgeRequest ack_request; +// ackRequest.set_subscription("subscriptionName"); +// ackRequest.set_ack_id(pull_response.ack_id()); +// SubscriberService.Acknowledge(ack_request); +// } +// } + +// ----------------------------------------------------------------------------- +// Reliability Semantics +// ----------------------------------------------------------------------------- + +// When a subscriber successfully creates a subscription using +// Subscriber.CreateSubscription, it establishes a "subscription point" with +// respect to that subscription - the subscriber is guaranteed to receive any +// message published after this subscription point that matches the +// subscription's query. Note that messages published before the Subscription +// point may or may not be delivered. +// +// If the system truncates the subscription according to the specified +// truncation policy, the system delivers a subscription status event with the +// "truncated" field set to true. We refer to such events as "truncation +// events". A truncation event: +// +// * Informs the subscriber that part of the subscription messages have been +// discarded. The subscriber may want to recover from the message loss, e.g., +// by resyncing its state with its backend. +// * Establishes a new subscription point, i.e., the subscriber is guaranteed to +// receive all changes published after the trunction event is received (or +// until another truncation event is received). +// +// Note that messages are not delivered in any particular order by the pubsub +// system. Furthermore, the system guarantees at-least-once delivery +// of each message or truncation events until acked. + +// ----------------------------------------------------------------------------- +// Deletion +// ----------------------------------------------------------------------------- + +// Both topics and subscriptions may be deleted. Deletion of a topic implies +// deletion of all attached subscriptions. +// +// When a subscription is deleted directly by calling DeleteSubscription, all +// messages are immediately dropped. If it is a pull subscriber, future pull +// requests will return NOT_FOUND. +// +// When a topic is deleted all corresponding subscriptions are immediately +// deleted, and subscribers experience the same behavior as directly deleting +// the subscription. + +// ----------------------------------------------------------------------------- +// The Publisher service and its protos. +// ----------------------------------------------------------------------------- + +// The service that an application uses to manipulate topics, and to send +// messages to a topic. +service PublisherService { + + // Creates the given topic with the given name. + rpc CreateTopic(Topic) returns (Topic) { + } + + // Adds a message to the topic. Returns NOT_FOUND if the topic does not + // exist. + // (-- For different error code values returned via Stubby, see + // util/task/codes.proto. --) + rpc Publish(PublishRequest) returns (proto2.Empty) { + } + + // Adds one or more messages to the topic. Returns NOT_FOUND if the topic does + // not exist. + rpc PublishBatch(PublishBatchRequest) returns (PublishBatchResponse) { + } + + // Gets the configuration of a topic. Since the topic only has the name + // attribute, this method is only useful to check the existence of a topic. + // If other attributes are added in the future, they will be returned here. + rpc GetTopic(GetTopicRequest) returns (Topic) { + } + + // Lists matching topics. + rpc ListTopics(ListTopicsRequest) returns (ListTopicsResponse) { + } + + // Deletes the topic with the given name. All subscriptions to this topic + // are also deleted. Returns NOT_FOUND if the topic does not exist. + // After a topic is deleted, a new topic may be created with the same name. + rpc DeleteTopic(DeleteTopicRequest) returns (proto2.Empty) { + } +} + +// A topic resource. +message Topic { + // Name of the topic. + optional string name = 1; +} + +// A message data and its labels. +message PubsubMessage { + // The message payload. + optional bytes data = 1; + + // Optional list of labels for this message. Keys in this collection must + // be unique. + //(-- TODO(eschapira): Define how key namespace may be scoped to the topic.--) + repeated tech.label.Label label = 2; + + // ID of this message assigned by the server at publication time. Guaranteed + // to be unique within the topic. This value may be read by a subscriber + // that receives a PubsubMessage via a Pull call or a push delivery. It must + // not be populated by a publisher in a Publish call. + optional string message_id = 3; +} + +// Request for the GetTopic method. +message GetTopicRequest { + // The name of the topic to get. + optional string topic = 1; +} + +// Request for the Publish method. +message PublishRequest { + // The message in the request will be published on this topic. + optional string topic = 1; + + // The message to publish. + optional PubsubMessage message = 2; +} + +// Request for the PublishBatch method. +message PublishBatchRequest { + // The messages in the request will be published on this topic. + optional string topic = 1; + + // The messages to publish. + repeated PubsubMessage messages = 2; +} + +// Response for the PublishBatch method. +message PublishBatchResponse { + // The server-assigned ID of each published message, in the same order as + // the messages in the request. IDs are guaranteed to be unique within + // the topic. + repeated string message_ids = 1; +} + +// Request for the ListTopics method. +message ListTopicsRequest { + // A valid label query expression. + // + optional string query = 1; + + // Maximum number of topics to return. + // (-- If not specified or <= 0, the implementation will select a reasonable + // value. --) + optional int32 max_results = 2; + + // The value obtained in the last <code>ListTopicsResponse</code> + // for continuation. + optional string page_token = 3; + +} + +// Response for the ListTopics method. +message ListTopicsResponse { + // The resulting topics. + repeated Topic topic = 1; + + // If not empty, indicates that there are more topics that match the request, + // and this value should be passed to the next <code>ListTopicsRequest</code> + // to continue. + optional string next_page_token = 2; +} + +// Request for the Delete method. +message DeleteTopicRequest { + // Name of the topic to delete. + optional string topic = 1; +} + +// ----------------------------------------------------------------------------- +// The Subscriber service and its protos. +// ----------------------------------------------------------------------------- + +// The service that an application uses to manipulate subscriptions and to +// consume messages from a subscription via the pull method. +service SubscriberService { + + // Creates a subscription on a given topic for a given subscriber. + // If the subscription already exists, returns ALREADY_EXISTS. + // If the corresponding topic doesn't exist, returns NOT_FOUND. + // + // If the name is not provided in the request, the server will assign a random + // name for this subscription on the same project as the topic. + rpc CreateSubscription(Subscription) returns (Subscription) { + } + + // Gets the configuration details of a subscription. + rpc GetSubscription(GetSubscriptionRequest) returns (Subscription) { + } + + // Lists matching subscriptions. + rpc ListSubscriptions(ListSubscriptionsRequest) + returns (ListSubscriptionsResponse) { + } + + // Deletes an existing subscription. All pending messages in the subscription + // are immediately dropped. Calls to Pull after deletion will return + // NOT_FOUND. + rpc DeleteSubscription(DeleteSubscriptionRequest) returns (proto2.Empty) { + } + + // Removes all the pending messages in the subscription and releases the + // storage associated with them. Results in a truncation event to be sent to + // the subscriber. Messages added after this call returns are stored in the + // subscription as before. + rpc TruncateSubscription(TruncateSubscriptionRequest) returns (proto2.Empty) { + } + + // + // Push subscriber calls. + // + + // Modifies the <code>PushConfig</code> for a specified subscription. + // This method can be used to suspend the flow of messages to an endpoint + // by clearing the <code>PushConfig</code> field in the request. Messages + // will be accumulated for delivery even if no push configuration is + // defined or while the configuration is modified. + rpc ModifyPushConfig(ModifyPushConfigRequest) returns (proto2.Empty) { + } + + // + // Pull Subscriber calls + // + + // Pulls a single message from the server. + // If return_immediately is true, and no messages are available in the + // subscription, this method returns FAILED_PRECONDITION. The system is free + // to return an UNAVAILABLE error if no messages are available in a + // reasonable amount of time (to reduce system load). + rpc Pull(PullRequest) returns (PullResponse) { + } + + // Pulls messages from the server. Returns an empty list if there are no + // messages available in the backlog. The system is free to return UNAVAILABLE + // if there are too many pull requests outstanding for the given subscription. + rpc PullBatch(PullBatchRequest) returns (PullBatchResponse) { + } + + // Modifies the Ack deadline for a message received from a pull request. + rpc ModifyAckDeadline(ModifyAckDeadlineRequest) returns (proto2.Empty) { + } + + // Acknowledges a particular received message: the Pub/Sub system can remove + // the given message from the subscription. Acknowledging a message whose + // Ack deadline has expired may succeed, but the message could have been + // already redelivered. Acknowledging a message more than once will not + // result in an error. This is only used for messages received via pull. + rpc Acknowledge(AcknowledgeRequest) returns (proto2.Empty) { + } + + // Refuses processing a particular received message. The system will + // redeliver this message to some consumer of the subscription at some + // future time. This is only used for messages received via pull. + rpc Nack(NackRequest) returns (proto2.Empty) { + } +} + +// A subscription resource. +message Subscription { + // Name of the subscription. + optional string name = 1; + + // The name of the topic from which this subscription is receiving messages. + optional string topic = 2; + + // If <code>query</code> is non-empty, only messages on the subscriber's + // topic whose labels match the query will be returned. Otherwise all + // messages on the topic will be returned. + // + optional string query = 3; + + // The subscriber may specify requirements for truncating unacknowledged + // subscription entries. The system will honor the + // <code>CreateSubscription</code> request only if it can meet these + // requirements. If this field is not specified, messages are never truncated + // by the system. + optional TruncationPolicy truncation_policy = 4; + + // Specifies which messages can be truncated by the system. + message TruncationPolicy { + oneof policy { + // If <code>max_bytes</code> is specified, the system is allowed to drop + // old messages to keep the combined size of stored messages under + // <code>max_bytes</code>. This is a hint; the system may keep more than + // this many bytes, but will make a best effort to keep the size from + // growing much beyond this parameter. + int64 max_bytes = 1; + + // If <code>max_age_seconds</code> is specified, the system is allowed to + // drop messages that have been stored for at least this many seconds. + // This is a hint; the system may keep these messages, but will make a + // best effort to remove them when their maximum age is reached. + int64 max_age_seconds = 2; + } + } + + // If push delivery is used with this subscription, this field is + // used to configure it. + optional PushConfig push_config = 5; + + // For either push or pull delivery, the value is the maximum time after a + // subscriber receives a message before the subscriber should acknowledge or + // Nack the message. If the Ack deadline for a message passes without an + // Ack or a Nack, the Pub/Sub system will eventually redeliver the message. + // If a subscriber acknowledges after the deadline, the Pub/Sub system may + // accept the Ack, but it is possible that the message has been already + // delivered again. Multiple Acks to the message are allowed and will + // succeed. + // + // For push delivery, this value is used to set the request timeout for + // the call to the push endpoint. + // + // For pull delivery, this value is used as the initial value for the Ack + // deadline. It may be overridden for a specific pull request (message) with + // <code>ModifyAckDeadline</code>. + // While a message is outstanding (i.e. it has been delivered to a pull + // subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub + // system will not deliver that message to another pull subscriber + // (on a best-effort basis). + optional int32 ack_deadline_seconds = 6; + + // If this parameter is set to n, the system is allowed to (but not required + // to) delete the subscription when at least n seconds have elapsed since the + // client presence was detected. (Presence is detected through any + // interaction using the subscription ID, including Pull(), Get(), or + // acknowledging a message.) + // + // If this parameter is not set, the subscription will stay live until + // explicitly deleted. + // + // Clients can detect such garbage collection when a Get call or a Pull call + // (for pull subscribers only) returns NOT_FOUND. + optional int64 garbage_collect_seconds = 7; +} + +// Configuration for a push delivery endpoint. +message PushConfig { + // A URL locating the endpoint to which messages should be pushed. + // For example, a Webhook endpoint might use "https://example.com/push". + // (-- An Android application might use "gcm:<REGID>", where <REGID> is a + // GCM registration id allocated for pushing messages to the application. --) + optional string push_endpoint = 1; +} + +// An event indicating a received message or truncation event. +message PubsubEvent { + // The subscription that received the event. + optional string subscription = 1; + + oneof type { + // A received message. + PubsubMessage message = 2; + + // Indicates that this subscription has been truncated. + bool truncated = 3; + + // Indicates that this subscription has been deleted. (Note that pull + // subscribers will always receive NOT_FOUND in response in their pull + // request on the subscription, rather than seeing this boolean.) + bool deleted = 4; + } +} + +// Request for the GetSubscription method. +message GetSubscriptionRequest { + // The name of the subscription to get. + optional string subscription = 1; +} + +// Request for the ListSubscriptions method. +message ListSubscriptionsRequest { + // A valid label query expression. + // (-- Which labels are required or supported is implementation-specific. + // TODO(eschapira): This method must support to query by topic. We must + // define the key URI for the "topic" label. --) + optional string query = 1; + + // Maximum number of subscriptions to return. + // (-- If not specified or <= 0, the implementation will select a reasonable + // value. --) + optional int32 max_results = 3; + + // The value obtained in the last <code>ListSubscriptionsResponse</code> + // for continuation. + optional string page_token = 4; +} + +// Response for the ListSubscriptions method. +message ListSubscriptionsResponse { + // The subscriptions that match the request. + repeated Subscription subscription = 1; + + // If not empty, indicates that there are more subscriptions that match the + // request and this value should be passed to the next + // <code>ListSubscriptionsRequest</code> to continue. + optional string next_page_token = 2; +} + +// Request for the TruncateSubscription method. +message TruncateSubscriptionRequest { + // The subscription that is being truncated. + optional string subscription = 1; +} + +// Request for the DeleteSubscription method. +message DeleteSubscriptionRequest { + // The subscription to delete. + optional string subscription = 1; +} + +// Request for the ModifyPushConfig method. +message ModifyPushConfigRequest { + // The name of the subscription. + optional string subscription = 1; + + // An empty <code>push_config</code> indicates that the Pub/Sub system should + // pause pushing messages from the given subscription. + optional PushConfig push_config = 2; +} + +// ----------------------------------------------------------------------------- +// The protos used by a pull subscriber. +// ----------------------------------------------------------------------------- + +// Request for the Pull method. +message PullRequest { + // The subscription from which a message should be pulled. + optional string subscription = 1; + + // If this is specified as true the system will respond immediately even if + // it is not able to return a message in the Pull response. Otherwise the + // system is allowed to wait until at least one message is available rather + // than returning FAILED_PRECONDITION. The client may cancel the request if + // it does not wish to wait any longer for the response. + optional bool return_immediately = 2; +} + +// Either a <code>PubsubMessage</code> or a truncation event. One of these two +// must be populated. +message PullResponse { + // This ID must be used to acknowledge the received event or message. + optional string ack_id = 1; + + // A pubsub message or truncation event. + optional PubsubEvent pubsub_event = 2; +} + +// Request for the PullBatch method. +message PullBatchRequest { + // The subscription from which messages should be pulled. + optional string subscription = 1; + + // If this is specified as true the system will respond immediately even if + // it is not able to return a message in the Pull response. Otherwise the + // system is allowed to wait until at least one message is available rather + // than returning no messages. The client may cancel the request if it does + // not wish to wait any longer for the response. + optional bool return_immediately = 2; + + // The maximum number of PubsubEvents returned for this request. The Pub/Sub + // system may return fewer than the number of events specified. + optional int32 max_events = 3; +} + +// Response for the PullBatch method. +message PullBatchResponse { + + // Received Pub/Sub messages or status events. The Pub/Sub system will return + // zero messages if there are no more messages available in the backlog. The + // Pub/Sub system may return fewer than the max_events requested even if + // there are more messages available in the backlog. + repeated PullResponse pull_responses = 2; +} + +// Request for the ModifyAckDeadline method. +message ModifyAckDeadlineRequest { + // The name of the subscription from which messages are being pulled. + optional string subscription = 1; + + // The acknowledgment ID. + optional string ack_id = 2; + + // The new Ack deadline. Must be >= 0. + optional int32 ack_deadline_seconds = 3; +} + +// Request for the Acknowledge method. +message AcknowledgeRequest { + // The subscription whose message is being acknowledged. + optional string subscription = 1; + + // The acknowledgment ID for the message being acknowledged. This was + // returned by the Pub/Sub system in the Pull response. + repeated string ack_id = 2; +} + +// Request for the Nack method. +message NackRequest { + // The subscription whose message is being Nacked. + optional string subscription = 1; + + // The acknowledgment ID for the message being refused. This was returned by + // the Pub/Sub system in the Pull response. + repeated string ack_id = 2; +} + +// ----------------------------------------------------------------------------- +// The service and protos used by a push subscriber. +// ----------------------------------------------------------------------------- + +// The service that a subscriber uses to handle messages sent via push +// delivery. +// This service is not currently exported for HTTP clients. +// TODO(eschapira): Explain HTTP subscribers. +service PushEndpointService { + // Sends a <code>PubsubMessage</code> or a subscription status event to a + // push endpoint. + // The push endpoint responds with an empty message and a code from + // util/task/codes.proto. The following codes have a particular meaning to the + // Pub/Sub system: + // OK - This is interpreted by Pub/Sub as Ack. + // ABORTED - This is intepreted by Pub/Sub as a Nack, without implying + // pushback for congestion control. The Pub/Sub system will + // retry this message at a later time. + // UNAVAILABLE - This is intepreted by Pub/Sub as a Nack, with the additional + // semantics of push-back. The Pub/Sub system will use an AIMD + // congestion control algorithm to backoff the rate of sending + // messages from this subscription. + // Any other code, or a failure to respond, will be interpreted in the same + // way as ABORTED; i.e. the system will retry the message at a later time to + // ensure reliable delivery. + rpc HandlePubsubEvent(PubsubEvent) returns (proto2.Empty); +} diff --git a/src/node/examples/pubsub/pubsub_demo.js b/src/node/examples/pubsub/pubsub_demo.js new file mode 100644 index 0000000000..a9b6acbd7e --- /dev/null +++ b/src/node/examples/pubsub/pubsub_demo.js @@ -0,0 +1,277 @@ +// 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. + +var async = require('async'); +var fs = require('fs'); +var GoogleAuth = require('googleauth'); +var parseArgs = require('minimist'); +var strftime = require('strftime'); +var _ = require('underscore'); +var grpc = require('../..'); +var PROTO_PATH = __dirname + '/pubsub.proto'; +var pubsub = grpc.load(PROTO_PATH).tech.pubsub; + +function PubsubRunner(pub, sub, args) { + this.pub = pub; + this.sub = sub; + this.args = args; +} + +PubsubRunner.prototype.getTestTopicName = function() { + var base_name = '/topics/' + this.args.project_id + '/'; + if (this.args.topic_name) { + return base_name + this.args.topic_name; + } + var now_text = strftime('%Y%m%d%H%M%S%L'); + return base_name + process.env.USER + '-' + now_text; +}; + +PubsubRunner.prototype.getTestSubName = function() { + var base_name = '/subscriptions/' + this.args.project_id + '/'; + if (this.args.sub_name) { + return base_name + this.args.sub_name; + } + var now_text = strftime('%Y%m%d%H%M%S%L'); + return base_name + process.env.USER + '-' + now_text; +}; + +PubsubRunner.prototype.listProjectTopics = function(callback) { + var q = ('cloud.googleapis.com/project in (/projects/' + + this.args.project_id + ')'); + this.pub.listTopics({query: q}, callback); +}; + +PubsubRunner.prototype.topicExists = function(name, callback) { + this.listProjectTopics(function(err, response) { + if (err) { + callback(err); + } else { + callback(null, _.some(response.topic, function(t) { + return t.name === name; + })); + } + }); +}; + +PubsubRunner.prototype.createTopicIfNeeded = function(name, callback) { + var self = this; + this.topicExists(name, function(err, exists) { + if (err) { + callback(err); + } else{ + if (exists) { + callback(null); + } else { + self.pub.createTopic({name: name}, callback); + } + } + }); +}; + +PubsubRunner.prototype.removeTopic = function(callback) { + var name = this.getTestTopicName(); + console.log('... removing Topic', name); + this.pub.deleteTopic({topic: name}, function(err, value) { + if (err) { + console.log('Could not delete a topic: rpc failed with', err); + callback(err); + } else { + console.log('removed Topic', name, 'OK'); + callback(null); + } + }); +}; + +PubsubRunner.prototype.createTopic = function(callback) { + var name = this.getTestTopicName(); + console.log('... creating Topic', name); + this.pub.createTopic({name: name}, function(err, value) { + if (err) { + console.log('Could not create a topic: rpc failed with', err); + callback(err); + } else { + console.log('created Topic', name, 'OK'); + callback(null); + } + }); +}; + +PubsubRunner.prototype.listSomeTopics = function(callback) { + console.log('Listing topics'); + console.log('-------------_'); + this.listProjectTopics(function(err, response) { + if (err) { + console.log('Could not list topic: rpc failed with', err); + callback(err); + } else { + _.each(response.topic, function(t) { + console.log(t.name); + }); + callback(null); + } + }); +}; + +PubsubRunner.prototype.checkExists = function(callback) { + var name = this.getTestTopicName(); + console.log('... checking for topic', name); + this.topicExists(name, function(err, exists) { + if (err) { + console.log('Could not check for a topics: rpc failed with', err); + callback(err); + } else { + if (exists) { + console.log(name, 'is a topic'); + } else { + console.log(name, 'is not a topic'); + } + callback(null); + } + }); +}; + +PubsubRunner.prototype.randomPubSub = function(callback) { + var self = this; + var topic_name = this.getTestTopicName(); + var sub_name = this.getTestSubName(); + var subscription = {name: sub_name, topic: topic_name}; + async.waterfall([ + _.bind(this.createTopicIfNeeded, this, topic_name), + _.bind(this.sub.createSubscription, this.sub, subscription), + function(resp, cb) { + var msg_count = _.random(10, 30); + // Set up msg_count messages to publish + var message_senders = _.times(msg_count, function(n) { + return _.bind(self.pub.publish, self.pub, { + topic: topic_name, + message: {data: new Buffer('message ' + n)} + }); + }); + async.parallel(message_senders, function(err, result) { + cb(err, result, msg_count); + }); + }, + function(result, msg_count, cb) { + console.log('Sent', msg_count, 'messages to', topic_name + ',', + 'checking for them now.'); + var batch_request = { + subscription: sub_name, + max_events: msg_count + }; + self.sub.pullBatch(batch_request, cb); + }, + function(batch, cb) { + var ack_id = _.pluck(batch.pull_responses, 'ack_id'); + console.log('Got', ack_id.length, 'messages, acknowledging them...'); + var ack_request = { + subscription: sub_name, + ack_id: ack_id + }; + self.sub.acknowledge(ack_request, cb); + }, + function(result, cb) { + console.log( + 'Test messages were acknowledged OK, deleting the subscription'); + self.sub.deleteSubscription({subscription: sub_name}, cb); + } + ], function (err, result) { + if (err) { + console.log('Could not do random pub sub: rpc failed with', err); + } + callback(err, result); + }); +}; + +function main(callback) { + var argv = parseArgs(process.argv, { + string: [ + 'host', + 'oauth_scope', + 'port', + 'action', + 'project_id', + 'topic_name', + 'sub_name' + ], + default: { + host: 'pubsub-staging.googleapis.com', + oauth_scope: 'https://www.googleapis.com/auth/pubsub', + port: 443, + action: 'listSomeTopics', + project_id: 'stoked-keyword-656' + } + }); + var valid_actions = [ + 'createTopic', + 'removeTopic', + 'listSomeTopics', + 'checkExists', + 'randomPubSub' + ]; + if (_.some(valid_actions, function(action) { + return action === argv.action; + })) { + callback(new Error('Action was not valid')); + } + var address = argv.host + ':' + argv.port; + (new GoogleAuth()).getApplicationDefault(function(err, credential) { + if (err) { + callback(err); + return; + } + if (credential.createScopedRequired()) { + credential = credential.createScoped(argv.oauth_scope); + } + var updateMetadata = grpc.getGoogleAuthDelegate(credential); + var ca_path = process.env.SSL_CERT_FILE; + fs.readFile(ca_path, function(err, ca_data) { + if (err) { + callback(err); + return; + } + var ssl_creds = grpc.Credentials.createSsl(ca_data); + var options = { + credentials: ssl_creds, + 'grpc.ssl_target_name_override': argv.host + }; + var pub = new pubsub.PublisherService(address, options, updateMetadata); + var sub = new pubsub.SubscriberService(address, options, updateMetadata); + var runner = new PubsubRunner(pub, sub, argv); + runner[argv.action](callback); + }); + }); +} + +if (require.main === module) { + main(function(err) { + if (err) throw err; + }); +} + +module.exports = PubsubRunner; diff --git a/src/node/package.json b/src/node/package.json index 70327941ee..e6ac550554 100644 --- a/src/node/package.json +++ b/src/node/package.json @@ -18,7 +18,8 @@ "async": "^0.9.0", "googleauth": "google/google-auth-library-nodejs", "minimist": "^1.1.0", - "mocha": "~1.21.0" + "mocha": "~1.21.0", + "strftime": "^0.8.2" }, "files": [ "README.md", diff --git a/src/objective-c/GRPCClient/GRPCClient.podspec b/src/objective-c/GRPCClient/GRPCClient.podspec new file mode 100644 index 0000000000..a34c50b54e --- /dev/null +++ b/src/objective-c/GRPCClient/GRPCClient.podspec @@ -0,0 +1,14 @@ +Pod::Spec.new do |s| + s.name = 'GRPCClient' + s.version = '0.0.1' + s.summary = 'Generic gRPC client library for iOS' + s.author = { + 'Jorge Canizales' => 'jcanizales@google.com' + } + s.source_files = '*.{h,m}', 'private/*.{h,m}' + s.private_header_files = 'private/*.h' + s.platform = :ios + s.ios.deployment_target = '6.0' + s.requires_arc = true + s.dependency 'RxLibrary', '~> 0.0' +end diff --git a/src/objective-c/examples/Sample/Podfile b/src/objective-c/examples/Sample/Podfile index fa98987910..2b142a67d0 100644 --- a/src/objective-c/examples/Sample/Podfile +++ b/src/objective-c/examples/Sample/Podfile @@ -2,6 +2,7 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' pod 'RxLibrary', :path => "../../RxLibrary" +pod 'GRPCClient', :path => "../../GRPCClient" target 'Sample' do diff --git a/src/objective-c/examples/Sample/Podfile.lock b/src/objective-c/examples/Sample/Podfile.lock index fee4b43bec..7fa4f5d547 100644 --- a/src/objective-c/examples/Sample/Podfile.lock +++ b/src/objective-c/examples/Sample/Podfile.lock @@ -1,14 +1,20 @@ PODS: + - GRPCClient (0.0.1): + - RxLibrary (~> 0.0) - RxLibrary (0.0.1) DEPENDENCIES: + - GRPCClient (from `../../GRPCClient`) - RxLibrary (from `../../RxLibrary`) EXTERNAL SOURCES: + GRPCClient: + :path: ../../GRPCClient RxLibrary: :path: ../../RxLibrary SPEC CHECKSUMS: + GRPCClient: 05c58faab99661384178bb7c5f93b60c2bfc89f8 RxLibrary: 70cfcf1573ec16a375b4fe61d976a3188aab9303 COCOAPODS: 0.35.0 diff --git a/src/objective-c/examples/Sample/Pods/Headers/Public/GRPCClient/GRPCCall.h b/src/objective-c/examples/Sample/Pods/Headers/Public/GRPCClient/GRPCCall.h new file mode 120000 index 0000000000..cacb26174f --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Headers/Public/GRPCClient/GRPCCall.h @@ -0,0 +1 @@ +../../../../../../GRPCClient/GRPCCall.h
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Headers/Public/GRPCClient/GRPCMethodName.h b/src/objective-c/examples/Sample/Pods/Headers/Public/GRPCClient/GRPCMethodName.h new file mode 120000 index 0000000000..4dddbd8955 --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Headers/Public/GRPCClient/GRPCMethodName.h @@ -0,0 +1 @@ +../../../../../../GRPCClient/GRPCMethodName.h
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Local Podspecs/GRPCClient.podspec b/src/objective-c/examples/Sample/Pods/Local Podspecs/GRPCClient.podspec new file mode 100644 index 0000000000..a34c50b54e --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Local Podspecs/GRPCClient.podspec @@ -0,0 +1,14 @@ +Pod::Spec.new do |s| + s.name = 'GRPCClient' + s.version = '0.0.1' + s.summary = 'Generic gRPC client library for iOS' + s.author = { + 'Jorge Canizales' => 'jcanizales@google.com' + } + s.source_files = '*.{h,m}', 'private/*.{h,m}' + s.private_header_files = 'private/*.h' + s.platform = :ios + s.ios.deployment_target = '6.0' + s.requires_arc = true + s.dependency 'RxLibrary', '~> 0.0' +end diff --git a/src/objective-c/examples/Sample/Pods/Manifest.lock b/src/objective-c/examples/Sample/Pods/Manifest.lock index fee4b43bec..7fa4f5d547 100644 --- a/src/objective-c/examples/Sample/Pods/Manifest.lock +++ b/src/objective-c/examples/Sample/Pods/Manifest.lock @@ -1,14 +1,20 @@ PODS: + - GRPCClient (0.0.1): + - RxLibrary (~> 0.0) - RxLibrary (0.0.1) DEPENDENCIES: + - GRPCClient (from `../../GRPCClient`) - RxLibrary (from `../../RxLibrary`) EXTERNAL SOURCES: + GRPCClient: + :path: ../../GRPCClient RxLibrary: :path: ../../RxLibrary SPEC CHECKSUMS: + GRPCClient: 05c58faab99661384178bb7c5f93b60c2bfc89f8 RxLibrary: 70cfcf1573ec16a375b4fe61d976a3188aab9303 COCOAPODS: 0.35.0 diff --git a/src/objective-c/examples/Sample/Pods/Pods.xcodeproj/project.pbxproj b/src/objective-c/examples/Sample/Pods/Pods.xcodeproj/project.pbxproj index 68290dd5e8..b6f4c37b93 100644 --- a/src/objective-c/examples/Sample/Pods/Pods.xcodeproj/project.pbxproj +++ b/src/objective-c/examples/Sample/Pods/Pods.xcodeproj/project.pbxproj @@ -10,54 +10,186 @@ <string>46</string> <key>objects</key> <dict> - <key>00949E44051CD97851DEFF3B</key> + <key>00303CC3049D1C9E8709A044</key> + <dict> + <key>explicitFileType</key> + <string>archive.ar</string> + <key>includeInIndex</key> + <string>0</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>path</key> + <string>libPods-RxLibrary.a</string> + <key>sourceTree</key> + <string>BUILT_PRODUCTS_DIR</string> + </dict> + <key>003D718984A073D9C6C71422</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.h</string> + <key>name</key> + <string>GRPCDelegateWrapper.h</string> + <key>path</key> + <string>private/GRPCDelegateWrapper.h</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>0041F7F38D0B99E977EC7A9B</key> + <dict> + <key>baseConfigurationReference</key> + <string>02396B6B22E0450EA29193E9</string> + <key>buildSettings</key> + <dict> + <key>ALWAYS_SEARCH_USER_PATHS</key> + <string>NO</string> + <key>COPY_PHASE_STRIP</key> + <string>YES</string> + <key>DSTROOT</key> + <string>/tmp/xcodeproj.dst</string> + <key>GCC_PRECOMPILE_PREFIX_HEADER</key> + <string>YES</string> + <key>GCC_PREFIX_HEADER</key> + <string>Target Support Files/Pods-RxLibrary/Pods-RxLibrary-prefix.pch</string> + <key>INSTALL_PATH</key> + <string>$(BUILT_PRODUCTS_DIR)</string> + <key>IPHONEOS_DEPLOYMENT_TARGET</key> + <string>8.0</string> + <key>OTHER_CFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_CPLUSPLUSFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_LDFLAGS</key> + <string></string> + <key>OTHER_LIBTOOLFLAGS</key> + <string></string> + <key>PRODUCT_NAME</key> + <string>$(TARGET_NAME)</string> + <key>PUBLIC_HEADERS_FOLDER_PATH</key> + <string>$(TARGET_NAME)</string> + <key>SDKROOT</key> + <string>iphoneos</string> + <key>SKIP_INSTALL</key> + <string>YES</string> + <key>VALIDATE_PRODUCT</key> + <string>YES</string> + </dict> + <key>isa</key> + <string>XCBuildConfiguration</string> + <key>name</key> + <string>Release</string> + </dict> + <key>00669D4383CB42C429D06591</key> <dict> <key>fileRef</key> - <string>9CFAC09E370EA1C96C8D2880</string> + <string>D0641C22EEADF13905743122</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>01F5B724A99ADB3547023C72</key> + <key>0104C23B56A2F6D406AD513A</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.h</string> + <key>name</key> + <string>Pods-Sample-GRPCClient-prefix.pch</string> + <key>path</key> + <string>../Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-prefix.pch</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>01E37BE5C7114E128C4664FB</key> <dict> <key>fileRef</key> - <string>1868370C0050315A6B835D42</string> + <string>9470FB5E010191C87542871D</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>0239F1B46D24E21A8042F47F</key> + <key>02396B6B22E0450EA29193E9</key> <dict> - <key>buildConfigurationList</key> - <string>8919AE774852DD128A7CB510</string> - <key>buildPhases</key> - <array> - <string>A71CC1B520D2DFF451839FE2</string> - <string>896F697BD1BEAF8A081337EB</string> - </array> - <key>buildRules</key> - <array/> - <key>dependencies</key> - <array> - <string>6EB14BC96525C955FBD5CC75</string> - </array> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXNativeTarget</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> + <key>path</key> + <string>Pods-RxLibrary-Private.xcconfig</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>03289193476D7E6EE456FAA8</key> + <dict> + <key>fileRef</key> + <string>16D5B426090D302B58B8FF40</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>041582131ADE9EA5C2A319BB</key> + <dict> + <key>isa</key> + <string>PBXTargetDependency</string> <key>name</key> - <string>Pods-Sample</string> - <key>productName</key> - <string>Pods-Sample</string> - <key>productReference</key> - <string>DF94410F5DC0A0AB69336DF4</string> - <key>productType</key> - <string>com.apple.product-type.library.static</string> + <string>Pods-SampleTests-RxLibrary</string> + <key>target</key> + <string>474A50F85C06F74769FAD474</string> + <key>targetProxy</key> + <string>FBC9D2D66DA1B0B501961B55</string> + </dict> + <key>048EFCCABBC3F25828644716</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> + <key>path</key> + <string>Pods-SampleTests.debug.xcconfig</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>024F840533A6674922DB7899</key> + <key>077EB8C42818FBCCF960B6A2</key> <dict> <key>fileRef</key> - <string>46513F4AD14CBD2377C1E7A1</string> + <string>0B083D6614A831642ECCDB95</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>0260773D27B4AE159FB0B22D</key> + <key>078103DC988BEF03083FEB98</key> + <dict> + <key>fileRef</key> + <string>D0641C22EEADF13905743122</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>07DA0CCF4F2346740326BD7D</key> + <dict> + <key>fileRef</key> + <string>9470FB5E010191C87542871D</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>0843899658450810B81AC1DD</key> + <dict> + <key>fileRef</key> + <string>66A375345A9F319AE182BDBD</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>09759845E529CE5CD00BECA5</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -65,32 +197,117 @@ <string>PBXFileReference</string> <key>lastKnownFileType</key> <string>sourcecode.c.h</string> + <key>name</key> + <string>Pods-SampleTests-RxLibrary-prefix.pch</string> <key>path</key> - <string>GRXWriter+Immediate.h</string> + <string>../Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-prefix.pch</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>098BE814C7B5F9F21878CDE6</key> + <dict> + <key>baseConfigurationReference</key> + <string>3369A2EF668725CAF3F75D1F</string> + <key>buildSettings</key> + <dict> + <key>ALWAYS_SEARCH_USER_PATHS</key> + <string>NO</string> + <key>COPY_PHASE_STRIP</key> + <string>NO</string> + <key>DSTROOT</key> + <string>/tmp/xcodeproj.dst</string> + <key>GCC_DYNAMIC_NO_PIC</key> + <string>NO</string> + <key>GCC_OPTIMIZATION_LEVEL</key> + <string>0</string> + <key>GCC_PRECOMPILE_PREFIX_HEADER</key> + <string>YES</string> + <key>GCC_PREFIX_HEADER</key> + <string>Target Support Files/Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-prefix.pch</string> + <key>GCC_PREPROCESSOR_DEFINITIONS</key> + <array> + <string>DEBUG=1</string> + <string>$(inherited)</string> + </array> + <key>GCC_SYMBOLS_PRIVATE_EXTERN</key> + <string>NO</string> + <key>INSTALL_PATH</key> + <string>$(BUILT_PRODUCTS_DIR)</string> + <key>IPHONEOS_DEPLOYMENT_TARGET</key> + <string>8.0</string> + <key>OTHER_LDFLAGS</key> + <string></string> + <key>OTHER_LIBTOOLFLAGS</key> + <string></string> + <key>PRODUCT_NAME</key> + <string>$(TARGET_NAME)</string> + <key>PUBLIC_HEADERS_FOLDER_PATH</key> + <string>$(TARGET_NAME)</string> + <key>SDKROOT</key> + <string>iphoneos</string> + <key>SKIP_INSTALL</key> + <string>YES</string> + </dict> + <key>isa</key> + <string>XCBuildConfiguration</string> + <key>name</key> + <string>Debug</string> + </dict> + <key>0A5311098107B761AEF843FF</key> + <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>3DE1AA4AD4B460F4312B1359</string> + </array> + <key>isa</key> + <string>PBXFrameworksBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> + </dict> + <key>0B083D6614A831642ECCDB95</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.h</string> + <key>name</key> + <string>GRXNSBlockEnumerator.h</string> + <key>path</key> + <string>private/GRXNSBlockEnumerator.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>026236C3432E9DBC10A40748</key> + <key>0C52B5B243390BA62033C734</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.objc</string> + <string>sourcecode.c.h</string> <key>path</key> - <string>Pods-SampleTests-dummy.m</string> + <string>GRXWriteable.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>0385BCBCA0601E80FAD2A901</key> + <key>0CA3C7D4D3EF8429533AB7D5</key> <dict> - <key>fileRef</key> - <string>46513F4AD14CBD2377C1E7A1</string> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>D1C458EAFDCA48A4C90131E9</string> + </array> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXFrameworksBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> </dict> - <key>0879DBE6FFA1852D106330B4</key> + <key>0CB824BF5CED7188A205D06F</key> <dict> <key>buildSettings</key> <dict> @@ -119,20 +336,15 @@ <key>CLANG_WARN_OBJC_ROOT_CLASS</key> <string>YES</string> <key>COPY_PHASE_STRIP</key> - <string>YES</string> + <string>NO</string> + <key>ENABLE_NS_ASSERTIONS</key> + <string>NO</string> <key>GCC_C_LANGUAGE_STANDARD</key> <string>gnu99</string> - <key>GCC_DYNAMIC_NO_PIC</key> - <string>NO</string> - <key>GCC_OPTIMIZATION_LEVEL</key> - <string>0</string> <key>GCC_PREPROCESSOR_DEFINITIONS</key> <array> - <string>DEBUG=1</string> - <string>$(inherited)</string> + <string>RELEASE=1</string> </array> - <key>GCC_SYMBOLS_PRIVATE_EXTERN</key> - <string>NO</string> <key>GCC_WARN_64_TO_32_BIT_CONVERSION</key> <string>YES</string> <key>GCC_WARN_ABOUT_RETURN_TYPE</key> @@ -147,81 +359,20 @@ <string>YES</string> <key>IPHONEOS_DEPLOYMENT_TARGET</key> <string>8.0</string> - <key>ONLY_ACTIVE_ARCH</key> - <string>YES</string> <key>STRIP_INSTALLED_PRODUCT</key> <string>NO</string> + <key>VALIDATE_PRODUCT</key> + <string>YES</string> </dict> <key>isa</key> <string>XCBuildConfiguration</string> <key>name</key> - <string>Debug</string> - </dict> - <key>092D0456252ED3F90F66084D</key> - <dict> - <key>includeInIndex</key> - <string>1</string> - <key>isa</key> - <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>sourcecode.c.h</string> - <key>path</key> - <string>Pods-Sample-environment.h</string> - <key>sourceTree</key> - <string><group></string> - </dict> - <key>0BC8818D3A097831FDE0750B</key> - <dict> - <key>fileRef</key> - <string>BC50D76123DA4B85E6AD77B4</string> - <key>isa</key> - <string>PBXBuildFile</string> - </dict> - <key>0C57EED724EBF58759F9F6DF</key> - <dict> - <key>fileRef</key> - <string>4BB75B0FC7359E8EA8672954</string> - <key>isa</key> - <string>PBXBuildFile</string> - </dict> - <key>0D09CEB9308FA5BACEB5F84C</key> - <dict> - <key>children</key> - <array> - <string>30063D2979A72CA1050BD4A6</string> - <string>DB3528F609E6177E1C5A691C</string> - <string>026236C3432E9DBC10A40748</string> - <string>EF8B807C5A2059D6C709450D</string> - <string>8B503889F903CED9A12E5C87</string> - <string>591702CE7D8AF91674F1640F</string> - <string>DB677464758307786D68CCE9</string> - </array> - <key>isa</key> - <string>PBXGroup</string> - <key>name</key> - <string>Pods-SampleTests</string> - <key>path</key> - <string>Target Support Files/Pods-SampleTests</string> - <key>sourceTree</key> - <string><group></string> - </dict> - <key>0D53085043D992DC00E29F0A</key> - <dict> - <key>includeInIndex</key> - <string>1</string> - <key>isa</key> - <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>sourcecode.c.h</string> - <key>path</key> - <string>GRXWriteable.h</string> - <key>sourceTree</key> - <string><group></string> + <string>Release</string> </dict> - <key>0F20828B67FDCB990B1818E9</key> + <key>0E66C9AA7C5988807A667377</key> <dict> <key>baseConfigurationReference</key> - <string>DB677464758307786D68CCE9</string> + <string>A0416D4A1F0C863C1856405A</string> <key>buildSettings</key> <dict> <key>ALWAYS_SEARCH_USER_PATHS</key> @@ -266,161 +417,140 @@ <key>name</key> <string>Release</string> </dict> - <key>11072993378724E9AF9CAF85</key> + <key>0F24DA6964D128ACB940F0A6</key> <dict> - <key>explicitFileType</key> - <string>archive.ar</string> - <key>includeInIndex</key> - <string>0</string> - <key>isa</key> - <string>PBXFileReference</string> - <key>path</key> - <string>libPods-SampleTests-RxLibrary.a</string> - <key>sourceTree</key> - <string>BUILT_PRODUCTS_DIR</string> - </dict> - <key>1146D04C598DEBA045C96C2F</key> - <dict> - <key>buildActionMask</key> - <string>2147483647</string> - <key>files</key> - <array> - <string>1F3162E71EE5AA2B65DEC06D</string> - </array> + <key>fileRef</key> + <string>B5E4A18F0B2376BE20D1C8A5</string> <key>isa</key> - <string>PBXFrameworksBuildPhase</string> - <key>runOnlyForDeploymentPostprocessing</key> - <string>0</string> + <string>PBXBuildFile</string> </dict> - <key>114F64D42E2AF2F3EBDE9BCB</key> + <key>0F5AF35D0B405F8C010B9E02</key> <dict> <key>buildActionMask</key> <string>2147483647</string> <key>files</key> <array> - <string>1D31B6F63B148D2EA5637823</string> + <string>A0B86020532CA90CD846B0C8</string> </array> <key>isa</key> <string>PBXSourcesBuildPhase</string> <key>runOnlyForDeploymentPostprocessing</key> <string>0</string> </dict> - <key>124B93EFC16A2026269840B2</key> + <key>1284152D2F99A63F97EE1E41</key> <dict> + <key>fileRef</key> + <string>439AF2B977736E012C79B2FE</string> <key>isa</key> - <string>PBXTargetDependency</string> - <key>name</key> - <string>Pods-RxLibrary</string> - <key>target</key> - <string>6BFD156F312F6CAA1E5B00CA</string> - <key>targetProxy</key> - <string>DB007D27F74F8F72C72A1079</string> + <string>PBXBuildFile</string> </dict> - <key>14D92BB2ED12213381BD2EB9</key> + <key>14C9839270FF7F89876551CF</key> <dict> - <key>buildConfigurationList</key> - <string>C4342DDEEF3C3290956C21DF</string> - <key>buildPhases</key> - <array> - <string>432AE81157886BE484236751</string> - <string>87700F015FA41F53D88CA4BC</string> - </array> - <key>buildRules</key> - <array/> - <key>dependencies</key> - <array> - <string>F8B4778EF3030EEC2E9927CE</string> - </array> + <key>fileRef</key> + <string>6394EA7A57663B87FD034792</string> <key>isa</key> - <string>PBXNativeTarget</string> - <key>name</key> - <string>Pods-SampleTests</string> - <key>productName</key> - <string>Pods-SampleTests</string> - <key>productReference</key> - <string>42A375125393D0613249D046</string> - <key>productType</key> - <string>com.apple.product-type.library.static</string> + <string>PBXBuildFile</string> </dict> - <key>15DC9A153BC412DB41B7F154</key> + <key>152BFB6270DCF24A85D66444</key> <dict> <key>fileRef</key> - <string>5AEFA85A5F1AD206D68B0576</string> + <string>D0641C22EEADF13905743122</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>15F64D3D7D10DB47599A72EB</key> + <key>16054FFCB52E34B7784B3D2C</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.objc</string> - <key>name</key> - <string>GRXMappingWriter.m</string> + <string>text.xcconfig</string> <key>path</key> - <string>transformations/GRXMappingWriter.m</string> + <string>Pods-RxLibrary.xcconfig</string> <key>sourceTree</key> <string><group></string> </dict> - <key>16E6BBD46D9745611EF313FB</key> + <key>164DD73ED2C34BC6B3156AE5</key> <dict> <key>fileRef</key> - <string>BECFE3DCB323841851972996</string> + <string>A7CE4BCE7B6959BCDC54B854</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>17F4C2F25813E7A4588FF233</key> - <dict> - <key>buildConfigurations</key> - <array> - <string>B153046F0CBA526564A9673C</string> - <string>B960FF1BE77D3F4459EEB1E0</string> - </array> - <key>defaultConfigurationIsVisible</key> - <string>0</string> - <key>defaultConfigurationName</key> - <string>Release</string> - <key>isa</key> - <string>XCConfigurationList</string> - </dict> - <key>1868370C0050315A6B835D42</key> + <key>16D5B426090D302B58B8FF40</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.h</string> - <key>name</key> - <string>GRXNSScalarEnumerator.h</string> + <string>sourcecode.c.objc</string> <key>path</key> - <string>private/GRXNSScalarEnumerator.h</string> + <string>Pods-Sample-dummy.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>19001096C873023095C4F032</key> + <key>1769B37B91BE6D2B4C498D2C</key> + <dict> + <key>isa</key> + <string>PBXTargetDependency</string> + <key>name</key> + <string>Pods-Sample-RxLibrary</string> + <key>target</key> + <string>4E2021A981DA9A189922E0C6</string> + <key>targetProxy</key> + <string>17CC3137FB05C14750ECA482</string> + </dict> + <key>17CC3137FB05C14750ECA482</key> + <dict> + <key>containerPortal</key> + <string>E61F9CBEB0CA9A172C4AA56B</string> + <key>isa</key> + <string>PBXContainerItemProxy</string> + <key>proxyType</key> + <string>1</string> + <key>remoteGlobalIDString</key> + <string>4E2021A981DA9A189922E0C6</string> + <key>remoteInfo</key> + <string>Pods-Sample-RxLibrary</string> + </dict> + <key>18738628EC8A28187A30D51F</key> + <dict> + <key>containerPortal</key> + <string>E61F9CBEB0CA9A172C4AA56B</string> + <key>isa</key> + <string>PBXContainerItemProxy</string> + <key>proxyType</key> + <string>1</string> + <key>remoteGlobalIDString</key> + <string>A10CFA4D4ED9B20894905742</string> + <key>remoteInfo</key> + <string>Pods-SampleTests-GRPCClient</string> + </dict> + <key>1939E5289BFF2A898AB652F4</key> <dict> <key>fileRef</key> - <string>EB29FAB1F81F0D17BDAD72D0</string> + <string>0B083D6614A831642ECCDB95</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>1B8264EEFEF4AD585182D256</key> + <key>19A733EC94B0F847F901D308</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.xcconfig</string> + <string>sourcecode.c.objc</string> + <key>name</key> + <string>GRXNSFastEnumerator.m</string> <key>path</key> - <string>Pods-Sample.debug.xcconfig</string> + <string>private/GRXNSFastEnumerator.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>1C8DFDF9C457D910DC1FD227</key> + <key>1A2D9424BA1BE0E3B2598D06</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -428,129 +558,159 @@ <string>PBXFileReference</string> <key>lastKnownFileType</key> <string>sourcecode.c.h</string> + <key>name</key> + <string>GRXNSFastEnumerator.h</string> <key>path</key> - <string>Pods-environment.h</string> + <string>private/GRXNSFastEnumerator.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>1D31B6F63B148D2EA5637823</key> + <key>1C191978ED182A611393A626</key> <dict> <key>fileRef</key> - <string>22DB20D833E7D26AEA6513D6</string> + <string>0B083D6614A831642ECCDB95</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>1E5420835E4862DBA55002A9</key> + <key>1D1E67A62BDD0A04136468E9</key> <dict> - <key>fileRef</key> - <string>BECFE3DCB323841851972996</string> - <key>isa</key> - <string>PBXBuildFile</string> - </dict> - <key>1F3162E71EE5AA2B65DEC06D</key> - <dict> - <key>fileRef</key> - <string>56CE61A20C6F88CC0CE888C8</string> - <key>isa</key> - <string>PBXBuildFile</string> - </dict> - <key>22531AF83592134D3879C3E1</key> - <dict> - <key>fileRef</key> - <string>15F64D3D7D10DB47599A72EB</string> - <key>isa</key> - <string>PBXBuildFile</string> - </dict> - <key>22DB20D833E7D26AEA6513D6</key> - <dict> - <key>includeInIndex</key> - <string>1</string> + <key>baseConfigurationReference</key> + <string>CDA9A715DCFCE07755974888</string> + <key>buildSettings</key> + <dict> + <key>ALWAYS_SEARCH_USER_PATHS</key> + <string>NO</string> + <key>COPY_PHASE_STRIP</key> + <string>YES</string> + <key>DSTROOT</key> + <string>/tmp/xcodeproj.dst</string> + <key>GCC_PRECOMPILE_PREFIX_HEADER</key> + <string>YES</string> + <key>GCC_PREFIX_HEADER</key> + <string>Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-prefix.pch</string> + <key>INSTALL_PATH</key> + <string>$(BUILT_PRODUCTS_DIR)</string> + <key>IPHONEOS_DEPLOYMENT_TARGET</key> + <string>8.0</string> + <key>OTHER_CFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_CPLUSPLUSFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_LDFLAGS</key> + <string></string> + <key>OTHER_LIBTOOLFLAGS</key> + <string></string> + <key>PRODUCT_NAME</key> + <string>$(TARGET_NAME)</string> + <key>PUBLIC_HEADERS_FOLDER_PATH</key> + <string>$(TARGET_NAME)</string> + <key>SDKROOT</key> + <string>iphoneos</string> + <key>SKIP_INSTALL</key> + <string>YES</string> + <key>VALIDATE_PRODUCT</key> + <string>YES</string> + </dict> <key>isa</key> - <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>sourcecode.c.objc</string> - <key>path</key> - <string>Pods-dummy.m</string> - <key>sourceTree</key> - <string><group></string> + <string>XCBuildConfiguration</string> + <key>name</key> + <string>Release</string> </dict> - <key>245F9E9690E6E08D291FC94C</key> + <key>1D35328CE231F0F9CD0AD192</key> <dict> <key>fileRef</key> - <string>BC52B0661F25B25CE382296C</string> + <string>BC51F603F893AA6A748EB8EC</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>266008D38F1E72755C711699</key> + <key>1D7BCFDFE2B63B8DF9A95779</key> <dict> - <key>fileRef</key> - <string>026236C3432E9DBC10A40748</string> + <key>buildConfigurations</key> + <array> + <string>667F52E3CC55312354C2DA1C</string> + <string>741B3AB48094A74BA06E4B41</string> + </array> + <key>defaultConfigurationIsVisible</key> + <string>0</string> + <key>defaultConfigurationName</key> + <string>Release</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>XCConfigurationList</string> </dict> - <key>2663F4401A9075DAC0B24171</key> + <key>1EFB19037775E7D8E9F6FC6B</key> <dict> - <key>includeInIndex</key> - <string>1</string> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>CAB17FE3D2357BFAF9B8598F</string> + <string>F156B1B8573809A342E0AE1F</string> + <string>DFF269EBCC2A9D30DC7E264F</string> + <string>6C5ACDD3AAB1F431A03610FF</string> + <string>276C69BC7FCAF06166AC8561</string> + <string>688A44CE404A30F009CEAD70</string> + <string>39148152D8AC33FCD691ABF9</string> + <string>1284152D2F99A63F97EE1E41</string> + <string>CD18BC77ECA79D031662CC51</string> + <string>B367BCF63161EE64CC1B1DE0</string> + <string>2E60F7CE1E262CF0A0579F77</string> + </array> <key>isa</key> - <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>sourcecode.c.objc</string> - <key>path</key> - <string>Pods-RxLibrary-dummy.m</string> - <key>sourceTree</key> - <string><group></string> + <string>PBXSourcesBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> </dict> - <key>26E6ACBF137DBC325B4E7DA7</key> + <key>1F1DE3733C2AC2A97CA8885A</key> <dict> <key>buildConfigurationList</key> - <string>B05A2B15C8A03AABA163D7D7</string> + <string>AC12B8262555F9F61255BBC0</string> <key>buildPhases</key> <array> - <string>114F64D42E2AF2F3EBDE9BCB</string> - <string>DCAB71BD665AF17533987B69</string> + <string>F058968A71750BBCF4F4FB1C</string> + <string>E066A01F3A992087F10B31CF</string> </array> <key>buildRules</key> <array/> <key>dependencies</key> <array> - <string>124B93EFC16A2026269840B2</string> + <string>69D3EA284F3612F9F534DEBB</string> + <string>1769B37B91BE6D2B4C498D2C</string> </array> <key>isa</key> <string>PBXNativeTarget</string> <key>name</key> - <string>Pods</string> + <string>Pods-Sample</string> <key>productName</key> - <string>Pods</string> + <string>Pods-Sample</string> <key>productReference</key> - <string>5C30ABB95D604B483422D72A</string> + <string>E4F23FE4AEB216E7D1E2B7EE</string> <key>productType</key> <string>com.apple.product-type.library.static</string> </dict> - <key>27E123435067CC11FE103999</key> + <key>1F8BB7EDC9650BA44338F8C8</key> <dict> - <key>includeInIndex</key> - <string>1</string> + <key>fileRef</key> + <string>A7CE4BCE7B6959BCDC54B854</string> <key>isa</key> - <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>text.xcconfig</string> - <key>path</key> - <string>Pods-Sample.release.xcconfig</string> - <key>sourceTree</key> - <string><group></string> + <string>PBXBuildFile</string> </dict> - <key>288A25371032891C824CF4AA</key> + <key>21E0A8B187DFAE6BD32D1302</key> <dict> <key>fileRef</key> - <string>838341407CEBBFB19D25C45A</string> + <string>35A079DEB6141A6FDFF69D63</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>29B274FDF882AB8B39814FE6</key> + <key>23C7B3ADDC7C78F4EEEB5FCE</key> <dict> <key>baseConfigurationReference</key> - <string>687D79F4C2484F58E9796051</string> + <string>363608E39D7F7AA17945644A</string> <key>buildSettings</key> <dict> <key>ALWAYS_SEARCH_USER_PATHS</key> @@ -565,8 +725,6 @@ <string>0</string> <key>GCC_PRECOMPILE_PREFIX_HEADER</key> <string>YES</string> - <key>GCC_PREFIX_HEADER</key> - <string>Target Support Files/Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-prefix.pch</string> <key>GCC_PREPROCESSOR_DEFINITIONS</key> <array> <string>DEBUG=1</string> @@ -596,71 +754,143 @@ <key>name</key> <string>Debug</string> </dict> - <key>2AADA4C52A284ED5D41C7CF5</key> + <key>24F79AE5DB5FB86FCB2E2C39</key> <dict> <key>fileRef</key> - <string>0D53085043D992DC00E29F0A</string> + <string>423B94F0660BA470EAD9DA5E</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>2B05A4C21D00E8CF0DE88447</key> + <key>2504847B854AC340A0712235</key> + <dict> + <key>isa</key> + <string>PBXTargetDependency</string> + <key>name</key> + <string>Pods-SampleTests-GRPCClient</string> + <key>target</key> + <string>A10CFA4D4ED9B20894905742</string> + <key>targetProxy</key> + <string>18738628EC8A28187A30D51F</string> + </dict> + <key>255EE0013C9A672760CB1F29</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.h</string> - <key>name</key> - <string>Pods-SampleTests-RxLibrary-prefix.pch</string> + <string>text.script.sh</string> <key>path</key> - <string>../Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-prefix.pch</string> + <string>Pods-SampleTests-resources.sh</string> <key>sourceTree</key> <string><group></string> </dict> - <key>2B341576464148A01DCFB28B</key> + <key>2598A10FC8B9442686B70419</key> <dict> - <key>fileRef</key> - <string>3AD75C69A61408EF8BE0F247</string> + <key>baseConfigurationReference</key> + <string>A2F53747970EB33A4D75EAB4</string> + <key>buildSettings</key> + <dict> + <key>ALWAYS_SEARCH_USER_PATHS</key> + <string>NO</string> + <key>COPY_PHASE_STRIP</key> + <string>YES</string> + <key>DSTROOT</key> + <string>/tmp/xcodeproj.dst</string> + <key>GCC_PRECOMPILE_PREFIX_HEADER</key> + <string>YES</string> + <key>GCC_PREFIX_HEADER</key> + <string>Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-prefix.pch</string> + <key>INSTALL_PATH</key> + <string>$(BUILT_PRODUCTS_DIR)</string> + <key>IPHONEOS_DEPLOYMENT_TARGET</key> + <string>8.0</string> + <key>OTHER_CFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_CPLUSPLUSFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_LDFLAGS</key> + <string></string> + <key>OTHER_LIBTOOLFLAGS</key> + <string></string> + <key>PRODUCT_NAME</key> + <string>$(TARGET_NAME)</string> + <key>PUBLIC_HEADERS_FOLDER_PATH</key> + <string>$(TARGET_NAME)</string> + <key>SDKROOT</key> + <string>iphoneos</string> + <key>SKIP_INSTALL</key> + <string>YES</string> + <key>VALIDATE_PRODUCT</key> + <string>YES</string> + </dict> <key>isa</key> - <string>PBXBuildFile</string> + <string>XCBuildConfiguration</string> + <key>name</key> + <string>Release</string> </dict> - <key>2B49DCA723ECBC0F2777B960</key> + <key>25992CA77847232BA741CA19</key> <dict> <key>fileRef</key> - <string>BC52B0661F25B25CE382296C</string> + <string>D444D13D4D0829CF4142949A</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>2D6833D4D544AC13450405B1</key> + <key>26A838790310501CB08753A6</key> <dict> <key>fileRef</key> - <string>2663F4401A9075DAC0B24171</string> + <string>FB880554D85130C733402058</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>2D7732FBE1A5A7FC42D4DC4B</key> + <key>2705BF8D166EFF8A2D44B2BA</key> <dict> - <key>fileRef</key> - <string>56CE61A20C6F88CC0CE888C8</string> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.h</string> + <key>path</key> + <string>NSEnumerator+GRXUtil.h</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>2DA405F6E578008991B3F9EA</key> + <key>2747C9BA8D7E0E6EFDFE5D3E</key> <dict> - <key>fileRef</key> - <string>BECFE3DCB323841851972996</string> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>D153B061942AF56AA4E13412</string> + <string>14C9839270FF7F89876551CF</string> + <string>D250768ADF5442C9C8880A18</string> + <string>40E563CF0E6B25CBB6DB08E8</string> + <string>40F62119098548A9D94FC1CD</string> + <string>69179090F5D6919F11110907</string> + <string>8D8D6FB22E4E5302E899F3C7</string> + <string>8944DC99856C99235675D65C</string> + <string>B7FD4EDD742EE7C18D733B84</string> + </array> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXHeadersBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> </dict> - <key>2F91A2AD622F87D98C9B0E1E</key> + <key>276C69BC7FCAF06166AC8561</key> <dict> <key>fileRef</key> - <string>0D53085043D992DC00E29F0A</string> + <string>2DA7CCAA52B82F817FA61F5A</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>2FE1D288B8389F925AA3CE0C</key> + <key>28C6D48989DA211E0BACAFC2</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -669,82 +899,87 @@ <key>lastKnownFileType</key> <string>text.xcconfig</string> <key>path</key> - <string>Pods-RxLibrary-Private.xcconfig</string> + <string>Pods-Sample.debug.xcconfig</string> <key>sourceTree</key> <string><group></string> </dict> - <key>30063D2979A72CA1050BD4A6</key> + <key>2C4B95CD783F7C0739F77B66</key> <dict> - <key>includeInIndex</key> - <string>1</string> + <key>fileRef</key> + <string>0C52B5B243390BA62033C734</string> <key>isa</key> - <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>text</string> - <key>path</key> - <string>Pods-SampleTests-acknowledgements.markdown</string> - <key>sourceTree</key> - <string><group></string> + <string>PBXBuildFile</string> </dict> - <key>3133D1CCCF4F1FE3E893509C</key> + <key>2C949CFC10D3564D45005639</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.xcconfig</string> + <string>sourcecode.c.h</string> <key>path</key> - <string>Pods-RxLibrary.xcconfig</string> + <string>Pods-Sample-environment.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>352B4C7135E3BBBFEBAB7F55</key> + <key>2CF8BB8D6A668D6213E18915</key> <dict> <key>fileRef</key> - <string>BA9F62DDE37FF0D601A4D5EA</string> + <string>3E850442224A3D7C7540C6C5</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>355670384FC160AB6C32765E</key> + <key>2D505FE685E88A2746CB2C30</key> <dict> - <key>children</key> - <array> - <string>56CE61A20C6F88CC0CE888C8</string> - </array> + <key>fileRef</key> + <string>D45F5D73E3D255043B7E349A</string> <key>isa</key> - <string>PBXGroup</string> + <string>PBXBuildFile</string> + </dict> + <key>2D97FDE1D611758F0CC8EAC3</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> <key>name</key> - <string>iOS</string> + <string>Pods-Sample-RxLibrary-dummy.m</string> + <key>path</key> + <string>../Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-dummy.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>36C139FD3DEDB8CA2A1D3295</key> + <key>2DA7CCAA52B82F817FA61F5A</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text</string> + <string>sourcecode.c.objc</string> + <key>name</key> + <string>GRXNSScalarEnumerator.m</string> <key>path</key> - <string>Pods-acknowledgements.markdown</string> + <string>private/GRXNSScalarEnumerator.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>36FF37EAC7E918C4CD867776</key> + <key>2E60F7CE1E262CF0A0579F77</key> <dict> <key>fileRef</key> - <string>EB29FAB1F81F0D17BDAD72D0</string> + <string>93CEF17866E8E476701B3AEB</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>3749A34D3DFA6E2F3539E546</key> + <key>2EBE2A8DBCF9EED6B632AE6F</key> <dict> <key>buildConfigurations</key> <array> - <string>0879DBE6FFA1852D106330B4</string> - <string>6B88B9AB87714A903970EAED</string> + <string>23C7B3ADDC7C78F4EEEB5FCE</string> + <string>B32DC879307F72182ED4B8EF</string> </array> <key>defaultConfigurationIsVisible</key> <string>0</string> @@ -753,54 +988,77 @@ <key>isa</key> <string>XCConfigurationList</string> </dict> - <key>3800855A656C8D0813062074</key> + <key>306408CC38FAB0410E0D90E7</key> <dict> - <key>buildConfigurationList</key> - <string>9508723D4C0D4321A5188108</string> - <key>buildPhases</key> - <array> - <string>F779618174957BE31FCCDE56</string> - <string>45FC41033EB61B16BC8151B9</string> - <string>8AB7020D9B71B1B4F34249BE</string> - </array> - <key>buildRules</key> - <array/> - <key>dependencies</key> - <array/> + <key>fileRef</key> + <string>003D718984A073D9C6C71422</string> <key>isa</key> - <string>PBXNativeTarget</string> + <string>PBXBuildFile</string> + </dict> + <key>31B56E69FEFEC33075859CFE</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.h</string> <key>name</key> - <string>Pods-SampleTests-RxLibrary</string> - <key>productName</key> - <string>Pods-SampleTests-RxLibrary</string> - <key>productReference</key> - <string>11072993378724E9AF9CAF85</string> - <key>productType</key> - <string>com.apple.product-type.library.static</string> + <string>Pods-Sample-RxLibrary-prefix.pch</string> + <key>path</key> + <string>../Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-prefix.pch</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>397A12919FB4BDD608FE207C</key> + <key>327414DEAB5056533318E26E</key> <dict> <key>children</key> <array> - <string>B4FB10339A6A2E1AAF255802</string> - <string>5840BDD08ED67C12ADB1DF08</string> - <string>817F8B2E38A51910E8F8EC7D</string> - <string>8B05D39455D5B23720961FA4</string> - <string>F2BB78774BCEFD5DDDF38239</string> + <string>AD88FBBAFBF1F13467342BD1</string> + <string>EB86FC57EE5F50944BA86EE3</string> + <string>7E3BE2E23E465D87ECF0E962</string> + <string>EE156F6201B39BDD5F905822</string> + <string>AAD40140819824C5EF180664</string> + <string>A2F53747970EB33A4D75EAB4</string> + <string>732C03DC74F2738AE9E86ECA</string> + <string>0104C23B56A2F6D406AD513A</string> + <string>45F8559BE23F19F91747A28B</string> + <string>CDA9A715DCFCE07755974888</string> + <string>D0E4885FFC11D4A532FAB517</string> + <string>4B2A75095DECE2C0424CBCFC</string> </array> <key>isa</key> <string>PBXGroup</string> + <key>name</key> + <string>Support Files</string> + <key>path</key> + <string>../examples/Sample/Pods/Target Support Files/Pods-GRPCClient</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>3369A2EF668725CAF3F75D1F</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> + <key>name</key> + <string>Pods-SampleTests-RxLibrary-Private.xcconfig</string> + <key>path</key> + <string>../Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-Private.xcconfig</string> <key>sourceTree</key> <string><group></string> </dict> - <key>3A4DE73D0D0274E782C1A564</key> + <key>339F0D64DF0A7BD0AA48186E</key> <dict> <key>fileRef</key> - <string>56CE61A20C6F88CC0CE888C8</string> + <string>0C52B5B243390BA62033C734</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>3AD75C69A61408EF8BE0F247</key> + <key>34373F1941450D17C3F85B57</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -808,46 +1066,64 @@ <string>PBXFileReference</string> <key>lastKnownFileType</key> <string>sourcecode.c.objc</string> + <key>name</key> + <string>GRXNSBlockEnumerator.m</string> <key>path</key> - <string>GRXWriteable.m</string> + <string>private/GRXNSBlockEnumerator.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>3C3F1A188E25219C230FFD4F</key> + <key>34D39E370FE6AF621D048E13</key> <dict> <key>fileRef</key> - <string>9DADE0CF857B717294F7F74F</string> + <string>A7CE4BCE7B6959BCDC54B854</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>404D4F98249F3383235463A4</key> + <key>357862381E5517983B1A7AA9</key> <dict> - <key>fileRef</key> - <string>56CE61A20C6F88CC0CE888C8</string> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> + <key>name</key> + <string>Pods-SampleTests-RxLibrary-dummy.m</string> + <key>path</key> + <string>../Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-dummy.m</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>407E794549893DD91A2ED84E</key> + <key>35A079DEB6141A6FDFF69D63</key> <dict> - <key>fileRef</key> - <string>DB0257E62EC33F3F316EF017</string> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.h</string> + <key>name</key> + <string>GRXMappingWriter.h</string> + <key>path</key> + <string>transformations/GRXMappingWriter.h</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>42A375125393D0613249D046</key> + <key>363608E39D7F7AA17945644A</key> <dict> - <key>explicitFileType</key> - <string>archive.ar</string> <key>includeInIndex</key> - <string>0</string> + <string>1</string> <key>isa</key> <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> <key>path</key> - <string>libPods-SampleTests.a</string> + <string>Pods.debug.xcconfig</string> <key>sourceTree</key> - <string>BUILT_PRODUCTS_DIR</string> + <string><group></string> </dict> - <key>42B461F095E85911637DFD60</key> + <key>36CC8128F585662CE7EF2114</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -856,60 +1132,74 @@ <key>lastKnownFileType</key> <string>sourcecode.c.objc</string> <key>name</key> - <string>Pods-SampleTests-RxLibrary-dummy.m</string> + <string>NSData+GRPC.m</string> <key>path</key> - <string>../Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-dummy.m</string> + <string>private/NSData+GRPC.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>432AE81157886BE484236751</key> + <key>39148152D8AC33FCD691ABF9</key> <dict> - <key>buildActionMask</key> - <string>2147483647</string> - <key>files</key> + <key>fileRef</key> + <string>EA915E5B33F07CD0B9F8ACE9</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>39B5F5991112189C12D87D40</key> + <dict> + <key>children</key> <array> - <string>266008D38F1E72755C711699</string> + <string>EC4BA4B1D02C3BA6DBB450E7</string> + <string>A0064CCC8EC60B3CD0E4F72F</string> + <string>7484EC496D674B8D63C9B14A</string> + <string>4D580403A4A30D76B96E9775</string> + <string>E2EA100B27BDAB6CA32F3814</string> </array> <key>isa</key> - <string>PBXSourcesBuildPhase</string> - <key>runOnlyForDeploymentPostprocessing</key> - <string>0</string> + <string>PBXGroup</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>43CC797FB2A733DF5B7A9F05</key> + <key>3B52D357FFBB1F7AA20D702F</key> <dict> <key>fileRef</key> - <string>15F64D3D7D10DB47599A72EB</string> + <string>78C38086F90849CD909A9847</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>458FF1EEF4EB9646C699F3DD</key> + <key>3C7D98B6D2E351C032BE20A6</key> <dict> <key>fileRef</key> - <string>57AC9BF19B9635D7476CA5FA</string> + <string>6394EA7A57663B87FD034792</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>45A1913C8F48686C1FC82520</key> + <key>3CBFCE5C8506BD28C4AA47EC</key> + <dict> + <key>isa</key> + <string>PBXTargetDependency</string> + <key>name</key> + <string>Pods-Sample-RxLibrary</string> + <key>target</key> + <string>4E2021A981DA9A189922E0C6</string> + <key>targetProxy</key> + <string>9F21B0DA9C171E66AC1CB1E2</string> + </dict> + <key>3D7B59A31C0CF6B937B6B56F</key> <dict> <key>fileRef</key> - <string>9DADE0CF857B717294F7F74F</string> + <string>439AF2B977736E012C79B2FE</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>45FC41033EB61B16BC8151B9</key> + <key>3DE1AA4AD4B460F4312B1359</key> <dict> - <key>buildActionMask</key> - <string>2147483647</string> - <key>files</key> - <array> - <string>2D7732FBE1A5A7FC42D4DC4B</string> - </array> + <key>fileRef</key> + <string>A7CE4BCE7B6959BCDC54B854</string> <key>isa</key> - <string>PBXFrameworksBuildPhase</string> - <key>runOnlyForDeploymentPostprocessing</key> - <string>0</string> + <string>PBXBuildFile</string> </dict> - <key>46513F4AD14CBD2377C1E7A1</key> + <key>3E850442224A3D7C7540C6C5</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -918,332 +1208,713 @@ <key>lastKnownFileType</key> <string>sourcecode.c.h</string> <key>name</key> - <string>GRXNSFastEnumerator.h</string> + <string>NSError+GRPC.h</string> <key>path</key> - <string>private/GRXNSFastEnumerator.h</string> + <string>private/NSError+GRPC.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>46A8EFCC59CF17E048EC34ED</key> + <key>3FFB0F49732540C0F34BEA5D</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.plist.xml</string> + <key>path</key> + <string>Pods-Sample-acknowledgements.plist</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>40E563CF0E6B25CBB6DB08E8</key> <dict> <key>fileRef</key> - <string>5AEFA85A5F1AD206D68B0576</string> + <string>003D718984A073D9C6C71422</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>46FAFA88CA3E774263422EB9</key> + <key>40F1A996749176D9DB148901</key> + <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>C59D49EFF10934AFF82CA873</string> + </array> + <key>isa</key> + <string>PBXSourcesBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> + </dict> + <key>40F62119098548A9D94FC1CD</key> + <dict> + <key>fileRef</key> + <string>EE695A82B047142EA781152E</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>41FD4DEF364AC343F07212C1</key> <dict> <key>fileRef</key> - <string>3AD75C69A61408EF8BE0F247</string> + <string>FB880554D85130C733402058</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>4946B2D315E9BF5CBACD7D52</key> + <key>423B94F0660BA470EAD9DA5E</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.plist.xml</string> + <string>sourcecode.c.h</string> <key>path</key> - <string>Pods-acknowledgements.plist</string> + <string>GRPCMethodName.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>4954E8CE730737CD2991E502</key> + <key>42669F81E3800361030A567A</key> + <dict> + <key>fileRef</key> + <string>517E28171A4524F9C518EAAC</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>430E7D130A089632FA407274</key> <dict> <key>children</key> <array> - <string>BECFE3DCB323841851972996</string> - <string>BC52B0661F25B25CE382296C</string> - <string>9CFAC09E370EA1C96C8D2880</string> - <string>15F64D3D7D10DB47599A72EB</string> - <string>5AEFA85A5F1AD206D68B0576</string> - <string>4BB75B0FC7359E8EA8672954</string> - <string>46513F4AD14CBD2377C1E7A1</string> - <string>636AC1003F2C71FFD74542CD</string> - <string>1868370C0050315A6B835D42</string> - <string>57AC9BF19B9635D7476CA5FA</string> - <string>0D53085043D992DC00E29F0A</string> - <string>3AD75C69A61408EF8BE0F247</string> - <string>DB0257E62EC33F3F316EF017</string> - <string>BDA58E5E1AE450540A2B0227</string> - <string>0260773D27B4AE159FB0B22D</string> - <string>EB29FAB1F81F0D17BDAD72D0</string> - <string>838341407CEBBFB19D25C45A</string> - <string>F763F3DF1B47888E75D0ED9C</string> - <string>9DADE0CF857B717294F7F74F</string> - <string>BA9F62DDE37FF0D601A4D5EA</string> - <string>D49849E96C0C5FFB93C810CD</string> + <string>BC51F603F893AA6A748EB8EC</string> + <string>53A5EA857F02C1DEEC269122</string> + <string>6394EA7A57663B87FD034792</string> + <string>FB880554D85130C733402058</string> + <string>6A4F426FF21092B2A4B44022</string> + <string>D0641C22EEADF13905743122</string> + <string>003D718984A073D9C6C71422</string> + <string>F541961867C9493F07D54B8E</string> + <string>423B94F0660BA470EAD9DA5E</string> + <string>E0CF2237012441B69E760029</string> + <string>EE695A82B047142EA781152E</string> + <string>78C38086F90849CD909A9847</string> + <string>D45F5D73E3D255043B7E349A</string> + <string>36CC8128F585662CE7EF2114</string> + <string>517E28171A4524F9C518EAAC</string> + <string>66A375345A9F319AE182BDBD</string> + <string>3E850442224A3D7C7540C6C5</string> + <string>6BBDA0AD2955451BBF881052</string> + <string>327414DEAB5056533318E26E</string> </array> <key>isa</key> <string>PBXGroup</string> <key>name</key> - <string>RxLibrary</string> + <string>GRPCClient</string> <key>path</key> - <string>../../../RxLibrary</string> + <string>../../../GRPCClient</string> <key>sourceTree</key> <string><group></string> </dict> - <key>4972C151CE9A8A15BC1AE2C8</key> + <key>433B6972ED95680C5FB6FAE3</key> + <dict> + <key>fileRef</key> + <string>1A2D9424BA1BE0E3B2598D06</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>439AF2B977736E012C79B2FE</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.h</string> - <key>name</key> - <string>Pods-Sample-RxLibrary-prefix.pch</string> + <string>sourcecode.c.objc</string> <key>path</key> - <string>../Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-prefix.pch</string> + <string>GRXWriter+Transformations.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>4BB47C74830C63C90981278E</key> + <key>44C27BC8E89A85C90BC42638</key> <dict> <key>buildActionMask</key> <string>2147483647</string> <key>files</key> <array> - <string>245F9E9690E6E08D291FC94C</string> - <string>A96854FB48432263FE68C313</string> - <string>AA52EF1CD8A3683472BD86FE</string> - <string>BB88043BB37FC0261BA90A30</string> - <string>54A02FC8DA14CEC49EA8C8D5</string> - <string>B7902691B66134F3764663D9</string> - <string>19001096C873023095C4F032</string> - <string>E86A17CE1D79ECDCEBF91109</string> - <string>8BB6B6B3653FC309CB8EB3A0</string> - <string>7BBF3F432525D33FCB074BD5</string> - <string>2D6833D4D544AC13450405B1</string> + <string>1D35328CE231F0F9CD0AD192</string> + <string>9C6B481EF2F6601D5D6F4B6D</string> + <string>C31B151DCFB1F263B8E344BF</string> + <string>EC47C9C8660A81111C71C967</string> + <string>8C3E05D9178D147F7D7EA7D0</string> + <string>24F79AE5DB5FB86FCB2E2C39</string> + <string>2D505FE685E88A2746CB2C30</string> + <string>AB2C87B84886AB4CF107C5A1</string> + <string>F911880EC1D908050569F8AF</string> </array> <key>isa</key> - <string>PBXSourcesBuildPhase</string> + <string>PBXHeadersBuildPhase</string> <key>runOnlyForDeploymentPostprocessing</key> <string>0</string> </dict> - <key>4BB75B0FC7359E8EA8672954</key> + <key>45F8559BE23F19F91747A28B</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.objc</string> + <string>text.xcconfig</string> <key>name</key> - <string>GRXNSBlockEnumerator.m</string> + <string>Pods-SampleTests-GRPCClient.xcconfig</string> <key>path</key> - <string>private/GRXNSBlockEnumerator.m</string> + <string>../Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient.xcconfig</string> <key>sourceTree</key> <string><group></string> </dict> - <key>50FF607D5DA961C6BEF4ABAC</key> + <key>474A50F85C06F74769FAD474</key> + <dict> + <key>buildConfigurationList</key> + <string>C75867D6DF922C6894ACCC88</string> + <key>buildPhases</key> + <array> + <string>7C51A49564BFF0A55C886597</string> + <string>D520F3474212A72655D2F0ED</string> + <string>5AE8B8582CBA2762187AB9CB</string> + </array> + <key>buildRules</key> + <array/> + <key>dependencies</key> + <array/> + <key>isa</key> + <string>PBXNativeTarget</string> + <key>name</key> + <string>Pods-SampleTests-RxLibrary</string> + <key>productName</key> + <string>Pods-SampleTests-RxLibrary</string> + <key>productReference</key> + <string>C438A6F7EF173F2ED50AF192</string> + <key>productType</key> + <string>com.apple.product-type.library.static</string> + </dict> + <key>48E3F41513DAE1D12CBF544D</key> <dict> <key>fileRef</key> - <string>838341407CEBBFB19D25C45A</string> + <string>7F5DF8C37493F93C2636BAD6</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>5280A583CA6C6C66698AE67C</key> + <key>49D70C2F1EBB0B8BC452D632</key> <dict> <key>fileRef</key> - <string>DB0257E62EC33F3F316EF017</string> + <string>35A079DEB6141A6FDFF69D63</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>54A02FC8DA14CEC49EA8C8D5</key> + <key>4B0816A85B8DA041883CEDBE</key> <dict> <key>fileRef</key> - <string>57AC9BF19B9635D7476CA5FA</string> + <string>36CC8128F585662CE7EF2114</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>56CE61A20C6F88CC0CE888C8</key> + <key>4B2A75095DECE2C0424CBCFC</key> <dict> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>wrapper.framework</string> + <string>sourcecode.c.h</string> <key>name</key> - <string>Foundation.framework</string> + <string>Pods-SampleTests-GRPCClient-prefix.pch</string> <key>path</key> - <string>Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Foundation.framework</string> + <string>../Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-prefix.pch</string> <key>sourceTree</key> - <string>DEVELOPER_DIR</string> + <string><group></string> </dict> - <key>57AC9BF19B9635D7476CA5FA</key> + <key>4B765AEAB08FDC86E8082F7A</key> <dict> - <key>includeInIndex</key> - <string>1</string> + <key>children</key> + <array> + <string>AF8AB55F74FABAD365BDACF0</string> + <string>FFC668E9994CC6407B338F9D</string> + <string>7E5BC0233C371682047C39BD</string> + <string>CC354BAF9312E63AB7D4404A</string> + <string>8565F9710EFA641EF9EAE78E</string> + <string>363608E39D7F7AA17945644A</string> + <string>9B871E85E76E178A206CC642</string> + </array> <key>isa</key> - <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>sourcecode.c.objc</string> + <string>PBXGroup</string> <key>name</key> - <string>GRXNSScalarEnumerator.m</string> + <string>Pods</string> <key>path</key> - <string>private/GRXNSScalarEnumerator.m</string> + <string>Target Support Files/Pods</string> <key>sourceTree</key> <string><group></string> </dict> - <key>5840BDD08ED67C12ADB1DF08</key> + <key>4D580403A4A30D76B96E9775</key> <dict> <key>children</key> <array> - <string>4954E8CE730737CD2991E502</string> + <string>AD11CEF56188F659CB36CB34</string> + <string>932CFA5D0C5C2C8DA3C328AF</string> + <string>00303CC3049D1C9E8709A044</string> + <string>E4F23FE4AEB216E7D1E2B7EE</string> + <string>CBB34B55930DEFBDE44A62E0</string> + <string>EA41D57C3938E8D766E0224F</string> + <string>675E56BADC0C4C93E3B6B263</string> + <string>8DD3112B6E527E20F688C5A0</string> + <string>C438A6F7EF173F2ED50AF192</string> </array> <key>isa</key> <string>PBXGroup</string> <key>name</key> - <string>Development Pods</string> + <string>Products</string> <key>sourceTree</key> <string><group></string> </dict> - <key>591702CE7D8AF91674F1640F</key> + <key>4E2021A981DA9A189922E0C6</key> + <dict> + <key>buildConfigurationList</key> + <string>1D7BCFDFE2B63B8DF9A95779</string> + <key>buildPhases</key> + <array> + <string>5011677F9A4B34B7CC28BC27</string> + <string>9CFF85471050427EE3796F6F</string> + <string>C818D7947CCCEA0324CD9E79</string> + </array> + <key>buildRules</key> + <array/> + <key>dependencies</key> + <array/> + <key>isa</key> + <string>PBXNativeTarget</string> + <key>name</key> + <string>Pods-Sample-RxLibrary</string> + <key>productName</key> + <string>Pods-Sample-RxLibrary</string> + <key>productReference</key> + <string>EA41D57C3938E8D766E0224F</string> + <key>productType</key> + <string>com.apple.product-type.library.static</string> + </dict> + <key>4F529EACF630FA5A638408A4</key> + <dict> + <key>fileRef</key> + <string>78C38086F90849CD909A9847</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>5011677F9A4B34B7CC28BC27</key> + <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>25992CA77847232BA741CA19</string> + <string>7EE012957E76C86620A8B82D</string> + <string>F636FFBF62AFF197BE3CB427</string> + <string>8F24508F2BC37AE7B2282E42</string> + <string>CA8337B362EA0132CA470DB0</string> + <string>7B72787324EC9346B7243E79</string> + <string>61D40C951CD9463DBAC928AE</string> + <string>3D7B59A31C0CF6B937B6B56F</string> + <string>B37BACFCD1765840986F8AC5</string> + <string>9CC98083B837EFAE1058E03E</string> + <string>A0C815D67EA636E8E6A5E655</string> + </array> + <key>isa</key> + <string>PBXSourcesBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> + </dict> + <key>517E28171A4524F9C518EAAC</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.xcconfig</string> + <string>sourcecode.c.h</string> + <key>name</key> + <string>NSDictionary+GRPC.h</string> <key>path</key> - <string>Pods-SampleTests.debug.xcconfig</string> + <string>private/NSDictionary+GRPC.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>594F98D43B96AB5C11E61C10</key> + <key>51DBA8F3C7D4E67BDD768066</key> <dict> - <key>fileRef</key> - <string>F763F3DF1B47888E75D0ED9C</string> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> + <key>path</key> + <string>Pods-SampleTests.release.xcconfig</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>5AEFA85A5F1AD206D68B0576</key> + <key>53A5EA857F02C1DEEC269122</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.h</string> - <key>name</key> - <string>GRXNSBlockEnumerator.h</string> + <string>sourcecode.c.objc</string> <key>path</key> - <string>private/GRXNSBlockEnumerator.h</string> + <string>GRPCCall.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>5B8A3BFE016346EF080D52C6</key> + <key>53E7256294CEEC3844B70A31</key> + <dict> + <key>baseConfigurationReference</key> + <string>EB86FC57EE5F50944BA86EE3</string> + <key>buildSettings</key> + <dict> + <key>ALWAYS_SEARCH_USER_PATHS</key> + <string>NO</string> + <key>COPY_PHASE_STRIP</key> + <string>YES</string> + <key>DSTROOT</key> + <string>/tmp/xcodeproj.dst</string> + <key>GCC_PRECOMPILE_PREFIX_HEADER</key> + <string>YES</string> + <key>GCC_PREFIX_HEADER</key> + <string>Target Support Files/Pods-GRPCClient/Pods-GRPCClient-prefix.pch</string> + <key>INSTALL_PATH</key> + <string>$(BUILT_PRODUCTS_DIR)</string> + <key>IPHONEOS_DEPLOYMENT_TARGET</key> + <string>8.0</string> + <key>OTHER_CFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_CPLUSPLUSFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_LDFLAGS</key> + <string></string> + <key>OTHER_LIBTOOLFLAGS</key> + <string></string> + <key>PRODUCT_NAME</key> + <string>$(TARGET_NAME)</string> + <key>PUBLIC_HEADERS_FOLDER_PATH</key> + <string>$(TARGET_NAME)</string> + <key>SDKROOT</key> + <string>iphoneos</string> + <key>SKIP_INSTALL</key> + <string>YES</string> + <key>VALIDATE_PRODUCT</key> + <string>YES</string> + </dict> + <key>isa</key> + <string>XCBuildConfiguration</string> + <key>name</key> + <string>Release</string> + </dict> + <key>55A1C5AA37880BD7D2D575C1</key> <dict> <key>buildActionMask</key> <string>2147483647</string> <key>files</key> <array> - <string>3A4DE73D0D0274E782C1A564</string> + <string>1F8BB7EDC9650BA44338F8C8</string> </array> <key>isa</key> <string>PBXFrameworksBuildPhase</string> <key>runOnlyForDeploymentPostprocessing</key> <string>0</string> </dict> - <key>5C30ABB95D604B483422D72A</key> + <key>5654D46158ECA8C27895A755</key> <dict> - <key>explicitFileType</key> - <string>archive.ar</string> - <key>includeInIndex</key> + <key>fileRef</key> + <string>53A5EA857F02C1DEEC269122</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>583EF09FCBF65B9A4E5C22A7</key> + <dict> + <key>buildConfigurations</key> + <array> + <string>7D6F600B59E9C29030A96526</string> + <string>2598A10FC8B9442686B70419</string> + </array> + <key>defaultConfigurationIsVisible</key> + <string>0</string> + <key>defaultConfigurationName</key> + <string>Release</string> + <key>isa</key> + <string>XCConfigurationList</string> + </dict> + <key>5AE8B8582CBA2762187AB9CB</key> + <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>07DA0CCF4F2346740326BD7D</string> + <string>8D0A2E1D25EEA3A096E08B1A</string> + <string>1939E5289BFF2A898AB652F4</string> + <string>433B6972ED95680C5FB6FAE3</string> + <string>C90E8B6A34A6456422C8086E</string> + <string>7769061BD3B0C3FA2591F01E</string> + <string>48E3F41513DAE1D12CBF544D</string> + <string>9F3C74AA5715E325880AE886</string> + <string>0F24DA6964D128ACB940F0A6</string> + <string>7C036237AA7E88A084C751E0</string> + </array> + <key>isa</key> + <string>PBXHeadersBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> <string>0</string> + </dict> + <key>5BDD559FB35594584D1BE09E</key> + <dict> + <key>fileRef</key> + <string>66A375345A9F319AE182BDBD</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>617AA57F150724B1881EC92E</key> + <dict> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.h</string> + <key>name</key> + <string>GRXNSScalarEnumerator.h</string> <key>path</key> - <string>libPods.a</string> + <string>private/GRXNSScalarEnumerator.h</string> <key>sourceTree</key> - <string>BUILT_PRODUCTS_DIR</string> + <string><group></string> </dict> - <key>5DE93D7B39D2D1AD7336C4AC</key> + <key>61D40C951CD9463DBAC928AE</key> <dict> <key>fileRef</key> - <string>838341407CEBBFB19D25C45A</string> + <string>EA915E5B33F07CD0B9F8ACE9</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>621587D6C7759FBE7096D185</key> + <key>6354A9E233C358103A8D02C2</key> <dict> <key>fileRef</key> - <string>46513F4AD14CBD2377C1E7A1</string> + <string>D6D8919597D4E28EBF5D166B</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>636AC1003F2C71FFD74542CD</key> + <key>6394EA7A57663B87FD034792</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.objc</string> + <string>sourcecode.c.h</string> <key>name</key> - <string>GRXNSFastEnumerator.m</string> + <string>GRPCChannel.h</string> <key>path</key> - <string>private/GRXNSFastEnumerator.m</string> + <string>private/GRPCChannel.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>687D79F4C2484F58E9796051</key> + <key>644143496CECB668F61BCD16</key> + <dict> + <key>children</key> + <array> + <string>98695E4E6F8168938F9CC49E</string> + <string>3FFB0F49732540C0F34BEA5D</string> + <string>16D5B426090D302B58B8FF40</string> + <string>2C949CFC10D3564D45005639</string> + <string>BEEA6A0D27020465FC6CD0AA</string> + <string>28C6D48989DA211E0BACAFC2</string> + <string>A0416D4A1F0C863C1856405A</string> + </array> + <key>isa</key> + <string>PBXGroup</string> + <key>name</key> + <string>Pods-Sample</string> + <key>path</key> + <string>Target Support Files/Pods-Sample</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>66448F9949C234988DD11E4E</key> + <dict> + <key>fileRef</key> + <string>68A0ACB0AFAA7186EB2ABE09</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>667F52E3CC55312354C2DA1C</key> + <dict> + <key>baseConfigurationReference</key> + <string>6C1CC360881CEA3DD2D1FE14</string> + <key>buildSettings</key> + <dict> + <key>ALWAYS_SEARCH_USER_PATHS</key> + <string>NO</string> + <key>COPY_PHASE_STRIP</key> + <string>NO</string> + <key>DSTROOT</key> + <string>/tmp/xcodeproj.dst</string> + <key>GCC_DYNAMIC_NO_PIC</key> + <string>NO</string> + <key>GCC_OPTIMIZATION_LEVEL</key> + <string>0</string> + <key>GCC_PRECOMPILE_PREFIX_HEADER</key> + <string>YES</string> + <key>GCC_PREFIX_HEADER</key> + <string>Target Support Files/Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-prefix.pch</string> + <key>GCC_PREPROCESSOR_DEFINITIONS</key> + <array> + <string>DEBUG=1</string> + <string>$(inherited)</string> + </array> + <key>GCC_SYMBOLS_PRIVATE_EXTERN</key> + <string>NO</string> + <key>INSTALL_PATH</key> + <string>$(BUILT_PRODUCTS_DIR)</string> + <key>IPHONEOS_DEPLOYMENT_TARGET</key> + <string>8.0</string> + <key>OTHER_LDFLAGS</key> + <string></string> + <key>OTHER_LIBTOOLFLAGS</key> + <string></string> + <key>PRODUCT_NAME</key> + <string>$(TARGET_NAME)</string> + <key>PUBLIC_HEADERS_FOLDER_PATH</key> + <string>$(TARGET_NAME)</string> + <key>SDKROOT</key> + <string>iphoneos</string> + <key>SKIP_INSTALL</key> + <string>YES</string> + </dict> + <key>isa</key> + <string>XCBuildConfiguration</string> + <key>name</key> + <string>Debug</string> + </dict> + <key>66A375345A9F319AE182BDBD</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.xcconfig</string> + <string>sourcecode.c.objc</string> <key>name</key> - <string>Pods-SampleTests-RxLibrary-Private.xcconfig</string> + <string>NSDictionary+GRPC.m</string> <key>path</key> - <string>../Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-Private.xcconfig</string> + <string>private/NSDictionary+GRPC.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>69E8FF71552D08D72B9068F1</key> + <key>66E177AC7F3B02B51D36A226</key> <dict> - <key>children</key> + <key>buildConfigurationList</key> + <string>583EF09FCBF65B9A4E5C22A7</string> + <key>buildPhases</key> <array> - <string>36C139FD3DEDB8CA2A1D3295</string> - <string>4946B2D315E9BF5CBACD7D52</string> - <string>22DB20D833E7D26AEA6513D6</string> - <string>1C8DFDF9C457D910DC1FD227</string> - <string>E14CB6F332A9E58BB5F76C07</string> - <string>6AC13D00A5A61BDA0DE5FAAF</string> - <string>A577CB571492B4F951064FCF</string> + <string>A5EDB7E25EA71C67EF1B3F82</string> + <string>55A1C5AA37880BD7D2D575C1</string> + <string>2747C9BA8D7E0E6EFDFE5D3E</string> + </array> + <key>buildRules</key> + <array/> + <key>dependencies</key> + <array> + <string>3CBFCE5C8506BD28C4AA47EC</string> </array> <key>isa</key> - <string>PBXGroup</string> + <string>PBXNativeTarget</string> <key>name</key> - <string>Pods</string> + <string>Pods-Sample-GRPCClient</string> + <key>productName</key> + <string>Pods-Sample-GRPCClient</string> + <key>productReference</key> + <string>CBB34B55930DEFBDE44A62E0</string> + <key>productType</key> + <string>com.apple.product-type.library.static</string> + </dict> + <key>675E56BADC0C4C93E3B6B263</key> + <dict> + <key>explicitFileType</key> + <string>archive.ar</string> + <key>includeInIndex</key> + <string>0</string> + <key>isa</key> + <string>PBXFileReference</string> <key>path</key> - <string>Target Support Files/Pods</string> + <string>libPods-SampleTests.a</string> + <key>sourceTree</key> + <string>BUILT_PRODUCTS_DIR</string> + </dict> + <key>688A44CE404A30F009CEAD70</key> + <dict> + <key>fileRef</key> + <string>D6D8919597D4E28EBF5D166B</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>68A0ACB0AFAA7186EB2ABE09</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> + <key>path</key> + <string>NSEnumerator+GRXUtil.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>6AC13D00A5A61BDA0DE5FAAF</key> + <key>69179090F5D6919F11110907</key> + <dict> + <key>fileRef</key> + <string>423B94F0660BA470EAD9DA5E</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>69D3EA284F3612F9F534DEBB</key> + <dict> + <key>isa</key> + <string>PBXTargetDependency</string> + <key>name</key> + <string>Pods-Sample-GRPCClient</string> + <key>target</key> + <string>66E177AC7F3B02B51D36A226</string> + <key>targetProxy</key> + <string>72246839A1947E6558591655</string> + </dict> + <key>6A4F426FF21092B2A4B44022</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.xcconfig</string> + <string>sourcecode.c.h</string> + <key>name</key> + <string>GRPCCompletionQueue.h</string> <key>path</key> - <string>Pods.debug.xcconfig</string> + <string>private/GRPCCompletionQueue.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>6B5B56ED61BE76782DF02817</key> + <key>6AA10AF7AE19131F66FB8586</key> <dict> <key>baseConfigurationReference</key> - <string>687D79F4C2484F58E9796051</string> + <string>3369A2EF668725CAF3F75D1F</string> <key>buildSettings</key> <dict> <key>ALWAYS_SEARCH_USER_PATHS</key> @@ -1290,60 +1961,164 @@ <key>name</key> <string>Release</string> </dict> - <key>6B88B9AB87714A903970EAED</key> + <key>6B6C68F7F3769BB8EBEB7EE5</key> + <dict> + <key>fileRef</key> + <string>EA915E5B33F07CD0B9F8ACE9</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>6BBDA0AD2955451BBF881052</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> + <key>name</key> + <string>NSError+GRPC.m</string> + <key>path</key> + <string>private/NSError+GRPC.m</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>6BC5E8D01392B97FF237C655</key> <dict> + <key>children</key> + <array> + <string>16054FFCB52E34B7784B3D2C</string> + <string>02396B6B22E0450EA29193E9</string> + <string>93CEF17866E8E476701B3AEB</string> + <string>E256AF33BE1D5C30780D4E96</string> + <string>F6B6558E339AD89F764A6D88</string> + <string>6C1CC360881CEA3DD2D1FE14</string> + <string>2D97FDE1D611758F0CC8EAC3</string> + <string>31B56E69FEFEC33075859CFE</string> + <string>DD9A2AC14E9E04D4337DB76E</string> + <string>3369A2EF668725CAF3F75D1F</string> + <string>357862381E5517983B1A7AA9</string> + <string>09759845E529CE5CD00BECA5</string> + </array> + <key>isa</key> + <string>PBXGroup</string> + <key>name</key> + <string>Support Files</string> + <key>path</key> + <string>../examples/Sample/Pods/Target Support Files/Pods-RxLibrary</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>6C1CC360881CEA3DD2D1FE14</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> + <key>name</key> + <string>Pods-Sample-RxLibrary-Private.xcconfig</string> + <key>path</key> + <string>../Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-Private.xcconfig</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>6C5ACDD3AAB1F431A03610FF</key> + <dict> + <key>fileRef</key> + <string>19A733EC94B0F847F901D308</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>6EDAC415AC0B16B221E0397F</key> + <dict> + <key>isa</key> + <string>PBXTargetDependency</string> + <key>name</key> + <string>Pods-RxLibrary</string> + <key>target</key> + <string>AEECE9DFCC8F060F1E30A421</string> + <key>targetProxy</key> + <string>BCB580E2193B3624D1C471DB</string> + </dict> + <key>72246839A1947E6558591655</key> + <dict> + <key>containerPortal</key> + <string>E61F9CBEB0CA9A172C4AA56B</string> + <key>isa</key> + <string>PBXContainerItemProxy</string> + <key>proxyType</key> + <string>1</string> + <key>remoteGlobalIDString</key> + <string>66E177AC7F3B02B51D36A226</string> + <key>remoteInfo</key> + <string>Pods-Sample-GRPCClient</string> + </dict> + <key>73107A4E8F55EFE854586192</key> + <dict> + <key>fileRef</key> + <string>732C03DC74F2738AE9E86ECA</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>732C03DC74F2738AE9E86ECA</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> + <key>name</key> + <string>Pods-Sample-GRPCClient-dummy.m</string> + <key>path</key> + <string>../Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-dummy.m</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>741B3AB48094A74BA06E4B41</key> + <dict> + <key>baseConfigurationReference</key> + <string>6C1CC360881CEA3DD2D1FE14</string> <key>buildSettings</key> <dict> <key>ALWAYS_SEARCH_USER_PATHS</key> <string>NO</string> - <key>CLANG_CXX_LANGUAGE_STANDARD</key> - <string>gnu++0x</string> - <key>CLANG_CXX_LIBRARY</key> - <string>libc++</string> - <key>CLANG_ENABLE_MODULES</key> - <string>YES</string> - <key>CLANG_ENABLE_OBJC_ARC</key> - <string>YES</string> - <key>CLANG_WARN_BOOL_CONVERSION</key> - <string>YES</string> - <key>CLANG_WARN_CONSTANT_CONVERSION</key> - <string>YES</string> - <key>CLANG_WARN_DIRECT_OBJC_ISA_USAGE</key> - <string>YES</string> - <key>CLANG_WARN_EMPTY_BODY</key> - <string>YES</string> - <key>CLANG_WARN_ENUM_CONVERSION</key> - <string>YES</string> - <key>CLANG_WARN_INT_CONVERSION</key> - <string>YES</string> - <key>CLANG_WARN_OBJC_ROOT_CLASS</key> - <string>YES</string> <key>COPY_PHASE_STRIP</key> - <string>NO</string> - <key>ENABLE_NS_ASSERTIONS</key> - <string>NO</string> - <key>GCC_C_LANGUAGE_STANDARD</key> - <string>gnu99</string> - <key>GCC_PREPROCESSOR_DEFINITIONS</key> - <array> - <string>RELEASE=1</string> - </array> - <key>GCC_WARN_64_TO_32_BIT_CONVERSION</key> - <string>YES</string> - <key>GCC_WARN_ABOUT_RETURN_TYPE</key> - <string>YES</string> - <key>GCC_WARN_UNDECLARED_SELECTOR</key> <string>YES</string> - <key>GCC_WARN_UNINITIALIZED_AUTOS</key> - <string>YES</string> - <key>GCC_WARN_UNUSED_FUNCTION</key> - <string>YES</string> - <key>GCC_WARN_UNUSED_VARIABLE</key> + <key>DSTROOT</key> + <string>/tmp/xcodeproj.dst</string> + <key>GCC_PRECOMPILE_PREFIX_HEADER</key> <string>YES</string> + <key>GCC_PREFIX_HEADER</key> + <string>Target Support Files/Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-prefix.pch</string> + <key>INSTALL_PATH</key> + <string>$(BUILT_PRODUCTS_DIR)</string> <key>IPHONEOS_DEPLOYMENT_TARGET</key> <string>8.0</string> - <key>STRIP_INSTALLED_PRODUCT</key> - <string>NO</string> + <key>OTHER_CFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_CPLUSPLUSFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_LDFLAGS</key> + <string></string> + <key>OTHER_LIBTOOLFLAGS</key> + <string></string> + <key>PRODUCT_NAME</key> + <string>$(TARGET_NAME)</string> + <key>PUBLIC_HEADERS_FOLDER_PATH</key> + <string>$(TARGET_NAME)</string> + <key>SDKROOT</key> + <string>iphoneos</string> + <key>SKIP_INSTALL</key> + <string>YES</string> <key>VALIDATE_PRODUCT</key> <string>YES</string> </dict> @@ -1352,42 +2127,108 @@ <key>name</key> <string>Release</string> </dict> - <key>6BFD156F312F6CAA1E5B00CA</key> + <key>7484EC496D674B8D63C9B14A</key> + <dict> + <key>children</key> + <array> + <string>808CD0E97EA8B9B2423DFBB4</string> + </array> + <key>isa</key> + <string>PBXGroup</string> + <key>name</key> + <string>Frameworks</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>7769061BD3B0C3FA2591F01E</key> + <dict> + <key>fileRef</key> + <string>0C52B5B243390BA62033C734</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>78C38086F90849CD909A9847</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> + <key>name</key> + <string>GRPCMethodName+HTTP2Encoding.m</string> + <key>path</key> + <string>private/GRPCMethodName+HTTP2Encoding.m</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>79254B326EAE190FCCF68500</key> + <dict> + <key>fileRef</key> + <string>D444D13D4D0829CF4142949A</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>7962371F2502CBAEBF859730</key> <dict> <key>buildConfigurationList</key> - <string>962FF5FAC21292530C615D05</string> + <string>2EBE2A8DBCF9EED6B632AE6F</string> <key>buildPhases</key> <array> - <string>4BB47C74830C63C90981278E</string> - <string>5B8A3BFE016346EF080D52C6</string> - <string>A4C1C82F355864E7D3E200DD</string> + <string>0F5AF35D0B405F8C010B9E02</string> + <string>0A5311098107B761AEF843FF</string> </array> <key>buildRules</key> <array/> <key>dependencies</key> - <array/> + <array> + <string>9420C1F89C211902C0D87225</string> + <string>7EAAEBF540915967146B03A6</string> + </array> <key>isa</key> <string>PBXNativeTarget</string> <key>name</key> - <string>Pods-RxLibrary</string> + <string>Pods</string> <key>productName</key> - <string>Pods-RxLibrary</string> + <string>Pods</string> <key>productReference</key> - <string>A579EC5BE7E68C55CA5FECDE</string> + <string>AD11CEF56188F659CB36CB34</string> <key>productType</key> <string>com.apple.product-type.library.static</string> </dict> - <key>6D1D41BAE4E325572FAC7B17</key> + <key>7A1AC6EA0DE9920EE46DD7C6</key> + <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>D965694635120F86B2E5E101</string> + <string>49D70C2F1EBB0B8BC452D632</string> + <string>077EB8C42818FBCCF960B6A2</string> + <string>8563E3DF7CFBE5A416F679DD</string> + <string>B42B413709D355A8828EEC76</string> + <string>339F0D64DF0A7BD0AA48186E</string> + <string>832D68435FCFF5497A72F1D3</string> + <string>BD38F7B336495294670A28A4</string> + <string>D54769D14A73816406636B14</string> + <string>9D4AD7A95C9F70261CF7E09E</string> + </array> + <key>isa</key> + <string>PBXHeadersBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> + </dict> + <key>7B72787324EC9346B7243E79</key> <dict> <key>fileRef</key> - <string>9DADE0CF857B717294F7F74F</string> + <string>D6D8919597D4E28EBF5D166B</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>6E00FD6D197F0D1332D11199</key> + <key>7BA366CBC6DBCDC7984BCC50</key> <dict> <key>baseConfigurationReference</key> - <string>1B8264EEFEF4AD585182D256</string> + <string>CDA9A715DCFCE07755974888</string> <key>buildSettings</key> <dict> <key>ALWAYS_SEARCH_USER_PATHS</key> @@ -1402,6 +2243,8 @@ <string>0</string> <key>GCC_PRECOMPILE_PREFIX_HEADER</key> <string>YES</string> + <key>GCC_PREFIX_HEADER</key> + <string>Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-prefix.pch</string> <key>GCC_PREPROCESSOR_DEFINITIONS</key> <array> <string>DEBUG=1</string> @@ -1431,28 +2274,40 @@ <key>name</key> <string>Debug</string> </dict> - <key>6E0669CB3E76E19FC854BA74</key> + <key>7C036237AA7E88A084C751E0</key> <dict> <key>fileRef</key> - <string>4BB75B0FC7359E8EA8672954</string> + <string>2705BF8D166EFF8A2D44B2BA</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>6EB14BC96525C955FBD5CC75</key> + <key>7C51A49564BFF0A55C886597</key> <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>79254B326EAE190FCCF68500</string> + <string>E23D43F03E7C19D671C93F81</string> + <string>E328084D7C583851D3BE25CF</string> + <string>8304D6194CF27F78FD63D3E0</string> + <string>7E0A094939C76D9C1097CE47</string> + <string>6354A9E233C358103A8D02C2</string> + <string>6B6C68F7F3769BB8EBEB7EE5</string> + <string>9520D95CEA199664DEA83898</string> + <string>A8C31E8535FB26B38A1831C0</string> + <string>66448F9949C234988DD11E4E</string> + <string>95ABB7ADC6AA8ABDA7E32C0B</string> + </array> <key>isa</key> - <string>PBXTargetDependency</string> - <key>name</key> - <string>Pods-Sample-RxLibrary</string> - <key>target</key> - <string>F6C59E5B4CFE053E9F98000E</string> - <key>targetProxy</key> - <string>A0215878A7EC41E833B5F1D2</string> + <string>PBXSourcesBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> </dict> - <key>74F28D2155D125C3068F96BE</key> + <key>7D6F600B59E9C29030A96526</key> <dict> <key>baseConfigurationReference</key> - <string>6AC13D00A5A61BDA0DE5FAAF</string> + <string>A2F53747970EB33A4D75EAB4</string> <key>buildSettings</key> <dict> <key>ALWAYS_SEARCH_USER_PATHS</key> @@ -1467,6 +2322,8 @@ <string>0</string> <key>GCC_PRECOMPILE_PREFIX_HEADER</key> <string>YES</string> + <key>GCC_PREFIX_HEADER</key> + <string>Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-prefix.pch</string> <key>GCC_PREPROCESSOR_DEFINITIONS</key> <array> <string>DEBUG=1</string> @@ -1496,140 +2353,331 @@ <key>name</key> <string>Debug</string> </dict> - <key>7A8627E1649F66DEE014EB46</key> + <key>7E0A094939C76D9C1097CE47</key> + <dict> + <key>fileRef</key> + <string>2DA7CCAA52B82F817FA61F5A</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>7E3BE2E23E465D87ECF0E962</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> + <key>path</key> + <string>Pods-GRPCClient-dummy.m</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>7E5BC0233C371682047C39BD</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> + <key>path</key> + <string>Pods-dummy.m</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>7EAAEBF540915967146B03A6</key> + <dict> + <key>isa</key> + <string>PBXTargetDependency</string> + <key>name</key> + <string>Pods-RxLibrary</string> + <key>target</key> + <string>AEECE9DFCC8F060F1E30A421</string> + <key>targetProxy</key> + <string>DF829332517E7136AED2EC79</string> + </dict> + <key>7EE012957E76C86620A8B82D</key> + <dict> + <key>fileRef</key> + <string>CEA794A7056AFAB8256CC44D</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>7F5DF8C37493F93C2636BAD6</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.h</string> + <key>path</key> + <string>GRXWriter+Immediate.h</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>808CD0E97EA8B9B2423DFBB4</key> <dict> <key>children</key> <array> - <string>D53A8F2B11E6C2C187AFFF1D</string> - <string>B50ECED4CEC7554ED6077619</string> - <string>BC50D76123DA4B85E6AD77B4</string> - <string>092D0456252ED3F90F66084D</string> - <string>AA99564782B655791B053E58</string> - <string>1B8264EEFEF4AD585182D256</string> - <string>27E123435067CC11FE103999</string> + <string>A7CE4BCE7B6959BCDC54B854</string> </array> <key>isa</key> <string>PBXGroup</string> <key>name</key> - <string>Pods-Sample</string> - <key>path</key> - <string>Target Support Files/Pods-Sample</string> + <string>iOS</string> <key>sourceTree</key> <string><group></string> </dict> - <key>7AC4B3F3D7BB132642153A38</key> + <key>80CC1C2E2C60B0F9CADA36AF</key> + <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>164DD73ED2C34BC6B3156AE5</string> + </array> + <key>isa</key> + <string>PBXFrameworksBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> + </dict> + <key>822AA7CD03CFBA9265225E74</key> <dict> <key>fileRef</key> - <string>0260773D27B4AE159FB0B22D</string> + <string>36CC8128F585662CE7EF2114</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>7BBF3F432525D33FCB074BD5</key> + <key>8304D6194CF27F78FD63D3E0</key> <dict> <key>fileRef</key> - <string>BA9F62DDE37FF0D601A4D5EA</string> + <string>19A733EC94B0F847F901D308</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>7DA2A517A18D85B390FB122A</key> + <key>832D68435FCFF5497A72F1D3</key> <dict> - <key>containerPortal</key> - <string>FBF79DDF04ADEAED54BA2286</string> + <key>fileRef</key> + <string>7F5DF8C37493F93C2636BAD6</string> <key>isa</key> - <string>PBXContainerItemProxy</string> - <key>proxyType</key> + <string>PBXBuildFile</string> + </dict> + <key>8563E3DF7CFBE5A416F679DD</key> + <dict> + <key>fileRef</key> + <string>1A2D9424BA1BE0E3B2598D06</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>8565F9710EFA641EF9EAE78E</key> + <dict> + <key>includeInIndex</key> <string>1</string> - <key>remoteGlobalIDString</key> - <string>3800855A656C8D0813062074</string> - <key>remoteInfo</key> - <string>Pods-SampleTests-RxLibrary</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.script.sh</string> + <key>path</key> + <string>Pods-resources.sh</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>7E9B63EFA2466C4456A0695A</key> + <key>87F549870DB778A5F152B608</key> + <dict> + <key>fileRef</key> + <string>A7CE4BCE7B6959BCDC54B854</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>8944DC99856C99235675D65C</key> + <dict> + <key>fileRef</key> + <string>517E28171A4524F9C518EAAC</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>8A203557337361CF44D2D664</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> + <key>path</key> + <string>GRXWriter.m</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>8ACE4DE290D8847EA219A1B8</key> + <dict> + <key>fileRef</key> + <string>2705BF8D166EFF8A2D44B2BA</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>8C3E05D9178D147F7D7EA7D0</key> + <dict> + <key>fileRef</key> + <string>EE695A82B047142EA781152E</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>8D0A2E1D25EEA3A096E08B1A</key> + <dict> + <key>fileRef</key> + <string>35A079DEB6141A6FDFF69D63</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>8D8D6FB22E4E5302E899F3C7</key> + <dict> + <key>fileRef</key> + <string>D45F5D73E3D255043B7E349A</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>8DD3112B6E527E20F688C5A0</key> + <dict> + <key>explicitFileType</key> + <string>archive.ar</string> + <key>includeInIndex</key> + <string>0</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>path</key> + <string>libPods-SampleTests-GRPCClient.a</string> + <key>sourceTree</key> + <string>BUILT_PRODUCTS_DIR</string> + </dict> + <key>8F24508F2BC37AE7B2282E42</key> + <dict> + <key>fileRef</key> + <string>19A733EC94B0F847F901D308</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>8FC9893C41EDC73475EA96B8</key> <dict> - <key>baseConfigurationReference</key> - <string>2FE1D288B8389F925AA3CE0C</string> <key>buildSettings</key> <dict> <key>ALWAYS_SEARCH_USER_PATHS</key> <string>NO</string> - <key>COPY_PHASE_STRIP</key> + <key>CLANG_CXX_LANGUAGE_STANDARD</key> + <string>gnu++0x</string> + <key>CLANG_CXX_LIBRARY</key> + <string>libc++</string> + <key>CLANG_ENABLE_MODULES</key> <string>YES</string> - <key>DSTROOT</key> - <string>/tmp/xcodeproj.dst</string> - <key>GCC_PRECOMPILE_PREFIX_HEADER</key> + <key>CLANG_ENABLE_OBJC_ARC</key> <string>YES</string> - <key>GCC_PREFIX_HEADER</key> - <string>Target Support Files/Pods-RxLibrary/Pods-RxLibrary-prefix.pch</string> - <key>INSTALL_PATH</key> - <string>$(BUILT_PRODUCTS_DIR)</string> - <key>IPHONEOS_DEPLOYMENT_TARGET</key> - <string>8.0</string> - <key>OTHER_CFLAGS</key> - <array> - <string>-DNS_BLOCK_ASSERTIONS=1</string> - <string>$(inherited)</string> - </array> - <key>OTHER_CPLUSPLUSFLAGS</key> + <key>CLANG_WARN_BOOL_CONVERSION</key> + <string>YES</string> + <key>CLANG_WARN_CONSTANT_CONVERSION</key> + <string>YES</string> + <key>CLANG_WARN_DIRECT_OBJC_ISA_USAGE</key> + <string>YES</string> + <key>CLANG_WARN_EMPTY_BODY</key> + <string>YES</string> + <key>CLANG_WARN_ENUM_CONVERSION</key> + <string>YES</string> + <key>CLANG_WARN_INT_CONVERSION</key> + <string>YES</string> + <key>CLANG_WARN_OBJC_ROOT_CLASS</key> + <string>YES</string> + <key>COPY_PHASE_STRIP</key> + <string>YES</string> + <key>GCC_C_LANGUAGE_STANDARD</key> + <string>gnu99</string> + <key>GCC_DYNAMIC_NO_PIC</key> + <string>NO</string> + <key>GCC_OPTIMIZATION_LEVEL</key> + <string>0</string> + <key>GCC_PREPROCESSOR_DEFINITIONS</key> <array> - <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>DEBUG=1</string> <string>$(inherited)</string> </array> - <key>OTHER_LDFLAGS</key> - <string></string> - <key>OTHER_LIBTOOLFLAGS</key> - <string></string> - <key>PRODUCT_NAME</key> - <string>$(TARGET_NAME)</string> - <key>PUBLIC_HEADERS_FOLDER_PATH</key> - <string>$(TARGET_NAME)</string> - <key>SDKROOT</key> - <string>iphoneos</string> - <key>SKIP_INSTALL</key> + <key>GCC_SYMBOLS_PRIVATE_EXTERN</key> + <string>NO</string> + <key>GCC_WARN_64_TO_32_BIT_CONVERSION</key> <string>YES</string> - <key>VALIDATE_PRODUCT</key> + <key>GCC_WARN_ABOUT_RETURN_TYPE</key> + <string>YES</string> + <key>GCC_WARN_UNDECLARED_SELECTOR</key> + <string>YES</string> + <key>GCC_WARN_UNINITIALIZED_AUTOS</key> + <string>YES</string> + <key>GCC_WARN_UNUSED_FUNCTION</key> + <string>YES</string> + <key>GCC_WARN_UNUSED_VARIABLE</key> + <string>YES</string> + <key>IPHONEOS_DEPLOYMENT_TARGET</key> + <string>8.0</string> + <key>ONLY_ACTIVE_ARCH</key> <string>YES</string> + <key>STRIP_INSTALLED_PRODUCT</key> + <string>NO</string> </dict> <key>isa</key> <string>XCBuildConfiguration</string> <key>name</key> - <string>Release</string> + <string>Debug</string> + </dict> + <key>91B3D53E73C867A8F1B3B392</key> + <dict> + <key>fileRef</key> + <string>BC51F603F893AA6A748EB8EC</string> + <key>isa</key> + <string>PBXBuildFile</string> </dict> - <key>7FACBF2C8AF0403DD1C11015</key> + <key>91D5786D0585930DEFAB636E</key> <dict> + <key>fileRef</key> + <string>F541961867C9493F07D54B8E</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>932CFA5D0C5C2C8DA3C328AF</key> + <dict> + <key>explicitFileType</key> + <string>archive.ar</string> <key>includeInIndex</key> - <string>1</string> + <string>0</string> <key>isa</key> <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>text.xcconfig</string> - <key>name</key> - <string>Pods-Sample-RxLibrary-Private.xcconfig</string> <key>path</key> - <string>../Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-Private.xcconfig</string> + <string>libPods-GRPCClient.a</string> <key>sourceTree</key> - <string><group></string> + <string>BUILT_PRODUCTS_DIR</string> </dict> - <key>801BBA7A538CFAE6746966A7</key> + <key>93CEF17866E8E476701B3AEB</key> <dict> - <key>fileRef</key> - <string>42B461F095E85911637DFD60</string> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> + <key>path</key> + <string>Pods-RxLibrary-dummy.m</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>817F8B2E38A51910E8F8EC7D</key> + <key>9420C1F89C211902C0D87225</key> <dict> - <key>children</key> - <array> - <string>355670384FC160AB6C32765E</string> - </array> <key>isa</key> - <string>PBXGroup</string> + <string>PBXTargetDependency</string> <key>name</key> - <string>Frameworks</string> - <key>sourceTree</key> - <string><group></string> + <string>Pods-GRPCClient</string> + <key>target</key> + <string>AB3F9F2CFA29030A599E9231</string> + <key>targetProxy</key> + <string>D6715088D2AB1CBAA49F8651</string> </dict> - <key>838341407CEBBFB19D25C45A</key> + <key>9470FB5E010191C87542871D</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -1638,57 +2686,57 @@ <key>lastKnownFileType</key> <string>sourcecode.c.h</string> <key>path</key> - <string>GRXWriter+Transformations.h</string> + <string>GRXImmediateWriter.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>85D5565EC08D14A6A60F1DDA</key> + <key>94DDD64BC43C045541FB9BEC</key> <dict> <key>fileRef</key> - <string>56CE61A20C6F88CC0CE888C8</string> + <string>EE695A82B047142EA781152E</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>86586E0B51D3DC6A97D0A7F3</key> + <key>9520D95CEA199664DEA83898</key> <dict> <key>fileRef</key> - <string>56CE61A20C6F88CC0CE888C8</string> + <string>439AF2B977736E012C79B2FE</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>86D03B997B81819E2F39E48B</key> + <key>95ABB7ADC6AA8ABDA7E32C0B</key> <dict> <key>fileRef</key> - <string>BC52B0661F25B25CE382296C</string> + <string>357862381E5517983B1A7AA9</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>87700F015FA41F53D88CA4BC</key> + <key>96CD01ACF90F6977972AA5C7</key> <dict> - <key>buildActionMask</key> - <string>2147483647</string> - <key>files</key> - <array> - <string>404D4F98249F3383235463A4</string> - </array> + <key>fileRef</key> + <string>53A5EA857F02C1DEEC269122</string> <key>isa</key> - <string>PBXFrameworksBuildPhase</string> - <key>runOnlyForDeploymentPostprocessing</key> - <string>0</string> + <string>PBXBuildFile</string> </dict> - <key>8915073BE8158EF53FE11B95</key> + <key>98695E4E6F8168938F9CC49E</key> <dict> - <key>fileRef</key> - <string>EB29FAB1F81F0D17BDAD72D0</string> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text</string> + <key>path</key> + <string>Pods-Sample-acknowledgements.markdown</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>8919AE774852DD128A7CB510</key> + <key>9A637A6516AB11F29615FC18</key> <dict> <key>buildConfigurations</key> <array> - <string>6E00FD6D197F0D1332D11199</string> - <string>B602CFEF970BEA98E40A056C</string> + <string>7BA366CBC6DBCDC7984BCC50</string> + <string>1D1E67A62BDD0A04136468E9</string> </array> <key>defaultConfigurationIsVisible</key> <string>0</string> @@ -1697,20 +2745,88 @@ <key>isa</key> <string>XCConfigurationList</string> </dict> - <key>896F697BD1BEAF8A081337EB</key> + <key>9B871E85E76E178A206CC642</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> + <key>path</key> + <string>Pods.release.xcconfig</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>9C6B481EF2F6601D5D6F4B6D</key> + <dict> + <key>fileRef</key> + <string>6394EA7A57663B87FD034792</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>9CC98083B837EFAE1058E03E</key> + <dict> + <key>fileRef</key> + <string>68A0ACB0AFAA7186EB2ABE09</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>9CFF85471050427EE3796F6F</key> <dict> <key>buildActionMask</key> <string>2147483647</string> <key>files</key> <array> - <string>86586E0B51D3DC6A97D0A7F3</string> + <string>D548663391776A14DCAC50B8</string> </array> <key>isa</key> <string>PBXFrameworksBuildPhase</string> <key>runOnlyForDeploymentPostprocessing</key> <string>0</string> </dict> - <key>8A7375A2F98889F35C15E2D7</key> + <key>9D4AD7A95C9F70261CF7E09E</key> + <dict> + <key>fileRef</key> + <string>2705BF8D166EFF8A2D44B2BA</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>9F21B0DA9C171E66AC1CB1E2</key> + <dict> + <key>containerPortal</key> + <string>E61F9CBEB0CA9A172C4AA56B</string> + <key>isa</key> + <string>PBXContainerItemProxy</string> + <key>proxyType</key> + <string>1</string> + <key>remoteGlobalIDString</key> + <string>4E2021A981DA9A189922E0C6</string> + <key>remoteInfo</key> + <string>Pods-Sample-RxLibrary</string> + </dict> + <key>9F3C74AA5715E325880AE886</key> + <dict> + <key>fileRef</key> + <string>F776B445ABD393C908B02302</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>A0064CCC8EC60B3CD0E4F72F</key> + <dict> + <key>children</key> + <array> + <string>430E7D130A089632FA407274</string> + <string>D7BA8B8D4FFF3674A537221D</string> + </array> + <key>isa</key> + <string>PBXGroup</string> + <key>name</key> + <string>Development Pods</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>A0416D4A1F0C863C1856405A</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -1718,113 +2834,239 @@ <string>PBXFileReference</string> <key>lastKnownFileType</key> <string>text.xcconfig</string> - <key>name</key> - <string>Pods-SampleTests-RxLibrary.xcconfig</string> <key>path</key> - <string>../Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary.xcconfig</string> + <string>Pods-Sample.release.xcconfig</string> <key>sourceTree</key> <string><group></string> </dict> - <key>8AB7020D9B71B1B4F34249BE</key> + <key>A0B86020532CA90CD846B0C8</key> + <dict> + <key>fileRef</key> + <string>7E5BC0233C371682047C39BD</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>A0C815D67EA636E8E6A5E655</key> + <dict> + <key>fileRef</key> + <string>2D97FDE1D611758F0CC8EAC3</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>A0C9AE64F2D6C0E3A4F26302</key> + <dict> + <key>fileRef</key> + <string>6BBDA0AD2955451BBF881052</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>A10CFA4D4ED9B20894905742</key> + <dict> + <key>buildConfigurationList</key> + <string>9A637A6516AB11F29615FC18</string> + <key>buildPhases</key> + <array> + <string>B31604CF386150298F4572B7</string> + <string>80CC1C2E2C60B0F9CADA36AF</string> + <string>A7DF070735AAA7A85C474BBD</string> + </array> + <key>buildRules</key> + <array/> + <key>dependencies</key> + <array> + <string>EF97D57CA44A79151103F06B</string> + </array> + <key>isa</key> + <string>PBXNativeTarget</string> + <key>name</key> + <string>Pods-SampleTests-GRPCClient</string> + <key>productName</key> + <string>Pods-SampleTests-GRPCClient</string> + <key>productReference</key> + <string>8DD3112B6E527E20F688C5A0</string> + <key>productType</key> + <string>com.apple.product-type.library.static</string> + </dict> + <key>A152A54E946159BB41FF6E04</key> <dict> <key>buildActionMask</key> <string>2147483647</string> <key>files</key> <array> - <string>1E5420835E4862DBA55002A9</string> - <string>00949E44051CD97851DEFF3B</string> - <string>15DC9A153BC412DB41B7F154</string> - <string>0385BCBCA0601E80FAD2A901</string> - <string>01F5B724A99ADB3547023C72</string> - <string>F2C6AACFE46FFA8DC383DE43</string> - <string>7AC4B3F3D7BB132642153A38</string> - <string>5DE93D7B39D2D1AD7336C4AC</string> - <string>407E794549893DD91A2ED84E</string> - <string>3C3F1A188E25219C230FFD4F</string> + <string>F4586BA420EA562FECC43A3A</string> </array> <key>isa</key> - <string>PBXHeadersBuildPhase</string> + <string>PBXFrameworksBuildPhase</string> <key>runOnlyForDeploymentPostprocessing</key> <string>0</string> </dict> - <key>8B05D39455D5B23720961FA4</key> + <key>A2F53747970EB33A4D75EAB4</key> <dict> - <key>children</key> - <array> - <string>5C30ABB95D604B483422D72A</string> - <string>A579EC5BE7E68C55CA5FECDE</string> - <string>DF94410F5DC0A0AB69336DF4</string> - <string>EF2EE4BC906FF9909348DAB5</string> - <string>42A375125393D0613249D046</string> - <string>11072993378724E9AF9CAF85</string> - </array> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXGroup</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> <key>name</key> - <string>Products</string> + <string>Pods-Sample-GRPCClient-Private.xcconfig</string> + <key>path</key> + <string>../Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-Private.xcconfig</string> <key>sourceTree</key> <string><group></string> </dict> - <key>8B503889F903CED9A12E5C87</key> + <key>A32A838D0E36519FB68C73DF</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.script.sh</string> + <string>text.plist.xml</string> <key>path</key> - <string>Pods-SampleTests-resources.sh</string> + <string>Pods-SampleTests-acknowledgements.plist</string> <key>sourceTree</key> <string><group></string> </dict> - <key>8BB6B6B3653FC309CB8EB3A0</key> + <key>A5A038CAD7AF2C628752EF63</key> + <dict> + <key>fileRef</key> + <string>D0E4885FFC11D4A532FAB517</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>A5EDB7E25EA71C67EF1B3F82</key> + <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>96CD01ACF90F6977972AA5C7</string> + <string>41FD4DEF364AC343F07212C1</string> + <string>152BFB6270DCF24A85D66444</string> + <string>FD9953A9B079B03396B2FEA3</string> + <string>4F529EACF630FA5A638408A4</string> + <string>CDB4449E284965A752BD1786</string> + <string>A8CBA848BF8F6538176F3424</string> + <string>5BDD559FB35594584D1BE09E</string> + <string>A0C9AE64F2D6C0E3A4F26302</string> + <string>73107A4E8F55EFE854586192</string> + </array> + <key>isa</key> + <string>PBXSourcesBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> + </dict> + <key>A7CE4BCE7B6959BCDC54B854</key> + <dict> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>wrapper.framework</string> + <key>name</key> + <string>Foundation.framework</string> + <key>path</key> + <string>Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Foundation.framework</string> + <key>sourceTree</key> + <string>DEVELOPER_DIR</string> + </dict> + <key>A7DF070735AAA7A85C474BBD</key> + <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>91B3D53E73C867A8F1B3B392</string> + <string>3C7D98B6D2E351C032BE20A6</string> + <string>AC6CF5430FB75930354FD7B3</string> + <string>306408CC38FAB0410E0D90E7</string> + <string>94DDD64BC43C045541FB9BEC</string> + <string>D0B7F6736070533C215E7DE3</string> + <string>E05C4D27465DD5F292E2A8EE</string> + <string>42669F81E3800361030A567A</string> + <string>2CF8BB8D6A668D6213E18915</string> + </array> + <key>isa</key> + <string>PBXHeadersBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> + </dict> + <key>A8C31E8535FB26B38A1831C0</key> <dict> <key>fileRef</key> - <string>BDA58E5E1AE450540A2B0227</string> + <string>8A203557337361CF44D2D664</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>8CD061F02F905957F4C1D188</key> + <key>A8CBA848BF8F6538176F3424</key> <dict> <key>fileRef</key> - <string>636AC1003F2C71FFD74542CD</string> + <string>36CC8128F585662CE7EF2114</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>911BEE248BE640294A081862</key> + <key>AAAEE7AE6F373AA2C0D1969F</key> + <dict> + <key>fileRef</key> + <string>78C38086F90849CD909A9847</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>AAD40140819824C5EF180664</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.h</string> + <string>text.xcconfig</string> + <key>name</key> + <string>Pods-Sample-GRPCClient.xcconfig</string> <key>path</key> - <string>Pods-RxLibrary-prefix.pch</string> + <string>../Pods-Sample-GRPCClient/Pods-Sample-GRPCClient.xcconfig</string> <key>sourceTree</key> <string><group></string> </dict> - <key>9508723D4C0D4321A5188108</key> + <key>AB2C87B84886AB4CF107C5A1</key> <dict> - <key>buildConfigurations</key> + <key>fileRef</key> + <string>517E28171A4524F9C518EAAC</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>AB3F9F2CFA29030A599E9231</key> + <dict> + <key>buildConfigurationList</key> + <string>ADEFC2A6E68AD0102A5683BB</string> + <key>buildPhases</key> <array> - <string>29B274FDF882AB8B39814FE6</string> - <string>6B5B56ED61BE76782DF02817</string> + <string>D5B158492CFF90F975B03B8D</string> + <string>0CA3C7D4D3EF8429533AB7D5</string> + <string>44C27BC8E89A85C90BC42638</string> + </array> + <key>buildRules</key> + <array/> + <key>dependencies</key> + <array> + <string>6EDAC415AC0B16B221E0397F</string> </array> - <key>defaultConfigurationIsVisible</key> - <string>0</string> - <key>defaultConfigurationName</key> - <string>Release</string> <key>isa</key> - <string>XCConfigurationList</string> + <string>PBXNativeTarget</string> + <key>name</key> + <string>Pods-GRPCClient</string> + <key>productName</key> + <string>Pods-GRPCClient</string> + <key>productReference</key> + <string>932CFA5D0C5C2C8DA3C328AF</string> + <key>productType</key> + <string>com.apple.product-type.library.static</string> </dict> - <key>962FF5FAC21292530C615D05</key> + <key>AC12B8262555F9F61255BBC0</key> <dict> <key>buildConfigurations</key> <array> - <string>A150782D73BBE95DE629B03C</string> - <string>7E9B63EFA2466C4456A0695A</string> + <string>BE19113B79057D8A53A04303</string> + <string>0E66C9AA7C5988807A667377</string> </array> <key>defaultConfigurationIsVisible</key> <string>0</string> @@ -1833,121 +3075,155 @@ <key>isa</key> <string>XCConfigurationList</string> </dict> - <key>9BD773E928AD698D23B20123</key> + <key>AC6CF5430FB75930354FD7B3</key> <dict> <key>fileRef</key> - <string>1868370C0050315A6B835D42</string> + <string>6A4F426FF21092B2A4B44022</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>9CCBE9A628C305B3B089B8DD</key> + <key>AD11CEF56188F659CB36CB34</key> <dict> - <key>fileRef</key> - <string>BA9F62DDE37FF0D601A4D5EA</string> + <key>explicitFileType</key> + <string>archive.ar</string> + <key>includeInIndex</key> + <string>0</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXFileReference</string> + <key>path</key> + <string>libPods.a</string> + <key>sourceTree</key> + <string>BUILT_PRODUCTS_DIR</string> </dict> - <key>9CFAC09E370EA1C96C8D2880</key> + <key>AD88FBBAFBF1F13467342BD1</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.h</string> - <key>name</key> - <string>GRXMappingWriter.h</string> + <string>text.xcconfig</string> <key>path</key> - <string>transformations/GRXMappingWriter.h</string> + <string>Pods-GRPCClient.xcconfig</string> <key>sourceTree</key> <string><group></string> </dict> - <key>9DADE0CF857B717294F7F74F</key> + <key>ADEFC2A6E68AD0102A5683BB</key> + <dict> + <key>buildConfigurations</key> + <array> + <string>CA294BA3C4F9A1948B2AE213</string> + <string>53E7256294CEEC3844B70A31</string> + </array> + <key>defaultConfigurationIsVisible</key> + <string>0</string> + <key>defaultConfigurationName</key> + <string>Release</string> + <key>isa</key> + <string>XCConfigurationList</string> + </dict> + <key>AEECE9DFCC8F060F1E30A421</key> + <dict> + <key>buildConfigurationList</key> + <string>FF34F6701990B0955422EC9C</string> + <key>buildPhases</key> + <array> + <string>1EFB19037775E7D8E9F6FC6B</string> + <string>D0C130BBB6DBFE22F6B649E8</string> + <string>7A1AC6EA0DE9920EE46DD7C6</string> + </array> + <key>buildRules</key> + <array/> + <key>dependencies</key> + <array/> + <key>isa</key> + <string>PBXNativeTarget</string> + <key>name</key> + <string>Pods-RxLibrary</string> + <key>productName</key> + <string>Pods-RxLibrary</string> + <key>productReference</key> + <string>00303CC3049D1C9E8709A044</string> + <key>productType</key> + <string>com.apple.product-type.library.static</string> + </dict> + <key>AF8AB55F74FABAD365BDACF0</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.h</string> + <string>text</string> <key>path</key> - <string>NSEnumerator+GRXUtil.h</string> + <string>Pods-acknowledgements.markdown</string> <key>sourceTree</key> <string><group></string> </dict> - <key>9E8DC61269B141639DA7F859</key> + <key>B22A719DB3DFD2337E996D6A</key> + <dict> + <key>buildConfigurations</key> + <array> + <string>8FC9893C41EDC73475EA96B8</string> + <string>0CB824BF5CED7188A205D06F</string> + </array> + <key>defaultConfigurationIsVisible</key> + <string>0</string> + <key>defaultConfigurationName</key> + <string>Release</string> + <key>isa</key> + <string>XCConfigurationList</string> + </dict> + <key>B31604CF386150298F4572B7</key> <dict> <key>buildActionMask</key> <string>2147483647</string> <key>files</key> <array> - <string>16E6BBD46D9745611EF313FB</string> - <string>CC0A03D531EF0FF199671820</string> - <string>C382F416EFA39BE2CF216044</string> - <string>621587D6C7759FBE7096D185</string> - <string>C0AC333A6FE8F07600C96890</string> - <string>2F91A2AD622F87D98C9B0E1E</string> - <string>FDC6B84EAC9989F0827EA4F3</string> - <string>50FF607D5DA961C6BEF4ABAC</string> - <string>5280A583CA6C6C66698AE67C</string> - <string>6D1D41BAE4E325572FAC7B17</string> + <string>5654D46158ECA8C27895A755</string> + <string>FA5E9BC13067F1E32D6311E6</string> + <string>078103DC988BEF03083FEB98</string> + <string>D80E545131A1D2922F88C5D7</string> + <string>3B52D357FFBB1F7AA20D702F</string> + <string>F2B5B896D8C7E13B5E8ADA28</string> + <string>4B0816A85B8DA041883CEDBE</string> + <string>B6D29DCA02F3DFEEB77A8567</string> + <string>C55E900FEB92A7F9134BA484</string> + <string>A5A038CAD7AF2C628752EF63</string> </array> <key>isa</key> - <string>PBXHeadersBuildPhase</string> + <string>PBXSourcesBuildPhase</string> <key>runOnlyForDeploymentPostprocessing</key> <string>0</string> </dict> - <key>A00077019C113466960E9DAF</key> - <dict> - <key>fileRef</key> - <string>9CFAC09E370EA1C96C8D2880</string> - <key>isa</key> - <string>PBXBuildFile</string> - </dict> - <key>A0215878A7EC41E833B5F1D2</key> - <dict> - <key>containerPortal</key> - <string>FBF79DDF04ADEAED54BA2286</string> - <key>isa</key> - <string>PBXContainerItemProxy</string> - <key>proxyType</key> - <string>1</string> - <key>remoteGlobalIDString</key> - <string>F6C59E5B4CFE053E9F98000E</string> - <key>remoteInfo</key> - <string>Pods-Sample-RxLibrary</string> - </dict> - <key>A150782D73BBE95DE629B03C</key> + <key>B32DC879307F72182ED4B8EF</key> <dict> <key>baseConfigurationReference</key> - <string>2FE1D288B8389F925AA3CE0C</string> + <string>9B871E85E76E178A206CC642</string> <key>buildSettings</key> <dict> <key>ALWAYS_SEARCH_USER_PATHS</key> <string>NO</string> <key>COPY_PHASE_STRIP</key> - <string>NO</string> + <string>YES</string> <key>DSTROOT</key> <string>/tmp/xcodeproj.dst</string> - <key>GCC_DYNAMIC_NO_PIC</key> - <string>NO</string> - <key>GCC_OPTIMIZATION_LEVEL</key> - <string>0</string> <key>GCC_PRECOMPILE_PREFIX_HEADER</key> <string>YES</string> - <key>GCC_PREFIX_HEADER</key> - <string>Target Support Files/Pods-RxLibrary/Pods-RxLibrary-prefix.pch</string> - <key>GCC_PREPROCESSOR_DEFINITIONS</key> - <array> - <string>DEBUG=1</string> - <string>$(inherited)</string> - </array> - <key>GCC_SYMBOLS_PRIVATE_EXTERN</key> - <string>NO</string> <key>INSTALL_PATH</key> <string>$(BUILT_PRODUCTS_DIR)</string> <key>IPHONEOS_DEPLOYMENT_TARGET</key> <string>8.0</string> + <key>OTHER_CFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_CPLUSPLUSFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> <key>OTHER_LDFLAGS</key> <string></string> <key>OTHER_LIBTOOLFLAGS</key> @@ -1960,77 +3236,126 @@ <string>iphoneos</string> <key>SKIP_INSTALL</key> <string>YES</string> + <key>VALIDATE_PRODUCT</key> + <string>YES</string> </dict> <key>isa</key> <string>XCBuildConfiguration</string> <key>name</key> - <string>Debug</string> + <string>Release</string> </dict> - <key>A4C1C82F355864E7D3E200DD</key> + <key>B367BCF63161EE64CC1B1DE0</key> <dict> - <key>buildActionMask</key> - <string>2147483647</string> - <key>files</key> + <key>fileRef</key> + <string>68A0ACB0AFAA7186EB2ABE09</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>B37278C2CEC4C1C433BEF120</key> + <dict> + <key>buildConfigurationList</key> + <string>F6A0AD6C190915DD52886BE2</string> + <key>buildPhases</key> <array> - <string>2DA405F6E578008991B3F9EA</string> - <string>A00077019C113466960E9DAF</string> - <string>46A8EFCC59CF17E048EC34ED</string> - <string>024F840533A6674922DB7899</string> - <string>9BD773E928AD698D23B20123</string> - <string>2AADA4C52A284ED5D41C7CF5</string> - <string>CC358E38AE146C095C401760</string> - <string>288A25371032891C824CF4AA</string> - <string>FDC939796E70DC7D141E29FC</string> - <string>45A1913C8F48686C1FC82520</string> + <string>40F1A996749176D9DB148901</string> + <string>A152A54E946159BB41FF6E04</string> + </array> + <key>buildRules</key> + <array/> + <key>dependencies</key> + <array> + <string>2504847B854AC340A0712235</string> + <string>041582131ADE9EA5C2A319BB</string> </array> <key>isa</key> - <string>PBXHeadersBuildPhase</string> - <key>runOnlyForDeploymentPostprocessing</key> - <string>0</string> + <string>PBXNativeTarget</string> + <key>name</key> + <string>Pods-SampleTests</string> + <key>productName</key> + <string>Pods-SampleTests</string> + <key>productReference</key> + <string>675E56BADC0C4C93E3B6B263</string> + <key>productType</key> + <string>com.apple.product-type.library.static</string> + </dict> + <key>B37BACFCD1765840986F8AC5</key> + <dict> + <key>fileRef</key> + <string>8A203557337361CF44D2D664</string> + <key>isa</key> + <string>PBXBuildFile</string> </dict> - <key>A577CB571492B4F951064FCF</key> + <key>B42B413709D355A8828EEC76</key> + <dict> + <key>fileRef</key> + <string>617AA57F150724B1881EC92E</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>B5E4A18F0B2376BE20D1C8A5</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.xcconfig</string> + <string>sourcecode.c.h</string> <key>path</key> - <string>Pods.release.xcconfig</string> + <string>GRXWriter.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>A579EC5BE7E68C55CA5FECDE</key> + <key>B6D29DCA02F3DFEEB77A8567</key> + <dict> + <key>fileRef</key> + <string>66A375345A9F319AE182BDBD</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>B7FD4EDD742EE7C18D733B84</key> + <dict> + <key>fileRef</key> + <string>3E850442224A3D7C7540C6C5</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>BC51F603F893AA6A748EB8EC</key> <dict> - <key>explicitFileType</key> - <string>archive.ar</string> <key>includeInIndex</key> - <string>0</string> + <string>1</string> <key>isa</key> <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.h</string> <key>path</key> - <string>libPods-RxLibrary.a</string> + <string>GRPCCall.h</string> <key>sourceTree</key> - <string>BUILT_PRODUCTS_DIR</string> + <string><group></string> </dict> - <key>A71CC1B520D2DFF451839FE2</key> + <key>BCB580E2193B3624D1C471DB</key> <dict> - <key>buildActionMask</key> - <string>2147483647</string> - <key>files</key> - <array> - <string>0BC8818D3A097831FDE0750B</string> - </array> + <key>containerPortal</key> + <string>E61F9CBEB0CA9A172C4AA56B</string> <key>isa</key> - <string>PBXSourcesBuildPhase</string> - <key>runOnlyForDeploymentPostprocessing</key> - <string>0</string> + <string>PBXContainerItemProxy</string> + <key>proxyType</key> + <string>1</string> + <key>remoteGlobalIDString</key> + <string>AEECE9DFCC8F060F1E30A421</string> + <key>remoteInfo</key> + <string>Pods-RxLibrary</string> + </dict> + <key>BD38F7B336495294670A28A4</key> + <dict> + <key>fileRef</key> + <string>F776B445ABD393C908B02302</string> + <key>isa</key> + <string>PBXBuildFile</string> </dict> - <key>A8AFEFDF4700447BBCDF9E10</key> + <key>BE19113B79057D8A53A04303</key> <dict> <key>baseConfigurationReference</key> - <string>591702CE7D8AF91674F1640F</string> + <string>28C6D48989DA211E0BACAFC2</string> <key>buildSettings</key> <dict> <key>ALWAYS_SEARCH_USER_PATHS</key> @@ -2074,102 +3399,79 @@ <key>name</key> <string>Debug</string> </dict> - <key>A96854FB48432263FE68C313</key> + <key>BEEA6A0D27020465FC6CD0AA</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.script.sh</string> + <key>path</key> + <string>Pods-Sample-resources.sh</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>C31B151DCFB1F263B8E344BF</key> <dict> <key>fileRef</key> - <string>15F64D3D7D10DB47599A72EB</string> + <string>6A4F426FF21092B2A4B44022</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>AA52EF1CD8A3683472BD86FE</key> + <key>C3E4DEFB7877BA48A9458947</key> <dict> <key>fileRef</key> - <string>4BB75B0FC7359E8EA8672954</string> + <string>1A2D9424BA1BE0E3B2598D06</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>AA99564782B655791B053E58</key> + <key>C438A6F7EF173F2ED50AF192</key> <dict> + <key>explicitFileType</key> + <string>archive.ar</string> <key>includeInIndex</key> - <string>1</string> + <string>0</string> <key>isa</key> <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>text.script.sh</string> <key>path</key> - <string>Pods-Sample-resources.sh</string> + <string>libPods-SampleTests-RxLibrary.a</string> <key>sourceTree</key> - <string><group></string> + <string>BUILT_PRODUCTS_DIR</string> </dict> - <key>AF9F0D991C2913F55496D06E</key> + <key>C55E900FEB92A7F9134BA484</key> <dict> - <key>baseConfigurationReference</key> - <string>A577CB571492B4F951064FCF</string> - <key>buildSettings</key> - <dict> - <key>ALWAYS_SEARCH_USER_PATHS</key> - <string>NO</string> - <key>COPY_PHASE_STRIP</key> - <string>YES</string> - <key>DSTROOT</key> - <string>/tmp/xcodeproj.dst</string> - <key>GCC_PRECOMPILE_PREFIX_HEADER</key> - <string>YES</string> - <key>INSTALL_PATH</key> - <string>$(BUILT_PRODUCTS_DIR)</string> - <key>IPHONEOS_DEPLOYMENT_TARGET</key> - <string>8.0</string> - <key>OTHER_CFLAGS</key> - <array> - <string>-DNS_BLOCK_ASSERTIONS=1</string> - <string>$(inherited)</string> - </array> - <key>OTHER_CPLUSPLUSFLAGS</key> - <array> - <string>-DNS_BLOCK_ASSERTIONS=1</string> - <string>$(inherited)</string> - </array> - <key>OTHER_LDFLAGS</key> - <string></string> - <key>OTHER_LIBTOOLFLAGS</key> - <string></string> - <key>PRODUCT_NAME</key> - <string>$(TARGET_NAME)</string> - <key>PUBLIC_HEADERS_FOLDER_PATH</key> - <string>$(TARGET_NAME)</string> - <key>SDKROOT</key> - <string>iphoneos</string> - <key>SKIP_INSTALL</key> - <string>YES</string> - <key>VALIDATE_PRODUCT</key> - <string>YES</string> - </dict> + <key>fileRef</key> + <string>6BBDA0AD2955451BBF881052</string> <key>isa</key> - <string>XCBuildConfiguration</string> - <key>name</key> - <string>Release</string> + <string>PBXBuildFile</string> </dict> - <key>B034EE43C1EF96D1CBD1328A</key> + <key>C59D49EFF10934AFF82CA873</key> + <dict> + <key>fileRef</key> + <string>C5A09DD572522E9567EC6CD1</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>C5A09DD572522E9567EC6CD1</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.xcconfig</string> - <key>name</key> - <string>Pods-Sample-RxLibrary.xcconfig</string> + <string>sourcecode.c.objc</string> <key>path</key> - <string>../Pods-Sample-RxLibrary/Pods-Sample-RxLibrary.xcconfig</string> + <string>Pods-SampleTests-dummy.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>B05A2B15C8A03AABA163D7D7</key> + <key>C75867D6DF922C6894ACCC88</key> <dict> <key>buildConfigurations</key> <array> - <string>74F28D2155D125C3068F96BE</string> - <string>AF9F0D991C2913F55496D06E</string> + <string>098BE814C7B5F9F21878CDE6</string> + <string>6AA10AF7AE19131F66FB8586</string> </array> <key>defaultConfigurationIsVisible</key> <string>0</string> @@ -2178,10 +3480,39 @@ <key>isa</key> <string>XCConfigurationList</string> </dict> - <key>B153046F0CBA526564A9673C</key> + <key>C818D7947CCCEA0324CD9E79</key> + <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>01E37BE5C7114E128C4664FB</string> + <string>21E0A8B187DFAE6BD32D1302</string> + <string>1C191978ED182A611393A626</string> + <string>C3E4DEFB7877BA48A9458947</string> + <string>FF378D56A81AE6EFC739CDE6</string> + <string>2C4B95CD783F7C0739F77B66</string> + <string>CC00C5E75E69BE36B9D2816E</string> + <string>EA8F6101AB32D6B0A3FC0163</string> + <string>D2BE15266514D3FE8B3E8820</string> + <string>8ACE4DE290D8847EA219A1B8</string> + </array> + <key>isa</key> + <string>PBXHeadersBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> + </dict> + <key>C90E8B6A34A6456422C8086E</key> + <dict> + <key>fileRef</key> + <string>617AA57F150724B1881EC92E</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>CA294BA3C4F9A1948B2AE213</key> <dict> <key>baseConfigurationReference</key> - <string>7FACBF2C8AF0403DD1C11015</string> + <string>EB86FC57EE5F50944BA86EE3</string> <key>buildSettings</key> <dict> <key>ALWAYS_SEARCH_USER_PATHS</key> @@ -2197,7 +3528,7 @@ <key>GCC_PRECOMPILE_PREFIX_HEADER</key> <string>YES</string> <key>GCC_PREFIX_HEADER</key> - <string>Target Support Files/Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-prefix.pch</string> + <string>Target Support Files/Pods-GRPCClient/Pods-GRPCClient-prefix.pch</string> <key>GCC_PREPROCESSOR_DEFINITIONS</key> <array> <string>DEBUG=1</string> @@ -2227,156 +3558,105 @@ <key>name</key> <string>Debug</string> </dict> - <key>B4FB10339A6A2E1AAF255802</key> + <key>CA8337B362EA0132CA470DB0</key> + <dict> + <key>fileRef</key> + <string>2DA7CCAA52B82F817FA61F5A</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>CAB17FE3D2357BFAF9B8598F</key> + <dict> + <key>fileRef</key> + <string>D444D13D4D0829CF4142949A</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>CB5B0489448E9051E9F9E423</key> + <dict> + <key>fileRef</key> + <string>A7CE4BCE7B6959BCDC54B854</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>CBB34B55930DEFBDE44A62E0</key> <dict> + <key>explicitFileType</key> + <string>archive.ar</string> <key>includeInIndex</key> - <string>1</string> + <string>0</string> <key>isa</key> <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>text</string> - <key>name</key> - <string>Podfile</string> <key>path</key> - <string>../Podfile</string> + <string>libPods-Sample-GRPCClient.a</string> <key>sourceTree</key> - <string>SOURCE_ROOT</string> - <key>xcLanguageSpecificationIdentifier</key> - <string>xcode.lang.ruby</string> + <string>BUILT_PRODUCTS_DIR</string> + </dict> + <key>CC00C5E75E69BE36B9D2816E</key> + <dict> + <key>fileRef</key> + <string>7F5DF8C37493F93C2636BAD6</string> + <key>isa</key> + <string>PBXBuildFile</string> </dict> - <key>B50ECED4CEC7554ED6077619</key> + <key>CC354BAF9312E63AB7D4404A</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.plist.xml</string> + <string>sourcecode.c.h</string> <key>path</key> - <string>Pods-Sample-acknowledgements.plist</string> + <string>Pods-environment.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>B602CFEF970BEA98E40A056C</key> - <dict> - <key>baseConfigurationReference</key> - <string>27E123435067CC11FE103999</string> - <key>buildSettings</key> - <dict> - <key>ALWAYS_SEARCH_USER_PATHS</key> - <string>NO</string> - <key>COPY_PHASE_STRIP</key> - <string>YES</string> - <key>DSTROOT</key> - <string>/tmp/xcodeproj.dst</string> - <key>GCC_PRECOMPILE_PREFIX_HEADER</key> - <string>YES</string> - <key>INSTALL_PATH</key> - <string>$(BUILT_PRODUCTS_DIR)</string> - <key>IPHONEOS_DEPLOYMENT_TARGET</key> - <string>8.0</string> - <key>OTHER_CFLAGS</key> - <array> - <string>-DNS_BLOCK_ASSERTIONS=1</string> - <string>$(inherited)</string> - </array> - <key>OTHER_CPLUSPLUSFLAGS</key> - <array> - <string>-DNS_BLOCK_ASSERTIONS=1</string> - <string>$(inherited)</string> - </array> - <key>OTHER_LDFLAGS</key> - <string></string> - <key>OTHER_LIBTOOLFLAGS</key> - <string></string> - <key>PRODUCT_NAME</key> - <string>$(TARGET_NAME)</string> - <key>PUBLIC_HEADERS_FOLDER_PATH</key> - <string>$(TARGET_NAME)</string> - <key>SDKROOT</key> - <string>iphoneos</string> - <key>SKIP_INSTALL</key> - <string>YES</string> - <key>VALIDATE_PRODUCT</key> - <string>YES</string> - </dict> - <key>isa</key> - <string>XCBuildConfiguration</string> - <key>name</key> - <string>Release</string> - </dict> - <key>B78477CA74AEFC96C25B49B4</key> + <key>CD18BC77ECA79D031662CC51</key> <dict> <key>fileRef</key> - <string>BDA58E5E1AE450540A2B0227</string> + <string>8A203557337361CF44D2D664</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>B7902691B66134F3764663D9</key> + <key>CDA9A715DCFCE07755974888</key> <dict> - <key>fileRef</key> - <string>3AD75C69A61408EF8BE0F247</string> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> + <key>name</key> + <string>Pods-SampleTests-GRPCClient-Private.xcconfig</string> + <key>path</key> + <string>../Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-Private.xcconfig</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>B90592E4E39AFD1E769F9A95</key> + <key>CDB4449E284965A752BD1786</key> <dict> <key>fileRef</key> - <string>F763F3DF1B47888E75D0ED9C</string> + <string>E0CF2237012441B69E760029</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>B960FF1BE77D3F4459EEB1E0</key> + <key>CEA794A7056AFAB8256CC44D</key> <dict> - <key>baseConfigurationReference</key> - <string>7FACBF2C8AF0403DD1C11015</string> - <key>buildSettings</key> - <dict> - <key>ALWAYS_SEARCH_USER_PATHS</key> - <string>NO</string> - <key>COPY_PHASE_STRIP</key> - <string>YES</string> - <key>DSTROOT</key> - <string>/tmp/xcodeproj.dst</string> - <key>GCC_PRECOMPILE_PREFIX_HEADER</key> - <string>YES</string> - <key>GCC_PREFIX_HEADER</key> - <string>Target Support Files/Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-prefix.pch</string> - <key>INSTALL_PATH</key> - <string>$(BUILT_PRODUCTS_DIR)</string> - <key>IPHONEOS_DEPLOYMENT_TARGET</key> - <string>8.0</string> - <key>OTHER_CFLAGS</key> - <array> - <string>-DNS_BLOCK_ASSERTIONS=1</string> - <string>$(inherited)</string> - </array> - <key>OTHER_CPLUSPLUSFLAGS</key> - <array> - <string>-DNS_BLOCK_ASSERTIONS=1</string> - <string>$(inherited)</string> - </array> - <key>OTHER_LDFLAGS</key> - <string></string> - <key>OTHER_LIBTOOLFLAGS</key> - <string></string> - <key>PRODUCT_NAME</key> - <string>$(TARGET_NAME)</string> - <key>PUBLIC_HEADERS_FOLDER_PATH</key> - <string>$(TARGET_NAME)</string> - <key>SDKROOT</key> - <string>iphoneos</string> - <key>SKIP_INSTALL</key> - <string>YES</string> - <key>VALIDATE_PRODUCT</key> - <string>YES</string> - </dict> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>XCBuildConfiguration</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> <key>name</key> - <string>Release</string> + <string>GRXMappingWriter.m</string> + <key>path</key> + <string>transformations/GRXMappingWriter.m</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>BA9F62DDE37FF0D601A4D5EA</key> + <key>D0641C22EEADF13905743122</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -2384,32 +3664,34 @@ <string>PBXFileReference</string> <key>lastKnownFileType</key> <string>sourcecode.c.objc</string> + <key>name</key> + <string>GRPCCompletionQueue.m</string> <key>path</key> - <string>NSEnumerator+GRXUtil.m</string> + <string>private/GRPCCompletionQueue.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>BB88043BB37FC0261BA90A30</key> + <key>D0B7F6736070533C215E7DE3</key> <dict> <key>fileRef</key> - <string>636AC1003F2C71FFD74542CD</string> + <string>423B94F0660BA470EAD9DA5E</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>BC50D76123DA4B85E6AD77B4</key> + <key>D0C130BBB6DBFE22F6B649E8</key> <dict> - <key>includeInIndex</key> - <string>1</string> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>34D39E370FE6AF621D048E13</string> + </array> <key>isa</key> - <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>sourcecode.c.objc</string> - <key>path</key> - <string>Pods-Sample-dummy.m</string> - <key>sourceTree</key> - <string><group></string> + <string>PBXFrameworksBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> </dict> - <key>BC52B0661F25B25CE382296C</key> + <key>D0E4885FFC11D4A532FAB517</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -2417,12 +3699,42 @@ <string>PBXFileReference</string> <key>lastKnownFileType</key> <string>sourcecode.c.objc</string> + <key>name</key> + <string>Pods-SampleTests-GRPCClient-dummy.m</string> <key>path</key> - <string>GRXImmediateWriter.m</string> + <string>../Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-dummy.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>BDA58E5E1AE450540A2B0227</key> + <key>D153B061942AF56AA4E13412</key> + <dict> + <key>fileRef</key> + <string>BC51F603F893AA6A748EB8EC</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>D1C458EAFDCA48A4C90131E9</key> + <dict> + <key>fileRef</key> + <string>A7CE4BCE7B6959BCDC54B854</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>D250768ADF5442C9C8880A18</key> + <dict> + <key>fileRef</key> + <string>6A4F426FF21092B2A4B44022</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>D2BE15266514D3FE8B3E8820</key> + <dict> + <key>fileRef</key> + <string>B5E4A18F0B2376BE20D1C8A5</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>D444D13D4D0829CF4142949A</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -2431,11 +3743,11 @@ <key>lastKnownFileType</key> <string>sourcecode.c.objc</string> <key>path</key> - <string>GRXWriter.m</string> + <string>GRXImmediateWriter.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>BECFE3DCB323841851972996</key> + <key>D45F5D73E3D255043B7E349A</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -2443,188 +3755,353 @@ <string>PBXFileReference</string> <key>lastKnownFileType</key> <string>sourcecode.c.h</string> + <key>name</key> + <string>NSData+GRPC.h</string> <key>path</key> - <string>GRXImmediateWriter.h</string> + <string>private/NSData+GRPC.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>BFE770FF3C0847AB995A82CA</key> + <key>D520F3474212A72655D2F0ED</key> <dict> <key>buildActionMask</key> <string>2147483647</string> <key>files</key> <array> - <string>86D03B997B81819E2F39E48B</string> - <string>43CC797FB2A733DF5B7A9F05</string> - <string>6E0669CB3E76E19FC854BA74</string> - <string>CBA4FEEF7E642535FB39D878</string> - <string>FC1BEDED07CA4D91AFEB56BD</string> - <string>46FAFA88CA3E774263422EB9</string> - <string>8915073BE8158EF53FE11B95</string> - <string>B90592E4E39AFD1E769F9A95</string> - <string>F6383D21195A5BEFC51F6618</string> - <string>352B4C7135E3BBBFEBAB7F55</string> - <string>E8F0B998CE49FF732F312133</string> + <string>CB5B0489448E9051E9F9E423</string> </array> <key>isa</key> - <string>PBXSourcesBuildPhase</string> + <string>PBXFrameworksBuildPhase</string> <key>runOnlyForDeploymentPostprocessing</key> <string>0</string> </dict> - <key>C0AC333A6FE8F07600C96890</key> + <key>D54769D14A73816406636B14</key> <dict> <key>fileRef</key> - <string>1868370C0050315A6B835D42</string> + <string>B5E4A18F0B2376BE20D1C8A5</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>C382F416EFA39BE2CF216044</key> + <key>D548663391776A14DCAC50B8</key> <dict> <key>fileRef</key> - <string>5AEFA85A5F1AD206D68B0576</string> + <string>A7CE4BCE7B6959BCDC54B854</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>C4342DDEEF3C3290956C21DF</key> + <key>D5B158492CFF90F975B03B8D</key> <dict> - <key>buildConfigurations</key> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> <array> - <string>A8AFEFDF4700447BBCDF9E10</string> - <string>0F20828B67FDCB990B1818E9</string> + <string>E0CA82F272732A2A5F024AD6</string> + <string>26A838790310501CB08753A6</string> + <string>00669D4383CB42C429D06591</string> + <string>91D5786D0585930DEFAB636E</string> + <string>AAAEE7AE6F373AA2C0D1969F</string> + <string>F84427B4C72738E045D44E6C</string> + <string>822AA7CD03CFBA9265225E74</string> + <string>0843899658450810B81AC1DD</string> + <string>F37E3DFDFA20082CBC4E2257</string> + <string>DDC9480509EAE89DED87393D</string> </array> - <key>defaultConfigurationIsVisible</key> - <string>0</string> - <key>defaultConfigurationName</key> - <string>Release</string> <key>isa</key> - <string>XCConfigurationList</string> + <string>PBXSourcesBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> </dict> - <key>CBA4FEEF7E642535FB39D878</key> + <key>D6715088D2AB1CBAA49F8651</key> <dict> - <key>fileRef</key> - <string>636AC1003F2C71FFD74542CD</string> + <key>containerPortal</key> + <string>E61F9CBEB0CA9A172C4AA56B</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXContainerItemProxy</string> + <key>proxyType</key> + <string>1</string> + <key>remoteGlobalIDString</key> + <string>AB3F9F2CFA29030A599E9231</string> + <key>remoteInfo</key> + <string>Pods-GRPCClient</string> </dict> - <key>CC0A03D531EF0FF199671820</key> + <key>D6D8919597D4E28EBF5D166B</key> <dict> - <key>fileRef</key> - <string>9CFAC09E370EA1C96C8D2880</string> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> + <key>path</key> + <string>GRXWriteable.m</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>CC358E38AE146C095C401760</key> + <key>D756E08287486CC7A7034803</key> <dict> - <key>fileRef</key> - <string>0260773D27B4AE159FB0B22D</string> + <key>children</key> + <array> + <string>EB0497400F84ADD968F6AB42</string> + <string>A32A838D0E36519FB68C73DF</string> + <string>C5A09DD572522E9567EC6CD1</string> + <string>D985414BAA4686F0ED38ACF8</string> + <string>255EE0013C9A672760CB1F29</string> + <string>048EFCCABBC3F25828644716</string> + <string>51DBA8F3C7D4E67BDD768066</string> + </array> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXGroup</string> + <key>name</key> + <string>Pods-SampleTests</string> + <key>path</key> + <string>Target Support Files/Pods-SampleTests</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>D49849E96C0C5FFB93C810CD</key> + <key>D7BA8B8D4FFF3674A537221D</key> <dict> <key>children</key> <array> - <string>3133D1CCCF4F1FE3E893509C</string> - <string>2FE1D288B8389F925AA3CE0C</string> - <string>2663F4401A9075DAC0B24171</string> - <string>911BEE248BE640294A081862</string> - <string>B034EE43C1EF96D1CBD1328A</string> - <string>7FACBF2C8AF0403DD1C11015</string> - <string>E232BDE68610C0AC98C0D29F</string> - <string>4972C151CE9A8A15BC1AE2C8</string> - <string>8A7375A2F98889F35C15E2D7</string> - <string>687D79F4C2484F58E9796051</string> - <string>42B461F095E85911637DFD60</string> - <string>2B05A4C21D00E8CF0DE88447</string> + <string>9470FB5E010191C87542871D</string> + <string>D444D13D4D0829CF4142949A</string> + <string>35A079DEB6141A6FDFF69D63</string> + <string>CEA794A7056AFAB8256CC44D</string> + <string>0B083D6614A831642ECCDB95</string> + <string>34373F1941450D17C3F85B57</string> + <string>1A2D9424BA1BE0E3B2598D06</string> + <string>19A733EC94B0F847F901D308</string> + <string>617AA57F150724B1881EC92E</string> + <string>2DA7CCAA52B82F817FA61F5A</string> + <string>0C52B5B243390BA62033C734</string> + <string>D6D8919597D4E28EBF5D166B</string> + <string>B5E4A18F0B2376BE20D1C8A5</string> + <string>8A203557337361CF44D2D664</string> + <string>7F5DF8C37493F93C2636BAD6</string> + <string>EA915E5B33F07CD0B9F8ACE9</string> + <string>F776B445ABD393C908B02302</string> + <string>439AF2B977736E012C79B2FE</string> + <string>2705BF8D166EFF8A2D44B2BA</string> + <string>68A0ACB0AFAA7186EB2ABE09</string> + <string>6BC5E8D01392B97FF237C655</string> </array> <key>isa</key> <string>PBXGroup</string> <key>name</key> - <string>Support Files</string> + <string>RxLibrary</string> <key>path</key> - <string>../examples/Sample/Pods/Target Support Files/Pods-RxLibrary</string> + <string>../../../RxLibrary</string> <key>sourceTree</key> <string><group></string> </dict> - <key>D53A8F2B11E6C2C187AFFF1D</key> + <key>D80E545131A1D2922F88C5D7</key> + <dict> + <key>fileRef</key> + <string>F541961867C9493F07D54B8E</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>D965694635120F86B2E5E101</key> + <dict> + <key>fileRef</key> + <string>9470FB5E010191C87542871D</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>D985414BAA4686F0ED38ACF8</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text</string> + <string>sourcecode.c.h</string> <key>path</key> - <string>Pods-Sample-acknowledgements.markdown</string> + <string>Pods-SampleTests-environment.h</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>DD9A2AC14E9E04D4337DB76E</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> + <key>name</key> + <string>Pods-SampleTests-RxLibrary.xcconfig</string> + <key>path</key> + <string>../Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary.xcconfig</string> <key>sourceTree</key> <string><group></string> </dict> - <key>DB007D27F74F8F72C72A1079</key> + <key>DDC9480509EAE89DED87393D</key> + <dict> + <key>fileRef</key> + <string>7E3BE2E23E465D87ECF0E962</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>DF829332517E7136AED2EC79</key> <dict> <key>containerPortal</key> - <string>FBF79DDF04ADEAED54BA2286</string> + <string>E61F9CBEB0CA9A172C4AA56B</string> <key>isa</key> <string>PBXContainerItemProxy</string> <key>proxyType</key> <string>1</string> <key>remoteGlobalIDString</key> - <string>6BFD156F312F6CAA1E5B00CA</string> + <string>AEECE9DFCC8F060F1E30A421</string> <key>remoteInfo</key> <string>Pods-RxLibrary</string> </dict> - <key>DB0257E62EC33F3F316EF017</key> + <key>DFF269EBCC2A9D30DC7E264F</key> + <dict> + <key>fileRef</key> + <string>34373F1941450D17C3F85B57</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>E05C4D27465DD5F292E2A8EE</key> + <dict> + <key>fileRef</key> + <string>D45F5D73E3D255043B7E349A</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>E066A01F3A992087F10B31CF</key> + <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> + <array> + <string>87F549870DB778A5F152B608</string> + </array> + <key>isa</key> + <string>PBXFrameworksBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> + </dict> + <key>E0CA82F272732A2A5F024AD6</key> + <dict> + <key>fileRef</key> + <string>53A5EA857F02C1DEEC269122</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>E0CF2237012441B69E760029</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.h</string> + <string>sourcecode.c.objc</string> <key>path</key> - <string>GRXWriter.h</string> + <string>GRPCMethodName.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>DB3528F609E6177E1C5A691C</key> + <key>E23D43F03E7C19D671C93F81</key> + <dict> + <key>fileRef</key> + <string>CEA794A7056AFAB8256CC44D</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>E256AF33BE1D5C30780D4E96</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.plist.xml</string> + <string>sourcecode.c.h</string> <key>path</key> - <string>Pods-SampleTests-acknowledgements.plist</string> + <string>Pods-RxLibrary-prefix.pch</string> <key>sourceTree</key> <string><group></string> </dict> - <key>DB677464758307786D68CCE9</key> + <key>E2EA100B27BDAB6CA32F3814</key> <dict> + <key>children</key> + <array> + <string>4B765AEAB08FDC86E8082F7A</string> + <string>644143496CECB668F61BCD16</string> + <string>D756E08287486CC7A7034803</string> + </array> + <key>isa</key> + <string>PBXGroup</string> + <key>name</key> + <string>Targets Support Files</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>E328084D7C583851D3BE25CF</key> + <dict> + <key>fileRef</key> + <string>34373F1941450D17C3F85B57</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>E4F23FE4AEB216E7D1E2B7EE</key> + <dict> + <key>explicitFileType</key> + <string>archive.ar</string> <key>includeInIndex</key> - <string>1</string> + <string>0</string> <key>isa</key> <string>PBXFileReference</string> - <key>lastKnownFileType</key> - <string>text.xcconfig</string> <key>path</key> - <string>Pods-SampleTests.release.xcconfig</string> + <string>libPods-Sample.a</string> <key>sourceTree</key> - <string><group></string> + <string>BUILT_PRODUCTS_DIR</string> </dict> - <key>DCAB71BD665AF17533987B69</key> + <key>E61F9CBEB0CA9A172C4AA56B</key> <dict> - <key>buildActionMask</key> - <string>2147483647</string> - <key>files</key> + <key>attributes</key> + <dict> + <key>LastUpgradeCheck</key> + <string>0510</string> + </dict> + <key>buildConfigurationList</key> + <string>B22A719DB3DFD2337E996D6A</string> + <key>compatibilityVersion</key> + <string>Xcode 3.2</string> + <key>developmentRegion</key> + <string>English</string> + <key>hasScannedForEncodings</key> + <string>0</string> + <key>isa</key> + <string>PBXProject</string> + <key>knownRegions</key> + <array> + <string>en</string> + </array> + <key>mainGroup</key> + <string>39B5F5991112189C12D87D40</string> + <key>productRefGroup</key> + <string>4D580403A4A30D76B96E9775</string> + <key>projectDirPath</key> + <string></string> + <key>projectReferences</key> + <array/> + <key>projectRoot</key> + <string></string> + <key>targets</key> <array> - <string>85D5565EC08D14A6A60F1DDA</string> + <string>7962371F2502CBAEBF859730</string> + <string>AB3F9F2CFA29030A599E9231</string> + <string>AEECE9DFCC8F060F1E30A421</string> + <string>1F1DE3733C2AC2A97CA8885A</string> + <string>66E177AC7F3B02B51D36A226</string> + <string>4E2021A981DA9A189922E0C6</string> + <string>B37278C2CEC4C1C433BEF120</string> + <string>A10CFA4D4ED9B20894905742</string> + <string>474A50F85C06F74769FAD474</string> </array> - <key>isa</key> - <string>PBXFrameworksBuildPhase</string> - <key>runOnlyForDeploymentPostprocessing</key> - <string>0</string> </dict> - <key>DF94410F5DC0A0AB69336DF4</key> + <key>EA41D57C3938E8D766E0224F</key> <dict> <key>explicitFileType</key> <string>archive.ar</string> @@ -2633,79 +4110,191 @@ <key>isa</key> <string>PBXFileReference</string> <key>path</key> - <string>libPods-Sample.a</string> + <string>libPods-Sample-RxLibrary.a</string> <key>sourceTree</key> <string>BUILT_PRODUCTS_DIR</string> </dict> - <key>E14CB6F332A9E58BB5F76C07</key> + <key>EA8F6101AB32D6B0A3FC0163</key> + <dict> + <key>fileRef</key> + <string>F776B445ABD393C908B02302</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>EA915E5B33F07CD0B9F8ACE9</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>text.script.sh</string> + <string>sourcecode.c.objc</string> <key>path</key> - <string>Pods-resources.sh</string> + <string>GRXWriter+Immediate.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>E232BDE68610C0AC98C0D29F</key> + <key>EB0497400F84ADD968F6AB42</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.objc</string> - <key>name</key> - <string>Pods-Sample-RxLibrary-dummy.m</string> + <string>text</string> <key>path</key> - <string>../Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-dummy.m</string> + <string>Pods-SampleTests-acknowledgements.markdown</string> <key>sourceTree</key> <string><group></string> </dict> - <key>E86A17CE1D79ECDCEBF91109</key> + <key>EB86FC57EE5F50944BA86EE3</key> <dict> - <key>fileRef</key> - <string>F763F3DF1B47888E75D0ED9C</string> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXBuildFile</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> + <key>path</key> + <string>Pods-GRPCClient-Private.xcconfig</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>EBB8787CD50E6221A0ABA3AE</key> + <dict> + <key>baseConfigurationReference</key> + <string>02396B6B22E0450EA29193E9</string> + <key>buildSettings</key> + <dict> + <key>ALWAYS_SEARCH_USER_PATHS</key> + <string>NO</string> + <key>COPY_PHASE_STRIP</key> + <string>NO</string> + <key>DSTROOT</key> + <string>/tmp/xcodeproj.dst</string> + <key>GCC_DYNAMIC_NO_PIC</key> + <string>NO</string> + <key>GCC_OPTIMIZATION_LEVEL</key> + <string>0</string> + <key>GCC_PRECOMPILE_PREFIX_HEADER</key> + <string>YES</string> + <key>GCC_PREFIX_HEADER</key> + <string>Target Support Files/Pods-RxLibrary/Pods-RxLibrary-prefix.pch</string> + <key>GCC_PREPROCESSOR_DEFINITIONS</key> + <array> + <string>DEBUG=1</string> + <string>$(inherited)</string> + </array> + <key>GCC_SYMBOLS_PRIVATE_EXTERN</key> + <string>NO</string> + <key>INSTALL_PATH</key> + <string>$(BUILT_PRODUCTS_DIR)</string> + <key>IPHONEOS_DEPLOYMENT_TARGET</key> + <string>8.0</string> + <key>OTHER_LDFLAGS</key> + <string></string> + <key>OTHER_LIBTOOLFLAGS</key> + <string></string> + <key>PRODUCT_NAME</key> + <string>$(TARGET_NAME)</string> + <key>PUBLIC_HEADERS_FOLDER_PATH</key> + <string>$(TARGET_NAME)</string> + <key>SDKROOT</key> + <string>iphoneos</string> + <key>SKIP_INSTALL</key> + <string>YES</string> + </dict> + <key>isa</key> + <string>XCBuildConfiguration</string> + <key>name</key> + <string>Debug</string> </dict> - <key>E8F0B998CE49FF732F312133</key> + <key>EC47C9C8660A81111C71C967</key> <dict> <key>fileRef</key> - <string>E232BDE68610C0AC98C0D29F</string> + <string>003D718984A073D9C6C71422</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>EB29FAB1F81F0D17BDAD72D0</key> + <key>EC4BA4B1D02C3BA6DBB450E7</key> <dict> <key>includeInIndex</key> <string>1</string> <key>isa</key> <string>PBXFileReference</string> <key>lastKnownFileType</key> - <string>sourcecode.c.objc</string> + <string>text</string> + <key>name</key> + <string>Podfile</string> <key>path</key> - <string>GRXWriter+Immediate.m</string> + <string>../Podfile</string> <key>sourceTree</key> - <string><group></string> + <string>SOURCE_ROOT</string> + <key>xcLanguageSpecificationIdentifier</key> + <string>xcode.lang.ruby</string> </dict> - <key>EF2EE4BC906FF9909348DAB5</key> + <key>ED9460BEAAB47A2752887CE9</key> + <dict> + <key>baseConfigurationReference</key> + <string>51DBA8F3C7D4E67BDD768066</string> + <key>buildSettings</key> + <dict> + <key>ALWAYS_SEARCH_USER_PATHS</key> + <string>NO</string> + <key>COPY_PHASE_STRIP</key> + <string>YES</string> + <key>DSTROOT</key> + <string>/tmp/xcodeproj.dst</string> + <key>GCC_PRECOMPILE_PREFIX_HEADER</key> + <string>YES</string> + <key>INSTALL_PATH</key> + <string>$(BUILT_PRODUCTS_DIR)</string> + <key>IPHONEOS_DEPLOYMENT_TARGET</key> + <string>8.0</string> + <key>OTHER_CFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_CPLUSPLUSFLAGS</key> + <array> + <string>-DNS_BLOCK_ASSERTIONS=1</string> + <string>$(inherited)</string> + </array> + <key>OTHER_LDFLAGS</key> + <string></string> + <key>OTHER_LIBTOOLFLAGS</key> + <string></string> + <key>PRODUCT_NAME</key> + <string>$(TARGET_NAME)</string> + <key>PUBLIC_HEADERS_FOLDER_PATH</key> + <string>$(TARGET_NAME)</string> + <key>SDKROOT</key> + <string>iphoneos</string> + <key>SKIP_INSTALL</key> + <string>YES</string> + <key>VALIDATE_PRODUCT</key> + <string>YES</string> + </dict> + <key>isa</key> + <string>XCBuildConfiguration</string> + <key>name</key> + <string>Release</string> + </dict> + <key>EE156F6201B39BDD5F905822</key> <dict> - <key>explicitFileType</key> - <string>archive.ar</string> <key>includeInIndex</key> - <string>0</string> + <string>1</string> <key>isa</key> <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.h</string> <key>path</key> - <string>libPods-Sample-RxLibrary.a</string> + <string>Pods-GRPCClient-prefix.pch</string> <key>sourceTree</key> - <string>BUILT_PRODUCTS_DIR</string> + <string><group></string> </dict> - <key>EF8B807C5A2059D6C709450D</key> + <key>EE695A82B047142EA781152E</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -2713,66 +4302,113 @@ <string>PBXFileReference</string> <key>lastKnownFileType</key> <string>sourcecode.c.h</string> + <key>name</key> + <string>GRPCMethodName+HTTP2Encoding.h</string> <key>path</key> - <string>Pods-SampleTests-environment.h</string> + <string>private/GRPCMethodName+HTTP2Encoding.h</string> <key>sourceTree</key> <string><group></string> </dict> - <key>F2BB78774BCEFD5DDDF38239</key> + <key>EE85C49640E6202C2A33CDF6</key> <dict> - <key>children</key> + <key>baseConfigurationReference</key> + <string>048EFCCABBC3F25828644716</string> + <key>buildSettings</key> + <dict> + <key>ALWAYS_SEARCH_USER_PATHS</key> + <string>NO</string> + <key>COPY_PHASE_STRIP</key> + <string>NO</string> + <key>DSTROOT</key> + <string>/tmp/xcodeproj.dst</string> + <key>GCC_DYNAMIC_NO_PIC</key> + <string>NO</string> + <key>GCC_OPTIMIZATION_LEVEL</key> + <string>0</string> + <key>GCC_PRECOMPILE_PREFIX_HEADER</key> + <string>YES</string> + <key>GCC_PREPROCESSOR_DEFINITIONS</key> + <array> + <string>DEBUG=1</string> + <string>$(inherited)</string> + </array> + <key>GCC_SYMBOLS_PRIVATE_EXTERN</key> + <string>NO</string> + <key>INSTALL_PATH</key> + <string>$(BUILT_PRODUCTS_DIR)</string> + <key>IPHONEOS_DEPLOYMENT_TARGET</key> + <string>8.0</string> + <key>OTHER_LDFLAGS</key> + <string></string> + <key>OTHER_LIBTOOLFLAGS</key> + <string></string> + <key>PRODUCT_NAME</key> + <string>$(TARGET_NAME)</string> + <key>PUBLIC_HEADERS_FOLDER_PATH</key> + <string>$(TARGET_NAME)</string> + <key>SDKROOT</key> + <string>iphoneos</string> + <key>SKIP_INSTALL</key> + <string>YES</string> + </dict> + <key>isa</key> + <string>XCBuildConfiguration</string> + <key>name</key> + <string>Debug</string> + </dict> + <key>EF97D57CA44A79151103F06B</key> + <dict> + <key>isa</key> + <string>PBXTargetDependency</string> + <key>name</key> + <string>Pods-SampleTests-RxLibrary</string> + <key>target</key> + <string>474A50F85C06F74769FAD474</string> + <key>targetProxy</key> + <string>FE333C59E3BD0F9986105E29</string> + </dict> + <key>F058968A71750BBCF4F4FB1C</key> + <dict> + <key>buildActionMask</key> + <string>2147483647</string> + <key>files</key> <array> - <string>69E8FF71552D08D72B9068F1</string> - <string>7A8627E1649F66DEE014EB46</string> - <string>0D09CEB9308FA5BACEB5F84C</string> + <string>03289193476D7E6EE456FAA8</string> </array> <key>isa</key> - <string>PBXGroup</string> - <key>name</key> - <string>Targets Support Files</string> - <key>sourceTree</key> - <string><group></string> + <string>PBXSourcesBuildPhase</string> + <key>runOnlyForDeploymentPostprocessing</key> + <string>0</string> </dict> - <key>F2C6AACFE46FFA8DC383DE43</key> + <key>F156B1B8573809A342E0AE1F</key> <dict> <key>fileRef</key> - <string>0D53085043D992DC00E29F0A</string> + <string>CEA794A7056AFAB8256CC44D</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>F6383D21195A5BEFC51F6618</key> + <key>F2B5B896D8C7E13B5E8ADA28</key> <dict> <key>fileRef</key> - <string>BDA58E5E1AE450540A2B0227</string> + <string>E0CF2237012441B69E760029</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>F6C59E5B4CFE053E9F98000E</key> + <key>F37E3DFDFA20082CBC4E2257</key> <dict> - <key>buildConfigurationList</key> - <string>17F4C2F25813E7A4588FF233</string> - <key>buildPhases</key> - <array> - <string>BFE770FF3C0847AB995A82CA</string> - <string>1146D04C598DEBA045C96C2F</string> - <string>9E8DC61269B141639DA7F859</string> - </array> - <key>buildRules</key> - <array/> - <key>dependencies</key> - <array/> + <key>fileRef</key> + <string>6BBDA0AD2955451BBF881052</string> <key>isa</key> - <string>PBXNativeTarget</string> - <key>name</key> - <string>Pods-Sample-RxLibrary</string> - <key>productName</key> - <string>Pods-Sample-RxLibrary</string> - <key>productReference</key> - <string>EF2EE4BC906FF9909348DAB5</string> - <key>productType</key> - <string>com.apple.product-type.library.static</string> + <string>PBXBuildFile</string> </dict> - <key>F763F3DF1B47888E75D0ED9C</key> + <key>F4586BA420EA562FECC43A3A</key> + <dict> + <key>fileRef</key> + <string>A7CE4BCE7B6959BCDC54B854</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>F541961867C9493F07D54B8E</key> <dict> <key>includeInIndex</key> <string>1</string> @@ -2780,109 +4416,167 @@ <string>PBXFileReference</string> <key>lastKnownFileType</key> <string>sourcecode.c.objc</string> + <key>name</key> + <string>GRPCDelegateWrapper.m</string> <key>path</key> - <string>GRXWriter+Transformations.m</string> + <string>private/GRPCDelegateWrapper.m</string> <key>sourceTree</key> <string><group></string> </dict> - <key>F779618174957BE31FCCDE56</key> + <key>F636FFBF62AFF197BE3CB427</key> <dict> - <key>buildActionMask</key> - <string>2147483647</string> - <key>files</key> + <key>fileRef</key> + <string>34373F1941450D17C3F85B57</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>F6A0AD6C190915DD52886BE2</key> + <dict> + <key>buildConfigurations</key> <array> - <string>2B49DCA723ECBC0F2777B960</string> - <string>22531AF83592134D3879C3E1</string> - <string>0C57EED724EBF58759F9F6DF</string> - <string>8CD061F02F905957F4C1D188</string> - <string>458FF1EEF4EB9646C699F3DD</string> - <string>2B341576464148A01DCFB28B</string> - <string>36FF37EAC7E918C4CD867776</string> - <string>594F98D43B96AB5C11E61C10</string> - <string>B78477CA74AEFC96C25B49B4</string> - <string>9CCBE9A628C305B3B089B8DD</string> - <string>801BBA7A538CFAE6746966A7</string> + <string>EE85C49640E6202C2A33CDF6</string> + <string>ED9460BEAAB47A2752887CE9</string> </array> - <key>isa</key> - <string>PBXSourcesBuildPhase</string> - <key>runOnlyForDeploymentPostprocessing</key> + <key>defaultConfigurationIsVisible</key> <string>0</string> + <key>defaultConfigurationName</key> + <string>Release</string> + <key>isa</key> + <string>XCConfigurationList</string> </dict> - <key>F8B4778EF3030EEC2E9927CE</key> + <key>F6B6558E339AD89F764A6D88</key> <dict> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXTargetDependency</string> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.xcconfig</string> <key>name</key> - <string>Pods-SampleTests-RxLibrary</string> - <key>target</key> - <string>3800855A656C8D0813062074</string> - <key>targetProxy</key> - <string>7DA2A517A18D85B390FB122A</string> + <string>Pods-Sample-RxLibrary.xcconfig</string> + <key>path</key> + <string>../Pods-Sample-RxLibrary/Pods-Sample-RxLibrary.xcconfig</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>FBF79DDF04ADEAED54BA2286</key> + <key>F776B445ABD393C908B02302</key> <dict> - <key>attributes</key> - <dict> - <key>LastUpgradeCheck</key> - <string>0510</string> - </dict> - <key>buildConfigurationList</key> - <string>3749A34D3DFA6E2F3539E546</string> - <key>compatibilityVersion</key> - <string>Xcode 3.2</string> - <key>developmentRegion</key> - <string>English</string> - <key>hasScannedForEncodings</key> - <string>0</string> + <key>includeInIndex</key> + <string>1</string> <key>isa</key> - <string>PBXProject</string> - <key>knownRegions</key> - <array> - <string>en</string> - </array> - <key>mainGroup</key> - <string>397A12919FB4BDD608FE207C</string> - <key>productRefGroup</key> - <string>8B05D39455D5B23720961FA4</string> - <key>projectDirPath</key> - <string></string> - <key>projectReferences</key> - <array/> - <key>projectRoot</key> - <string></string> - <key>targets</key> - <array> - <string>26E6ACBF137DBC325B4E7DA7</string> - <string>6BFD156F312F6CAA1E5B00CA</string> - <string>0239F1B46D24E21A8042F47F</string> - <string>F6C59E5B4CFE053E9F98000E</string> - <string>14D92BB2ED12213381BD2EB9</string> - <string>3800855A656C8D0813062074</string> - </array> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.h</string> + <key>path</key> + <string>GRXWriter+Transformations.h</string> + <key>sourceTree</key> + <string><group></string> </dict> - <key>FC1BEDED07CA4D91AFEB56BD</key> + <key>F84427B4C72738E045D44E6C</key> <dict> <key>fileRef</key> - <string>57AC9BF19B9635D7476CA5FA</string> + <string>E0CF2237012441B69E760029</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>FDC6B84EAC9989F0827EA4F3</key> + <key>F911880EC1D908050569F8AF</key> <dict> <key>fileRef</key> - <string>0260773D27B4AE159FB0B22D</string> + <string>3E850442224A3D7C7540C6C5</string> <key>isa</key> <string>PBXBuildFile</string> </dict> - <key>FDC939796E70DC7D141E29FC</key> + <key>FA5E9BC13067F1E32D6311E6</key> <dict> <key>fileRef</key> - <string>DB0257E62EC33F3F316EF017</string> + <string>FB880554D85130C733402058</string> <key>isa</key> <string>PBXBuildFile</string> </dict> + <key>FB880554D85130C733402058</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>sourcecode.c.objc</string> + <key>name</key> + <string>GRPCChannel.m</string> + <key>path</key> + <string>private/GRPCChannel.m</string> + <key>sourceTree</key> + <string><group></string> + </dict> + <key>FBC9D2D66DA1B0B501961B55</key> + <dict> + <key>containerPortal</key> + <string>E61F9CBEB0CA9A172C4AA56B</string> + <key>isa</key> + <string>PBXContainerItemProxy</string> + <key>proxyType</key> + <string>1</string> + <key>remoteGlobalIDString</key> + <string>474A50F85C06F74769FAD474</string> + <key>remoteInfo</key> + <string>Pods-SampleTests-RxLibrary</string> + </dict> + <key>FD9953A9B079B03396B2FEA3</key> + <dict> + <key>fileRef</key> + <string>F541961867C9493F07D54B8E</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>FE333C59E3BD0F9986105E29</key> + <dict> + <key>containerPortal</key> + <string>E61F9CBEB0CA9A172C4AA56B</string> + <key>isa</key> + <string>PBXContainerItemProxy</string> + <key>proxyType</key> + <string>1</string> + <key>remoteGlobalIDString</key> + <string>474A50F85C06F74769FAD474</string> + <key>remoteInfo</key> + <string>Pods-SampleTests-RxLibrary</string> + </dict> + <key>FF34F6701990B0955422EC9C</key> + <dict> + <key>buildConfigurations</key> + <array> + <string>EBB8787CD50E6221A0ABA3AE</string> + <string>0041F7F38D0B99E977EC7A9B</string> + </array> + <key>defaultConfigurationIsVisible</key> + <string>0</string> + <key>defaultConfigurationName</key> + <string>Release</string> + <key>isa</key> + <string>XCConfigurationList</string> + </dict> + <key>FF378D56A81AE6EFC739CDE6</key> + <dict> + <key>fileRef</key> + <string>617AA57F150724B1881EC92E</string> + <key>isa</key> + <string>PBXBuildFile</string> + </dict> + <key>FFC668E9994CC6407B338F9D</key> + <dict> + <key>includeInIndex</key> + <string>1</string> + <key>isa</key> + <string>PBXFileReference</string> + <key>lastKnownFileType</key> + <string>text.plist.xml</string> + <key>path</key> + <string>Pods-acknowledgements.plist</string> + <key>sourceTree</key> + <string><group></string> + </dict> </dict> <key>rootObject</key> - <string>FBF79DDF04ADEAED54BA2286</string> + <string>E61F9CBEB0CA9A172C4AA56B</string> </dict> </plist> diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient-Private.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient-Private.xcconfig new file mode 100644 index 0000000000..27df354315 --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient-Private.xcconfig @@ -0,0 +1,5 @@ +#include "Pods-GRPCClient.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Build" "${PODS_ROOT}/Headers/Build/GRPCClient" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_LDFLAGS = -ObjC +PODS_ROOT = ${SRCROOT}
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient-dummy.m b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient-dummy.m new file mode 100644 index 0000000000..8cac89bb84 --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_Pods_GRPCClient : NSObject +@end +@implementation PodsDummy_Pods_GRPCClient +@end diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient-prefix.pch b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient-prefix.pch new file mode 100644 index 0000000000..95cf11d9fb --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + +#import "Pods-environment.h" diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient.xcconfig new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-GRPCClient/Pods-GRPCClient.xcconfig diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-RxLibrary/Pods-RxLibrary-Private.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-RxLibrary/Pods-RxLibrary-Private.xcconfig index 5c1a7097be..a1c3897b81 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-RxLibrary/Pods-RxLibrary-Private.xcconfig +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-RxLibrary/Pods-RxLibrary-Private.xcconfig @@ -1,5 +1,5 @@ #include "Pods-RxLibrary.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Build" "${PODS_ROOT}/Headers/Build/RxLibrary" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RxLibrary" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Build" "${PODS_ROOT}/Headers/Build/RxLibrary" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" OTHER_LDFLAGS = -ObjC PODS_ROOT = ${SRCROOT}
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-Private.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-Private.xcconfig new file mode 100644 index 0000000000..e23f7be66f --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-Private.xcconfig @@ -0,0 +1,5 @@ +#include "Pods-Sample-GRPCClient.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Build" "${PODS_ROOT}/Headers/Build/GRPCClient" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_LDFLAGS = -ObjC +PODS_ROOT = ${SRCROOT}
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-dummy.m b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-dummy.m new file mode 100644 index 0000000000..2bf2682a72 --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_Pods_Sample_GRPCClient : NSObject +@end +@implementation PodsDummy_Pods_Sample_GRPCClient +@end diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-prefix.pch b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-prefix.pch new file mode 100644 index 0000000000..0e807f67a3 --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + +#import "Pods-Sample-environment.h" diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient.xcconfig new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-GRPCClient/Pods-Sample-GRPCClient.xcconfig diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-Private.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-Private.xcconfig index 2cc81f729d..023a22eb14 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-Private.xcconfig +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample-RxLibrary/Pods-Sample-RxLibrary-Private.xcconfig @@ -1,5 +1,5 @@ #include "Pods-Sample-RxLibrary.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Build" "${PODS_ROOT}/Headers/Build/RxLibrary" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RxLibrary" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Build" "${PODS_ROOT}/Headers/Build/RxLibrary" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" OTHER_LDFLAGS = -ObjC PODS_ROOT = ${SRCROOT}
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample-environment.h b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample-environment.h index b4fd16b369..d0acfc70ec 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample-environment.h +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample-environment.h @@ -6,6 +6,12 @@ // project. +// GRPCClient +#define COCOAPODS_POD_AVAILABLE_GRPCClient +#define COCOAPODS_VERSION_MAJOR_GRPCClient 0 +#define COCOAPODS_VERSION_MINOR_GRPCClient 0 +#define COCOAPODS_VERSION_PATCH_GRPCClient 1 + // RxLibrary #define COCOAPODS_POD_AVAILABLE_RxLibrary #define COCOAPODS_VERSION_MAJOR_RxLibrary 0 diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample.debug.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample.debug.xcconfig index 776727154c..06aa64cfac 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample.debug.xcconfig +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample.debug.xcconfig @@ -1,6 +1,6 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_LDFLAGS = -ObjC -l"Pods-Sample-RxLibrary" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/GRPCClient" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_LDFLAGS = -ObjC -l"Pods-Sample-GRPCClient" -l"Pods-Sample-RxLibrary" OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) PODS_ROOT = ${SRCROOT}/Pods
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample.release.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample.release.xcconfig index 776727154c..06aa64cfac 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample.release.xcconfig +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-Sample/Pods-Sample.release.xcconfig @@ -1,6 +1,6 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_LDFLAGS = -ObjC -l"Pods-Sample-RxLibrary" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/GRPCClient" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_LDFLAGS = -ObjC -l"Pods-Sample-GRPCClient" -l"Pods-Sample-RxLibrary" OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) PODS_ROOT = ${SRCROOT}/Pods
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-Private.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-Private.xcconfig new file mode 100644 index 0000000000..01e25c4a88 --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-Private.xcconfig @@ -0,0 +1,5 @@ +#include "Pods-SampleTests-GRPCClient.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Build" "${PODS_ROOT}/Headers/Build/GRPCClient" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_LDFLAGS = -ObjC +PODS_ROOT = ${SRCROOT}
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-dummy.m b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-dummy.m new file mode 100644 index 0000000000..7ecd57a34b --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-dummy.m @@ -0,0 +1,5 @@ +#import <Foundation/Foundation.h> +@interface PodsDummy_Pods_SampleTests_GRPCClient : NSObject +@end +@implementation PodsDummy_Pods_SampleTests_GRPCClient +@end diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-prefix.pch b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-prefix.pch new file mode 100644 index 0000000000..abd5651587 --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import <UIKit/UIKit.h> +#endif + +#import "Pods-SampleTests-environment.h" diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient.xcconfig new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-GRPCClient/Pods-SampleTests-GRPCClient.xcconfig diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-Private.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-Private.xcconfig index a3cd792434..67069bae5d 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-Private.xcconfig +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests-RxLibrary/Pods-SampleTests-RxLibrary-Private.xcconfig @@ -1,5 +1,5 @@ #include "Pods-SampleTests-RxLibrary.xcconfig" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Build" "${PODS_ROOT}/Headers/Build/RxLibrary" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RxLibrary" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Build" "${PODS_ROOT}/Headers/Build/RxLibrary" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" OTHER_LDFLAGS = -ObjC PODS_ROOT = ${SRCROOT}
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests-environment.h b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests-environment.h index b4fd16b369..d0acfc70ec 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests-environment.h +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests-environment.h @@ -6,6 +6,12 @@ // project. +// GRPCClient +#define COCOAPODS_POD_AVAILABLE_GRPCClient +#define COCOAPODS_VERSION_MAJOR_GRPCClient 0 +#define COCOAPODS_VERSION_MINOR_GRPCClient 0 +#define COCOAPODS_VERSION_PATCH_GRPCClient 1 + // RxLibrary #define COCOAPODS_POD_AVAILABLE_RxLibrary #define COCOAPODS_VERSION_MAJOR_RxLibrary 0 diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests.debug.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests.debug.xcconfig index 92a3b7d2bd..892541c53e 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests.debug.xcconfig +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests.debug.xcconfig @@ -1,6 +1,6 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_LDFLAGS = -ObjC -l"Pods-SampleTests-RxLibrary" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/GRPCClient" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_LDFLAGS = -ObjC -l"Pods-SampleTests-GRPCClient" -l"Pods-SampleTests-RxLibrary" OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) PODS_ROOT = ${SRCROOT}/Pods
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests.release.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests.release.xcconfig index 92a3b7d2bd..892541c53e 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests.release.xcconfig +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods-SampleTests/Pods-SampleTests.release.xcconfig @@ -1,6 +1,6 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_LDFLAGS = -ObjC -l"Pods-SampleTests-RxLibrary" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/GRPCClient" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_LDFLAGS = -ObjC -l"Pods-SampleTests-GRPCClient" -l"Pods-SampleTests-RxLibrary" OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) PODS_ROOT = ${SRCROOT}/Pods
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods-environment.h b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods-environment.h index b4fd16b369..d0acfc70ec 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods-environment.h +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods-environment.h @@ -6,6 +6,12 @@ // project. +// GRPCClient +#define COCOAPODS_POD_AVAILABLE_GRPCClient +#define COCOAPODS_VERSION_MAJOR_GRPCClient 0 +#define COCOAPODS_VERSION_MINOR_GRPCClient 0 +#define COCOAPODS_VERSION_PATCH_GRPCClient 1 + // RxLibrary #define COCOAPODS_POD_AVAILABLE_RxLibrary #define COCOAPODS_VERSION_MAJOR_RxLibrary 0 diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods.debug.xcconfig index 3c7fe4aa00..e9fafccb07 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods.debug.xcconfig +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods.debug.xcconfig @@ -1,6 +1,6 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_LDFLAGS = -ObjC -l"Pods-RxLibrary" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/GRPCClient" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_LDFLAGS = -ObjC -l"Pods-GRPCClient" -l"Pods-RxLibrary" OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) PODS_ROOT = ${SRCROOT}/Pods
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods.release.xcconfig b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods.release.xcconfig index 3c7fe4aa00..e9fafccb07 100644 --- a/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods.release.xcconfig +++ b/src/objective-c/examples/Sample/Pods/Target Support Files/Pods/Pods.release.xcconfig @@ -1,6 +1,6 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" -OTHER_LDFLAGS = -ObjC -l"Pods-RxLibrary" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GRPCClient" "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/GRPCClient" -isystem "${PODS_ROOT}/Headers/Public/RxLibrary" +OTHER_LDFLAGS = -ObjC -l"Pods-GRPCClient" -l"Pods-RxLibrary" OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) PODS_ROOT = ${SRCROOT}/Pods
\ No newline at end of file diff --git a/src/objective-c/examples/Sample/Sample/ViewController.m b/src/objective-c/examples/Sample/Sample/ViewController.m index 70b5d45811..f24d81888b 100644 --- a/src/objective-c/examples/Sample/Sample/ViewController.m +++ b/src/objective-c/examples/Sample/Sample/ViewController.m @@ -32,6 +32,10 @@ */ #import "ViewController.h" +#import <GRPCClient/GRPCCall.h> +#import <GRPCClient/GRPCMethodName.h> +#import <RxLibrary/GRXWriter+Immediate.h> +#import <RxLibrary/GRXWriteable.h> @interface ViewController () @@ -42,6 +46,20 @@ - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. + + GRPCMethodName *method = [[GRPCMethodName alloc] initWithPackage:@"grpc.testing" + interface:@"TestService" + method:@"EmptyCall"]; + + GRPCCall *call = [[GRPCCall alloc] initWithHost:@"localhost" + method:method + requestsWriter:[GRXWriter writerWithValue:[NSData data]]]; + + [call startWithWriteable:[[GRXWriteable alloc] initWithValueHandler:^(NSData *value) { + NSLog(@"Received response: %@", value); + } completionHandler:^(NSError *errorOrNil) { + NSLog(@"Finished with error: %@", errorOrNil); + }]]; } - (void)didReceiveMemoryWarning { diff --git a/src/python/src/grpc/framework/assembly/implementations.py b/src/python/src/grpc/framework/assembly/implementations.py index 461aa9c855..b9d314844c 100644 --- a/src/python/src/grpc/framework/assembly/implementations.py +++ b/src/python/src/grpc/framework/assembly/implementations.py @@ -195,7 +195,7 @@ def _servicer(implementations, pool): event_stream_in_stream_out_methods=event_stream_in_stream_out_methods) -class _ServiceAssembly(activated.Activated): +class _ServiceAssembly(interfaces.Server): def __init__(self, implementations, fore_link): self._implementations = implementations @@ -237,6 +237,10 @@ class _ServiceAssembly(activated.Activated): def stop(self): self._stop() + def port(self): + with self._lock: + return self._fore_link.port() + def assemble_face_stub(activated_rear_link): """Assembles a face_interfaces.Stub. @@ -300,6 +304,6 @@ def assemble_service(implementations, activated_fore_link): when passed to this method. Returns: - An activated.Activated value encapsulating RPC service. + An interfaces.Server encapsulating RPC service. """ return _ServiceAssembly(implementations, activated_fore_link) diff --git a/src/python/src/grpc/framework/assembly/interfaces.py b/src/python/src/grpc/framework/assembly/interfaces.py index e5d750b2bc..d1a6aad29e 100644 --- a/src/python/src/grpc/framework/assembly/interfaces.py +++ b/src/python/src/grpc/framework/assembly/interfaces.py @@ -37,6 +37,7 @@ import abc # module. from grpc.framework.common import cardinality # pylint: disable=unused-import from grpc.framework.common import style # pylint: disable=unused-import +from grpc.framework.foundation import activated from grpc.framework.foundation import stream # pylint: disable=unused-import @@ -89,3 +90,25 @@ class MethodImplementation(object): style.Service.EVENT. """ __metaclass__ = abc.ABCMeta + + +class Server(activated.Activated): + """The server interface. + + Aside from being able to be activated and deactivated, objects of this type + are able to report the port on which they are servicing RPCs. + """ + __metaclass__ = abc.ABCMeta + + # TODO(issue 726): This is an abstraction violation; not every Server is + # necessarily serving over a network at all. + @abc.abstractmethod + def port(self): + """Identifies the port on which this Server is servicing RPCs. + + This method may only be called while the server is active. + + Returns: + The number of the port on which this Server is servicing RPCs. + """ + raise NotImplementedError() diff --git a/src/ruby/bin/interop/interop_client.rb b/src/ruby/bin/interop/interop_client.rb index 50a14e3a96..76402b7c89 100755 --- a/src/ruby/bin/interop/interop_client.rb +++ b/src/ruby/bin/interop/interop_client.rb @@ -56,7 +56,7 @@ require 'test/cpp/interop/empty' require 'signet/ssl_config' -include Google::RPC::Auth +include GRPC::Auth # loads the certificates used to access the test server securely. def load_test_certs |