mirror of https://github.com/grpc/grpc.git
commit
7c3ba12813
754 changed files with 20776 additions and 21878 deletions
File diff suppressed because it is too large
Load Diff
@ -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)), |
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 120 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> |
@ -0,0 +1,765 @@ |
||||
# 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', |
||||
} |
||||
|
||||
# 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/grpclb.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/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/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/grpclb.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/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/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/grpclb.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/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/rpc_metric_id.h' |
||||
end |
||||
end |
@ -1,152 +0,0 @@ |
||||
/*
|
||||
* |
||||
* 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. |
||||
* |
||||
*/ |
||||
|
||||
#ifndef GRPCXX_IMPL_CODEGEN_IMPL_STATUS_CODE_ENUM_H |
||||
#define GRPCXX_IMPL_CODEGEN_IMPL_STATUS_CODE_ENUM_H |
||||
|
||||
namespace grpc { |
||||
|
||||
enum StatusCode { |
||||
/// Not an error; returned on success.
|
||||
OK = 0, |
||||
|
||||
/// The operation was cancelled (typically by the caller).
|
||||
CANCELLED = 1, |
||||
|
||||
/// Unknown error. An example of where this error may be returned is if a
|
||||
/// Status value received from another address space belongs to an error-space
|
||||
/// that is not known in this address space. Also errors raised by APIs that
|
||||
/// do not return enough error information may be converted to this error.
|
||||
UNKNOWN = 2, |
||||
|
||||
/// Client specified an invalid argument. Note that this differs from
|
||||
/// FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments that are
|
||||
/// problematic regardless of the state of the system (e.g., a malformed file
|
||||
/// name).
|
||||
INVALID_ARGUMENT = 3, |
||||
|
||||
/// Deadline expired before operation could complete. For operations that
|
||||
/// change the state of the system, this error may be returned even if the
|
||||
/// operation has completed successfully. For example, a successful response
|
||||
/// from a server could have been delayed long enough for the deadline to
|
||||
/// expire.
|
||||
DEADLINE_EXCEEDED = 4, |
||||
|
||||
/// Some requested entity (e.g., file or directory) was not found.
|
||||
NOT_FOUND = 5, |
||||
|
||||
/// Some entity that we attempted to create (e.g., file or directory) already
|
||||
/// exists.
|
||||
ALREADY_EXISTS = 6, |
||||
|
||||
/// The caller does not have permission to execute the specified operation.
|
||||
/// PERMISSION_DENIED must not be used for rejections caused by exhausting
|
||||
/// some resource (use RESOURCE_EXHAUSTED instead for those errors).
|
||||
/// PERMISSION_DENIED must not be used if the caller can not be identified
|
||||
/// (use UNAUTHENTICATED instead for those errors).
|
||||
PERMISSION_DENIED = 7, |
||||
|
||||
/// The request does not have valid authentication credentials for the
|
||||
/// operation.
|
||||
UNAUTHENTICATED = 16, |
||||
|
||||
/// Some resource has been exhausted, perhaps a per-user quota, or perhaps the
|
||||
/// entire file system is out of space.
|
||||
RESOURCE_EXHAUSTED = 8, |
||||
|
||||
/// Operation was rejected because the system is not in a state required for
|
||||
/// the operation's execution. For example, directory to be deleted may be
|
||||
/// non-empty, an rmdir operation is applied to a non-directory, etc.
|
||||
///
|
||||
/// A litmus test that may help a service implementor in deciding
|
||||
/// between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:
|
||||
/// (a) Use UNAVAILABLE if the client can retry just the failing call.
|
||||
/// (b) Use ABORTED if the client should retry at a higher-level
|
||||
/// (e.g., restarting a read-modify-write sequence).
|
||||
/// (c) Use FAILED_PRECONDITION if the client should not retry until
|
||||
/// the system state has been explicitly fixed. E.g., if an "rmdir"
|
||||
/// fails because the directory is non-empty, FAILED_PRECONDITION
|
||||
/// should be returned since the client should not retry unless
|
||||
/// they have first fixed up the directory by deleting files from it.
|
||||
/// (d) Use FAILED_PRECONDITION if the client performs conditional
|
||||
/// REST Get/Update/Delete on a resource and the resource on the
|
||||
/// server does not match the condition. E.g., conflicting
|
||||
/// read-modify-write on the same resource.
|
||||
FAILED_PRECONDITION = 9, |
||||
|
||||
/// The operation was aborted, typically due to a concurrency issue like
|
||||
/// sequencer check failures, transaction aborts, etc.
|
||||
///
|
||||
/// See litmus test above for deciding between FAILED_PRECONDITION, ABORTED,
|
||||
/// and UNAVAILABLE.
|
||||
ABORTED = 10, |
||||
|
||||
/// Operation was attempted past the valid range. E.g., seeking or reading
|
||||
/// past end of file.
|
||||
///
|
||||
/// Unlike INVALID_ARGUMENT, this error indicates a problem that may be fixed
|
||||
/// if the system state changes. For example, a 32-bit file system will
|
||||
/// generate INVALID_ARGUMENT if asked to read at an offset that is not in the
|
||||
/// range [0,2^32-1], but it will generate OUT_OF_RANGE if asked to read from
|
||||
/// an offset past the current file size.
|
||||
///
|
||||
/// There is a fair bit of overlap between FAILED_PRECONDITION and
|
||||
/// OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific error)
|
||||
/// when it applies so that callers who are iterating through a space can
|
||||
/// easily look for an OUT_OF_RANGE error to detect when they are done.
|
||||
OUT_OF_RANGE = 11, |
||||
|
||||
/// Operation is not implemented or not supported/enabled in this service.
|
||||
UNIMPLEMENTED = 12, |
||||
|
||||
/// Internal errors. Means some invariants expected by underlying System has
|
||||
/// been broken. If you see one of these errors, Something is very broken.
|
||||
INTERNAL = 13, |
||||
|
||||
/// The service is currently unavailable. This is a most likely a transient
|
||||
/// condition and may be corrected by retrying with a backoff.
|
||||
///
|
||||
/// See litmus test above for deciding between FAILED_PRECONDITION, ABORTED,
|
||||
/// and UNAVAILABLE.
|
||||
UNAVAILABLE = 14, |
||||
|
||||
/// Unrecoverable data loss or corruption.
|
||||
DATA_LOSS = 15, |
||||
|
||||
/// Force users to include a default branch:
|
||||
DO_NOT_USE = -1 |
||||
}; |
||||
|
||||
} // namespace grpc
|
||||
|
||||
#endif // GRPCXX_IMPL_CODEGEN_IMPL_STATUS_CODE_ENUM_H
|
@ -0,0 +1,5 @@ |
||||
framework module grpc { |
||||
umbrella header "grpc.h" |
||||
export * |
||||
module * { export * } |
||||
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue