mirror of https://github.com/grpc/grpc.git
commit
3abd27e531
1550 changed files with 70724 additions and 38776 deletions
@ -1,32 +1,66 @@ |
||||
git: |
||||
depth: 1 |
||||
language: objective-c |
||||
osx_image: xcode7.2 |
||||
osx_image: xcode7.3 |
||||
env: |
||||
global: |
||||
- CONFIG=opt |
||||
- TEST=objc |
||||
- JOBS=1 |
||||
matrix: |
||||
- SCHEME="RxLibraryUnitTests" WORKSPACE="Tests.xcworkspace" |
||||
TEST_PATH="src/objective-c/tests" BUILD_ONLY="false" |
||||
INTEROP_SERVER="false" |
||||
- SCHEME="InteropTestsLocalSSL" WORKSPACE="Tests.xcworkspace" |
||||
TEST_PATH="src/objective-c/tests" BUILD_ONLY="false" INTEROP_SERVER="true" |
||||
- SCHEME="InteropTestsLocalCleartext" WORKSPACE="Tests.xcworkspace" |
||||
TEST_PATH="src/objective-c/tests" BUILD_ONLY="false" |
||||
INTEROP_SERVER="true" |
||||
# TODO(jcanizales): Make tests an app project (instead of library), so the following will work. |
||||
# - SCHEME="InteropTestsRemote" WORKSPACE="Tests.xcworkspace" |
||||
# TEST_PATH="src/objective-c/tests" BUILD_ONLY="false" |
||||
# INTEROP_SERVER="true" |
||||
- SCHEME="HelloWorld" WORKSPACE="HelloWorld.xcworkspace" |
||||
TEST_PATH="examples/objective-c/helloworld" BUILD_ONLY="true" |
||||
INTEROP_SERVER="false" |
||||
- SCHEME="RouteGuideClient" WORKSPACE="RouteGuideClient.xcworkspace" |
||||
TEST_PATH="examples/objective-c/route_guide" BUILD_ONLY="true" |
||||
INTEROP_SERVER="false" |
||||
- SCHEME="AuthSample" WORKSPACE="AuthSample.xcworkspace" |
||||
TEST_PATH="examples/objective-c/auth_sample" BUILD_ONLY="true" |
||||
INTEROP_SERVER="false" |
||||
- SCHEME="Sample" WORKSPACE="Sample.xcworkspace" |
||||
TEST_PATH="src/objective-c/examples/Sample" BUILD_ONLY="true" |
||||
INTEROP_SERVER="false" |
||||
- SCHEME="SwiftSample" WORKSPACE="SwiftSample.xcworkspace" |
||||
TEST_PATH="src/objective-c/examples/SwiftSample" BUILD_ONLY="true" |
||||
INTEROP_SERVER="false" |
||||
before_install: |
||||
# Until Travis upgrades from Cocoapods 0.39, we need to do it here. |
||||
- pod --version |
||||
- gem uninstall cocoapods -a |
||||
- gem install cocoapods -v '1.0.1' |
||||
- pod --version |
||||
# Recent pods aren't found if we don't explicitly update Cocoapods' repo. |
||||
- pod repo update |
||||
- brew install gflags |
||||
# Pod install does this too, but we don't want the output. |
||||
- pod repo update --silent |
||||
install: |
||||
- make grpc_objective_c_plugin |
||||
- pushd src/objective-c/tests |
||||
# Needs to be verbose, or otherwise OpenSSL's prepare_command makes Travis |
||||
# time out: |
||||
- pod install --verbose |
||||
- pushd $TEST_PATH |
||||
- pod install |
||||
- popd |
||||
before_script: |
||||
- make interop_server |
||||
- bins/$CONFIG/interop_server --port=5050 & |
||||
- bins/$CONFIG/interop_server --port=5051 --use_tls & |
||||
xcode_workspace: src/objective-c/tests/Tests.xcworkspace |
||||
xcode_scheme: |
||||
- RxLibraryUnitTests |
||||
- InteropTestsLocalSSL |
||||
- InteropTestsLocalCleartext |
||||
# TODO(jcanizales): Investigate why they time out: |
||||
# - InteropTestsRemote |
||||
xcode_sdk: iphonesimulator9.2 |
||||
- if [ "${INTEROP_SERVER}" = "true" ]; then |
||||
make interop_server; |
||||
(bins/$CONFIG/interop_server --port=5050 &); |
||||
(bins/$CONFIG/interop_server --port=5051 --use_tls &); |
||||
fi |
||||
script: |
||||
- if [ "${BUILD_ONLY}" = "true" ]; then |
||||
xctool -workspace "$TEST_PATH/$WORKSPACE" -scheme "$SCHEME" |
||||
-sdk iphonesimulator9.3 build; |
||||
else |
||||
xctool -workspace "$TEST_PATH/$WORKSPACE" -scheme "$SCHEME" |
||||
-sdk iphonesimulator9.3 test; |
||||
fi |
||||
notifications: |
||||
email: false |
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,77 @@ |
||||
# gRPC command line tool |
||||
|
||||
## Overview |
||||
|
||||
This document describes the command line tool that comes with gRPC repository. It is desireable to have command line |
||||
tools written in other languages to roughly follow the same syntax and flags. |
||||
|
||||
At this point, the tool needs to be built from source, and it should be moved out to grpc-tools repository as a stand |
||||
alone application once it is mature enough. |
||||
|
||||
## Core functionality |
||||
|
||||
The command line tool can do the following things: |
||||
|
||||
- Send unary rpc. |
||||
- Attach metadata and display received metadata. |
||||
- Handle common authentication to server. |
||||
- Find the request/response types from a given proto file. |
||||
- Read proto request in text form. |
||||
- Read request in wire form (for protobuf messages, this means serialized binary form). |
||||
- Display proto response in text form. |
||||
- Write response in wire form to a file. |
||||
|
||||
The command line tool should support the following things: |
||||
|
||||
- List server services and methods through server reflection. |
||||
- Infer request/response types from server reflection result. |
||||
- Fine-grained auth control (such as, use this oauth token to talk to the server). |
||||
- Send streaming rpc. |
||||
|
||||
## Code location |
||||
|
||||
To use the tool, you need to get the grpc repository and in the grpc directory execute |
||||
|
||||
``` |
||||
$ make grpc_cli |
||||
``` |
||||
|
||||
The main file can be found at |
||||
https://github.com/grpc/grpc/blob/master/test/cpp/util/grpc_cli.cc |
||||
|
||||
## Usage |
||||
|
||||
### Basic usage |
||||
|
||||
Send a rpc to a helloworld server at `localhost:50051`: |
||||
|
||||
``` |
||||
$ bins/opt/grpc_cli call localhost:50051 SayHello examples/protos/helloworld.proto \ |
||||
"name: 'world'" --enable_ssl=false |
||||
``` |
||||
|
||||
On success, the tool will print out |
||||
|
||||
``` |
||||
Rpc succeeded with OK status |
||||
Response: |
||||
message: "Hello world" |
||||
``` |
||||
|
||||
The `localhost:50051` part indicates the server you are connecting to. `SayHello` is (part of) the |
||||
gRPC method string. Then there is the path to the proto file containing the service definition, |
||||
if it is not under current directory, you can use `--proto_path` to specify a new search root. |
||||
`"name: 'world'"` is the text format of the request proto message. |
||||
We are not using ssl here by `--enable_ssl=false`. For information on more |
||||
flags, look at the comments of `grpc_cli.cc`. |
||||
|
||||
### Send non-proto rpc |
||||
|
||||
For using gRPC with protocols other than probobuf, you will need the exact method name string |
||||
and a file containing the raw bytes to be sent on the wire |
||||
|
||||
``` |
||||
$ bins/opt/grpc_cli call localhost:50051 /helloworld.Greeter/SayHello --input_binary_file=input.bin \ |
||||
--output_binary_file=output.bin |
||||
``` |
||||
On success, you will need to read or decode the response from the `output.bin` file. |
@ -0,0 +1,118 @@ |
||||
## **gRPC Compression** |
||||
|
||||
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", |
||||
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be |
||||
interpreted as described in [RFC 2119](http://www.ietf.org/rfc/rfc2119.txt). |
||||
|
||||
### Intent |
||||
|
||||
Compression is used to reduce the amount of bandwidth used between peers. The |
||||
compression supported by gRPC acts _at the individual message level_, taking |
||||
_message_ [as defined in the wire format |
||||
document](PROTOCOL-HTTP2.md). |
||||
|
||||
The implementation supports different compression algorithms. A _default |
||||
compression level_, to be used in the absence of message-specific settings, MAY |
||||
be specified for during channel creation. |
||||
|
||||
The ability to control compression settings per call and to enable/disable |
||||
compression on a per message basis MAY be used to prevent CRIME/BEAST attacks. |
||||
It also allows for asymmetric compression communication, whereby a response MAY |
||||
be compressed differently, if at all. |
||||
|
||||
### Specification |
||||
|
||||
Compression MAY be configured by the Client Application by calling the |
||||
appropriate API method. There are two scenarios where compression MAY be |
||||
configured: |
||||
|
||||
+ At channel creation time, which sets the channel default compression and |
||||
therefore the compression that SHALL be used in the absence of per-RPC |
||||
compression configuration. |
||||
+ At response time, via: |
||||
+ For unary RPCs, the {Client,Server}Context instance. |
||||
+ For streaming RPCs, the {Client,Server}Writer instance. In this case, |
||||
configuration is reduced to disabling compression altogether. |
||||
|
||||
### Compression Method Asymmetry Between Peers |
||||
|
||||
A gRPC peer MAY choose to respond using a different compression method to that |
||||
of the request, including not performing any compression, regardless of channel |
||||
and RPC settings (for example, if compression would result in small or negative |
||||
gains). |
||||
|
||||
When a message from a client compressed with an unsupported algorithm is |
||||
processed by a server, it WILL result in an `UNIMPLEMENTED` error status on the |
||||
server. The server will then include in its response a `grpc-accept-encoding` |
||||
header specifying the algorithms it does accept. If an `UNIMPLEMENTED` error |
||||
status is returned from the server despite having used one of the algorithms |
||||
from the `grpc-accept-encoding` header, the cause MUST NOT be related to |
||||
compression. Data sent from a server compressed with an algorithm not supported |
||||
by the client WILL result in an `INTERNAL` error status on the client side. |
||||
|
||||
Note that a peer MAY choose to not disclose all the encodings it supports. |
||||
However, if it receives a message compressed in an undisclosed but supported |
||||
encoding, it MUST include said encoding in the response's `grpc-accept-encoding |
||||
h`eader. |
||||
|
||||
For every message a server is requested to compress using an algorithm it knows |
||||
the client doesn't support (as indicated by the last `grpc-accept-encoding` |
||||
header received from the client), it SHALL send the message uncompressed. |
||||
|
||||
### Specific Disabling of Compression |
||||
|
||||
If the user (through the previously described mechanisms) requests to disable |
||||
compression the next message MUST be sent uncompressed. This is instrumental in |
||||
preventing BEAST/CRIME attacks. This applies to both the the unary and streaming |
||||
cases. |
||||
|
||||
### Compression Levels and Algorithms |
||||
|
||||
The set of supported algorithm is implementation dependent. In order to simplify |
||||
the public API and to operate seamlessly across implementations (both in terms |
||||
of languages but also different version of the same one), we introduce the idea |
||||
of _compression levels_ (such as "low", "medium", "high"). |
||||
|
||||
Levels map to concrete algorithms and/or their settings (such as "low" mapping |
||||
to "gzip -3" and "high" mapping to "gzip -9") automatically depending on what a |
||||
peer is known to support. A server is always aware of what its clients support, |
||||
as clients disclose it in their Message-Accept-Encoding header as part of their |
||||
initial call. A client doesn't a priori (presently) know which algorithms a |
||||
server supports. This issue can be addressed with an initial negotiation of |
||||
capabilities or an automatic retry mechanism. These features will be implemented |
||||
in the future. Currently however, compression levels are only supported at the |
||||
server side, which is aware of the client's capabilities through the incoming |
||||
Message-Accept-Encoding header. |
||||
|
||||
### Propagation to child RPCs |
||||
|
||||
The inheritance of the compression configuration by child RPCs is left up to the |
||||
implementation. Note that in the absence of changes to the parent channel, its |
||||
configuration will be used. |
||||
|
||||
### Test cases |
||||
|
||||
1. When a compression level is not specified for either the channel or the |
||||
message, the default channel level _none_ is considered: data MUST NOT be |
||||
compressed. |
||||
1. When per-RPC compression configuration isn't present for a message, the |
||||
channel compression configuration MUST be used. |
||||
1. When a compression method (including no compression) is specified for an |
||||
outgoing message, the message MUST be compressed accordingly. |
||||
1. A message compressed by a client in a way not supported by its server MUST |
||||
fail with status `UNIMPLEMENTED`, its associated description indicating the |
||||
unsupported condition as well as the supported ones. The returned |
||||
`grpc-accept-encoding` header MUST NOT contain the compression method |
||||
(encoding) used. |
||||
1. A message compressed by a server in a way not supported by its client MUST |
||||
fail with status `INTERNAL`, its associated description indicating the |
||||
unsupported condition as well as the supported ones. The returned |
||||
`grpc-accept-encoding` header MUST NOT contain the compression method |
||||
(encoding) used. |
||||
1. An ill-constructed message with its [Compressed-Flag |
||||
bit](PROTOCOL-HTTP2.md#compressed-flag) |
||||
set but lacking a |
||||
"[grpc-encoding](PROTOCOL-HTTP2.md#message-encoding)" |
||||
entry different from _identity_ in its metadata MUST fail with `INTERNAL` |
||||
status, its associated description indicating the invalid Compressed-Flag |
||||
condition. |
@ -0,0 +1,133 @@ |
||||
# gRPC (Core) Compression Cookbook |
||||
|
||||
## Introduction |
||||
|
||||
This document describes compression as implemented by the gRPC C core. See [the |
||||
full compression specification](compression.md) for details. |
||||
|
||||
### Intended Audience |
||||
|
||||
Wrapped languages developers, for the purposes of supporting compression by |
||||
interacting with the C core. |
||||
|
||||
## Criteria for GA readiness |
||||
|
||||
1. Be able to set compression at [channel](#per-channel-settings), |
||||
[call](#per-call-settings) and [message](#per-message-settings) level. |
||||
In principle this API should be based on _compression levels_ as opposed to |
||||
algorithms. See the discussion [below](#level-vs-algorithms). |
||||
1. Have unit tests covering [the cases from the |
||||
spec](https://github.com/grpc/grpc/blob/master/doc/compression.md#test-cases). |
||||
1. Interop tests implemented and passing on Jenkins. The two relevant interop |
||||
test cases are |
||||
[large_compressed_unary](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#large_compressed_unary) |
||||
and |
||||
[server_compressed_streaming](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#server_compressed_streaming). |
||||
|
||||
## Summary Flowcharts |
||||
|
||||
The following flowcharts depict the evolution of a message, both _incoming_ and |
||||
_outgoing_, irrespective of the client/server character of the call. Aspects |
||||
still not symmetric between clients and servers (e.g. the [use of compression |
||||
levels](https://github.com/grpc/grpc/blob/master/doc/compression.md#compression-levels-and-algorithms)) |
||||
are explicitly marked. The in-detail textual description for the different |
||||
scenarios is described in subsequent sections. |
||||
|
||||
## Incoming Messages |
||||
|
||||
![image](images/compression_cookbook_incoming.png) |
||||
|
||||
## Outgoing Messages |
||||
|
||||
![image](images/compression_cookbook_outgoing.png) |
||||
|
||||
## Levels vs Algorithms |
||||
|
||||
As mentioned in [the relevant discussion on the spec |
||||
document](https://github.com/grpc/grpc/blob/master/doc/compression.md#compression-levels-and-algorithms), |
||||
compression _levels_ are the primary mechanism for compression selection _at the |
||||
server side_. In the future, it'll also be at the client side. The use of levels |
||||
abstracts away the intricacies of selecting a concrete algorithm supported by a |
||||
peer, on top of removing the burden of choice from the developer. |
||||
As of this writing (Q2 2016), clients can only specify compression _algorithms_. |
||||
Clients will support levels as soon as an automatic retry/negotiation mechanism |
||||
is in place. |
||||
|
||||
## Per Channel Settings |
||||
|
||||
Compression may be configured at channel creation. This is a convenience to |
||||
avoid having to repeatedly configure compression for every call. Note that any |
||||
compression setting on individual [calls](#per-call-settings) or |
||||
[messages](#per-message-settings) overrides channel settings. |
||||
|
||||
The following aspects can be configured at channel-creation time via channel arguments: |
||||
|
||||
#### Disable Compression _Algorithms_ |
||||
|
||||
Use the channel argument key |
||||
`GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET` (from |
||||
[`grpc/impl/codegen/compression_types.h`](https://github.com/grpc/grpc/blob/master/include/grpc/impl/codegen/compression_types.h)), |
||||
takes a 32 bit bitset value. A set bit means the algorithm with that enum value |
||||
according to `grpc_compression_algorithm` is _enabled_. |
||||
For example, `GRPC_COMPRESS_GZIP` currently has a numeric value of 2. To |
||||
enable/disable GZIP for a channel, one would set/clear the 3rd LSB (eg, 0b100 = |
||||
0x4). Note that setting/clearing 0th position, that corresponding to |
||||
`GRPC_COMPRESS_NONE`, has no effect, as no-compression (a.k.a. _identity_) is |
||||
always supported. |
||||
Incoming messages compressed (ie, encoded) with a disabled algorithm will result |
||||
in the call being closed with `GRPC_STATUS_UNIMPLEMENTED`. |
||||
|
||||
#### Default Compression _Level_ |
||||
|
||||
**(currently, Q2 2016, only applicable for server side channels. It's ignored |
||||
for clients.)** |
||||
Use the channel argument key `GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL` (from |
||||
[`grpc/impl/codegen/compression_types.h`](https://github.com/grpc/grpc/blob/master/include/grpc/impl/codegen/compression_types.h)), |
||||
valued by an integer corresponding to a value from the `grpc_compression_level` |
||||
enum. |
||||
|
||||
#### Default Compression _Algorithm_ |
||||
|
||||
Use the channel argument key `GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM` (from |
||||
[`grpc/impl/codegen/compression_types.h`](https://github.com/grpc/grpc/blob/master/include/grpc/impl/codegen/compression_types.h)), |
||||
valued by an integer corresponding to a value from the `grpc_compression_level` |
||||
enum. |
||||
|
||||
## Per Call Settings |
||||
|
||||
### Compression **Level** in Call Responses |
||||
|
||||
The server requests a compression level via initial metadata. The |
||||
`send_initial_metadata` `grpc_op` contains a `maybe_compression_level` field |
||||
with two fields, `is_set` and `compression_level`. The former must be set when |
||||
actively choosing a level to disambiguate the default value of zero (no |
||||
compression) from the proactive selection of no compression. |
||||
|
||||
The core will receive the request for the compression level and automatically |
||||
choose a compression algorithm based on its knowledge about the peer |
||||
(communicated by the client via the `grpc-accept-encoding` header. Note that the |
||||
absence of this header means no compression is supported by the client/peer). |
||||
|
||||
### Compression **Algorithm** in Call Responses |
||||
|
||||
**Server should avoid setting the compression algorithm directly**. Prefer |
||||
setting compression levels unless there's a _very_ compelling reason to choose |
||||
specific algorithms (benchmarking, testing). |
||||
|
||||
Selection of concrete compression algorithms is performed by adding a |
||||
`(GRPC_COMPRESS_REQUEST_ALGORITHM_KEY, <algorithm-name>)` key-value pair to the |
||||
initial metadata, where `GRPC_COMPRESS_REQUEST_ALGORITHM_KEY` is defined in |
||||
[`grpc/impl/codegen/compression_types.h`](https://github.com/grpc/grpc/blob/master/include/grpc/impl/codegen/compression_types.h)), |
||||
and `<algorithm-name>` is the human readable name of the algorithm as given in |
||||
[the HTTP2 spec](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md) |
||||
for `Message-Encoding` (e.g. gzip, identity, etc.). See |
||||
[`grpc_compression_algorithm_name`](https://github.com/grpc/grpc/blob/master/src/core/lib/compression/compression.c) |
||||
for the mapping between the `grpc_compression_algorithm` enum values and their |
||||
textual representation. |
||||
|
||||
## Per Message Settings |
||||
|
||||
To disable compression for a specific message, the `flags` field of `grpc_op` |
||||
instances of type `GRPC_OP_SEND_MESSAGE` must have its `GRPC_WRITE_NO_COMPRESS` |
||||
bit set. Refer to |
||||
[`grpc/impl/codegen/compression_types.h`](https://github.com/grpc/grpc/blob/master/include/grpc/impl/codegen/compression_types.h)), |
@ -0,0 +1,91 @@ |
||||
GRPC C++ STYLE GUIDE |
||||
===================== |
||||
|
||||
Background |
||||
---------- |
||||
|
||||
Here we document style rules for C++ usage in the gRPC C++ bindings |
||||
and tests. |
||||
|
||||
General |
||||
------- |
||||
|
||||
- The majority of gRPC's C++ requirements are drawn from the [Google C++ style |
||||
guide] (https://google.github.io/styleguide/cppguide.html) |
||||
- However, gRPC has some additional requirements to maintain |
||||
[portability] (#portability) |
||||
- As in C, layout rules are defined by clang-format, and all code |
||||
should be passed through clang-format. A (docker-based) script to do |
||||
so is included in [tools/distrib/clang\_format\_code.sh] |
||||
(../tools/distrib/clang_format_code.sh). |
||||
|
||||
<a name="portability"></a> |
||||
Portability Restrictions |
||||
------------------- |
||||
|
||||
gRPC supports a large number of compilers, ranging from those that are |
||||
missing many key C++11 features to those that have quite detailed |
||||
analysis. As a result, gRPC compiles with a high level of warnings and |
||||
treat all warnings as errors. gRPC also forbids the use of some common |
||||
C++11 constructs. Here are some guidelines, to be extended as needed: |
||||
- Do not use range-based for. Expressions of the form |
||||
```c |
||||
for (auto& i: vec) { |
||||
// code |
||||
} |
||||
``` |
||||
|
||||
are not allowed and should be replaced with code such as |
||||
```c |
||||
for (auto it = vec.begin; it != vec.end(); it++) { |
||||
auto& i = *it; |
||||
// code |
||||
} |
||||
``` |
||||
|
||||
- Do not use lambda of any kind (no capture, explicit capture, or |
||||
default capture). Other C++ functional features such as |
||||
`std::function` or `std::bind` are allowed |
||||
- Do not use brace-list initializers. |
||||
- Do not compare a pointer to `nullptr` . This is because gcc 4.4 |
||||
does not support `nullptr` directly and gRPC implements a subset of |
||||
its features in [include/grpc++/impl/codegen/config.h] |
||||
(../include/grpc++/impl/codegen/config.h). Instead, pointers should |
||||
be checked for validity using their implicit conversion to `bool`. |
||||
In other words, use `if (p)` rather than `if (p != nullptr)` |
||||
- Do not initialize global/static pointer variables to `nullptr`. Just let |
||||
the compiler implicitly initialize them to `nullptr` (which it will |
||||
definitely do). The reason is that `nullptr` is an actual object in |
||||
our implementation rather than just a constant pointer value, so |
||||
static/global constructors will be called in a potentially |
||||
undesirable sequence. |
||||
- Do not use `final` or `override` as these are not supported by some |
||||
compilers. Instead use `GRPC_FINAL` and `GRPC_OVERRIDE` . These |
||||
compile down to the traditional C++ forms for compilers that support |
||||
them but are just elided if the compiler does not support those features. |
||||
- In the [include] (../../../tree/master/include/grpc++) and [src] |
||||
(../../../tree/master/src/cpp) directory trees, you should also not |
||||
use certain STL objects like `std::mutex`, `std::lock_guard`, |
||||
`std::unique_lock`, `std::nullptr`, `std::thread` . Instead, use |
||||
`grpc::mutex`, `grpc::lock_guard`, etc., which are gRPC |
||||
implementations of the prominent features of these objects that are |
||||
not always available. You can use the `std` versions of those in [test] |
||||
(../../../tree/master/test/cpp) |
||||
- Similarly, in the same directories, do not use `std::chrono` unless |
||||
it is guarded by `#ifndef GRPC_CXX0X_NO_CHRONO` . For platforms that |
||||
lack`std::chrono,` there is a C-language timer called gpr_timespec that can |
||||
be used instead. |
||||
- `std::unique_ptr` must be used with extreme care in any kind of |
||||
collection. For example `vector<std::unique_ptr>` does not work in |
||||
gcc 4.4 if the vector is constructed to its full size at |
||||
initialization but does work if elements are added to the vector |
||||
using functions like `push_back`. `map` and other pair-based |
||||
collections do not work with `unique_ptr` under gcc 4.4. The issue |
||||
is that many of these collection implementations assume a copy |
||||
constructor |
||||
to be available. |
||||
- Don't use `std::this_thread` . Use `gpr_sleep_until` for sleeping a thread. |
||||
- [Some adjacent character combinations cause problems] |
||||
(https://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C). If declaring a |
||||
template against some class relative to the global namespace, |
||||
`<::name` will be non-portable. Separate the `<` from the `:` and use `< ::name`. |
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 120 KiB |
After Width: | Height: | Size: 39 KiB |
@ -0,0 +1,91 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<Scheme |
||||
LastUpgradeVersion = "0730" |
||||
version = "1.3"> |
||||
<BuildAction |
||||
parallelizeBuildables = "YES" |
||||
buildImplicitDependencies = "YES"> |
||||
<BuildActionEntries> |
||||
<BuildActionEntry |
||||
buildForTesting = "YES" |
||||
buildForRunning = "YES" |
||||
buildForProfiling = "YES" |
||||
buildForArchiving = "YES" |
||||
buildForAnalyzing = "YES"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "63E1E97B1B28CB2000EF0978" |
||||
BuildableName = "AuthSample.app" |
||||
BlueprintName = "AuthSample" |
||||
ReferencedContainer = "container:AuthSample.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildActionEntry> |
||||
</BuildActionEntries> |
||||
</BuildAction> |
||||
<TestAction |
||||
buildConfiguration = "Debug" |
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||
<Testables> |
||||
</Testables> |
||||
<MacroExpansion> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "63E1E97B1B28CB2000EF0978" |
||||
BuildableName = "AuthSample.app" |
||||
BlueprintName = "AuthSample" |
||||
ReferencedContainer = "container:AuthSample.xcodeproj"> |
||||
</BuildableReference> |
||||
</MacroExpansion> |
||||
<AdditionalOptions> |
||||
</AdditionalOptions> |
||||
</TestAction> |
||||
<LaunchAction |
||||
buildConfiguration = "Debug" |
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
launchStyle = "0" |
||||
useCustomWorkingDirectory = "NO" |
||||
ignoresPersistentStateOnLaunch = "NO" |
||||
debugDocumentVersioning = "YES" |
||||
debugServiceExtension = "internal" |
||||
allowLocationSimulation = "YES"> |
||||
<BuildableProductRunnable |
||||
runnableDebuggingMode = "0"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "63E1E97B1B28CB2000EF0978" |
||||
BuildableName = "AuthSample.app" |
||||
BlueprintName = "AuthSample" |
||||
ReferencedContainer = "container:AuthSample.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildableProductRunnable> |
||||
<AdditionalOptions> |
||||
</AdditionalOptions> |
||||
</LaunchAction> |
||||
<ProfileAction |
||||
buildConfiguration = "Release" |
||||
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
savedToolIdentifier = "" |
||||
useCustomWorkingDirectory = "NO" |
||||
debugDocumentVersioning = "YES"> |
||||
<BuildableProductRunnable |
||||
runnableDebuggingMode = "0"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "63E1E97B1B28CB2000EF0978" |
||||
BuildableName = "AuthSample.app" |
||||
BlueprintName = "AuthSample" |
||||
ReferencedContainer = "container:AuthSample.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildableProductRunnable> |
||||
</ProfileAction> |
||||
<AnalyzeAction |
||||
buildConfiguration = "Debug"> |
||||
</AnalyzeAction> |
||||
<ArchiveAction |
||||
buildConfiguration = "Release" |
||||
revealArchiveInOrganizer = "YES"> |
||||
</ArchiveAction> |
||||
</Scheme> |
@ -0,0 +1,91 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<Scheme |
||||
LastUpgradeVersion = "0730" |
||||
version = "1.3"> |
||||
<BuildAction |
||||
parallelizeBuildables = "YES" |
||||
buildImplicitDependencies = "YES"> |
||||
<BuildActionEntries> |
||||
<BuildActionEntry |
||||
buildForTesting = "YES" |
||||
buildForRunning = "YES" |
||||
buildForProfiling = "YES" |
||||
buildForArchiving = "YES" |
||||
buildForAnalyzing = "YES"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "5E36905F1B2A23800040F884" |
||||
BuildableName = "HelloWorld.app" |
||||
BlueprintName = "HelloWorld" |
||||
ReferencedContainer = "container:HelloWorld.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildActionEntry> |
||||
</BuildActionEntries> |
||||
</BuildAction> |
||||
<TestAction |
||||
buildConfiguration = "Debug" |
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||
<Testables> |
||||
</Testables> |
||||
<MacroExpansion> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "5E36905F1B2A23800040F884" |
||||
BuildableName = "HelloWorld.app" |
||||
BlueprintName = "HelloWorld" |
||||
ReferencedContainer = "container:HelloWorld.xcodeproj"> |
||||
</BuildableReference> |
||||
</MacroExpansion> |
||||
<AdditionalOptions> |
||||
</AdditionalOptions> |
||||
</TestAction> |
||||
<LaunchAction |
||||
buildConfiguration = "Debug" |
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
launchStyle = "0" |
||||
useCustomWorkingDirectory = "NO" |
||||
ignoresPersistentStateOnLaunch = "NO" |
||||
debugDocumentVersioning = "YES" |
||||
debugServiceExtension = "internal" |
||||
allowLocationSimulation = "YES"> |
||||
<BuildableProductRunnable |
||||
runnableDebuggingMode = "0"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "5E36905F1B2A23800040F884" |
||||
BuildableName = "HelloWorld.app" |
||||
BlueprintName = "HelloWorld" |
||||
ReferencedContainer = "container:HelloWorld.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildableProductRunnable> |
||||
<AdditionalOptions> |
||||
</AdditionalOptions> |
||||
</LaunchAction> |
||||
<ProfileAction |
||||
buildConfiguration = "Release" |
||||
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
savedToolIdentifier = "" |
||||
useCustomWorkingDirectory = "NO" |
||||
debugDocumentVersioning = "YES"> |
||||
<BuildableProductRunnable |
||||
runnableDebuggingMode = "0"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "5E36905F1B2A23800040F884" |
||||
BuildableName = "HelloWorld.app" |
||||
BlueprintName = "HelloWorld" |
||||
ReferencedContainer = "container:HelloWorld.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildableProductRunnable> |
||||
</ProfileAction> |
||||
<AnalyzeAction |
||||
buildConfiguration = "Debug"> |
||||
</AnalyzeAction> |
||||
<ArchiveAction |
||||
buildConfiguration = "Release" |
||||
revealArchiveInOrganizer = "YES"> |
||||
</ArchiveAction> |
||||
</Scheme> |
@ -1,10 +1,9 @@ |
||||
source 'https://github.com/CocoaPods/Specs.git' |
||||
platform :ios, '8.0' |
||||
|
||||
install! 'cocoapods', :deterministic_uuids => false |
||||
|
||||
target 'RouteGuideClient' do |
||||
pod 'Protobuf', :path => "../../../third_party/protobuf" |
||||
pod 'BoringSSL', :podspec => "../../../src/objective-c" |
||||
pod 'gRPC', :path => "../../.." |
||||
# Depend on the generated RouteGuide library. |
||||
pod 'RouteGuide', :path => '.' |
||||
end |
||||
|
@ -0,0 +1,91 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<Scheme |
||||
LastUpgradeVersion = "0730" |
||||
version = "1.3"> |
||||
<BuildAction |
||||
parallelizeBuildables = "YES" |
||||
buildImplicitDependencies = "YES"> |
||||
<BuildActionEntries> |
||||
<BuildActionEntry |
||||
buildForTesting = "YES" |
||||
buildForRunning = "YES" |
||||
buildForProfiling = "YES" |
||||
buildForArchiving = "YES" |
||||
buildForAnalyzing = "YES"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "6325277C1B1D0395003073D9" |
||||
BuildableName = "RouteGuideClient.app" |
||||
BlueprintName = "RouteGuideClient" |
||||
ReferencedContainer = "container:RouteGuideClient.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildActionEntry> |
||||
</BuildActionEntries> |
||||
</BuildAction> |
||||
<TestAction |
||||
buildConfiguration = "Debug" |
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||
<Testables> |
||||
</Testables> |
||||
<MacroExpansion> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "6325277C1B1D0395003073D9" |
||||
BuildableName = "RouteGuideClient.app" |
||||
BlueprintName = "RouteGuideClient" |
||||
ReferencedContainer = "container:RouteGuideClient.xcodeproj"> |
||||
</BuildableReference> |
||||
</MacroExpansion> |
||||
<AdditionalOptions> |
||||
</AdditionalOptions> |
||||
</TestAction> |
||||
<LaunchAction |
||||
buildConfiguration = "Debug" |
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
launchStyle = "0" |
||||
useCustomWorkingDirectory = "NO" |
||||
ignoresPersistentStateOnLaunch = "NO" |
||||
debugDocumentVersioning = "YES" |
||||
debugServiceExtension = "internal" |
||||
allowLocationSimulation = "YES"> |
||||
<BuildableProductRunnable |
||||
runnableDebuggingMode = "0"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "6325277C1B1D0395003073D9" |
||||
BuildableName = "RouteGuideClient.app" |
||||
BlueprintName = "RouteGuideClient" |
||||
ReferencedContainer = "container:RouteGuideClient.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildableProductRunnable> |
||||
<AdditionalOptions> |
||||
</AdditionalOptions> |
||||
</LaunchAction> |
||||
<ProfileAction |
||||
buildConfiguration = "Release" |
||||
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
savedToolIdentifier = "" |
||||
useCustomWorkingDirectory = "NO" |
||||
debugDocumentVersioning = "YES"> |
||||
<BuildableProductRunnable |
||||
runnableDebuggingMode = "0"> |
||||
<BuildableReference |
||||
BuildableIdentifier = "primary" |
||||
BlueprintIdentifier = "6325277C1B1D0395003073D9" |
||||
BuildableName = "RouteGuideClient.app" |
||||
BlueprintName = "RouteGuideClient" |
||||
ReferencedContainer = "container:RouteGuideClient.xcodeproj"> |
||||
</BuildableReference> |
||||
</BuildableProductRunnable> |
||||
</ProfileAction> |
||||
<AnalyzeAction |
||||
buildConfiguration = "Debug"> |
||||
</AnalyzeAction> |
||||
<ArchiveAction |
||||
buildConfiguration = "Release" |
||||
revealArchiveInOrganizer = "YES"> |
||||
</ArchiveAction> |
||||
</Scheme> |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,792 @@ |
||||
# GRPC CocoaPods podspec |
||||
# This file has been automatically generated from a template file. Please make modifications to |
||||
# `templates/gRPC-Core.podspec.template` instead. This file can be regenerated from the template by |
||||
# running `tools/buildgen/generate_projects.sh`. |
||||
|
||||
# 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. |
||||
|
||||
|
||||
Pod::Spec.new do |s| |
||||
s.name = 'gRPC-Core' |
||||
version = '0.14.0' |
||||
s.version = version |
||||
s.summary = 'Core cross-platform gRPC library, written in C' |
||||
s.homepage = 'http://www.grpc.io' |
||||
s.license = 'New BSD' |
||||
s.authors = { 'The gRPC contributors' => 'grpc-packages@google.com' } |
||||
|
||||
s.source = { |
||||
:git => 'https://github.com/grpc/grpc.git', |
||||
:tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}", |
||||
# TODO(jcanizales): Depend explicitly on the nanopb pod, and disable submodules. |
||||
:submodules => true, |
||||
} |
||||
|
||||
s.ios.deployment_target = '7.1' |
||||
s.osx.deployment_target = '10.9' |
||||
s.requires_arc = false |
||||
|
||||
name = 'grpc' |
||||
|
||||
# When creating a dynamic framework, name it grpc.framework instead of gRPC-Core.framework. |
||||
# This lets users write their includes like `#include <grpc/grpc.h>` as opposed to `#include |
||||
# <gRPC-Core/grpc.h>`. |
||||
s.module_name = name |
||||
|
||||
# When creating a dynamic framework, copy the headers under `include/grpc/` into the root of |
||||
# the `Headers/` directory of the framework (i.e., not under `Headers/include/grpc`). |
||||
# |
||||
# TODO(jcanizales): Debug why this doesn't work on macOS. |
||||
s.header_mappings_dir = 'include/grpc' |
||||
|
||||
# The above has an undesired effect when creating a static library: It forces users to write |
||||
# includes like `#include <gRPC-Core/grpc.h>`. `s.header_dir` adds a path prefix to that, and |
||||
# because Cocoapods lets omit the pod name when including headers of static libraries, the |
||||
# following lets users write `#include <grpc/grpc.h>`. |
||||
s.header_dir = name |
||||
|
||||
# The module map created automatically by Cocoapods doesn't work for C libraries like gRPC-Core. |
||||
s.module_map = 'include/grpc/module.modulemap' |
||||
|
||||
# To compile the library, we need the user headers search path (quoted includes) to point to the |
||||
# root of the repo, and the system headers search path (angled includes) to point to `include/`. |
||||
# Cocoapods effectively clones the repo under `<Podfile dir>/Pods/gRPC-Core/`, and sets a build |
||||
# variable called `$(PODS_ROOT)` to `<Podfile dir>/Pods/`, so we use that. |
||||
# |
||||
# Relying on the file structure under $(PODS_ROOT) isn't officially supported in Cocoapods, as it |
||||
# is taken as an implementation detail. We've asked for an alternative, and have been told that |
||||
# what we're doing should keep working: https://github.com/CocoaPods/CocoaPods/issues/4386 |
||||
# |
||||
# The `src_root` value of `$(PODS_ROOT)/gRPC-Core` assumes Cocoapods is installing this pod from |
||||
# its remote repo. For local development of this library, enabled by using `:path` in the Podfile, |
||||
# that assumption is wrong. In such case, the following settings need to be reset with the |
||||
# appropriate value of `src_root`. This can be accomplished in the `pre_install` hook of the |
||||
# Podfile; see `src/objective-c/tests/Podfile` for an example. |
||||
src_root = '$(PODS_ROOT)/gRPC-Core' |
||||
s.pod_target_xcconfig = { |
||||
'GRPC_SRC_ROOT' => src_root, |
||||
'HEADER_SEARCH_PATHS' => '"$(inherited)" "$(GRPC_SRC_ROOT)/include"', |
||||
'USER_HEADER_SEARCH_PATHS' => '"$(GRPC_SRC_ROOT)"', |
||||
# If we don't set these two settings, `include/grpc/support/time.h` and |
||||
# `src/core/lib/support/string.h` shadow the system `<time.h>` and `<string.h>`, breaking the |
||||
# build. |
||||
'USE_HEADERMAP' => 'NO', |
||||
'ALWAYS_SEARCH_USER_PATHS' => 'NO', |
||||
} |
||||
|
||||
s.default_subspecs = 'Interface', 'Implementation' |
||||
|
||||
# Like many other C libraries, gRPC-Core has its public headers under `include/<libname>/` and its |
||||
# sources and private headers in other directories outside `include/`. Cocoapods' linter doesn't |
||||
# allow any header to be listed outside the `header_mappings_dir` (even though doing so works in |
||||
# practice). Because we need our `header_mappings_dir` to be `include/grpc/` for the reason |
||||
# mentioned above, we work around the linter limitation by dividing the pod into two subspecs, one |
||||
# for public headers and the other for implementation. Each gets its own `header_mappings_dir`, |
||||
# making the linter happy. |
||||
# |
||||
# The list of source files is generated by a template: `templates/gRPC-Core.podspec.template`. It |
||||
# can be regenerated from the template by running `tools/buildgen/generate_projects.sh`. |
||||
s.subspec 'Interface' do |ss| |
||||
ss.header_mappings_dir = 'include/grpc' |
||||
|
||||
ss.source_files = 'include/grpc/support/alloc.h', |
||||
'include/grpc/support/atm.h', |
||||
'include/grpc/support/atm_gcc_atomic.h', |
||||
'include/grpc/support/atm_gcc_sync.h', |
||||
'include/grpc/support/atm_windows.h', |
||||
'include/grpc/support/avl.h', |
||||
'include/grpc/support/cmdline.h', |
||||
'include/grpc/support/cpu.h', |
||||
'include/grpc/support/histogram.h', |
||||
'include/grpc/support/host_port.h', |
||||
'include/grpc/support/log.h', |
||||
'include/grpc/support/log_windows.h', |
||||
'include/grpc/support/port_platform.h', |
||||
'include/grpc/support/slice.h', |
||||
'include/grpc/support/slice_buffer.h', |
||||
'include/grpc/support/string_util.h', |
||||
'include/grpc/support/subprocess.h', |
||||
'include/grpc/support/sync.h', |
||||
'include/grpc/support/sync_generic.h', |
||||
'include/grpc/support/sync_posix.h', |
||||
'include/grpc/support/sync_windows.h', |
||||
'include/grpc/support/thd.h', |
||||
'include/grpc/support/time.h', |
||||
'include/grpc/support/tls.h', |
||||
'include/grpc/support/tls_gcc.h', |
||||
'include/grpc/support/tls_msvc.h', |
||||
'include/grpc/support/tls_pthread.h', |
||||
'include/grpc/support/useful.h', |
||||
'include/grpc/impl/codegen/alloc.h', |
||||
'include/grpc/impl/codegen/atm.h', |
||||
'include/grpc/impl/codegen/atm_gcc_atomic.h', |
||||
'include/grpc/impl/codegen/atm_gcc_sync.h', |
||||
'include/grpc/impl/codegen/atm_windows.h', |
||||
'include/grpc/impl/codegen/log.h', |
||||
'include/grpc/impl/codegen/port_platform.h', |
||||
'include/grpc/impl/codegen/slice.h', |
||||
'include/grpc/impl/codegen/slice_buffer.h', |
||||
'include/grpc/impl/codegen/sync.h', |
||||
'include/grpc/impl/codegen/sync_generic.h', |
||||
'include/grpc/impl/codegen/sync_posix.h', |
||||
'include/grpc/impl/codegen/sync_windows.h', |
||||
'include/grpc/impl/codegen/time.h', |
||||
'include/grpc/byte_buffer.h', |
||||
'include/grpc/byte_buffer_reader.h', |
||||
'include/grpc/compression.h', |
||||
'include/grpc/grpc.h', |
||||
'include/grpc/grpc_posix.h', |
||||
'include/grpc/status.h', |
||||
'include/grpc/impl/codegen/byte_buffer.h', |
||||
'include/grpc/impl/codegen/byte_buffer_reader.h', |
||||
'include/grpc/impl/codegen/compression_types.h', |
||||
'include/grpc/impl/codegen/connectivity_state.h', |
||||
'include/grpc/impl/codegen/grpc_types.h', |
||||
'include/grpc/impl/codegen/propagation_bits.h', |
||||
'include/grpc/impl/codegen/status.h', |
||||
'include/grpc/impl/codegen/alloc.h', |
||||
'include/grpc/impl/codegen/atm.h', |
||||
'include/grpc/impl/codegen/atm_gcc_atomic.h', |
||||
'include/grpc/impl/codegen/atm_gcc_sync.h', |
||||
'include/grpc/impl/codegen/atm_windows.h', |
||||
'include/grpc/impl/codegen/log.h', |
||||
'include/grpc/impl/codegen/port_platform.h', |
||||
'include/grpc/impl/codegen/slice.h', |
||||
'include/grpc/impl/codegen/slice_buffer.h', |
||||
'include/grpc/impl/codegen/sync.h', |
||||
'include/grpc/impl/codegen/sync_generic.h', |
||||
'include/grpc/impl/codegen/sync_posix.h', |
||||
'include/grpc/impl/codegen/sync_windows.h', |
||||
'include/grpc/impl/codegen/time.h', |
||||
'include/grpc/grpc_security.h', |
||||
'include/grpc/grpc_security_constants.h', |
||||
'include/grpc/census.h' |
||||
end |
||||
s.subspec 'Implementation' do |ss| |
||||
ss.header_mappings_dir = '.' |
||||
ss.libraries = 'z' |
||||
ss.dependency "#{s.name}/Interface", version |
||||
ss.dependency 'BoringSSL', '~> 4.0' |
||||
|
||||
# To save you from scrolling, this is the last part of the podspec. |
||||
ss.source_files = 'src/core/lib/profiling/timers.h', |
||||
'src/core/lib/support/backoff.h', |
||||
'src/core/lib/support/block_annotate.h', |
||||
'src/core/lib/support/env.h', |
||||
'src/core/lib/support/murmur_hash.h', |
||||
'src/core/lib/support/stack_lockfree.h', |
||||
'src/core/lib/support/string.h', |
||||
'src/core/lib/support/string_windows.h', |
||||
'src/core/lib/support/thd_internal.h', |
||||
'src/core/lib/support/time_precise.h', |
||||
'src/core/lib/support/tmpfile.h', |
||||
'src/core/lib/profiling/basic_timers.c', |
||||
'src/core/lib/profiling/stap_timers.c', |
||||
'src/core/lib/support/alloc.c', |
||||
'src/core/lib/support/avl.c', |
||||
'src/core/lib/support/backoff.c', |
||||
'src/core/lib/support/cmdline.c', |
||||
'src/core/lib/support/cpu_iphone.c', |
||||
'src/core/lib/support/cpu_linux.c', |
||||
'src/core/lib/support/cpu_posix.c', |
||||
'src/core/lib/support/cpu_windows.c', |
||||
'src/core/lib/support/env_linux.c', |
||||
'src/core/lib/support/env_posix.c', |
||||
'src/core/lib/support/env_windows.c', |
||||
'src/core/lib/support/histogram.c', |
||||
'src/core/lib/support/host_port.c', |
||||
'src/core/lib/support/log.c', |
||||
'src/core/lib/support/log_android.c', |
||||
'src/core/lib/support/log_linux.c', |
||||
'src/core/lib/support/log_posix.c', |
||||
'src/core/lib/support/log_windows.c', |
||||
'src/core/lib/support/murmur_hash.c', |
||||
'src/core/lib/support/slice.c', |
||||
'src/core/lib/support/slice_buffer.c', |
||||
'src/core/lib/support/stack_lockfree.c', |
||||
'src/core/lib/support/string.c', |
||||
'src/core/lib/support/string_posix.c', |
||||
'src/core/lib/support/string_util_windows.c', |
||||
'src/core/lib/support/string_windows.c', |
||||
'src/core/lib/support/subprocess_posix.c', |
||||
'src/core/lib/support/subprocess_windows.c', |
||||
'src/core/lib/support/sync.c', |
||||
'src/core/lib/support/sync_posix.c', |
||||
'src/core/lib/support/sync_windows.c', |
||||
'src/core/lib/support/thd.c', |
||||
'src/core/lib/support/thd_posix.c', |
||||
'src/core/lib/support/thd_windows.c', |
||||
'src/core/lib/support/time.c', |
||||
'src/core/lib/support/time_posix.c', |
||||
'src/core/lib/support/time_precise.c', |
||||
'src/core/lib/support/time_windows.c', |
||||
'src/core/lib/support/tls_pthread.c', |
||||
'src/core/lib/support/tmpfile_msys.c', |
||||
'src/core/lib/support/tmpfile_posix.c', |
||||
'src/core/lib/support/tmpfile_windows.c', |
||||
'src/core/lib/support/wrap_memcpy.c', |
||||
'src/core/lib/channel/channel_args.h', |
||||
'src/core/lib/channel/channel_stack.h', |
||||
'src/core/lib/channel/channel_stack_builder.h', |
||||
'src/core/lib/channel/compress_filter.h', |
||||
'src/core/lib/channel/connected_channel.h', |
||||
'src/core/lib/channel/context.h', |
||||
'src/core/lib/channel/http_client_filter.h', |
||||
'src/core/lib/channel/http_server_filter.h', |
||||
'src/core/lib/compression/algorithm_metadata.h', |
||||
'src/core/lib/compression/message_compress.h', |
||||
'src/core/lib/debug/trace.h', |
||||
'src/core/lib/http/format_request.h', |
||||
'src/core/lib/http/httpcli.h', |
||||
'src/core/lib/http/parser.h', |
||||
'src/core/lib/iomgr/closure.h', |
||||
'src/core/lib/iomgr/endpoint.h', |
||||
'src/core/lib/iomgr/endpoint_pair.h', |
||||
'src/core/lib/iomgr/error.h', |
||||
'src/core/lib/iomgr/ev_epoll_linux.h', |
||||
'src/core/lib/iomgr/ev_poll_and_epoll_posix.h', |
||||
'src/core/lib/iomgr/ev_poll_posix.h', |
||||
'src/core/lib/iomgr/ev_posix.h', |
||||
'src/core/lib/iomgr/exec_ctx.h', |
||||
'src/core/lib/iomgr/executor.h', |
||||
'src/core/lib/iomgr/iocp_windows.h', |
||||
'src/core/lib/iomgr/iomgr.h', |
||||
'src/core/lib/iomgr/iomgr_internal.h', |
||||
'src/core/lib/iomgr/iomgr_posix.h', |
||||
'src/core/lib/iomgr/load_file.h', |
||||
'src/core/lib/iomgr/network_status_tracker.h', |
||||
'src/core/lib/iomgr/polling_entity.h', |
||||
'src/core/lib/iomgr/pollset.h', |
||||
'src/core/lib/iomgr/pollset_set.h', |
||||
'src/core/lib/iomgr/pollset_set_windows.h', |
||||
'src/core/lib/iomgr/pollset_windows.h', |
||||
'src/core/lib/iomgr/resolve_address.h', |
||||
'src/core/lib/iomgr/sockaddr.h', |
||||
'src/core/lib/iomgr/sockaddr_posix.h', |
||||
'src/core/lib/iomgr/sockaddr_utils.h', |
||||
'src/core/lib/iomgr/sockaddr_windows.h', |
||||
'src/core/lib/iomgr/socket_utils_posix.h', |
||||
'src/core/lib/iomgr/socket_windows.h', |
||||
'src/core/lib/iomgr/tcp_client.h', |
||||
'src/core/lib/iomgr/tcp_posix.h', |
||||
'src/core/lib/iomgr/tcp_server.h', |
||||
'src/core/lib/iomgr/tcp_windows.h', |
||||
'src/core/lib/iomgr/time_averaged_stats.h', |
||||
'src/core/lib/iomgr/timer.h', |
||||
'src/core/lib/iomgr/timer_heap.h', |
||||
'src/core/lib/iomgr/udp_server.h', |
||||
'src/core/lib/iomgr/unix_sockets_posix.h', |
||||
'src/core/lib/iomgr/wakeup_fd_pipe.h', |
||||
'src/core/lib/iomgr/wakeup_fd_posix.h', |
||||
'src/core/lib/iomgr/workqueue.h', |
||||
'src/core/lib/iomgr/workqueue_posix.h', |
||||
'src/core/lib/iomgr/workqueue_windows.h', |
||||
'src/core/lib/json/json.h', |
||||
'src/core/lib/json/json_common.h', |
||||
'src/core/lib/json/json_reader.h', |
||||
'src/core/lib/json/json_writer.h', |
||||
'src/core/lib/surface/api_trace.h', |
||||
'src/core/lib/surface/call.h', |
||||
'src/core/lib/surface/call_test_only.h', |
||||
'src/core/lib/surface/channel.h', |
||||
'src/core/lib/surface/channel_init.h', |
||||
'src/core/lib/surface/channel_stack_type.h', |
||||
'src/core/lib/surface/completion_queue.h', |
||||
'src/core/lib/surface/event_string.h', |
||||
'src/core/lib/surface/init.h', |
||||
'src/core/lib/surface/lame_client.h', |
||||
'src/core/lib/surface/server.h', |
||||
'src/core/lib/transport/byte_stream.h', |
||||
'src/core/lib/transport/connectivity_state.h', |
||||
'src/core/lib/transport/metadata.h', |
||||
'src/core/lib/transport/metadata_batch.h', |
||||
'src/core/lib/transport/static_metadata.h', |
||||
'src/core/lib/transport/transport.h', |
||||
'src/core/lib/transport/transport_impl.h', |
||||
'src/core/ext/transport/chttp2/transport/bin_decoder.h', |
||||
'src/core/ext/transport/chttp2/transport/bin_encoder.h', |
||||
'src/core/ext/transport/chttp2/transport/chttp2_transport.h', |
||||
'src/core/ext/transport/chttp2/transport/frame.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_data.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_goaway.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_ping.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_rst_stream.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_settings.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_window_update.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_encoder.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_parser.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_table.h', |
||||
'src/core/ext/transport/chttp2/transport/http2_errors.h', |
||||
'src/core/ext/transport/chttp2/transport/huffsyms.h', |
||||
'src/core/ext/transport/chttp2/transport/incoming_metadata.h', |
||||
'src/core/ext/transport/chttp2/transport/internal.h', |
||||
'src/core/ext/transport/chttp2/transport/status_conversion.h', |
||||
'src/core/ext/transport/chttp2/transport/stream_map.h', |
||||
'src/core/ext/transport/chttp2/transport/timeout_encoding.h', |
||||
'src/core/ext/transport/chttp2/transport/varint.h', |
||||
'src/core/ext/transport/chttp2/alpn/alpn.h', |
||||
'src/core/lib/security/context/security_context.h', |
||||
'src/core/lib/security/credentials/composite/composite_credentials.h', |
||||
'src/core/lib/security/credentials/credentials.h', |
||||
'src/core/lib/security/credentials/fake/fake_credentials.h', |
||||
'src/core/lib/security/credentials/google_default/google_default_credentials.h', |
||||
'src/core/lib/security/credentials/iam/iam_credentials.h', |
||||
'src/core/lib/security/credentials/jwt/json_token.h', |
||||
'src/core/lib/security/credentials/jwt/jwt_credentials.h', |
||||
'src/core/lib/security/credentials/jwt/jwt_verifier.h', |
||||
'src/core/lib/security/credentials/oauth2/oauth2_credentials.h', |
||||
'src/core/lib/security/credentials/plugin/plugin_credentials.h', |
||||
'src/core/lib/security/credentials/ssl/ssl_credentials.h', |
||||
'src/core/lib/security/transport/auth_filters.h', |
||||
'src/core/lib/security/transport/handshake.h', |
||||
'src/core/lib/security/transport/secure_endpoint.h', |
||||
'src/core/lib/security/transport/security_connector.h', |
||||
'src/core/lib/security/transport/tsi_error.h', |
||||
'src/core/lib/security/util/b64.h', |
||||
'src/core/lib/security/util/json_util.h', |
||||
'src/core/lib/tsi/fake_transport_security.h', |
||||
'src/core/lib/tsi/ssl_transport_security.h', |
||||
'src/core/lib/tsi/ssl_types.h', |
||||
'src/core/lib/tsi/transport_security.h', |
||||
'src/core/lib/tsi/transport_security_interface.h', |
||||
'src/core/ext/client_config/client_channel.h', |
||||
'src/core/ext/client_config/client_channel_factory.h', |
||||
'src/core/ext/client_config/client_config.h', |
||||
'src/core/ext/client_config/connector.h', |
||||
'src/core/ext/client_config/initial_connect_string.h', |
||||
'src/core/ext/client_config/lb_policy.h', |
||||
'src/core/ext/client_config/lb_policy_factory.h', |
||||
'src/core/ext/client_config/lb_policy_registry.h', |
||||
'src/core/ext/client_config/parse_address.h', |
||||
'src/core/ext/client_config/resolver.h', |
||||
'src/core/ext/client_config/resolver_factory.h', |
||||
'src/core/ext/client_config/resolver_registry.h', |
||||
'src/core/ext/client_config/subchannel.h', |
||||
'src/core/ext/client_config/subchannel_call_holder.h', |
||||
'src/core/ext/client_config/subchannel_index.h', |
||||
'src/core/ext/client_config/uri_parser.h', |
||||
'src/core/ext/lb_policy/grpclb/load_balancer_api.h', |
||||
'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h', |
||||
'third_party/nanopb/pb.h', |
||||
'third_party/nanopb/pb_common.h', |
||||
'third_party/nanopb/pb_decode.h', |
||||
'third_party/nanopb/pb_encode.h', |
||||
'src/core/ext/load_reporting/load_reporting.h', |
||||
'src/core/ext/load_reporting/load_reporting_filter.h', |
||||
'src/core/ext/census/aggregation.h', |
||||
'src/core/ext/census/base_resources.h', |
||||
'src/core/ext/census/census_interface.h', |
||||
'src/core/ext/census/census_rpc_stats.h', |
||||
'src/core/ext/census/gen/census.pb.h', |
||||
'src/core/ext/census/grpc_filter.h', |
||||
'src/core/ext/census/mlog.h', |
||||
'src/core/ext/census/resource.h', |
||||
'src/core/ext/census/rpc_metric_id.h', |
||||
'src/core/lib/surface/init.c', |
||||
'src/core/lib/channel/channel_args.c', |
||||
'src/core/lib/channel/channel_stack.c', |
||||
'src/core/lib/channel/channel_stack_builder.c', |
||||
'src/core/lib/channel/compress_filter.c', |
||||
'src/core/lib/channel/connected_channel.c', |
||||
'src/core/lib/channel/http_client_filter.c', |
||||
'src/core/lib/channel/http_server_filter.c', |
||||
'src/core/lib/compression/compression.c', |
||||
'src/core/lib/compression/message_compress.c', |
||||
'src/core/lib/debug/trace.c', |
||||
'src/core/lib/http/format_request.c', |
||||
'src/core/lib/http/httpcli.c', |
||||
'src/core/lib/http/parser.c', |
||||
'src/core/lib/iomgr/closure.c', |
||||
'src/core/lib/iomgr/endpoint.c', |
||||
'src/core/lib/iomgr/endpoint_pair_posix.c', |
||||
'src/core/lib/iomgr/endpoint_pair_windows.c', |
||||
'src/core/lib/iomgr/error.c', |
||||
'src/core/lib/iomgr/ev_epoll_linux.c', |
||||
'src/core/lib/iomgr/ev_poll_and_epoll_posix.c', |
||||
'src/core/lib/iomgr/ev_poll_posix.c', |
||||
'src/core/lib/iomgr/ev_posix.c', |
||||
'src/core/lib/iomgr/exec_ctx.c', |
||||
'src/core/lib/iomgr/executor.c', |
||||
'src/core/lib/iomgr/iocp_windows.c', |
||||
'src/core/lib/iomgr/iomgr.c', |
||||
'src/core/lib/iomgr/iomgr_posix.c', |
||||
'src/core/lib/iomgr/iomgr_windows.c', |
||||
'src/core/lib/iomgr/load_file.c', |
||||
'src/core/lib/iomgr/network_status_tracker.c', |
||||
'src/core/lib/iomgr/polling_entity.c', |
||||
'src/core/lib/iomgr/pollset_set_windows.c', |
||||
'src/core/lib/iomgr/pollset_windows.c', |
||||
'src/core/lib/iomgr/resolve_address_posix.c', |
||||
'src/core/lib/iomgr/resolve_address_windows.c', |
||||
'src/core/lib/iomgr/sockaddr_utils.c', |
||||
'src/core/lib/iomgr/socket_utils_common_posix.c', |
||||
'src/core/lib/iomgr/socket_utils_linux.c', |
||||
'src/core/lib/iomgr/socket_utils_posix.c', |
||||
'src/core/lib/iomgr/socket_windows.c', |
||||
'src/core/lib/iomgr/tcp_client_posix.c', |
||||
'src/core/lib/iomgr/tcp_client_windows.c', |
||||
'src/core/lib/iomgr/tcp_posix.c', |
||||
'src/core/lib/iomgr/tcp_server_posix.c', |
||||
'src/core/lib/iomgr/tcp_server_windows.c', |
||||
'src/core/lib/iomgr/tcp_windows.c', |
||||
'src/core/lib/iomgr/time_averaged_stats.c', |
||||
'src/core/lib/iomgr/timer.c', |
||||
'src/core/lib/iomgr/timer_heap.c', |
||||
'src/core/lib/iomgr/udp_server.c', |
||||
'src/core/lib/iomgr/unix_sockets_posix.c', |
||||
'src/core/lib/iomgr/unix_sockets_posix_noop.c', |
||||
'src/core/lib/iomgr/wakeup_fd_eventfd.c', |
||||
'src/core/lib/iomgr/wakeup_fd_nospecial.c', |
||||
'src/core/lib/iomgr/wakeup_fd_pipe.c', |
||||
'src/core/lib/iomgr/wakeup_fd_posix.c', |
||||
'src/core/lib/iomgr/workqueue_posix.c', |
||||
'src/core/lib/iomgr/workqueue_windows.c', |
||||
'src/core/lib/json/json.c', |
||||
'src/core/lib/json/json_reader.c', |
||||
'src/core/lib/json/json_string.c', |
||||
'src/core/lib/json/json_writer.c', |
||||
'src/core/lib/surface/alarm.c', |
||||
'src/core/lib/surface/api_trace.c', |
||||
'src/core/lib/surface/byte_buffer.c', |
||||
'src/core/lib/surface/byte_buffer_reader.c', |
||||
'src/core/lib/surface/call.c', |
||||
'src/core/lib/surface/call_details.c', |
||||
'src/core/lib/surface/call_log_batch.c', |
||||
'src/core/lib/surface/channel.c', |
||||
'src/core/lib/surface/channel_init.c', |
||||
'src/core/lib/surface/channel_ping.c', |
||||
'src/core/lib/surface/channel_stack_type.c', |
||||
'src/core/lib/surface/completion_queue.c', |
||||
'src/core/lib/surface/event_string.c', |
||||
'src/core/lib/surface/lame_client.c', |
||||
'src/core/lib/surface/metadata_array.c', |
||||
'src/core/lib/surface/server.c', |
||||
'src/core/lib/surface/validate_metadata.c', |
||||
'src/core/lib/surface/version.c', |
||||
'src/core/lib/transport/byte_stream.c', |
||||
'src/core/lib/transport/connectivity_state.c', |
||||
'src/core/lib/transport/metadata.c', |
||||
'src/core/lib/transport/metadata_batch.c', |
||||
'src/core/lib/transport/static_metadata.c', |
||||
'src/core/lib/transport/transport.c', |
||||
'src/core/lib/transport/transport_op_string.c', |
||||
'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c', |
||||
'src/core/ext/transport/chttp2/transport/bin_decoder.c', |
||||
'src/core/ext/transport/chttp2/transport/bin_encoder.c', |
||||
'src/core/ext/transport/chttp2/transport/chttp2_plugin.c', |
||||
'src/core/ext/transport/chttp2/transport/chttp2_transport.c', |
||||
'src/core/ext/transport/chttp2/transport/frame_data.c', |
||||
'src/core/ext/transport/chttp2/transport/frame_goaway.c', |
||||
'src/core/ext/transport/chttp2/transport/frame_ping.c', |
||||
'src/core/ext/transport/chttp2/transport/frame_rst_stream.c', |
||||
'src/core/ext/transport/chttp2/transport/frame_settings.c', |
||||
'src/core/ext/transport/chttp2/transport/frame_window_update.c', |
||||
'src/core/ext/transport/chttp2/transport/hpack_encoder.c', |
||||
'src/core/ext/transport/chttp2/transport/hpack_parser.c', |
||||
'src/core/ext/transport/chttp2/transport/hpack_table.c', |
||||
'src/core/ext/transport/chttp2/transport/huffsyms.c', |
||||
'src/core/ext/transport/chttp2/transport/incoming_metadata.c', |
||||
'src/core/ext/transport/chttp2/transport/parsing.c', |
||||
'src/core/ext/transport/chttp2/transport/status_conversion.c', |
||||
'src/core/ext/transport/chttp2/transport/stream_lists.c', |
||||
'src/core/ext/transport/chttp2/transport/stream_map.c', |
||||
'src/core/ext/transport/chttp2/transport/timeout_encoding.c', |
||||
'src/core/ext/transport/chttp2/transport/varint.c', |
||||
'src/core/ext/transport/chttp2/transport/writing.c', |
||||
'src/core/ext/transport/chttp2/alpn/alpn.c', |
||||
'src/core/lib/http/httpcli_security_connector.c', |
||||
'src/core/lib/security/context/security_context.c', |
||||
'src/core/lib/security/credentials/composite/composite_credentials.c', |
||||
'src/core/lib/security/credentials/credentials.c', |
||||
'src/core/lib/security/credentials/credentials_metadata.c', |
||||
'src/core/lib/security/credentials/fake/fake_credentials.c', |
||||
'src/core/lib/security/credentials/google_default/credentials_posix.c', |
||||
'src/core/lib/security/credentials/google_default/credentials_windows.c', |
||||
'src/core/lib/security/credentials/google_default/google_default_credentials.c', |
||||
'src/core/lib/security/credentials/iam/iam_credentials.c', |
||||
'src/core/lib/security/credentials/jwt/json_token.c', |
||||
'src/core/lib/security/credentials/jwt/jwt_credentials.c', |
||||
'src/core/lib/security/credentials/jwt/jwt_verifier.c', |
||||
'src/core/lib/security/credentials/oauth2/oauth2_credentials.c', |
||||
'src/core/lib/security/credentials/plugin/plugin_credentials.c', |
||||
'src/core/lib/security/credentials/ssl/ssl_credentials.c', |
||||
'src/core/lib/security/transport/client_auth_filter.c', |
||||
'src/core/lib/security/transport/handshake.c', |
||||
'src/core/lib/security/transport/secure_endpoint.c', |
||||
'src/core/lib/security/transport/security_connector.c', |
||||
'src/core/lib/security/transport/server_auth_filter.c', |
||||
'src/core/lib/security/transport/tsi_error.c', |
||||
'src/core/lib/security/util/b64.c', |
||||
'src/core/lib/security/util/json_util.c', |
||||
'src/core/lib/surface/init_secure.c', |
||||
'src/core/lib/tsi/fake_transport_security.c', |
||||
'src/core/lib/tsi/ssl_transport_security.c', |
||||
'src/core/lib/tsi/transport_security.c', |
||||
'src/core/ext/transport/chttp2/client/secure/secure_channel_create.c', |
||||
'src/core/ext/client_config/channel_connectivity.c', |
||||
'src/core/ext/client_config/client_channel.c', |
||||
'src/core/ext/client_config/client_channel_factory.c', |
||||
'src/core/ext/client_config/client_config.c', |
||||
'src/core/ext/client_config/client_config_plugin.c', |
||||
'src/core/ext/client_config/connector.c', |
||||
'src/core/ext/client_config/default_initial_connect_string.c', |
||||
'src/core/ext/client_config/initial_connect_string.c', |
||||
'src/core/ext/client_config/lb_policy.c', |
||||
'src/core/ext/client_config/lb_policy_factory.c', |
||||
'src/core/ext/client_config/lb_policy_registry.c', |
||||
'src/core/ext/client_config/parse_address.c', |
||||
'src/core/ext/client_config/resolver.c', |
||||
'src/core/ext/client_config/resolver_factory.c', |
||||
'src/core/ext/client_config/resolver_registry.c', |
||||
'src/core/ext/client_config/subchannel.c', |
||||
'src/core/ext/client_config/subchannel_call_holder.c', |
||||
'src/core/ext/client_config/subchannel_index.c', |
||||
'src/core/ext/client_config/uri_parser.c', |
||||
'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c', |
||||
'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c', |
||||
'src/core/ext/transport/chttp2/client/insecure/channel_create.c', |
||||
'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c', |
||||
'src/core/ext/lb_policy/grpclb/load_balancer_api.c', |
||||
'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c', |
||||
'third_party/nanopb/pb_common.c', |
||||
'third_party/nanopb/pb_decode.c', |
||||
'third_party/nanopb/pb_encode.c', |
||||
'src/core/ext/lb_policy/pick_first/pick_first.c', |
||||
'src/core/ext/lb_policy/round_robin/round_robin.c', |
||||
'src/core/ext/resolver/dns/native/dns_resolver.c', |
||||
'src/core/ext/resolver/sockaddr/sockaddr_resolver.c', |
||||
'src/core/ext/load_reporting/load_reporting.c', |
||||
'src/core/ext/load_reporting/load_reporting_filter.c', |
||||
'src/core/ext/census/base_resources.c', |
||||
'src/core/ext/census/context.c', |
||||
'src/core/ext/census/gen/census.pb.c', |
||||
'src/core/ext/census/grpc_context.c', |
||||
'src/core/ext/census/grpc_filter.c', |
||||
'src/core/ext/census/grpc_plugin.c', |
||||
'src/core/ext/census/initialize.c', |
||||
'src/core/ext/census/mlog.c', |
||||
'src/core/ext/census/operation.c', |
||||
'src/core/ext/census/placeholders.c', |
||||
'src/core/ext/census/resource.c', |
||||
'src/core/ext/census/tracing.c', |
||||
'src/core/plugin_registry/grpc_plugin_registry.c' |
||||
|
||||
ss.private_header_files = 'src/core/lib/profiling/timers.h', |
||||
'src/core/lib/support/backoff.h', |
||||
'src/core/lib/support/block_annotate.h', |
||||
'src/core/lib/support/env.h', |
||||
'src/core/lib/support/murmur_hash.h', |
||||
'src/core/lib/support/stack_lockfree.h', |
||||
'src/core/lib/support/string.h', |
||||
'src/core/lib/support/string_windows.h', |
||||
'src/core/lib/support/thd_internal.h', |
||||
'src/core/lib/support/time_precise.h', |
||||
'src/core/lib/support/tmpfile.h', |
||||
'src/core/lib/channel/channel_args.h', |
||||
'src/core/lib/channel/channel_stack.h', |
||||
'src/core/lib/channel/channel_stack_builder.h', |
||||
'src/core/lib/channel/compress_filter.h', |
||||
'src/core/lib/channel/connected_channel.h', |
||||
'src/core/lib/channel/context.h', |
||||
'src/core/lib/channel/http_client_filter.h', |
||||
'src/core/lib/channel/http_server_filter.h', |
||||
'src/core/lib/compression/algorithm_metadata.h', |
||||
'src/core/lib/compression/message_compress.h', |
||||
'src/core/lib/debug/trace.h', |
||||
'src/core/lib/http/format_request.h', |
||||
'src/core/lib/http/httpcli.h', |
||||
'src/core/lib/http/parser.h', |
||||
'src/core/lib/iomgr/closure.h', |
||||
'src/core/lib/iomgr/endpoint.h', |
||||
'src/core/lib/iomgr/endpoint_pair.h', |
||||
'src/core/lib/iomgr/error.h', |
||||
'src/core/lib/iomgr/ev_epoll_linux.h', |
||||
'src/core/lib/iomgr/ev_poll_and_epoll_posix.h', |
||||
'src/core/lib/iomgr/ev_poll_posix.h', |
||||
'src/core/lib/iomgr/ev_posix.h', |
||||
'src/core/lib/iomgr/exec_ctx.h', |
||||
'src/core/lib/iomgr/executor.h', |
||||
'src/core/lib/iomgr/iocp_windows.h', |
||||
'src/core/lib/iomgr/iomgr.h', |
||||
'src/core/lib/iomgr/iomgr_internal.h', |
||||
'src/core/lib/iomgr/iomgr_posix.h', |
||||
'src/core/lib/iomgr/load_file.h', |
||||
'src/core/lib/iomgr/network_status_tracker.h', |
||||
'src/core/lib/iomgr/polling_entity.h', |
||||
'src/core/lib/iomgr/pollset.h', |
||||
'src/core/lib/iomgr/pollset_set.h', |
||||
'src/core/lib/iomgr/pollset_set_windows.h', |
||||
'src/core/lib/iomgr/pollset_windows.h', |
||||
'src/core/lib/iomgr/resolve_address.h', |
||||
'src/core/lib/iomgr/sockaddr.h', |
||||
'src/core/lib/iomgr/sockaddr_posix.h', |
||||
'src/core/lib/iomgr/sockaddr_utils.h', |
||||
'src/core/lib/iomgr/sockaddr_windows.h', |
||||
'src/core/lib/iomgr/socket_utils_posix.h', |
||||
'src/core/lib/iomgr/socket_windows.h', |
||||
'src/core/lib/iomgr/tcp_client.h', |
||||
'src/core/lib/iomgr/tcp_posix.h', |
||||
'src/core/lib/iomgr/tcp_server.h', |
||||
'src/core/lib/iomgr/tcp_windows.h', |
||||
'src/core/lib/iomgr/time_averaged_stats.h', |
||||
'src/core/lib/iomgr/timer.h', |
||||
'src/core/lib/iomgr/timer_heap.h', |
||||
'src/core/lib/iomgr/udp_server.h', |
||||
'src/core/lib/iomgr/unix_sockets_posix.h', |
||||
'src/core/lib/iomgr/wakeup_fd_pipe.h', |
||||
'src/core/lib/iomgr/wakeup_fd_posix.h', |
||||
'src/core/lib/iomgr/workqueue.h', |
||||
'src/core/lib/iomgr/workqueue_posix.h', |
||||
'src/core/lib/iomgr/workqueue_windows.h', |
||||
'src/core/lib/json/json.h', |
||||
'src/core/lib/json/json_common.h', |
||||
'src/core/lib/json/json_reader.h', |
||||
'src/core/lib/json/json_writer.h', |
||||
'src/core/lib/surface/api_trace.h', |
||||
'src/core/lib/surface/call.h', |
||||
'src/core/lib/surface/call_test_only.h', |
||||
'src/core/lib/surface/channel.h', |
||||
'src/core/lib/surface/channel_init.h', |
||||
'src/core/lib/surface/channel_stack_type.h', |
||||
'src/core/lib/surface/completion_queue.h', |
||||
'src/core/lib/surface/event_string.h', |
||||
'src/core/lib/surface/init.h', |
||||
'src/core/lib/surface/lame_client.h', |
||||
'src/core/lib/surface/server.h', |
||||
'src/core/lib/transport/byte_stream.h', |
||||
'src/core/lib/transport/connectivity_state.h', |
||||
'src/core/lib/transport/metadata.h', |
||||
'src/core/lib/transport/metadata_batch.h', |
||||
'src/core/lib/transport/static_metadata.h', |
||||
'src/core/lib/transport/transport.h', |
||||
'src/core/lib/transport/transport_impl.h', |
||||
'src/core/ext/transport/chttp2/transport/bin_decoder.h', |
||||
'src/core/ext/transport/chttp2/transport/bin_encoder.h', |
||||
'src/core/ext/transport/chttp2/transport/chttp2_transport.h', |
||||
'src/core/ext/transport/chttp2/transport/frame.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_data.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_goaway.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_ping.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_rst_stream.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_settings.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_window_update.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_encoder.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_parser.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_table.h', |
||||
'src/core/ext/transport/chttp2/transport/http2_errors.h', |
||||
'src/core/ext/transport/chttp2/transport/huffsyms.h', |
||||
'src/core/ext/transport/chttp2/transport/incoming_metadata.h', |
||||
'src/core/ext/transport/chttp2/transport/internal.h', |
||||
'src/core/ext/transport/chttp2/transport/status_conversion.h', |
||||
'src/core/ext/transport/chttp2/transport/stream_map.h', |
||||
'src/core/ext/transport/chttp2/transport/timeout_encoding.h', |
||||
'src/core/ext/transport/chttp2/transport/varint.h', |
||||
'src/core/ext/transport/chttp2/alpn/alpn.h', |
||||
'src/core/lib/security/context/security_context.h', |
||||
'src/core/lib/security/credentials/composite/composite_credentials.h', |
||||
'src/core/lib/security/credentials/credentials.h', |
||||
'src/core/lib/security/credentials/fake/fake_credentials.h', |
||||
'src/core/lib/security/credentials/google_default/google_default_credentials.h', |
||||
'src/core/lib/security/credentials/iam/iam_credentials.h', |
||||
'src/core/lib/security/credentials/jwt/json_token.h', |
||||
'src/core/lib/security/credentials/jwt/jwt_credentials.h', |
||||
'src/core/lib/security/credentials/jwt/jwt_verifier.h', |
||||
'src/core/lib/security/credentials/oauth2/oauth2_credentials.h', |
||||
'src/core/lib/security/credentials/plugin/plugin_credentials.h', |
||||
'src/core/lib/security/credentials/ssl/ssl_credentials.h', |
||||
'src/core/lib/security/transport/auth_filters.h', |
||||
'src/core/lib/security/transport/handshake.h', |
||||
'src/core/lib/security/transport/secure_endpoint.h', |
||||
'src/core/lib/security/transport/security_connector.h', |
||||
'src/core/lib/security/transport/tsi_error.h', |
||||
'src/core/lib/security/util/b64.h', |
||||
'src/core/lib/security/util/json_util.h', |
||||
'src/core/lib/tsi/fake_transport_security.h', |
||||
'src/core/lib/tsi/ssl_transport_security.h', |
||||
'src/core/lib/tsi/ssl_types.h', |
||||
'src/core/lib/tsi/transport_security.h', |
||||
'src/core/lib/tsi/transport_security_interface.h', |
||||
'src/core/ext/client_config/client_channel.h', |
||||
'src/core/ext/client_config/client_channel_factory.h', |
||||
'src/core/ext/client_config/client_config.h', |
||||
'src/core/ext/client_config/connector.h', |
||||
'src/core/ext/client_config/initial_connect_string.h', |
||||
'src/core/ext/client_config/lb_policy.h', |
||||
'src/core/ext/client_config/lb_policy_factory.h', |
||||
'src/core/ext/client_config/lb_policy_registry.h', |
||||
'src/core/ext/client_config/parse_address.h', |
||||
'src/core/ext/client_config/resolver.h', |
||||
'src/core/ext/client_config/resolver_factory.h', |
||||
'src/core/ext/client_config/resolver_registry.h', |
||||
'src/core/ext/client_config/subchannel.h', |
||||
'src/core/ext/client_config/subchannel_call_holder.h', |
||||
'src/core/ext/client_config/subchannel_index.h', |
||||
'src/core/ext/client_config/uri_parser.h', |
||||
'src/core/ext/lb_policy/grpclb/load_balancer_api.h', |
||||
'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h', |
||||
'third_party/nanopb/pb.h', |
||||
'third_party/nanopb/pb_common.h', |
||||
'third_party/nanopb/pb_decode.h', |
||||
'third_party/nanopb/pb_encode.h', |
||||
'src/core/ext/load_reporting/load_reporting.h', |
||||
'src/core/ext/load_reporting/load_reporting_filter.h', |
||||
'src/core/ext/census/aggregation.h', |
||||
'src/core/ext/census/base_resources.h', |
||||
'src/core/ext/census/census_interface.h', |
||||
'src/core/ext/census/census_rpc_stats.h', |
||||
'src/core/ext/census/gen/census.pb.h', |
||||
'src/core/ext/census/grpc_filter.h', |
||||
'src/core/ext/census/mlog.h', |
||||
'src/core/ext/census/resource.h', |
||||
'src/core/ext/census/rpc_metric_id.h' |
||||
end |
||||
|
||||
s.subspec 'Cronet-Interface' do |ss| |
||||
ss.header_mappings_dir = 'include/grpc' |
||||
ss.source_files = 'include/grpc/grpc_cronet.h' |
||||
end |
||||
|
||||
s.subspec 'Cronet-Tests' do |ss| |
||||
ss.header_mappings_dir = '.' |
||||
|
||||
ss.source_files = 'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c', |
||||
'src/core/ext/transport/cronet/transport/cronet_transport.c', |
||||
'test/core/end2end/cq_verifier.{c,h}', |
||||
'test/core/end2end/end2end_tests.{c,h}', |
||||
'test/core/end2end/tests/*.{c,h}', |
||||
'test/core/end2end/data/*.{c,h}', |
||||
'test/core/util/test_config.{c,h}', |
||||
'test/core/util/port.h', |
||||
'test/core/util/port_posix.c', |
||||
'test/core/util/port_server_client.{c,h}' |
||||
|
||||
ss.dependency 'CronetFramework' |
||||
end |
||||
end |
@ -0,0 +1,69 @@ |
||||
# GRPC CocoaPods podspec |
||||
# This file has been automatically generated from a template file. |
||||
# Please look at the templates directory instead. |
||||
# This file can be regenerated from the template by running |
||||
# tools/buildgen/generate_projects.sh |
||||
|
||||
# Copyright 2015, Google Inc. |
||||
# All rights reserved. |
||||
# |
||||
# 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. |
||||
|
||||
|
||||
Pod::Spec.new do |s| |
||||
s.name = 'gRPC-ProtoRPC' |
||||
version = '0.14.0' |
||||
s.version = version |
||||
s.summary = 'RPC library for Protocol Buffers, based on gRPC' |
||||
s.homepage = 'http://www.grpc.io' |
||||
s.license = 'New BSD' |
||||
s.authors = { 'The gRPC contributors' => 'grpc-packages@google.com' } |
||||
|
||||
s.source = { |
||||
:git => 'https://github.com/grpc/grpc.git', |
||||
:tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}", |
||||
} |
||||
|
||||
s.ios.deployment_target = '7.1' |
||||
s.osx.deployment_target = '10.9' |
||||
|
||||
name = 'ProtoRPC' |
||||
s.module_name = name |
||||
s.header_dir = name |
||||
|
||||
src_dir = 'src/objective-c/ProtoRPC' |
||||
s.source_files = "#{src_dir}/*.{h,m}" |
||||
s.header_mappings_dir = "#{src_dir}" |
||||
|
||||
s.dependency 'gRPC', version |
||||
s.dependency 'gRPC-RxLibrary', version |
||||
s.dependency 'Protobuf', '~> 3.0.0-beta-3.1' |
||||
# This is needed by all pods that depend on Protobuf: |
||||
s.pod_target_xcconfig = { |
||||
'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1', |
||||
} |
||||
end |
@ -0,0 +1,62 @@ |
||||
# GRPC CocoaPods podspec |
||||
# This file has been automatically generated from a template file. |
||||
# Please look at the templates directory instead. |
||||
# This file can be regenerated from the template by running |
||||
# tools/buildgen/generate_projects.sh |
||||
|
||||
# Copyright 2015, Google Inc. |
||||
# All rights reserved. |
||||
# |
||||
# 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. |
||||
|
||||
|
||||
Pod::Spec.new do |s| |
||||
s.name = 'gRPC-RxLibrary' |
||||
version = '0.14.0' |
||||
s.version = version |
||||
s.summary = 'Reactive Extensions library for iOS/OSX.' |
||||
s.homepage = 'http://www.grpc.io' |
||||
s.license = 'New BSD' |
||||
s.authors = { 'The gRPC contributors' => 'grpc-packages@google.com' } |
||||
|
||||
s.source = { |
||||
:git => 'https://github.com/grpc/grpc.git', |
||||
:tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}", |
||||
} |
||||
|
||||
s.ios.deployment_target = '7.1' |
||||
s.osx.deployment_target = '10.9' |
||||
|
||||
name = 'RxLibrary' |
||||
s.module_name = name |
||||
s.header_dir = name |
||||
|
||||
src_dir = 'src/objective-c/RxLibrary' |
||||
s.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}" |
||||
s.private_header_files = "#{src_dir}/private/*.h" |
||||
s.header_mappings_dir = "#{src_dir}" |
||||
end |
@ -0,0 +1,69 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2015, Google Inc. |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are |
||||
* met: |
||||
* |
||||
* * Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* * Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following disclaimer |
||||
* in the documentation and/or other materials provided with the |
||||
* distribution. |
||||
* * Neither the name of Google Inc. nor the names of its |
||||
* contributors may be used to endorse or promote products derived from |
||||
* this software without specific prior written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
* |
||||
*/ |
||||
|
||||
#ifndef GRPCXX_EXT_PROTO_SERVER_REFLECTION_PLUGIN_H |
||||
#define GRPCXX_EXT_PROTO_SERVER_REFLECTION_PLUGIN_H |
||||
|
||||
#include <grpc++/impl/server_builder_plugin.h> |
||||
#include <grpc++/support/config.h> |
||||
|
||||
namespace grpc { |
||||
class ServerInitializer; |
||||
class ProtoServerReflection; |
||||
} // namespace grpc
|
||||
|
||||
namespace grpc { |
||||
namespace reflection { |
||||
|
||||
class ProtoServerReflectionPlugin : public ::grpc::ServerBuilderPlugin { |
||||
public: |
||||
ProtoServerReflectionPlugin(); |
||||
::grpc::string name() GRPC_OVERRIDE; |
||||
void InitServer(::grpc::ServerInitializer* si) GRPC_OVERRIDE; |
||||
void Finish(::grpc::ServerInitializer* si) GRPC_OVERRIDE; |
||||
void ChangeArguments(const ::grpc::string& name, void* value) GRPC_OVERRIDE; |
||||
bool has_async_methods() const GRPC_OVERRIDE; |
||||
bool has_sync_methods() const GRPC_OVERRIDE; |
||||
|
||||
private: |
||||
std::shared_ptr<grpc::ProtoServerReflection> reflection_service_; |
||||
}; |
||||
|
||||
// Add proto reflection plugin to ServerBuilder. This function should be called
|
||||
// at the static initialization time.
|
||||
void InitProtoReflectionServerBuilderPlugin(); |
||||
|
||||
} // namespace reflection
|
||||
} // namespace grpc
|
||||
|
||||
#endif // GRPCXX_EXT_PROTO_SERVER_REFLECTION_PLUGIN_H
|
@ -0,0 +1,184 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2015, Google Inc. |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are |
||||
* met: |
||||
* |
||||
* * Redistributions of source code must retain the above copyright |
||||
* notice, this list of conditions and the following disclaimer. |
||||
* * Redistributions in binary form must reproduce the above |
||||
* copyright notice, this list of conditions and the following disclaimer |
||||
* in the documentation and/or other materials provided with the |
||||
* distribution. |
||||
* * Neither the name of Google Inc. nor the names of its |
||||
* contributors may be used to endorse or promote products derived from |
||||
* this software without specific prior written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
* |
||||
*/ |
||||
|
||||
|
||||
// Generated by the gRPC protobuf plugin.
|
||||
// If you make any local change, they will be lost.
|
||||
// source: reflection.proto
|
||||
// Original file comments:
|
||||
// Copyright 2016, 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.
|
||||
//
|
||||
// Service exported by server reflection
|
||||
//
|
||||
#ifndef GRPC_reflection_2eproto__INCLUDED |
||||
#define GRPC_reflection_2eproto__INCLUDED |
||||
|
||||
#include <grpc++/ext/reflection.pb.h> |
||||
|
||||
#include <grpc++/impl/codegen/async_stream.h> |
||||
#include <grpc++/impl/codegen/async_unary_call.h> |
||||
#include <grpc++/impl/codegen/proto_utils.h> |
||||
#include <grpc++/impl/codegen/rpc_method.h> |
||||
#include <grpc++/impl/codegen/service_type.h> |
||||
#include <grpc++/impl/codegen/status.h> |
||||
#include <grpc++/impl/codegen/stub_options.h> |
||||
#include <grpc++/impl/codegen/sync_stream.h> |
||||
|
||||
namespace grpc { |
||||
class CompletionQueue; |
||||
class Channel; |
||||
class RpcService; |
||||
class ServerCompletionQueue; |
||||
class ServerContext; |
||||
} // namespace grpc
|
||||
|
||||
namespace grpc { |
||||
namespace reflection { |
||||
namespace v1alpha { |
||||
|
||||
class ServerReflection GRPC_FINAL { |
||||
public: |
||||
class StubInterface { |
||||
public: |
||||
virtual ~StubInterface() {} |
||||
// The reflection service is structured as a bidirectional stream, ensuring
|
||||
// all related requests go to a single server.
|
||||
std::unique_ptr< ::grpc::ClientReaderWriterInterface< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>> ServerReflectionInfo(::grpc::ClientContext* context) { |
||||
return std::unique_ptr< ::grpc::ClientReaderWriterInterface< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>>(ServerReflectionInfoRaw(context)); |
||||
} |
||||
std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>> AsyncServerReflectionInfo(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) { |
||||
return std::unique_ptr< ::grpc::ClientAsyncReaderWriterInterface< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>>(AsyncServerReflectionInfoRaw(context, cq, tag)); |
||||
} |
||||
private: |
||||
virtual ::grpc::ClientReaderWriterInterface< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>* ServerReflectionInfoRaw(::grpc::ClientContext* context) = 0; |
||||
virtual ::grpc::ClientAsyncReaderWriterInterface< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>* AsyncServerReflectionInfoRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) = 0; |
||||
}; |
||||
class Stub GRPC_FINAL : public StubInterface { |
||||
public: |
||||
Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel); |
||||
std::unique_ptr< ::grpc::ClientReaderWriter< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>> ServerReflectionInfo(::grpc::ClientContext* context) { |
||||
return std::unique_ptr< ::grpc::ClientReaderWriter< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>>(ServerReflectionInfoRaw(context)); |
||||
} |
||||
std::unique_ptr< ::grpc::ClientAsyncReaderWriter< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>> AsyncServerReflectionInfo(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) { |
||||
return std::unique_ptr< ::grpc::ClientAsyncReaderWriter< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>>(AsyncServerReflectionInfoRaw(context, cq, tag)); |
||||
} |
||||
|
||||
private: |
||||
std::shared_ptr< ::grpc::ChannelInterface> channel_; |
||||
::grpc::ClientReaderWriter< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>* ServerReflectionInfoRaw(::grpc::ClientContext* context) GRPC_OVERRIDE; |
||||
::grpc::ClientAsyncReaderWriter< ::grpc::reflection::v1alpha::ServerReflectionRequest, ::grpc::reflection::v1alpha::ServerReflectionResponse>* AsyncServerReflectionInfoRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) GRPC_OVERRIDE; |
||||
const ::grpc::RpcMethod rpcmethod_ServerReflectionInfo_; |
||||
}; |
||||
static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions()); |
||||
|
||||
class Service : public ::grpc::Service { |
||||
public: |
||||
Service(); |
||||
virtual ~Service(); |
||||
// The reflection service is structured as a bidirectional stream, ensuring
|
||||
// all related requests go to a single server.
|
||||
virtual ::grpc::Status ServerReflectionInfo(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::grpc::reflection::v1alpha::ServerReflectionResponse, ::grpc::reflection::v1alpha::ServerReflectionRequest>* stream); |
||||
}; |
||||
template <class BaseClass> |
||||
class WithAsyncMethod_ServerReflectionInfo : public BaseClass { |
||||
private: |
||||
void BaseClassMustBeDerivedFromService(const Service *service) {} |
||||
public: |
||||
WithAsyncMethod_ServerReflectionInfo() { |
||||
::grpc::Service::MarkMethodAsync(0); |
||||
} |
||||
~WithAsyncMethod_ServerReflectionInfo() GRPC_OVERRIDE { |
||||
BaseClassMustBeDerivedFromService(this); |
||||
} |
||||
// disable synchronous version of this method
|
||||
::grpc::Status ServerReflectionInfo(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::grpc::reflection::v1alpha::ServerReflectionResponse, ::grpc::reflection::v1alpha::ServerReflectionRequest>* stream) GRPC_FINAL GRPC_OVERRIDE { |
||||
abort(); |
||||
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); |
||||
} |
||||
void RequestServerReflectionInfo(::grpc::ServerContext* context, ::grpc::ServerAsyncReaderWriter< ::grpc::reflection::v1alpha::ServerReflectionResponse, ::grpc::reflection::v1alpha::ServerReflectionRequest>* stream, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { |
||||
::grpc::Service::RequestAsyncBidiStreaming(0, context, stream, new_call_cq, notification_cq, tag); |
||||
} |
||||
}; |
||||
typedef WithAsyncMethod_ServerReflectionInfo<Service > AsyncService; |
||||
template <class BaseClass> |
||||
class WithGenericMethod_ServerReflectionInfo : public BaseClass { |
||||
private: |
||||
void BaseClassMustBeDerivedFromService(const Service *service) {} |
||||
public: |
||||
WithGenericMethod_ServerReflectionInfo() { |
||||
::grpc::Service::MarkMethodGeneric(0); |
||||
} |
||||
~WithGenericMethod_ServerReflectionInfo() GRPC_OVERRIDE { |
||||
BaseClassMustBeDerivedFromService(this); |
||||
} |
||||
// disable synchronous version of this method
|
||||
::grpc::Status ServerReflectionInfo(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::grpc::reflection::v1alpha::ServerReflectionResponse, ::grpc::reflection::v1alpha::ServerReflectionRequest>* stream) GRPC_FINAL GRPC_OVERRIDE { |
||||
abort(); |
||||
return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); |
||||
} |
||||
}; |
||||
}; |
||||
|
||||
} // namespace v1alpha
|
||||
} // namespace reflection
|
||||
} // namespace grpc
|
||||
|
||||
|
||||
#endif // GRPC_reflection_2eproto__INCLUDED
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue