Merge branch 'master' of https://github.com/grpc/grpc into import
This commit is contained in:
commit
eb36b8ac77
|
|
@ -0,0 +1,31 @@
|
|||
Please answer these questions before submitting your issue.
|
||||
|
||||
### Should this be an issue in the gRPC issue tracker?
|
||||
|
||||
Create new issues for bugs and feature requests. An issue needs to be actionable. General gRPC discussions and usage questions belong to:
|
||||
- [grpc.io mailing list](https://groups.google.com/forum/#!forum/grpc-io)
|
||||
- [StackOverflow, with `grpc` tag](http://stackoverflow.com/questions/tagged/grpc)
|
||||
|
||||
*Please don't double post your questions in more locations, we are monitoring both channels and the time spent de-duplicating questions can is better spent answering more user questions.*
|
||||
|
||||
### What version of gRPC and what language are you using?
|
||||
|
||||
|
||||
### What operating system (Linux, Windows, …) and version?
|
||||
|
||||
|
||||
### What runtime / compiler are you using (e.g. python version or version of gcc)
|
||||
|
||||
|
||||
### What did you do?
|
||||
If possible, provide a recipe for reproducing the error. Try being specific and include code snippets if helpful.
|
||||
|
||||
### What did you expect to see?
|
||||
|
||||
|
||||
### What did you see instead?
|
||||
|
||||
Make sure you include information that can help us debug (full error message, exception listing, stack trace, logs).
|
||||
|
||||
### Anything else we should know about your project / environment?
|
||||
|
||||
|
|
@ -118,3 +118,13 @@ gdb.txt
|
|||
|
||||
# ctags file
|
||||
tags
|
||||
|
||||
# perf data
|
||||
perf.data
|
||||
perf.data.old
|
||||
|
||||
# bm_diff
|
||||
bm_diff_new/
|
||||
bm_diff_old/
|
||||
bm_*.json
|
||||
|
||||
|
|
|
|||
|
|
@ -14,9 +14,6 @@
|
|||
[submodule "third_party/boringssl"]
|
||||
path = third_party/boringssl
|
||||
url = https://github.com/google/boringssl.git
|
||||
[submodule "third_party/thrift"]
|
||||
path = third_party/thrift
|
||||
url = https://github.com/apache/thrift.git
|
||||
[submodule "third_party/benchmark"]
|
||||
path = third_party/benchmark
|
||||
url = https://github.com/google/benchmark
|
||||
|
|
|
|||
375
BUILD
375
BUILD
|
|
@ -41,13 +41,19 @@ package(
|
|||
],
|
||||
)
|
||||
|
||||
load("//bazel:grpc_build_system.bzl", "grpc_cc_library", "grpc_proto_plugin", "grpc_generate_one_off_targets")
|
||||
load(
|
||||
"//bazel:grpc_build_system.bzl",
|
||||
"grpc_cc_library",
|
||||
"grpc_proto_plugin",
|
||||
"grpc_cc_libraries",
|
||||
)
|
||||
|
||||
g_stands_for = "green"
|
||||
# This should be updated along with build.yaml
|
||||
g_stands_for = "gregarious"
|
||||
|
||||
core_version = "3.0.0-dev"
|
||||
|
||||
version = "1.2.0"
|
||||
version = "1.4.0-dev"
|
||||
|
||||
grpc_cc_library(
|
||||
name = "gpr",
|
||||
|
|
@ -58,28 +64,46 @@ grpc_cc_library(
|
|||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc",
|
||||
grpc_cc_libraries(
|
||||
srcs = [
|
||||
"src/core/lib/surface/init.c",
|
||||
"src/core/plugin_registry/grpc_plugin_registry.c",
|
||||
],
|
||||
additional_dep_list = [
|
||||
[
|
||||
"grpc_secure",
|
||||
"grpc_resolver_dns_ares",
|
||||
"grpc_lb_policy_grpclb_secure",
|
||||
"grpc_transport_chttp2_client_secure",
|
||||
"grpc_transport_chttp2_server_secure",
|
||||
],
|
||||
[],
|
||||
],
|
||||
additional_src_list = [
|
||||
[
|
||||
"src/core/plugin_registry/grpc_plugin_registry.c",
|
||||
],
|
||||
[
|
||||
"src/core/lib/surface/init_unsecure.c",
|
||||
"src/core/plugin_registry/grpc_unsecure_plugin_registry.c",
|
||||
],
|
||||
],
|
||||
language = "c",
|
||||
name_list = [
|
||||
"grpc",
|
||||
"grpc_unsecure",
|
||||
],
|
||||
standalone = True,
|
||||
deps = [
|
||||
"census",
|
||||
"grpc_base",
|
||||
"grpc_lb_policy_grpclb_secure",
|
||||
"grpc_deadline_filter",
|
||||
"grpc_lb_policy_pick_first",
|
||||
"grpc_lb_policy_round_robin",
|
||||
"grpc_load_reporting",
|
||||
"grpc_resolver_dns_native",
|
||||
"grpc_resolver_sockaddr",
|
||||
"grpc_secure",
|
||||
"grpc_transport_chttp2_client_insecure",
|
||||
"grpc_transport_chttp2_client_secure",
|
||||
"grpc_transport_chttp2_server_insecure",
|
||||
"grpc_transport_chttp2_server_secure",
|
||||
],
|
||||
)
|
||||
|
||||
|
|
@ -92,34 +116,12 @@ grpc_cc_library(
|
|||
language = "c",
|
||||
deps = [
|
||||
"grpc_base",
|
||||
"grpc_http_filters",
|
||||
"grpc_transport_chttp2_client_secure",
|
||||
"grpc_transport_cronet_client_secure",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc_unsecure",
|
||||
srcs = [
|
||||
"src/core/lib/surface/init.c",
|
||||
"src/core/lib/surface/init_unsecure.c",
|
||||
"src/core/plugin_registry/grpc_unsecure_plugin_registry.c",
|
||||
],
|
||||
language = "c",
|
||||
standalone = True,
|
||||
deps = [
|
||||
"census",
|
||||
"grpc_base",
|
||||
"grpc_lb_policy_grpclb",
|
||||
"grpc_lb_policy_pick_first",
|
||||
"grpc_lb_policy_round_robin",
|
||||
"grpc_load_reporting",
|
||||
"grpc_resolver_dns_native",
|
||||
"grpc_resolver_sockaddr",
|
||||
"grpc_transport_chttp2_client_insecure",
|
||||
"grpc_transport_chttp2_server_insecure",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc++",
|
||||
srcs = [
|
||||
|
|
@ -160,13 +162,29 @@ grpc_cc_library(
|
|||
standalone = True,
|
||||
deps = [
|
||||
"gpr",
|
||||
"grpc++_base",
|
||||
"grpc++_base_unsecure",
|
||||
"grpc++_codegen_base",
|
||||
"grpc++_codegen_base_src",
|
||||
"grpc_unsecure",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc++_error_details",
|
||||
srcs = [
|
||||
"src/cpp/util/error_details.cc",
|
||||
],
|
||||
hdrs = [
|
||||
"include/grpc++/support/error_details.h",
|
||||
],
|
||||
language = "c++",
|
||||
standalone = True,
|
||||
deps = [
|
||||
"grpc++",
|
||||
"//src/proto/grpc/status:status_proto",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc_plugin_support",
|
||||
srcs = [
|
||||
|
|
@ -191,11 +209,15 @@ grpc_cc_library(
|
|||
"src/compiler/objective_c_generator_helpers.h",
|
||||
"src/compiler/php_generator.h",
|
||||
"src/compiler/php_generator_helpers.h",
|
||||
"src/compiler/protobuf_plugin.h",
|
||||
"src/compiler/python_generator.h",
|
||||
"src/compiler/python_generator_helpers.h",
|
||||
"src/compiler/python_private_generator.h",
|
||||
"src/compiler/ruby_generator.h",
|
||||
"src/compiler/ruby_generator_helpers-inl.h",
|
||||
"src/compiler/ruby_generator_map-inl.h",
|
||||
"src/compiler/ruby_generator_string-inl.h",
|
||||
"src/compiler/schema_interface.h",
|
||||
],
|
||||
external_deps = [
|
||||
"protobuf_clib",
|
||||
|
|
@ -362,9 +384,13 @@ grpc_cc_library(
|
|||
hdrs = [
|
||||
"src/core/lib/profiling/timers.h",
|
||||
"src/core/lib/support/arena.h",
|
||||
"src/core/lib/support/atomic.h",
|
||||
"src/core/lib/support/atomic_with_atm.h",
|
||||
"src/core/lib/support/atomic_with_std.h",
|
||||
"src/core/lib/support/backoff.h",
|
||||
"src/core/lib/support/block_annotate.h",
|
||||
"src/core/lib/support/env.h",
|
||||
"src/core/lib/support/memory.h",
|
||||
"src/core/lib/support/mpscq.h",
|
||||
"src/core/lib/support/murmur_hash.h",
|
||||
"src/core/lib/support/spinlock.h",
|
||||
|
|
@ -427,25 +453,25 @@ grpc_cc_library(
|
|||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc_trace",
|
||||
srcs = ["src/core/lib/debug/trace.c"],
|
||||
hdrs = ["src/core/lib/debug/trace.h"],
|
||||
deps = [":gpr"],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc_base",
|
||||
srcs = [
|
||||
"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/deadline_filter.c",
|
||||
"src/core/lib/channel/handshaker.c",
|
||||
"src/core/lib/channel/handshaker_factory.c",
|
||||
"src/core/lib/channel/handshaker_registry.c",
|
||||
"src/core/lib/channel/http_client_filter.c",
|
||||
"src/core/lib/channel/http_server_filter.c",
|
||||
"src/core/lib/channel/max_age_filter.c",
|
||||
"src/core/lib/channel/message_size_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",
|
||||
|
|
@ -456,7 +482,12 @@ grpc_cc_library(
|
|||
"src/core/lib/iomgr/endpoint_pair_uv.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_epoll1_linux.c",
|
||||
"src/core/lib/iomgr/ev_epollsig_linux.c",
|
||||
"src/core/lib/iomgr/ev_epollex_linux.c",
|
||||
"src/core/lib/iomgr/is_epollexclusive_available.c",
|
||||
"src/core/lib/iomgr/ev_epoll_thread_pool_linux.c",
|
||||
"src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c",
|
||||
"src/core/lib/iomgr/ev_poll_posix.c",
|
||||
"src/core/lib/iomgr/ev_posix.c",
|
||||
"src/core/lib/iomgr/exec_ctx.c",
|
||||
|
|
@ -467,6 +498,7 @@ grpc_cc_library(
|
|||
"src/core/lib/iomgr/iomgr_uv.c",
|
||||
"src/core/lib/iomgr/iomgr_windows.c",
|
||||
"src/core/lib/iomgr/load_file.c",
|
||||
"src/core/lib/iomgr/lockfree_event.c",
|
||||
"src/core/lib/iomgr/network_status_tracker.c",
|
||||
"src/core/lib/iomgr/polling_entity.c",
|
||||
"src/core/lib/iomgr/pollset_set_uv.c",
|
||||
|
|
@ -500,6 +532,7 @@ grpc_cc_library(
|
|||
"src/core/lib/iomgr/tcp_windows.c",
|
||||
"src/core/lib/iomgr/time_averaged_stats.c",
|
||||
"src/core/lib/iomgr/timer_generic.c",
|
||||
"src/core/lib/iomgr/timer_manager.c",
|
||||
"src/core/lib/iomgr/timer_heap.c",
|
||||
"src/core/lib/iomgr/timer_uv.c",
|
||||
"src/core/lib/iomgr/udp_server.c",
|
||||
|
|
@ -537,7 +570,7 @@ grpc_cc_library(
|
|||
"src/core/lib/surface/completion_queue.c",
|
||||
"src/core/lib/surface/completion_queue_factory.c",
|
||||
"src/core/lib/surface/event_string.c",
|
||||
"src/core/lib/surface/lame_client.c",
|
||||
"src/core/lib/surface/lame_client.cc",
|
||||
"src/core/lib/surface/metadata_array.c",
|
||||
"src/core/lib/surface/server.c",
|
||||
"src/core/lib/surface/validate_metadata.c",
|
||||
|
|
@ -560,20 +593,13 @@ grpc_cc_library(
|
|||
"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/deadline_filter.h",
|
||||
"src/core/lib/channel/handshaker.h",
|
||||
"src/core/lib/channel/handshaker_factory.h",
|
||||
"src/core/lib/channel/handshaker_registry.h",
|
||||
"src/core/lib/channel/http_client_filter.h",
|
||||
"src/core/lib/channel/http_server_filter.h",
|
||||
"src/core/lib/channel/max_age_filter.h",
|
||||
"src/core/lib/channel/message_size_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",
|
||||
|
|
@ -583,7 +609,13 @@ grpc_cc_library(
|
|||
"src/core/lib/iomgr/endpoint_pair.h",
|
||||
"src/core/lib/iomgr/error.h",
|
||||
"src/core/lib/iomgr/error_internal.h",
|
||||
"src/core/lib/iomgr/ev_epoll_linux.h",
|
||||
"src/core/lib/iomgr/ev_epoll1_linux.h",
|
||||
"src/core/lib/iomgr/ev_epollsig_linux.h",
|
||||
"src/core/lib/iomgr/ev_epollex_linux.h",
|
||||
"src/core/lib/iomgr/is_epollexclusive_available.h",
|
||||
"src/core/lib/iomgr/sys_epoll_wrapper.h",
|
||||
"src/core/lib/iomgr/ev_epoll_thread_pool_linux.h",
|
||||
"src/core/lib/iomgr/ev_epoll_limited_pollers_linux.h",
|
||||
"src/core/lib/iomgr/ev_poll_posix.h",
|
||||
"src/core/lib/iomgr/ev_posix.h",
|
||||
"src/core/lib/iomgr/exec_ctx.h",
|
||||
|
|
@ -593,6 +625,7 @@ grpc_cc_library(
|
|||
"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/lockfree_event.h",
|
||||
"src/core/lib/iomgr/network_status_tracker.h",
|
||||
"src/core/lib/iomgr/polling_entity.h",
|
||||
"src/core/lib/iomgr/pollset.h",
|
||||
|
|
@ -622,6 +655,7 @@ grpc_cc_library(
|
|||
"src/core/lib/iomgr/time_averaged_stats.h",
|
||||
"src/core/lib/iomgr/timer.h",
|
||||
"src/core/lib/iomgr/timer_generic.h",
|
||||
"src/core/lib/iomgr/timer_manager.h",
|
||||
"src/core/lib/iomgr/timer_heap.h",
|
||||
"src/core/lib/iomgr/timer_uv.h",
|
||||
"src/core/lib/iomgr/udp_server.h",
|
||||
|
|
@ -688,52 +722,115 @@ grpc_cc_library(
|
|||
deps = [
|
||||
"gpr_base",
|
||||
"grpc_codegen",
|
||||
"grpc_trace",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc_client_channel",
|
||||
srcs = [
|
||||
"src/core/ext/client_channel/channel_connectivity.c",
|
||||
"src/core/ext/client_channel/client_channel.c",
|
||||
"src/core/ext/client_channel/client_channel_factory.c",
|
||||
"src/core/ext/client_channel/client_channel_plugin.c",
|
||||
"src/core/ext/client_channel/connector.c",
|
||||
"src/core/ext/client_channel/http_connect_handshaker.c",
|
||||
"src/core/ext/client_channel/http_proxy.c",
|
||||
"src/core/ext/client_channel/lb_policy.c",
|
||||
"src/core/ext/client_channel/lb_policy_factory.c",
|
||||
"src/core/ext/client_channel/lb_policy_registry.c",
|
||||
"src/core/ext/client_channel/parse_address.c",
|
||||
"src/core/ext/client_channel/proxy_mapper.c",
|
||||
"src/core/ext/client_channel/proxy_mapper_registry.c",
|
||||
"src/core/ext/client_channel/resolver.c",
|
||||
"src/core/ext/client_channel/resolver_factory.c",
|
||||
"src/core/ext/client_channel/resolver_registry.c",
|
||||
"src/core/ext/client_channel/retry_throttle.c",
|
||||
"src/core/ext/client_channel/subchannel.c",
|
||||
"src/core/ext/client_channel/subchannel_index.c",
|
||||
"src/core/ext/client_channel/uri_parser.c",
|
||||
"src/core/ext/filters/client_channel/channel_connectivity.c",
|
||||
"src/core/ext/filters/client_channel/client_channel.c",
|
||||
"src/core/ext/filters/client_channel/client_channel_factory.c",
|
||||
"src/core/ext/filters/client_channel/client_channel_plugin.c",
|
||||
"src/core/ext/filters/client_channel/connector.c",
|
||||
"src/core/ext/filters/client_channel/http_connect_handshaker.c",
|
||||
"src/core/ext/filters/client_channel/http_proxy.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy_factory.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy_registry.c",
|
||||
"src/core/ext/filters/client_channel/parse_address.c",
|
||||
"src/core/ext/filters/client_channel/proxy_mapper.c",
|
||||
"src/core/ext/filters/client_channel/proxy_mapper_registry.c",
|
||||
"src/core/ext/filters/client_channel/resolver.c",
|
||||
"src/core/ext/filters/client_channel/resolver_factory.c",
|
||||
"src/core/ext/filters/client_channel/resolver_registry.c",
|
||||
"src/core/ext/filters/client_channel/retry_throttle.c",
|
||||
"src/core/ext/filters/client_channel/subchannel.c",
|
||||
"src/core/ext/filters/client_channel/subchannel_index.c",
|
||||
"src/core/ext/filters/client_channel/uri_parser.c",
|
||||
],
|
||||
hdrs = [
|
||||
"src/core/ext/client_channel/client_channel.h",
|
||||
"src/core/ext/client_channel/client_channel_factory.h",
|
||||
"src/core/ext/client_channel/connector.h",
|
||||
"src/core/ext/client_channel/http_connect_handshaker.h",
|
||||
"src/core/ext/client_channel/http_proxy.h",
|
||||
"src/core/ext/client_channel/lb_policy.h",
|
||||
"src/core/ext/client_channel/lb_policy_factory.h",
|
||||
"src/core/ext/client_channel/lb_policy_registry.h",
|
||||
"src/core/ext/client_channel/parse_address.h",
|
||||
"src/core/ext/client_channel/proxy_mapper.h",
|
||||
"src/core/ext/client_channel/proxy_mapper_registry.h",
|
||||
"src/core/ext/client_channel/resolver.h",
|
||||
"src/core/ext/client_channel/resolver_factory.h",
|
||||
"src/core/ext/client_channel/resolver_registry.h",
|
||||
"src/core/ext/client_channel/retry_throttle.h",
|
||||
"src/core/ext/client_channel/subchannel.h",
|
||||
"src/core/ext/client_channel/subchannel_index.h",
|
||||
"src/core/ext/client_channel/uri_parser.h",
|
||||
"src/core/ext/filters/client_channel/client_channel.h",
|
||||
"src/core/ext/filters/client_channel/client_channel_factory.h",
|
||||
"src/core/ext/filters/client_channel/connector.h",
|
||||
"src/core/ext/filters/client_channel/http_connect_handshaker.h",
|
||||
"src/core/ext/filters/client_channel/http_proxy.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy_factory.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy_registry.h",
|
||||
"src/core/ext/filters/client_channel/parse_address.h",
|
||||
"src/core/ext/filters/client_channel/proxy_mapper.h",
|
||||
"src/core/ext/filters/client_channel/proxy_mapper_registry.h",
|
||||
"src/core/ext/filters/client_channel/resolver.h",
|
||||
"src/core/ext/filters/client_channel/resolver_factory.h",
|
||||
"src/core/ext/filters/client_channel/resolver_registry.h",
|
||||
"src/core/ext/filters/client_channel/retry_throttle.h",
|
||||
"src/core/ext/filters/client_channel/subchannel.h",
|
||||
"src/core/ext/filters/client_channel/subchannel_index.h",
|
||||
"src/core/ext/filters/client_channel/uri_parser.h",
|
||||
],
|
||||
language = "c",
|
||||
deps = [
|
||||
"grpc_base",
|
||||
"grpc_deadline_filter",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc_max_age_filter",
|
||||
srcs = [
|
||||
"src/core/ext/filters/max_age/max_age_filter.c",
|
||||
],
|
||||
hdrs = [
|
||||
"src/core/ext/filters/max_age/max_age_filter.h",
|
||||
],
|
||||
language = "c",
|
||||
deps = [
|
||||
"grpc_base",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc_deadline_filter",
|
||||
srcs = [
|
||||
"src/core/ext/filters/deadline/deadline_filter.c",
|
||||
],
|
||||
hdrs = [
|
||||
"src/core/ext/filters/deadline/deadline_filter.h",
|
||||
],
|
||||
language = "c",
|
||||
deps = [
|
||||
"grpc_base",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc_message_size_filter",
|
||||
srcs = [
|
||||
"src/core/ext/filters/message_size/message_size_filter.c",
|
||||
],
|
||||
hdrs = [
|
||||
"src/core/ext/filters/message_size/message_size_filter.h",
|
||||
],
|
||||
language = "c",
|
||||
deps = [
|
||||
"grpc_base",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc_http_filters",
|
||||
srcs = [
|
||||
"src/core/ext/filters/http/client/http_client_filter.c",
|
||||
"src/core/ext/filters/http/http_filters_plugin.c",
|
||||
"src/core/ext/filters/http/message_compress/message_compress_filter.c",
|
||||
"src/core/ext/filters/http/server/http_server_filter.c",
|
||||
],
|
||||
hdrs = [
|
||||
"src/core/ext/filters/http/client/http_client_filter.h",
|
||||
"src/core/ext/filters/http/message_compress/message_compress_filter.h",
|
||||
"src/core/ext/filters/http/server/http_server_filter.h",
|
||||
],
|
||||
language = "c",
|
||||
deps = [
|
||||
|
|
@ -762,16 +859,20 @@ grpc_cc_library(
|
|||
grpc_cc_library(
|
||||
name = "grpc_lb_policy_grpclb",
|
||||
srcs = [
|
||||
"src/core/ext/lb_policy/grpclb/grpclb.c",
|
||||
"src/core/ext/lb_policy/grpclb/grpclb_channel.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",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
|
||||
],
|
||||
hdrs = [
|
||||
"src/core/ext/lb_policy/grpclb/grpclb.h",
|
||||
"src/core/ext/lb_policy/grpclb/grpclb_channel.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",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h",
|
||||
],
|
||||
external_deps = [
|
||||
"nanopb",
|
||||
|
|
@ -786,16 +887,20 @@ grpc_cc_library(
|
|||
grpc_cc_library(
|
||||
name = "grpc_lb_policy_grpclb_secure",
|
||||
srcs = [
|
||||
"src/core/ext/lb_policy/grpclb/grpclb.c",
|
||||
"src/core/ext/lb_policy/grpclb/grpclb_channel_secure.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",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
|
||||
],
|
||||
hdrs = [
|
||||
"src/core/ext/lb_policy/grpclb/grpclb.h",
|
||||
"src/core/ext/lb_policy/grpclb/grpclb_channel.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",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h",
|
||||
"src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h",
|
||||
],
|
||||
external_deps = [
|
||||
"nanopb",
|
||||
|
|
@ -811,7 +916,7 @@ grpc_cc_library(
|
|||
grpc_cc_library(
|
||||
name = "grpc_lb_policy_pick_first",
|
||||
srcs = [
|
||||
"src/core/ext/lb_policy/pick_first/pick_first.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c",
|
||||
],
|
||||
language = "c",
|
||||
deps = [
|
||||
|
|
@ -823,7 +928,7 @@ grpc_cc_library(
|
|||
grpc_cc_library(
|
||||
name = "grpc_lb_policy_round_robin",
|
||||
srcs = [
|
||||
"src/core/ext/lb_policy/round_robin/round_robin.c",
|
||||
"src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c",
|
||||
],
|
||||
language = "c",
|
||||
deps = [
|
||||
|
|
@ -835,12 +940,12 @@ grpc_cc_library(
|
|||
grpc_cc_library(
|
||||
name = "grpc_load_reporting",
|
||||
srcs = [
|
||||
"src/core/ext/load_reporting/load_reporting.c",
|
||||
"src/core/ext/load_reporting/load_reporting_filter.c",
|
||||
"src/core/ext/filters/load_reporting/load_reporting.c",
|
||||
"src/core/ext/filters/load_reporting/load_reporting_filter.c",
|
||||
],
|
||||
hdrs = [
|
||||
"src/core/ext/load_reporting/load_reporting.h",
|
||||
"src/core/ext/load_reporting/load_reporting_filter.h",
|
||||
"src/core/ext/filters/load_reporting/load_reporting.h",
|
||||
"src/core/ext/filters/load_reporting/load_reporting_filter.h",
|
||||
],
|
||||
language = "c",
|
||||
deps = [
|
||||
|
|
@ -851,7 +956,7 @@ grpc_cc_library(
|
|||
grpc_cc_library(
|
||||
name = "grpc_resolver_dns_native",
|
||||
srcs = [
|
||||
"src/core/ext/resolver/dns/native/dns_resolver.c",
|
||||
"src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c",
|
||||
],
|
||||
language = "c",
|
||||
deps = [
|
||||
|
|
@ -863,13 +968,16 @@ grpc_cc_library(
|
|||
grpc_cc_library(
|
||||
name = "grpc_resolver_dns_ares",
|
||||
srcs = [
|
||||
"src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c",
|
||||
"src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c",
|
||||
"src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c",
|
||||
"src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c",
|
||||
"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c",
|
||||
"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c",
|
||||
],
|
||||
hdrs = [
|
||||
"src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h",
|
||||
"src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h",
|
||||
"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h",
|
||||
"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h",
|
||||
],
|
||||
external_deps = [
|
||||
"cares",
|
||||
],
|
||||
external_deps = [
|
||||
"cares",
|
||||
|
|
@ -884,7 +992,7 @@ grpc_cc_library(
|
|||
grpc_cc_library(
|
||||
name = "grpc_resolver_sockaddr",
|
||||
srcs = [
|
||||
"src/core/ext/resolver/sockaddr/sockaddr_resolver.c",
|
||||
"src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c",
|
||||
],
|
||||
language = "c",
|
||||
deps = [
|
||||
|
|
@ -969,6 +1077,7 @@ grpc_cc_library(
|
|||
"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/http2_settings.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",
|
||||
|
|
@ -991,6 +1100,7 @@ grpc_cc_library(
|
|||
"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_settings.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",
|
||||
|
|
@ -1000,6 +1110,7 @@ grpc_cc_library(
|
|||
language = "c",
|
||||
deps = [
|
||||
"grpc_base",
|
||||
"grpc_http_filters",
|
||||
"grpc_transport_chttp2_alpn",
|
||||
],
|
||||
)
|
||||
|
|
@ -1136,12 +1247,14 @@ grpc_cc_library(
|
|||
"src/core/tsi/fake_transport_security.c",
|
||||
"src/core/tsi/ssl_transport_security.c",
|
||||
"src/core/tsi/transport_security.c",
|
||||
"src/core/tsi/transport_security_adapter.c",
|
||||
],
|
||||
hdrs = [
|
||||
"src/core/tsi/fake_transport_security.h",
|
||||
"src/core/tsi/ssl_transport_security.h",
|
||||
"src/core/tsi/ssl_types.h",
|
||||
"src/core/tsi/transport_security.h",
|
||||
"src/core/tsi/transport_security_adapter.h",
|
||||
"src/core/tsi/transport_security_interface.h",
|
||||
],
|
||||
external_deps = [
|
||||
|
|
@ -1150,11 +1263,11 @@ grpc_cc_library(
|
|||
language = "c",
|
||||
deps = [
|
||||
"gpr",
|
||||
"grpc_trace",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc++_base",
|
||||
grpc_cc_libraries(
|
||||
srcs = [
|
||||
"src/cpp/client/channel_cc.cc",
|
||||
"src/cpp/client/client_context.cc",
|
||||
|
|
@ -1199,7 +1312,15 @@ grpc_cc_library(
|
|||
"src/cpp/server/thread_pool_interface.h",
|
||||
"src/cpp/thread_manager/thread_manager.h",
|
||||
],
|
||||
additional_dep_list = [
|
||||
["grpc"],
|
||||
["grpc_unsecure"],
|
||||
],
|
||||
language = "c++",
|
||||
name_list = [
|
||||
"grpc++_base",
|
||||
"grpc++_base_unsecure",
|
||||
],
|
||||
public_hdrs = [
|
||||
"include/grpc++/alarm.h",
|
||||
"include/grpc++/channel.h",
|
||||
|
|
@ -1250,7 +1371,6 @@ grpc_cc_library(
|
|||
"include/grpc++/support/time.h",
|
||||
],
|
||||
deps = [
|
||||
"grpc",
|
||||
"grpc++_codegen_base",
|
||||
],
|
||||
)
|
||||
|
|
@ -1284,7 +1404,6 @@ grpc_cc_library(
|
|||
"include/grpc++/impl/codegen/slice.h",
|
||||
"include/grpc++/impl/codegen/status.h",
|
||||
"include/grpc++/impl/codegen/status_code_enum.h",
|
||||
"include/grpc++/impl/codegen/status_helper.h",
|
||||
"include/grpc++/impl/codegen/string_ref.h",
|
||||
"include/grpc++/impl/codegen/stub_options.h",
|
||||
"include/grpc++/impl/codegen/sync_stream.h",
|
||||
|
|
@ -1329,18 +1448,6 @@ grpc_cc_library(
|
|||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "thrift_util",
|
||||
language = "c++",
|
||||
public_hdrs = [
|
||||
"include/grpc++/impl/codegen/thrift_serializer.h",
|
||||
"include/grpc++/impl/codegen/thrift_utils.h",
|
||||
],
|
||||
deps = [
|
||||
"grpc++_codegen_base",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "grpc++_reflection",
|
||||
srcs = [
|
||||
|
|
|
|||
1505
CMakeLists.txt
1505
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
30
INSTALL.md
30
INSTALL.md
|
|
@ -28,16 +28,38 @@ If you plan to build from source and run tests, install the following as well:
|
|||
$ [sudo] apt-get install clang libc++-dev
|
||||
```
|
||||
|
||||
## Mac OSX
|
||||
## macOS
|
||||
|
||||
For a Mac system, git is not available by default. You will first need to
|
||||
install Xcode from the Mac AppStore and then run the following command from a
|
||||
terminal:
|
||||
On a Mac, you will first need to
|
||||
install Xcode or
|
||||
[Command Line Tools for Xcode](https://developer.apple.com/download/more/)
|
||||
and then run the following command from a terminal:
|
||||
|
||||
```sh
|
||||
$ [sudo] xcode-select --install
|
||||
```
|
||||
|
||||
To build gRPC from source, you may also need to install the following
|
||||
packages, which you can get from [Homebrew](https://brew.sh):
|
||||
|
||||
```sh
|
||||
$ brew install autoconf automake libtool shtool
|
||||
```
|
||||
|
||||
If you plan to build from source and run tests, install the following as well:
|
||||
```sh
|
||||
$ brew install gflags
|
||||
```
|
||||
|
||||
*Tip*: when building,
|
||||
you *may* want to explicitly set the `LIBTOOL` and `LIBTOOLIZE`
|
||||
environment variables when running `make` to ensure the version
|
||||
installed by `brew` is being used:
|
||||
|
||||
```sh
|
||||
$ LIBTOOL=glibtool LIBTOOLIZE=glibtoolize make
|
||||
```
|
||||
|
||||
## Protoc
|
||||
|
||||
By default gRPC uses [protocol buffers](https://github.com/google/protobuf),
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ graft include/grpc
|
|||
graft third_party/boringssl
|
||||
graft third_party/nanopb
|
||||
graft third_party/zlib
|
||||
graft third_party/c-ares
|
||||
graft third_party/cares
|
||||
include src/python/grpcio/_spawn_patch.py
|
||||
include src/python/grpcio/commands.py
|
||||
include src/python/grpcio/grpc_version.py
|
||||
|
|
@ -17,3 +17,4 @@ include src/python/grpcio/support.py
|
|||
include src/python/grpcio/README.rst
|
||||
include requirements.txt
|
||||
include etc/roots.pem
|
||||
include Makefile
|
||||
|
|
|
|||
25
README.md
25
README.md
|
|
@ -21,25 +21,24 @@ See [Performance dashboard](http://performance-dot-grpc-testing.appspot.com/expl
|
|||
|
||||
# Repository Structure & Status
|
||||
|
||||
This repository contains source code for gRPC libraries for multiple languages written on top of shared C core library [src/core] (src/core).
|
||||
This repository contains source code for gRPC libraries for multiple languages written on top of shared C core library [src/core](src/core).
|
||||
|
||||
Libraries in different languages may be in different states of development. We are seeking contributions for all of these libraries.
|
||||
|
||||
| Language | Source | Status |
|
||||
|-------------------------|-------------------------------------|---------|
|
||||
| Shared C [core library] | [src/core] (src/core) | 1.0 |
|
||||
| C++ | [src/cpp] (src/cpp) | 1.0 |
|
||||
| Ruby | [src/ruby] (src/ruby) | 1.0 |
|
||||
| NodeJS | [src/node] (src/node) | 1.0 |
|
||||
| Python | [src/python] (src/python) | 1.0 |
|
||||
| PHP | [src/php] (src/php) | 1.0 |
|
||||
| C# | [src/csharp] (src/csharp) | 1.0 |
|
||||
| Objective-C | [src/objective-c] (src/objective-c) | 1.0 |
|
||||
| Shared C [core library] | [src/core](src/core) | 1.0 |
|
||||
| C++ | [src/cpp](src/cpp) | 1.0 |
|
||||
| Ruby | [src/ruby](src/ruby) | 1.0 |
|
||||
| NodeJS | [src/node](src/node) | 1.0 |
|
||||
| Python | [src/python](src/python) | 1.0 |
|
||||
| PHP | [src/php](src/php) | 1.0 |
|
||||
| C# | [src/csharp](src/csharp) | 1.0 |
|
||||
| Objective-C | [src/objective-c](src/objective-c) | 1.0 |
|
||||
|
||||
<small>
|
||||
Java source code is in the [grpc-java](http://github.com/grpc/grpc-java) repository.
|
||||
Go source code is in the [grpc-go](http://github.com/grpc/grpc-go) repository.
|
||||
</small>
|
||||
Java source code is in the [grpc-java](http://github.com/grpc/grpc-java)
|
||||
repository. Go source code is in the
|
||||
[grpc-go](http://github.com/grpc/grpc-go) repository.
|
||||
|
||||
See [MANIFEST.md](MANIFEST.md) for a listing of top-level items in the
|
||||
repository.
|
||||
|
|
|
|||
2
Rakefile
2
Rakefile
|
|
@ -80,7 +80,7 @@ task 'dlls' do
|
|||
grpc_config = ENV['GRPC_CONFIG'] || 'opt'
|
||||
verbose = ENV['V'] || '0'
|
||||
|
||||
env = 'CPPFLAGS="-D_WIN32_WINNT=0x600 -DUNICODE -D_UNICODE -Wno-unused-variable -Wno-unused-result" '
|
||||
env = 'CPPFLAGS="-D_WIN32_WINNT=0x600 -DUNICODE -D_UNICODE -Wno-unused-variable -Wno-unused-result -DCARES_STATICLIB" '
|
||||
env += 'LDFLAGS=-static '
|
||||
env += 'SYSTEM=MINGW32 '
|
||||
env += 'EMBED_ZLIB=true '
|
||||
|
|
|
|||
17
WORKSPACE
17
WORKSPACE
|
|
@ -15,17 +15,17 @@ bind(
|
|||
|
||||
bind(
|
||||
name = "protobuf",
|
||||
actual = "@submodule_protobuf//:protobuf",
|
||||
actual = "@com_google_protobuf//:protobuf",
|
||||
)
|
||||
|
||||
bind(
|
||||
name = "protobuf_clib",
|
||||
actual = "@submodule_protobuf//:protoc_lib",
|
||||
actual = "@com_google_protobuf//:protoc_lib",
|
||||
)
|
||||
|
||||
bind(
|
||||
name = "protocol_compiler",
|
||||
actual = "@submodule_protobuf//:protoc",
|
||||
actual = "@com_google_protobuf//:protoc",
|
||||
)
|
||||
|
||||
bind(
|
||||
|
|
@ -48,9 +48,8 @@ bind(
|
|||
actual = "@com_github_gflags_gflags//:gflags",
|
||||
)
|
||||
|
||||
new_local_repository(
|
||||
local_repository(
|
||||
name = "submodule_boringssl",
|
||||
build_file = "third_party/boringssl-with-bazel/BUILD",
|
||||
path = "third_party/boringssl-with-bazel",
|
||||
)
|
||||
|
||||
|
|
@ -61,7 +60,7 @@ new_local_repository(
|
|||
)
|
||||
|
||||
new_local_repository(
|
||||
name = "submodule_protobuf",
|
||||
name = "com_google_protobuf",
|
||||
build_file = "third_party/protobuf/BUILD",
|
||||
path = "third_party/protobuf",
|
||||
)
|
||||
|
|
@ -77,12 +76,6 @@ local_repository(
|
|||
path = "third_party/gflags",
|
||||
)
|
||||
|
||||
git_repository(
|
||||
name = "mongoose_repo",
|
||||
commit = "4120a97945b41195a6223a600dae8e3b19bed19e",
|
||||
remote = "https://github.com/makdharma/mongoose.git"
|
||||
)
|
||||
|
||||
new_local_repository(
|
||||
name = "submodule_benchmark",
|
||||
path = "third_party/benchmark",
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ load(":cc_grpc_library.bzl", "cc_grpc_library")
|
|||
|
||||
proto_library(
|
||||
name = "well_known_protos_list",
|
||||
srcs = ["@submodule_protobuf//:well_known_protos"],
|
||||
srcs = ["@com_google_protobuf//:well_known_protos"],
|
||||
)
|
||||
|
||||
cc_grpc_library(
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
load("//:bazel/generate_cc.bzl", "generate_cc")
|
||||
|
||||
def cc_grpc_library(name, srcs, deps, proto_only, well_known_protos, use_external = False, **kwargs):
|
||||
def cc_grpc_library(name, srcs, deps, proto_only, well_known_protos, generate_mock, use_external = False, **kwargs):
|
||||
"""Generates C++ grpc classes from a .proto file.
|
||||
|
||||
Assumes the generated classes will be used in cc_api_version = 2.
|
||||
|
|
@ -14,9 +14,10 @@ def cc_grpc_library(name, srcs, deps, proto_only, well_known_protos, use_externa
|
|||
the compiled code of any message that the services depend on.
|
||||
well_known_protos: The target from protobuf library that exports well
|
||||
known protos. Currently it will only work if the value is
|
||||
"@submodule_protobuf//:well_known_protos"
|
||||
"@com_google_protobuf//:well_known_protos"
|
||||
use_external: When True the grpc deps are prefixed with //external. This
|
||||
allows grpc to be used as a dependency in other bazel projects.
|
||||
generate_mock: When true GMOCk code for client stub is generated.
|
||||
**kwargs: rest of arguments, e.g., compatible_with and visibility.
|
||||
"""
|
||||
if len(srcs) > 1:
|
||||
|
|
@ -54,6 +55,7 @@ def cc_grpc_library(name, srcs, deps, proto_only, well_known_protos, use_externa
|
|||
srcs = [proto_target],
|
||||
plugin = plugin,
|
||||
well_known_protos = well_known_protos,
|
||||
generate_mock = generate_mock,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -9,21 +9,26 @@ def generate_cc_impl(ctx):
|
|||
protos = [f for src in ctx.attr.srcs for f in src.proto.direct_sources]
|
||||
includes = [f for src in ctx.attr.srcs for f in src.proto.transitive_imports]
|
||||
outs = []
|
||||
# label_len is length of the path from WORKSPACE root to the location of this build file
|
||||
label_len = len(ctx.label.package) + 1
|
||||
if ctx.executable.plugin:
|
||||
outs += [proto.basename[:-len(".proto")] + ".grpc.pb.h" for proto in protos]
|
||||
outs += [proto.basename[:-len(".proto")] + ".grpc.pb.cc" for proto in protos]
|
||||
outs += [proto.path[label_len:-len(".proto")] + ".grpc.pb.h" for proto in protos]
|
||||
outs += [proto.path[label_len:-len(".proto")] + ".grpc.pb.cc" for proto in protos]
|
||||
if ctx.attr.generate_mock:
|
||||
outs += [proto.path[label_len:-len(".proto")] + "_mock.grpc.pb.h" for proto in protos]
|
||||
else:
|
||||
outs += [proto.basename[:-len(".proto")] + ".pb.h" for proto in protos]
|
||||
outs += [proto.basename[:-len(".proto")] + ".pb.cc" for proto in protos]
|
||||
outs += [proto.path[label_len:-len(".proto")] + ".pb.h" for proto in protos]
|
||||
outs += [proto.path[label_len:-len(".proto")] + ".pb.cc" for proto in protos]
|
||||
out_files = [ctx.new_file(out) for out in outs]
|
||||
# The following should be replaced with ctx.configuration.buildout
|
||||
# whenever this is added to Skylark.
|
||||
dir_out = out_files[0].dirname[:-len(protos[0].dirname)]
|
||||
dir_out = str(ctx.genfiles_dir.path)
|
||||
|
||||
arguments = []
|
||||
if ctx.executable.plugin:
|
||||
arguments += ["--plugin=protoc-gen-PLUGIN=" + ctx.executable.plugin.path]
|
||||
arguments += ["--PLUGIN_out=" + ",".join(ctx.attr.flags) + ":" + dir_out]
|
||||
flags = list(ctx.attr.flags)
|
||||
if ctx.attr.generate_mock:
|
||||
flags.append("generate_mock_code=true")
|
||||
arguments += ["--PLUGIN_out=" + ",".join(flags) + ":" + dir_out]
|
||||
additional_input = [ctx.executable.plugin]
|
||||
else:
|
||||
arguments += ["--cpp_out=" + ",".join(ctx.attr.flags) + ":" + dir_out]
|
||||
|
|
@ -35,10 +40,10 @@ def generate_cc_impl(ctx):
|
|||
well_known_proto_files = []
|
||||
if ctx.attr.well_known_protos:
|
||||
f = ctx.attr.well_known_protos.files.to_list()[0].dirname
|
||||
if f != "external/submodule_protobuf/src/google/protobuf":
|
||||
print("Error: Only @submodule_protobuf//:well_known_protos is supported")
|
||||
if f != "external/com_google_protobuf/src/google/protobuf":
|
||||
print("Error: Only @com_google_protobuf//:well_known_protos is supported")
|
||||
else:
|
||||
# f points to "external/submodule_protobuf/src/google/protobuf"
|
||||
# f points to "external/com_google_protobuf/src/google/protobuf"
|
||||
# add -I argument to protoc so it knows where to look for the proto files.
|
||||
arguments += ["-I{0}".format(f + "/../..")]
|
||||
well_known_proto_files = [f for f in ctx.attr.well_known_protos.files]
|
||||
|
|
@ -71,6 +76,10 @@ generate_cc = rule(
|
|||
"well_known_protos" : attr.label(
|
||||
mandatory = False,
|
||||
),
|
||||
"generate_mock" : attr.bool(
|
||||
default = False,
|
||||
mandatory = False,
|
||||
),
|
||||
"_protoc": attr.label(
|
||||
default = Label("//external:protocol_compiler"),
|
||||
executable = True,
|
||||
|
|
|
|||
|
|
@ -53,6 +53,22 @@ def grpc_cc_library(name, srcs = [], public_hdrs = [], hdrs = [],
|
|||
]
|
||||
)
|
||||
|
||||
def grpc_cc_libraries(name_list, additional_src_list = [], additional_dep_list = [], srcs = [], public_hdrs = [], hdrs = [], external_deps = [], deps = [], standalone = False, language="C++"):
|
||||
names = len(name_list)
|
||||
asl = additional_src_list + [[]]*(names - len(additional_src_list))
|
||||
adl = additional_dep_list + [[]]*(names - len(additional_dep_list))
|
||||
for i in range(names):
|
||||
grpc_cc_library(
|
||||
name = name_list[i],
|
||||
srcs = srcs + asl[i],
|
||||
hdrs = hdrs,
|
||||
public_hdrs = public_hdrs,
|
||||
deps = deps + adl[i],
|
||||
external_deps = external_deps,
|
||||
standalone = standalone,
|
||||
language = language
|
||||
)
|
||||
|
||||
def grpc_proto_plugin(name, srcs = [], deps = []):
|
||||
native.cc_binary(
|
||||
name = name,
|
||||
|
|
@ -63,7 +79,7 @@ def grpc_proto_plugin(name, srcs = [], deps = []):
|
|||
load("//:bazel/cc_grpc_library.bzl", "cc_grpc_library")
|
||||
|
||||
def grpc_proto_library(name, srcs = [], deps = [], well_known_protos = None,
|
||||
has_services = True, use_external = False):
|
||||
has_services = True, use_external = False, generate_mock = False):
|
||||
cc_grpc_library(
|
||||
name = name,
|
||||
srcs = srcs,
|
||||
|
|
@ -71,6 +87,7 @@ def grpc_proto_library(name, srcs = [], deps = [], well_known_protos = None,
|
|||
well_known_protos = well_known_protos,
|
||||
proto_only = not has_services,
|
||||
use_external = use_external,
|
||||
generate_mock = generate_mock,
|
||||
)
|
||||
|
||||
def grpc_cc_test(name, srcs = [], deps = [], external_deps = [], args = [], data = [], language = "C++"):
|
||||
|
|
|
|||
213
binding.gyp
213
binding.gyp
|
|
@ -39,29 +39,80 @@
|
|||
{
|
||||
'variables': {
|
||||
'runtime%': 'node',
|
||||
# UV integration in C core is enabled by default. It can be disabled
|
||||
# by setting this argument to anything else.
|
||||
'grpc_uv%': 'true',
|
||||
# Some Node installations use the system installation of OpenSSL, and on
|
||||
# some systems, the system OpenSSL still does not have ALPN support. This
|
||||
# will let users recompile gRPC to work without ALPN.
|
||||
'grpc_alpn%': 'true'
|
||||
'grpc_alpn%': 'true',
|
||||
# Indicates that the library should be built with gcov.
|
||||
'grpc_gcov%': 'false',
|
||||
# Indicates that the library should be built with compatibility for musl
|
||||
# libc, so that it can run on Alpine Linux. This is only necessary if not
|
||||
# building on Alpine Linux
|
||||
'grpc_alpine%': 'false'
|
||||
},
|
||||
'target_defaults': {
|
||||
'configurations': {
|
||||
'Release': {
|
||||
'cflags': [
|
||||
'-O2',
|
||||
],
|
||||
'defines': [
|
||||
'NDEBUG',
|
||||
],
|
||||
},
|
||||
'Debug': {
|
||||
'cflags': [
|
||||
'-O0',
|
||||
],
|
||||
'defines': [
|
||||
'_DEBUG',
|
||||
'DEBUG',
|
||||
],
|
||||
},
|
||||
},
|
||||
'cflags': [
|
||||
'-g',
|
||||
'-Wall',
|
||||
'-Wextra',
|
||||
'-Werror',
|
||||
'-Wno-long-long',
|
||||
'-Wno-unused-parameter',
|
||||
'-DOSATOMIC_USE_INLINED=1',
|
||||
],
|
||||
'ldflags': [
|
||||
'-g',
|
||||
],
|
||||
'include_dirs': [
|
||||
'.',
|
||||
'include'
|
||||
],
|
||||
'defines': [
|
||||
'GPR_BACKWARDS_COMPATIBILITY_MODE'
|
||||
'GPR_BACKWARDS_COMPATIBILITY_MODE',
|
||||
'GRPC_ARES=0',
|
||||
'GRPC_UV'
|
||||
],
|
||||
'conditions': [
|
||||
['grpc_uv=="true"', {
|
||||
['grpc_gcov=="true"', {
|
||||
'cflags': [
|
||||
'-O0',
|
||||
'-fprofile-arcs',
|
||||
'-ftest-coverage',
|
||||
'-Wno-return-type',
|
||||
],
|
||||
'defines': [
|
||||
'GRPC_ARES=0',
|
||||
# Disabling this while bugs are ironed out. Uncomment this to
|
||||
# re-enable libuv integration in C core.
|
||||
'GRPC_UV'
|
||||
'_DEBUG',
|
||||
'DEBUG',
|
||||
'GPR_GCOV',
|
||||
],
|
||||
'ldflags': [
|
||||
'-fprofile-arcs',
|
||||
'-ftest-coverage',
|
||||
'-rdynamic',
|
||||
],
|
||||
}],
|
||||
['grpc_alpine=="true"', {
|
||||
'defines': [
|
||||
'GPR_MUSL_LIBC_COMPAT'
|
||||
]
|
||||
}],
|
||||
['OS!="win" and runtime=="electron"', {
|
||||
|
|
@ -126,26 +177,9 @@
|
|||
"ws2_32"
|
||||
]
|
||||
}, { # OS != "win"
|
||||
'variables': {
|
||||
'config': '<!(echo $CONFIG)',
|
||||
},
|
||||
'include_dirs': [
|
||||
'<(node_root_dir)/deps/zlib',
|
||||
'<(node_root_dir)/deps/cares/include',
|
||||
],
|
||||
'conditions': [
|
||||
['config=="gcov"', {
|
||||
'cflags': [
|
||||
'-ftest-coverage',
|
||||
'-fprofile-arcs',
|
||||
'-O0'
|
||||
],
|
||||
'ldflags': [
|
||||
'-ftest-coverage',
|
||||
'-fprofile-arcs'
|
||||
]
|
||||
}
|
||||
]
|
||||
'<(node_root_dir)/deps/cares/include'
|
||||
]
|
||||
}]
|
||||
]
|
||||
|
|
@ -473,7 +507,7 @@
|
|||
},
|
||||
]
|
||||
}],
|
||||
['OS == "win"', {
|
||||
['OS == "win" and runtime!="electron"', {
|
||||
'targets': [
|
||||
{
|
||||
# IMPORTANT WINDOWS BUILD INFORMATION
|
||||
|
|
@ -484,10 +518,13 @@
|
|||
# when including the Node headers. The remedy for this is to remove
|
||||
# the OpenSSL headers, from the downloaded Node development package,
|
||||
# which is typically located in `.node-gyp` in your home directory.
|
||||
#
|
||||
# This is not true of Electron, which does not have OpenSSL headers.
|
||||
'target_name': 'WINDOWS_BUILD_WARNING',
|
||||
'actions': [
|
||||
'rules': [
|
||||
{
|
||||
'action_name': 'WINDOWS_BUILD_WARNING',
|
||||
'rule_name': 'WINDOWS_BUILD_WARNING',
|
||||
'extension': 'S',
|
||||
'inputs': [
|
||||
'package.json'
|
||||
],
|
||||
|
|
@ -498,6 +535,10 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
]
|
||||
}],
|
||||
['OS == "win"', {
|
||||
'targets': [
|
||||
# Only want to compile zlib under Windows
|
||||
{
|
||||
'cflags': [
|
||||
|
|
@ -532,7 +573,6 @@
|
|||
}]
|
||||
],
|
||||
'targets': [
|
||||
|
||||
{
|
||||
'cflags': [
|
||||
'-std=c99',
|
||||
|
|
@ -611,26 +651,18 @@
|
|||
'type': 'static_library',
|
||||
'dependencies': [
|
||||
'gpr',
|
||||
'node_modules/cares/deps/cares/cares.gyp:cares',
|
||||
],
|
||||
'sources': [
|
||||
'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/deadline_filter.c',
|
||||
'src/core/lib/channel/handshaker.c',
|
||||
'src/core/lib/channel/handshaker_factory.c',
|
||||
'src/core/lib/channel/handshaker_registry.c',
|
||||
'src/core/lib/channel/http_client_filter.c',
|
||||
'src/core/lib/channel/http_server_filter.c',
|
||||
'src/core/lib/channel/max_age_filter.c',
|
||||
'src/core/lib/channel/message_size_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',
|
||||
|
|
@ -641,7 +673,11 @@
|
|||
'src/core/lib/iomgr/endpoint_pair_uv.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_epoll1_linux.c',
|
||||
'src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c',
|
||||
'src/core/lib/iomgr/ev_epoll_thread_pool_linux.c',
|
||||
'src/core/lib/iomgr/ev_epollex_linux.c',
|
||||
'src/core/lib/iomgr/ev_epollsig_linux.c',
|
||||
'src/core/lib/iomgr/ev_poll_posix.c',
|
||||
'src/core/lib/iomgr/ev_posix.c',
|
||||
'src/core/lib/iomgr/exec_ctx.c',
|
||||
|
|
@ -651,7 +687,9 @@
|
|||
'src/core/lib/iomgr/iomgr_posix.c',
|
||||
'src/core/lib/iomgr/iomgr_uv.c',
|
||||
'src/core/lib/iomgr/iomgr_windows.c',
|
||||
'src/core/lib/iomgr/is_epollexclusive_available.c',
|
||||
'src/core/lib/iomgr/load_file.c',
|
||||
'src/core/lib/iomgr/lockfree_event.c',
|
||||
'src/core/lib/iomgr/network_status_tracker.c',
|
||||
'src/core/lib/iomgr/polling_entity.c',
|
||||
'src/core/lib/iomgr/pollset_set_uv.c',
|
||||
|
|
@ -686,6 +724,7 @@
|
|||
'src/core/lib/iomgr/time_averaged_stats.c',
|
||||
'src/core/lib/iomgr/timer_generic.c',
|
||||
'src/core/lib/iomgr/timer_heap.c',
|
||||
'src/core/lib/iomgr/timer_manager.c',
|
||||
'src/core/lib/iomgr/timer_uv.c',
|
||||
'src/core/lib/iomgr/udp_server.c',
|
||||
'src/core/lib/iomgr/unix_sockets_posix.c',
|
||||
|
|
@ -722,7 +761,7 @@
|
|||
'src/core/lib/surface/completion_queue.c',
|
||||
'src/core/lib/surface/completion_queue_factory.c',
|
||||
'src/core/lib/surface/event_string.c',
|
||||
'src/core/lib/surface/lame_client.c',
|
||||
'src/core/lib/surface/lame_client.cc',
|
||||
'src/core/lib/surface/metadata_array.c',
|
||||
'src/core/lib/surface/server.c',
|
||||
'src/core/lib/surface/validate_metadata.c',
|
||||
|
|
@ -740,6 +779,7 @@
|
|||
'src/core/lib/transport/timeout_encoding.c',
|
||||
'src/core/lib/transport/transport.c',
|
||||
'src/core/lib/transport/transport_op_string.c',
|
||||
'src/core/lib/debug/trace.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',
|
||||
|
|
@ -754,6 +794,7 @@
|
|||
'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/http2_settings.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',
|
||||
|
|
@ -762,6 +803,10 @@
|
|||
'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/ext/filters/http/client/http_client_filter.c',
|
||||
'src/core/ext/filters/http/http_filters_plugin.c',
|
||||
'src/core/ext/filters/http/message_compress/message_compress_filter.c',
|
||||
'src/core/ext/filters/http/server/http_server_filter.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',
|
||||
|
|
@ -789,49 +834,53 @@
|
|||
'src/core/tsi/fake_transport_security.c',
|
||||
'src/core/tsi/ssl_transport_security.c',
|
||||
'src/core/tsi/transport_security.c',
|
||||
'src/core/tsi/transport_security_adapter.c',
|
||||
'src/core/ext/transport/chttp2/server/chttp2_server.c',
|
||||
'src/core/ext/transport/chttp2/client/secure/secure_channel_create.c',
|
||||
'src/core/ext/client_channel/channel_connectivity.c',
|
||||
'src/core/ext/client_channel/client_channel.c',
|
||||
'src/core/ext/client_channel/client_channel_factory.c',
|
||||
'src/core/ext/client_channel/client_channel_plugin.c',
|
||||
'src/core/ext/client_channel/connector.c',
|
||||
'src/core/ext/client_channel/http_connect_handshaker.c',
|
||||
'src/core/ext/client_channel/http_proxy.c',
|
||||
'src/core/ext/client_channel/lb_policy.c',
|
||||
'src/core/ext/client_channel/lb_policy_factory.c',
|
||||
'src/core/ext/client_channel/lb_policy_registry.c',
|
||||
'src/core/ext/client_channel/parse_address.c',
|
||||
'src/core/ext/client_channel/proxy_mapper.c',
|
||||
'src/core/ext/client_channel/proxy_mapper_registry.c',
|
||||
'src/core/ext/client_channel/resolver.c',
|
||||
'src/core/ext/client_channel/resolver_factory.c',
|
||||
'src/core/ext/client_channel/resolver_registry.c',
|
||||
'src/core/ext/client_channel/retry_throttle.c',
|
||||
'src/core/ext/client_channel/subchannel.c',
|
||||
'src/core/ext/client_channel/subchannel_index.c',
|
||||
'src/core/ext/client_channel/uri_parser.c',
|
||||
'src/core/ext/filters/client_channel/channel_connectivity.c',
|
||||
'src/core/ext/filters/client_channel/client_channel.c',
|
||||
'src/core/ext/filters/client_channel/client_channel_factory.c',
|
||||
'src/core/ext/filters/client_channel/client_channel_plugin.c',
|
||||
'src/core/ext/filters/client_channel/connector.c',
|
||||
'src/core/ext/filters/client_channel/http_connect_handshaker.c',
|
||||
'src/core/ext/filters/client_channel/http_proxy.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy_factory.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy_registry.c',
|
||||
'src/core/ext/filters/client_channel/parse_address.c',
|
||||
'src/core/ext/filters/client_channel/proxy_mapper.c',
|
||||
'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
|
||||
'src/core/ext/filters/client_channel/resolver.c',
|
||||
'src/core/ext/filters/client_channel/resolver_factory.c',
|
||||
'src/core/ext/filters/client_channel/resolver_registry.c',
|
||||
'src/core/ext/filters/client_channel/retry_throttle.c',
|
||||
'src/core/ext/filters/client_channel/subchannel.c',
|
||||
'src/core/ext/filters/client_channel/subchannel_index.c',
|
||||
'src/core/ext/filters/client_channel/uri_parser.c',
|
||||
'src/core/ext/filters/deadline/deadline_filter.c',
|
||||
'src/core/ext/transport/chttp2/client/chttp2_connector.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/grpclb_channel_secure.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',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c',
|
||||
'src/core/ext/filters/client_channel/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/c_ares/dns_resolver_ares.c',
|
||||
'src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
|
||||
'src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.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/filters/client_channel/lb_policy/pick_first/pick_first.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c',
|
||||
'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c',
|
||||
'src/core/ext/filters/load_reporting/load_reporting.c',
|
||||
'src/core/ext/filters/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',
|
||||
|
|
@ -846,6 +895,8 @@
|
|||
'src/core/ext/census/resource.c',
|
||||
'src/core/ext/census/trace_context.c',
|
||||
'src/core/ext/census/tracing.c',
|
||||
'src/core/ext/filters/max_age/max_age_filter.c',
|
||||
'src/core/ext/filters/message_size/message_size_filter.c',
|
||||
'src/core/plugin_registry/grpc_plugin_registry.c',
|
||||
],
|
||||
"conditions": [
|
||||
|
|
@ -862,16 +913,10 @@
|
|||
],
|
||||
'cflags': [
|
||||
'-std=c++11',
|
||||
'-Wall',
|
||||
'-pthread',
|
||||
'-g',
|
||||
'-zdefs',
|
||||
'-Werror',
|
||||
'-Wno-error=deprecated-declarations'
|
||||
],
|
||||
'ldflags': [
|
||||
'-g'
|
||||
],
|
||||
"conditions": [
|
||||
['OS=="win" or runtime=="electron"', {
|
||||
'dependencies': [
|
||||
|
|
@ -905,20 +950,16 @@
|
|||
"src/node/ext/call_credentials.cc",
|
||||
"src/node/ext/channel.cc",
|
||||
"src/node/ext/channel_credentials.cc",
|
||||
"src/node/ext/completion_queue_threadpool.cc",
|
||||
"src/node/ext/completion_queue_uv.cc",
|
||||
"src/node/ext/completion_queue.cc",
|
||||
"src/node/ext/node_grpc.cc",
|
||||
"src/node/ext/server.cc",
|
||||
"src/node/ext/server_credentials.cc",
|
||||
"src/node/ext/server_generic.cc",
|
||||
"src/node/ext/server_uv.cc",
|
||||
"src/node/ext/slice.cc",
|
||||
"src/node/ext/timeval.cc",
|
||||
],
|
||||
"dependencies": [
|
||||
"grpc",
|
||||
"gpr",
|
||||
"node_modules/cares/deps/cares/cares.gyp:cares",
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
|||
422
build.yaml
422
build.yaml
|
|
@ -6,15 +6,15 @@ settings:
|
|||
'#02': ===
|
||||
'#03': Please update the 'g_stands_for' field periodically with a new g word
|
||||
'#04': not listed in doc/g_stands_for.md - and update that document to list the
|
||||
'#05': new word.
|
||||
'#05': new word. When doing so, please also update BUILD.
|
||||
'#06': ===
|
||||
'#07': Master always has a "-dev" suffix
|
||||
'#08': Use "-preN" suffixes to identify pre-release versions
|
||||
'#09': Per-language overrides are possible with (eg) ruby_version tag here
|
||||
'#10': See the expand_version.py for all the quirks here
|
||||
core_version: 3.0.0-dev
|
||||
g_stands_for: gentle
|
||||
version: 1.3.0-dev
|
||||
core_version: 4.0.0-dev
|
||||
g_stands_for: gregarious
|
||||
version: 1.4.0-dev
|
||||
filegroups:
|
||||
- name: census
|
||||
public_headers:
|
||||
|
|
@ -86,9 +86,13 @@ filegroups:
|
|||
headers:
|
||||
- src/core/lib/profiling/timers.h
|
||||
- src/core/lib/support/arena.h
|
||||
- src/core/lib/support/atomic.h
|
||||
- src/core/lib/support/atomic_with_atm.h
|
||||
- src/core/lib/support/atomic_with_std.h
|
||||
- src/core/lib/support/backoff.h
|
||||
- src/core/lib/support/block_annotate.h
|
||||
- src/core/lib/support/env.h
|
||||
- src/core/lib/support/memory.h
|
||||
- src/core/lib/support/mpscq.h
|
||||
- src/core/lib/support/murmur_hash.h
|
||||
- src/core/lib/support/spinlock.h
|
||||
|
|
@ -176,20 +180,13 @@ filegroups:
|
|||
- 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/deadline_filter.h
|
||||
- src/core/lib/channel/handshaker.h
|
||||
- src/core/lib/channel/handshaker_factory.h
|
||||
- src/core/lib/channel/handshaker_registry.h
|
||||
- src/core/lib/channel/http_client_filter.h
|
||||
- src/core/lib/channel/http_server_filter.h
|
||||
- src/core/lib/channel/max_age_filter.h
|
||||
- src/core/lib/channel/message_size_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
|
||||
|
|
@ -199,7 +196,11 @@ filegroups:
|
|||
- src/core/lib/iomgr/endpoint_pair.h
|
||||
- src/core/lib/iomgr/error.h
|
||||
- src/core/lib/iomgr/error_internal.h
|
||||
- src/core/lib/iomgr/ev_epoll_linux.h
|
||||
- src/core/lib/iomgr/ev_epoll1_linux.h
|
||||
- src/core/lib/iomgr/ev_epoll_limited_pollers_linux.h
|
||||
- src/core/lib/iomgr/ev_epoll_thread_pool_linux.h
|
||||
- src/core/lib/iomgr/ev_epollex_linux.h
|
||||
- src/core/lib/iomgr/ev_epollsig_linux.h
|
||||
- src/core/lib/iomgr/ev_poll_posix.h
|
||||
- src/core/lib/iomgr/ev_posix.h
|
||||
- src/core/lib/iomgr/exec_ctx.h
|
||||
|
|
@ -208,7 +209,9 @@ filegroups:
|
|||
- src/core/lib/iomgr/iomgr.h
|
||||
- src/core/lib/iomgr/iomgr_internal.h
|
||||
- src/core/lib/iomgr/iomgr_posix.h
|
||||
- src/core/lib/iomgr/is_epollexclusive_available.h
|
||||
- src/core/lib/iomgr/load_file.h
|
||||
- src/core/lib/iomgr/lockfree_event.h
|
||||
- src/core/lib/iomgr/network_status_tracker.h
|
||||
- src/core/lib/iomgr/polling_entity.h
|
||||
- src/core/lib/iomgr/pollset.h
|
||||
|
|
@ -228,6 +231,7 @@ filegroups:
|
|||
- src/core/lib/iomgr/socket_utils.h
|
||||
- src/core/lib/iomgr/socket_utils_posix.h
|
||||
- src/core/lib/iomgr/socket_windows.h
|
||||
- src/core/lib/iomgr/sys_epoll_wrapper.h
|
||||
- src/core/lib/iomgr/tcp_client.h
|
||||
- src/core/lib/iomgr/tcp_client_posix.h
|
||||
- src/core/lib/iomgr/tcp_posix.h
|
||||
|
|
@ -239,6 +243,7 @@ filegroups:
|
|||
- src/core/lib/iomgr/timer.h
|
||||
- src/core/lib/iomgr/timer_generic.h
|
||||
- src/core/lib/iomgr/timer_heap.h
|
||||
- src/core/lib/iomgr/timer_manager.h
|
||||
- src/core/lib/iomgr/timer_uv.h
|
||||
- src/core/lib/iomgr/udp_server.h
|
||||
- src/core/lib/iomgr/unix_sockets_posix.h
|
||||
|
|
@ -288,19 +293,12 @@ filegroups:
|
|||
- 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/deadline_filter.c
|
||||
- src/core/lib/channel/handshaker.c
|
||||
- src/core/lib/channel/handshaker_factory.c
|
||||
- src/core/lib/channel/handshaker_registry.c
|
||||
- src/core/lib/channel/http_client_filter.c
|
||||
- src/core/lib/channel/http_server_filter.c
|
||||
- src/core/lib/channel/max_age_filter.c
|
||||
- src/core/lib/channel/message_size_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
|
||||
|
|
@ -311,7 +309,11 @@ filegroups:
|
|||
- src/core/lib/iomgr/endpoint_pair_uv.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_epoll1_linux.c
|
||||
- src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c
|
||||
- src/core/lib/iomgr/ev_epoll_thread_pool_linux.c
|
||||
- src/core/lib/iomgr/ev_epollex_linux.c
|
||||
- src/core/lib/iomgr/ev_epollsig_linux.c
|
||||
- src/core/lib/iomgr/ev_poll_posix.c
|
||||
- src/core/lib/iomgr/ev_posix.c
|
||||
- src/core/lib/iomgr/exec_ctx.c
|
||||
|
|
@ -321,7 +323,9 @@ filegroups:
|
|||
- src/core/lib/iomgr/iomgr_posix.c
|
||||
- src/core/lib/iomgr/iomgr_uv.c
|
||||
- src/core/lib/iomgr/iomgr_windows.c
|
||||
- src/core/lib/iomgr/is_epollexclusive_available.c
|
||||
- src/core/lib/iomgr/load_file.c
|
||||
- src/core/lib/iomgr/lockfree_event.c
|
||||
- src/core/lib/iomgr/network_status_tracker.c
|
||||
- src/core/lib/iomgr/polling_entity.c
|
||||
- src/core/lib/iomgr/pollset_set_uv.c
|
||||
|
|
@ -356,6 +360,7 @@ filegroups:
|
|||
- src/core/lib/iomgr/time_averaged_stats.c
|
||||
- src/core/lib/iomgr/timer_generic.c
|
||||
- src/core/lib/iomgr/timer_heap.c
|
||||
- src/core/lib/iomgr/timer_manager.c
|
||||
- src/core/lib/iomgr/timer_uv.c
|
||||
- src/core/lib/iomgr/udp_server.c
|
||||
- src/core/lib/iomgr/unix_sockets_posix.c
|
||||
|
|
@ -392,7 +397,7 @@ filegroups:
|
|||
- src/core/lib/surface/completion_queue.c
|
||||
- src/core/lib/surface/completion_queue_factory.c
|
||||
- src/core/lib/surface/event_string.c
|
||||
- src/core/lib/surface/lame_client.c
|
||||
- src/core/lib/surface/lame_client.cc
|
||||
- src/core/lib/surface/metadata_array.c
|
||||
- src/core/lib/surface/server.c
|
||||
- src/core/lib/surface/validate_metadata.c
|
||||
|
|
@ -414,50 +419,52 @@ filegroups:
|
|||
- gpr
|
||||
uses:
|
||||
- grpc_codegen
|
||||
- grpc_trace
|
||||
- name: grpc_client_channel
|
||||
headers:
|
||||
- src/core/ext/client_channel/client_channel.h
|
||||
- src/core/ext/client_channel/client_channel_factory.h
|
||||
- src/core/ext/client_channel/connector.h
|
||||
- src/core/ext/client_channel/http_connect_handshaker.h
|
||||
- src/core/ext/client_channel/http_proxy.h
|
||||
- src/core/ext/client_channel/lb_policy.h
|
||||
- src/core/ext/client_channel/lb_policy_factory.h
|
||||
- src/core/ext/client_channel/lb_policy_registry.h
|
||||
- src/core/ext/client_channel/parse_address.h
|
||||
- src/core/ext/client_channel/proxy_mapper.h
|
||||
- src/core/ext/client_channel/proxy_mapper_registry.h
|
||||
- src/core/ext/client_channel/resolver.h
|
||||
- src/core/ext/client_channel/resolver_factory.h
|
||||
- src/core/ext/client_channel/resolver_registry.h
|
||||
- src/core/ext/client_channel/retry_throttle.h
|
||||
- src/core/ext/client_channel/subchannel.h
|
||||
- src/core/ext/client_channel/subchannel_index.h
|
||||
- src/core/ext/client_channel/uri_parser.h
|
||||
- src/core/ext/filters/client_channel/client_channel.h
|
||||
- src/core/ext/filters/client_channel/client_channel_factory.h
|
||||
- src/core/ext/filters/client_channel/connector.h
|
||||
- src/core/ext/filters/client_channel/http_connect_handshaker.h
|
||||
- src/core/ext/filters/client_channel/http_proxy.h
|
||||
- src/core/ext/filters/client_channel/lb_policy.h
|
||||
- src/core/ext/filters/client_channel/lb_policy_factory.h
|
||||
- src/core/ext/filters/client_channel/lb_policy_registry.h
|
||||
- src/core/ext/filters/client_channel/parse_address.h
|
||||
- src/core/ext/filters/client_channel/proxy_mapper.h
|
||||
- src/core/ext/filters/client_channel/proxy_mapper_registry.h
|
||||
- src/core/ext/filters/client_channel/resolver.h
|
||||
- src/core/ext/filters/client_channel/resolver_factory.h
|
||||
- src/core/ext/filters/client_channel/resolver_registry.h
|
||||
- src/core/ext/filters/client_channel/retry_throttle.h
|
||||
- src/core/ext/filters/client_channel/subchannel.h
|
||||
- src/core/ext/filters/client_channel/subchannel_index.h
|
||||
- src/core/ext/filters/client_channel/uri_parser.h
|
||||
src:
|
||||
- src/core/ext/client_channel/channel_connectivity.c
|
||||
- src/core/ext/client_channel/client_channel.c
|
||||
- src/core/ext/client_channel/client_channel_factory.c
|
||||
- src/core/ext/client_channel/client_channel_plugin.c
|
||||
- src/core/ext/client_channel/connector.c
|
||||
- src/core/ext/client_channel/http_connect_handshaker.c
|
||||
- src/core/ext/client_channel/http_proxy.c
|
||||
- src/core/ext/client_channel/lb_policy.c
|
||||
- src/core/ext/client_channel/lb_policy_factory.c
|
||||
- src/core/ext/client_channel/lb_policy_registry.c
|
||||
- src/core/ext/client_channel/parse_address.c
|
||||
- src/core/ext/client_channel/proxy_mapper.c
|
||||
- src/core/ext/client_channel/proxy_mapper_registry.c
|
||||
- src/core/ext/client_channel/resolver.c
|
||||
- src/core/ext/client_channel/resolver_factory.c
|
||||
- src/core/ext/client_channel/resolver_registry.c
|
||||
- src/core/ext/client_channel/retry_throttle.c
|
||||
- src/core/ext/client_channel/subchannel.c
|
||||
- src/core/ext/client_channel/subchannel_index.c
|
||||
- src/core/ext/client_channel/uri_parser.c
|
||||
- src/core/ext/filters/client_channel/channel_connectivity.c
|
||||
- src/core/ext/filters/client_channel/client_channel.c
|
||||
- src/core/ext/filters/client_channel/client_channel_factory.c
|
||||
- src/core/ext/filters/client_channel/client_channel_plugin.c
|
||||
- src/core/ext/filters/client_channel/connector.c
|
||||
- src/core/ext/filters/client_channel/http_connect_handshaker.c
|
||||
- src/core/ext/filters/client_channel/http_proxy.c
|
||||
- src/core/ext/filters/client_channel/lb_policy.c
|
||||
- src/core/ext/filters/client_channel/lb_policy_factory.c
|
||||
- src/core/ext/filters/client_channel/lb_policy_registry.c
|
||||
- src/core/ext/filters/client_channel/parse_address.c
|
||||
- src/core/ext/filters/client_channel/proxy_mapper.c
|
||||
- src/core/ext/filters/client_channel/proxy_mapper_registry.c
|
||||
- src/core/ext/filters/client_channel/resolver.c
|
||||
- src/core/ext/filters/client_channel/resolver_factory.c
|
||||
- src/core/ext/filters/client_channel/resolver_registry.c
|
||||
- src/core/ext/filters/client_channel/retry_throttle.c
|
||||
- src/core/ext/filters/client_channel/subchannel.c
|
||||
- src/core/ext/filters/client_channel/subchannel_index.c
|
||||
- src/core/ext/filters/client_channel/uri_parser.c
|
||||
plugin: grpc_client_channel
|
||||
uses:
|
||||
- grpc_base
|
||||
- grpc_deadline_filter
|
||||
- name: grpc_codegen
|
||||
public_headers:
|
||||
- include/grpc/impl/codegen/byte_buffer_reader.h
|
||||
|
|
@ -470,17 +477,42 @@ filegroups:
|
|||
- include/grpc/impl/codegen/status.h
|
||||
uses:
|
||||
- gpr_codegen
|
||||
- name: grpc_deadline_filter
|
||||
headers:
|
||||
- src/core/ext/filters/deadline/deadline_filter.h
|
||||
src:
|
||||
- src/core/ext/filters/deadline/deadline_filter.c
|
||||
plugin: grpc_deadline_filter
|
||||
uses:
|
||||
- grpc_base
|
||||
- name: grpc_http_filters
|
||||
headers:
|
||||
- src/core/ext/filters/http/client/http_client_filter.h
|
||||
- src/core/ext/filters/http/message_compress/message_compress_filter.h
|
||||
- src/core/ext/filters/http/server/http_server_filter.h
|
||||
src:
|
||||
- src/core/ext/filters/http/client/http_client_filter.c
|
||||
- src/core/ext/filters/http/http_filters_plugin.c
|
||||
- src/core/ext/filters/http/message_compress/message_compress_filter.c
|
||||
- src/core/ext/filters/http/server/http_server_filter.c
|
||||
plugin: grpc_http_filters
|
||||
uses:
|
||||
- grpc_base
|
||||
- name: grpc_lb_policy_grpclb
|
||||
headers:
|
||||
- src/core/ext/lb_policy/grpclb/grpclb.h
|
||||
- src/core/ext/lb_policy/grpclb/grpclb_channel.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
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h
|
||||
src:
|
||||
- src/core/ext/lb_policy/grpclb/grpclb.c
|
||||
- src/core/ext/lb_policy/grpclb/grpclb_channel.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
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
|
||||
plugin: grpc_lb_policy_grpclb
|
||||
uses:
|
||||
- grpc_base
|
||||
|
|
@ -488,15 +520,19 @@ filegroups:
|
|||
- nanopb
|
||||
- name: grpc_lb_policy_grpclb_secure
|
||||
headers:
|
||||
- src/core/ext/lb_policy/grpclb/grpclb.h
|
||||
- src/core/ext/lb_policy/grpclb/grpclb_channel.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
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h
|
||||
src:
|
||||
- src/core/ext/lb_policy/grpclb/grpclb.c
|
||||
- src/core/ext/lb_policy/grpclb/grpclb_channel_secure.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
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
|
||||
plugin: grpc_lb_policy_grpclb
|
||||
uses:
|
||||
- grpc_base
|
||||
|
|
@ -505,50 +541,66 @@ filegroups:
|
|||
- nanopb
|
||||
- name: grpc_lb_policy_pick_first
|
||||
src:
|
||||
- src/core/ext/lb_policy/pick_first/pick_first.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c
|
||||
plugin: grpc_lb_policy_pick_first
|
||||
uses:
|
||||
- grpc_base
|
||||
- grpc_client_channel
|
||||
- name: grpc_lb_policy_round_robin
|
||||
src:
|
||||
- src/core/ext/lb_policy/round_robin/round_robin.c
|
||||
- src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c
|
||||
plugin: grpc_lb_policy_round_robin
|
||||
uses:
|
||||
- grpc_base
|
||||
- grpc_client_channel
|
||||
- name: grpc_load_reporting
|
||||
headers:
|
||||
- src/core/ext/load_reporting/load_reporting.h
|
||||
- src/core/ext/load_reporting/load_reporting_filter.h
|
||||
- src/core/ext/filters/load_reporting/load_reporting.h
|
||||
- src/core/ext/filters/load_reporting/load_reporting_filter.h
|
||||
src:
|
||||
- src/core/ext/load_reporting/load_reporting.c
|
||||
- src/core/ext/load_reporting/load_reporting_filter.c
|
||||
- src/core/ext/filters/load_reporting/load_reporting.c
|
||||
- src/core/ext/filters/load_reporting/load_reporting_filter.c
|
||||
plugin: grpc_load_reporting_plugin
|
||||
uses:
|
||||
- grpc_base
|
||||
- name: grpc_max_age_filter
|
||||
headers:
|
||||
- src/core/ext/filters/max_age/max_age_filter.h
|
||||
src:
|
||||
- src/core/ext/filters/max_age/max_age_filter.c
|
||||
plugin: grpc_max_age_filter
|
||||
uses:
|
||||
- grpc_base
|
||||
- name: grpc_message_size_filter
|
||||
headers:
|
||||
- src/core/ext/filters/message_size/message_size_filter.h
|
||||
src:
|
||||
- src/core/ext/filters/message_size/message_size_filter.c
|
||||
plugin: grpc_message_size_filter
|
||||
uses:
|
||||
- grpc_base
|
||||
- name: grpc_resolver_dns_ares
|
||||
headers:
|
||||
- src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h
|
||||
- src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h
|
||||
- src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h
|
||||
- src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h
|
||||
src:
|
||||
- src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c
|
||||
- src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
|
||||
- src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
|
||||
- src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c
|
||||
- src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
|
||||
- src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c
|
||||
plugin: grpc_resolver_dns_ares
|
||||
uses:
|
||||
- grpc_base
|
||||
- grpc_client_channel
|
||||
- name: grpc_resolver_dns_native
|
||||
src:
|
||||
- src/core/ext/resolver/dns/native/dns_resolver.c
|
||||
- src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c
|
||||
plugin: grpc_resolver_dns_native
|
||||
uses:
|
||||
- grpc_base
|
||||
- grpc_client_channel
|
||||
- name: grpc_resolver_sockaddr
|
||||
src:
|
||||
- src/core/ext/resolver/sockaddr/sockaddr_resolver.c
|
||||
- src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c
|
||||
plugin: grpc_resolver_sockaddr
|
||||
uses:
|
||||
- grpc_base
|
||||
|
|
@ -643,6 +695,13 @@ filegroups:
|
|||
deps:
|
||||
- grpc
|
||||
- gpr_test_util
|
||||
- name: grpc_trace
|
||||
headers:
|
||||
- src/core/lib/debug/trace.h
|
||||
src:
|
||||
- src/core/lib/debug/trace.c
|
||||
deps:
|
||||
- gpr
|
||||
- name: grpc_transport_chttp2
|
||||
headers:
|
||||
- src/core/ext/transport/chttp2/transport/bin_decoder.h
|
||||
|
|
@ -658,6 +717,7 @@ filegroups:
|
|||
- 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_settings.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
|
||||
|
|
@ -677,6 +737,7 @@ filegroups:
|
|||
- 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/http2_settings.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
|
||||
|
|
@ -688,6 +749,7 @@ filegroups:
|
|||
uses:
|
||||
- grpc_base
|
||||
- grpc_transport_chttp2_alpn
|
||||
- grpc_http_filters
|
||||
- name: grpc_transport_chttp2_alpn
|
||||
headers:
|
||||
- src/core/ext/transport/chttp2/alpn/alpn.h
|
||||
|
|
@ -761,6 +823,7 @@ filegroups:
|
|||
filegroups:
|
||||
- grpc_base
|
||||
- grpc_transport_chttp2
|
||||
- grpc_http_filters
|
||||
- name: nanopb
|
||||
headers:
|
||||
- third_party/nanopb/pb.h
|
||||
|
|
@ -777,14 +840,18 @@ filegroups:
|
|||
- src/core/tsi/ssl_transport_security.h
|
||||
- src/core/tsi/ssl_types.h
|
||||
- src/core/tsi/transport_security.h
|
||||
- src/core/tsi/transport_security_adapter.h
|
||||
- src/core/tsi/transport_security_interface.h
|
||||
src:
|
||||
- src/core/tsi/fake_transport_security.c
|
||||
- src/core/tsi/ssl_transport_security.c
|
||||
- src/core/tsi/transport_security.c
|
||||
- src/core/tsi/transport_security_adapter.c
|
||||
deps:
|
||||
- gpr
|
||||
secure: true
|
||||
uses:
|
||||
- grpc_trace
|
||||
- name: grpc++_base
|
||||
language: c++
|
||||
public_headers:
|
||||
|
|
@ -907,7 +974,6 @@ filegroups:
|
|||
- include/grpc++/impl/codegen/slice.h
|
||||
- include/grpc++/impl/codegen/status.h
|
||||
- include/grpc++/impl/codegen/status_code_enum.h
|
||||
- include/grpc++/impl/codegen/status_helper.h
|
||||
- include/grpc++/impl/codegen/string_ref.h
|
||||
- include/grpc++/impl/codegen/stub_options.h
|
||||
- include/grpc++/impl/codegen/sync_stream.h
|
||||
|
|
@ -938,16 +1004,10 @@ filegroups:
|
|||
- name: grpc++_test
|
||||
language: c++
|
||||
public_headers:
|
||||
- include/grpc++/test/mock_stream.h
|
||||
- include/grpc++/test/server_context_test_spouse.h
|
||||
deps:
|
||||
- grpc++
|
||||
- name: thrift_util
|
||||
language: c++
|
||||
public_headers:
|
||||
- include/grpc++/impl/codegen/thrift_serializer.h
|
||||
- include/grpc++/impl/codegen/thrift_utils.h
|
||||
uses:
|
||||
- grpc++_codegen_base
|
||||
libs:
|
||||
- name: gpr
|
||||
build: all
|
||||
|
|
@ -990,6 +1050,9 @@ libs:
|
|||
- grpc_load_reporting
|
||||
- grpc_secure
|
||||
- census
|
||||
- grpc_max_age_filter
|
||||
- grpc_message_size_filter
|
||||
- grpc_deadline_filter
|
||||
generate_plugin_registry: true
|
||||
secure: true
|
||||
vs_packages:
|
||||
|
|
@ -1086,6 +1149,9 @@ libs:
|
|||
- grpc_lb_policy_pick_first
|
||||
- grpc_lb_policy_round_robin
|
||||
- census
|
||||
- grpc_max_age_filter
|
||||
- grpc_message_size_filter
|
||||
- grpc_deadline_filter
|
||||
generate_plugin_registry: true
|
||||
secure: false
|
||||
vs_project_guid: '{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}'
|
||||
|
|
@ -1165,6 +1231,18 @@ libs:
|
|||
platforms:
|
||||
- linux
|
||||
secure: true
|
||||
- name: grpc++_error_details
|
||||
build: all
|
||||
language: c++
|
||||
public_headers:
|
||||
- include/grpc++/support/error_details.h
|
||||
src:
|
||||
- src/proto/grpc/status/status.proto
|
||||
- src/cpp/util/error_details.cc
|
||||
deps:
|
||||
- grpc++
|
||||
baselib: true
|
||||
vs_project_guid: '{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}'
|
||||
- name: grpc++_proto_reflection_desc_db
|
||||
build: private
|
||||
language: c++
|
||||
|
|
@ -1227,7 +1305,6 @@ libs:
|
|||
- grpc++_codegen_base_src
|
||||
- grpc++_codegen_proto
|
||||
- grpc++_config_proto
|
||||
- thrift_util
|
||||
- name: grpc++_unsecure
|
||||
build: all
|
||||
language: c++
|
||||
|
|
@ -1299,11 +1376,15 @@ libs:
|
|||
- src/compiler/objective_c_generator_helpers.h
|
||||
- src/compiler/php_generator.h
|
||||
- src/compiler/php_generator_helpers.h
|
||||
- src/compiler/protobuf_plugin.h
|
||||
- src/compiler/python_generator.h
|
||||
- src/compiler/python_generator_helpers.h
|
||||
- src/compiler/python_private_generator.h
|
||||
- src/compiler/ruby_generator.h
|
||||
- src/compiler/ruby_generator_helpers-inl.h
|
||||
- src/compiler/ruby_generator_map-inl.h
|
||||
- src/compiler/ruby_generator_string-inl.h
|
||||
- src/compiler/schema_interface.h
|
||||
src:
|
||||
- src/compiler/cpp_generator.cc
|
||||
- src/compiler/csharp_generator.cc
|
||||
|
|
@ -1463,6 +1544,7 @@ libs:
|
|||
- global
|
||||
targets:
|
||||
- name: alarm_test
|
||||
cpu_cost: 0.1
|
||||
build: test
|
||||
language: c
|
||||
src:
|
||||
|
|
@ -1601,6 +1683,14 @@ targets:
|
|||
- grpc
|
||||
- gpr_test_util
|
||||
- gpr
|
||||
- name: check_epollexclusive
|
||||
build: tool
|
||||
language: c
|
||||
src:
|
||||
- test/build/check_epollexclusive.c
|
||||
deps:
|
||||
- grpc
|
||||
- gpr
|
||||
- name: chttp2_hpack_encoder_test
|
||||
build: test
|
||||
language: c
|
||||
|
|
@ -1646,7 +1736,7 @@ targets:
|
|||
dict: test/core/end2end/fuzzers/hpack.dictionary
|
||||
maxlen: 2048
|
||||
- name: combiner_test
|
||||
cpu_cost: 30
|
||||
cpu_cost: 10
|
||||
build: test
|
||||
language: c
|
||||
src:
|
||||
|
|
@ -1667,6 +1757,7 @@ targets:
|
|||
- gpr_test_util
|
||||
- gpr
|
||||
- name: concurrent_connectivity_test
|
||||
cpu_cost: 2.0
|
||||
build: test
|
||||
language: c
|
||||
src:
|
||||
|
|
@ -1752,11 +1843,12 @@ targets:
|
|||
- grpc
|
||||
- gpr_test_util
|
||||
- gpr
|
||||
- name: ev_epoll_linux_test
|
||||
- name: ev_epollsig_linux_test
|
||||
cpu_cost: 3
|
||||
build: test
|
||||
language: c
|
||||
src:
|
||||
- test/core/iomgr/ev_epoll_linux_test.c
|
||||
- test/core/iomgr/ev_epollsig_linux_test.c
|
||||
deps:
|
||||
- grpc_test_util
|
||||
- grpc
|
||||
|
|
@ -1766,6 +1858,16 @@ targets:
|
|||
- uv
|
||||
platforms:
|
||||
- linux
|
||||
- name: fake_resolver_test
|
||||
build: test
|
||||
language: c
|
||||
src:
|
||||
- test/core/client_channel/resolvers/fake_resolver_test.c
|
||||
deps:
|
||||
- grpc_test_util
|
||||
- grpc
|
||||
- gpr_test_util
|
||||
- gpr
|
||||
- name: fd_conservation_posix_test
|
||||
build: test
|
||||
language: c
|
||||
|
|
@ -1912,6 +2014,7 @@ targets:
|
|||
- gpr_test_util
|
||||
- gpr
|
||||
- name: gpr_cpu_test
|
||||
cpu_cost: 30
|
||||
build: test
|
||||
language: c
|
||||
src:
|
||||
|
|
@ -1961,7 +2064,7 @@ targets:
|
|||
- gpr_test_util
|
||||
- gpr
|
||||
- name: gpr_spinlock_test
|
||||
cpu_cost: 10
|
||||
cpu_cost: 3
|
||||
build: test
|
||||
language: c
|
||||
src:
|
||||
|
|
@ -2492,6 +2595,16 @@ targets:
|
|||
- grpc
|
||||
- gpr_test_util
|
||||
- gpr
|
||||
- name: minimal_stack_is_minimal_test
|
||||
build: test
|
||||
language: c
|
||||
src:
|
||||
- test/core/channel/minimal_stack_is_minimal_test.c
|
||||
deps:
|
||||
- grpc_test_util
|
||||
- grpc
|
||||
- gpr_test_util
|
||||
- gpr
|
||||
- name: mlog_test
|
||||
flaky: true
|
||||
build: test
|
||||
|
|
@ -2733,6 +2846,16 @@ targets:
|
|||
- grpc
|
||||
- gpr_test_util
|
||||
- gpr
|
||||
- name: slice_hash_table_test
|
||||
build: test
|
||||
language: c
|
||||
src:
|
||||
- test/core/slice/slice_hash_table_test.c
|
||||
deps:
|
||||
- grpc_test_util
|
||||
- grpc
|
||||
- gpr_test_util
|
||||
- gpr
|
||||
- name: slice_string_helpers_test
|
||||
build: test
|
||||
language: c
|
||||
|
|
@ -3205,6 +3328,27 @@ targets:
|
|||
- mac
|
||||
- linux
|
||||
- posix
|
||||
- name: bm_cq_multiple_threads
|
||||
build: test
|
||||
language: c++
|
||||
src:
|
||||
- test/cpp/microbenchmarks/bm_cq_multiple_threads.cc
|
||||
deps:
|
||||
- grpc_benchmark
|
||||
- benchmark
|
||||
- grpc++_test_util
|
||||
- grpc_test_util
|
||||
- grpc++
|
||||
- grpc
|
||||
- gpr_test_util
|
||||
- gpr
|
||||
args:
|
||||
- --benchmark_min_time=0
|
||||
defaults: benchmark
|
||||
platforms:
|
||||
- mac
|
||||
- linux
|
||||
- posix
|
||||
- name: bm_error
|
||||
build: test
|
||||
language: c++
|
||||
|
|
@ -3461,6 +3605,9 @@ targets:
|
|||
- src/proto/grpc/testing/services.proto
|
||||
- src/proto/grpc/testing/stats.proto
|
||||
- test/cpp/codegen/codegen_test_minimal.cc
|
||||
deps:
|
||||
- grpc
|
||||
- gpr
|
||||
filegroups:
|
||||
- grpc++_codegen_base
|
||||
- grpc++_codegen_base_src
|
||||
|
|
@ -3532,6 +3679,16 @@ targets:
|
|||
- grpc
|
||||
- gpr_test_util
|
||||
- gpr
|
||||
- name: error_details_test
|
||||
gtest: true
|
||||
build: test
|
||||
language: c++
|
||||
src:
|
||||
- src/proto/grpc/testing/echo_messages.proto
|
||||
- test/cpp/util/error_details_test.cc
|
||||
deps:
|
||||
- grpc++_error_details
|
||||
- grpc++
|
||||
- name: filter_end2end_test
|
||||
gtest: true
|
||||
build: test
|
||||
|
|
@ -3570,7 +3727,7 @@ targets:
|
|||
- grpc
|
||||
- gpr
|
||||
args:
|
||||
- --generated_file_path=gens/src/proto/grpc/testing/compiler_test.grpc.pb.h
|
||||
- --generated_file_path=gens/src/proto/grpc/testing/
|
||||
- name: grpc_cli
|
||||
build: test
|
||||
run: false
|
||||
|
|
@ -3684,6 +3841,20 @@ targets:
|
|||
- grpc_test_util
|
||||
- grpc++
|
||||
- grpc
|
||||
- name: grpclb_end2end_test
|
||||
gtest: true
|
||||
build: test
|
||||
language: c++
|
||||
src:
|
||||
- src/proto/grpc/lb/v1/load_balancer.proto
|
||||
- test/cpp/end2end/grpclb_end2end_test.cc
|
||||
deps:
|
||||
- grpc++_test_util
|
||||
- grpc_test_util
|
||||
- grpc++
|
||||
- grpc
|
||||
- gpr_test_util
|
||||
- gpr
|
||||
- name: grpclb_test
|
||||
gtest: false
|
||||
build: test
|
||||
|
|
@ -3813,6 +3984,20 @@ targets:
|
|||
- mac
|
||||
- linux
|
||||
- posix
|
||||
- name: memory_test
|
||||
gtest: true
|
||||
build: test
|
||||
language: c++
|
||||
src:
|
||||
- test/core/support/memory_test.cc
|
||||
deps:
|
||||
- grpc_test_util
|
||||
- grpc++
|
||||
- grpc
|
||||
- gpr_test_util
|
||||
- gpr
|
||||
uses:
|
||||
- grpc++_test
|
||||
- name: metrics_client
|
||||
build: test
|
||||
run: false
|
||||
|
|
@ -3831,6 +4016,8 @@ targets:
|
|||
gtest: true
|
||||
build: test
|
||||
language: c++
|
||||
headers:
|
||||
- include/grpc++/test/mock_stream.h
|
||||
src:
|
||||
- test/cpp/end2end/mock_test.cc
|
||||
deps:
|
||||
|
|
@ -4240,7 +4427,7 @@ configs:
|
|||
CPPFLAGS: -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer
|
||||
-Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
|
||||
CXX: clang++
|
||||
LD: clang
|
||||
LD: clang++
|
||||
LDFLAGS: -fsanitize=address
|
||||
LDXX: clang++
|
||||
compile_the_world: true
|
||||
|
|
@ -4252,7 +4439,7 @@ configs:
|
|||
CPPFLAGS: -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer
|
||||
-Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
|
||||
CXX: clang++
|
||||
LD: clang
|
||||
LD: clang++
|
||||
LDFLAGS: -fsanitize=address
|
||||
LDXX: clang++
|
||||
compile_the_world: true
|
||||
|
|
@ -4263,7 +4450,7 @@ configs:
|
|||
CPPFLAGS: -O0 -fsanitize-coverage=edge -fsanitize-coverage=trace-cmp -fsanitize=address
|
||||
-fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
|
||||
CXX: clang++
|
||||
LD: clang
|
||||
LD: clang++
|
||||
LDFLAGS: -fsanitize=address
|
||||
LDXX: clang++
|
||||
compile_the_world: true
|
||||
|
|
@ -4273,11 +4460,16 @@ configs:
|
|||
basicprof:
|
||||
CPPFLAGS: -O2 -DGRPC_BASIC_PROFILER -DGRPC_TIMERS_RDTSC
|
||||
DEFINES: NDEBUG
|
||||
c++-compat:
|
||||
CFLAGS: -Wc++-compat
|
||||
CPPFLAGS: -O0
|
||||
DEFINES: _DEBUG DEBUG
|
||||
counters:
|
||||
CPPFLAGS: -O2 -DGPR_LOW_LEVEL_COUNTERS
|
||||
DEFINES: NDEBUG
|
||||
dbg:
|
||||
CPPFLAGS: -O0
|
||||
CXXFLAGS: -fno-exceptions
|
||||
DEFINES: _DEBUG DEBUG
|
||||
gcov:
|
||||
CC: gcc
|
||||
|
|
@ -4307,7 +4499,7 @@ configs:
|
|||
-Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS
|
||||
CXX: clang++
|
||||
DEFINES: NDEBUG
|
||||
LD: clang
|
||||
LD: clang++
|
||||
LDFLAGS: -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
|
||||
-fPIE -pie $(if $(JENKINS_BUILD),-Wl$(comma)-Ttext-segment=0x7e0000000000,)
|
||||
LDXX: clang++
|
||||
|
|
@ -4318,6 +4510,7 @@ configs:
|
|||
LDFLAGS: -rdynamic
|
||||
opt:
|
||||
CPPFLAGS: -O2
|
||||
CXXFLAGS: -fno-exceptions
|
||||
DEFINES: NDEBUG
|
||||
stapprof:
|
||||
CPPFLAGS: -O2 -DGRPC_STAP_PROFILER
|
||||
|
|
@ -4328,7 +4521,7 @@ configs:
|
|||
-DGPR_NO_DIRECT_SYSCALLS
|
||||
CXX: clang++
|
||||
DEFINES: GRPC_TSAN
|
||||
LD: clang
|
||||
LD: clang++
|
||||
LDFLAGS: -fsanitize=thread
|
||||
LDXX: clang++
|
||||
compile_the_world: true
|
||||
|
|
@ -4339,8 +4532,8 @@ configs:
|
|||
CPPFLAGS: -O0 -fsanitize-coverage=edge -fsanitize=undefined -fno-omit-frame-pointer
|
||||
-Wno-unused-command-line-argument -Wvarargs
|
||||
CXX: clang++
|
||||
DEFINES: NDEBUG
|
||||
LD: clang
|
||||
DEFINES: NDEBUG GRPC_UBSAN
|
||||
LD: clang++
|
||||
LDFLAGS: -fsanitize=undefined,unsigned-integer-overflow
|
||||
LDXX: clang++
|
||||
compile_the_world: true
|
||||
|
|
@ -4348,10 +4541,11 @@ configs:
|
|||
UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1:suppressions=tools/ubsan_suppressions.txt
|
||||
defaults:
|
||||
ares:
|
||||
CFLAGS: -Wno-sign-conversion -Wno-invalid-source-encoding
|
||||
CFLAGS: -Wno-sign-conversion $(if $(subst MINGW32,,$(SYSTEM)),-Wno-invalid-source-encoding,)
|
||||
CPPFLAGS: -Ithird_party/cares -Ithird_party/cares/cares $(if $(subst Linux,,$(SYSTEM)),,-Ithird_party/cares/config_linux)
|
||||
$(if $(subst Darwin,,$(SYSTEM)),,-Ithird_party/cares/config_darwin) -fvisibility=hidden
|
||||
-D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DHAVE_CONFIG_H
|
||||
-D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX $(if $(subst
|
||||
MINGW32,,$(SYSTEM)),-DHAVE_CONFIG_H,)
|
||||
benchmark:
|
||||
CPPFLAGS: -Ithird_party/benchmark/include -DHAVE_POSIX_REGEX
|
||||
boringssl:
|
||||
|
|
@ -4397,13 +4591,10 @@ node_modules:
|
|||
- src/node/ext/call_credentials.cc
|
||||
- src/node/ext/channel.cc
|
||||
- src/node/ext/channel_credentials.cc
|
||||
- src/node/ext/completion_queue_threadpool.cc
|
||||
- src/node/ext/completion_queue_uv.cc
|
||||
- src/node/ext/completion_queue.cc
|
||||
- src/node/ext/node_grpc.cc
|
||||
- src/node/ext/server.cc
|
||||
- src/node/ext/server_credentials.cc
|
||||
- src/node/ext/server_generic.cc
|
||||
- src/node/ext/server_uv.cc
|
||||
- src/node/ext/slice.cc
|
||||
- src/node/ext/timeval.cc
|
||||
openssl_fallback:
|
||||
|
|
@ -4414,6 +4605,7 @@ php_config_m4:
|
|||
deps:
|
||||
- grpc
|
||||
- gpr
|
||||
- ares
|
||||
- boringssl
|
||||
headers:
|
||||
- src/php/ext/grpc/byte_buffer.h
|
||||
|
|
|
|||
|
|
@ -28,5 +28,5 @@
|
|||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
module GrpcBuildConfig
|
||||
CORE_WINDOWS_DLL = '/tmp/libs/opt/grpc-3.dll'
|
||||
CORE_WINDOWS_DLL = '/tmp/libs/opt/grpc-4.dll'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ option(gRPC_MSVC_STATIC_RUNTIME "Link with static msvc runtime libraries" OFF)
|
|||
if(gRPC_MSVC_STATIC_RUNTIME)
|
||||
# switch from dynamic to static linking of msvcrt
|
||||
foreach(flag_var
|
||||
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
||||
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
"license": "BSD-3-Clause",
|
||||
"require": {
|
||||
"php": ">=5.5.0",
|
||||
"google/protobuf": "^v3.1.0"
|
||||
"google/protobuf": "^v3.3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"google/auth": "v0.9"
|
||||
|
|
|
|||
178
config.m4
178
config.m4
|
|
@ -8,6 +8,8 @@ if test "$PHP_GRPC" != "no"; then
|
|||
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/include)
|
||||
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/src/php/ext/grpc)
|
||||
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/boringssl/include)
|
||||
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/cares)
|
||||
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/cares/cares)
|
||||
|
||||
LIBS="-lpthread $LIBS"
|
||||
|
||||
|
|
@ -18,8 +20,11 @@ if test "$PHP_GRPC" != "no"; then
|
|||
PHP_ADD_LIBRARY(dl)
|
||||
|
||||
case $host in
|
||||
*darwin*) ;;
|
||||
*darwin*)
|
||||
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/cares/config_darwin)
|
||||
;;
|
||||
*)
|
||||
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/cares/config_linux)
|
||||
PHP_ADD_LIBRARY(rt,,GRPC_SHARED_LIBADD)
|
||||
PHP_ADD_LIBRARY(rt)
|
||||
;;
|
||||
|
|
@ -86,19 +91,12 @@ if test "$PHP_GRPC" != "no"; then
|
|||
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/deadline_filter.c \
|
||||
src/core/lib/channel/handshaker.c \
|
||||
src/core/lib/channel/handshaker_factory.c \
|
||||
src/core/lib/channel/handshaker_registry.c \
|
||||
src/core/lib/channel/http_client_filter.c \
|
||||
src/core/lib/channel/http_server_filter.c \
|
||||
src/core/lib/channel/max_age_filter.c \
|
||||
src/core/lib/channel/message_size_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 \
|
||||
|
|
@ -109,7 +107,11 @@ if test "$PHP_GRPC" != "no"; then
|
|||
src/core/lib/iomgr/endpoint_pair_uv.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_epoll1_linux.c \
|
||||
src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c \
|
||||
src/core/lib/iomgr/ev_epoll_thread_pool_linux.c \
|
||||
src/core/lib/iomgr/ev_epollex_linux.c \
|
||||
src/core/lib/iomgr/ev_epollsig_linux.c \
|
||||
src/core/lib/iomgr/ev_poll_posix.c \
|
||||
src/core/lib/iomgr/ev_posix.c \
|
||||
src/core/lib/iomgr/exec_ctx.c \
|
||||
|
|
@ -119,7 +121,9 @@ if test "$PHP_GRPC" != "no"; then
|
|||
src/core/lib/iomgr/iomgr_posix.c \
|
||||
src/core/lib/iomgr/iomgr_uv.c \
|
||||
src/core/lib/iomgr/iomgr_windows.c \
|
||||
src/core/lib/iomgr/is_epollexclusive_available.c \
|
||||
src/core/lib/iomgr/load_file.c \
|
||||
src/core/lib/iomgr/lockfree_event.c \
|
||||
src/core/lib/iomgr/network_status_tracker.c \
|
||||
src/core/lib/iomgr/polling_entity.c \
|
||||
src/core/lib/iomgr/pollset_set_uv.c \
|
||||
|
|
@ -154,6 +158,7 @@ if test "$PHP_GRPC" != "no"; then
|
|||
src/core/lib/iomgr/time_averaged_stats.c \
|
||||
src/core/lib/iomgr/timer_generic.c \
|
||||
src/core/lib/iomgr/timer_heap.c \
|
||||
src/core/lib/iomgr/timer_manager.c \
|
||||
src/core/lib/iomgr/timer_uv.c \
|
||||
src/core/lib/iomgr/udp_server.c \
|
||||
src/core/lib/iomgr/unix_sockets_posix.c \
|
||||
|
|
@ -190,7 +195,7 @@ if test "$PHP_GRPC" != "no"; then
|
|||
src/core/lib/surface/completion_queue.c \
|
||||
src/core/lib/surface/completion_queue_factory.c \
|
||||
src/core/lib/surface/event_string.c \
|
||||
src/core/lib/surface/lame_client.c \
|
||||
src/core/lib/surface/lame_client.cc \
|
||||
src/core/lib/surface/metadata_array.c \
|
||||
src/core/lib/surface/server.c \
|
||||
src/core/lib/surface/validate_metadata.c \
|
||||
|
|
@ -208,6 +213,7 @@ if test "$PHP_GRPC" != "no"; then
|
|||
src/core/lib/transport/timeout_encoding.c \
|
||||
src/core/lib/transport/transport.c \
|
||||
src/core/lib/transport/transport_op_string.c \
|
||||
src/core/lib/debug/trace.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 \
|
||||
|
|
@ -222,6 +228,7 @@ if test "$PHP_GRPC" != "no"; then
|
|||
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/http2_settings.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 \
|
||||
|
|
@ -230,6 +237,10 @@ if test "$PHP_GRPC" != "no"; then
|
|||
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/ext/filters/http/client/http_client_filter.c \
|
||||
src/core/ext/filters/http/http_filters_plugin.c \
|
||||
src/core/ext/filters/http/message_compress/message_compress_filter.c \
|
||||
src/core/ext/filters/http/server/http_server_filter.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 \
|
||||
|
|
@ -257,49 +268,53 @@ if test "$PHP_GRPC" != "no"; then
|
|||
src/core/tsi/fake_transport_security.c \
|
||||
src/core/tsi/ssl_transport_security.c \
|
||||
src/core/tsi/transport_security.c \
|
||||
src/core/tsi/transport_security_adapter.c \
|
||||
src/core/ext/transport/chttp2/server/chttp2_server.c \
|
||||
src/core/ext/transport/chttp2/client/secure/secure_channel_create.c \
|
||||
src/core/ext/client_channel/channel_connectivity.c \
|
||||
src/core/ext/client_channel/client_channel.c \
|
||||
src/core/ext/client_channel/client_channel_factory.c \
|
||||
src/core/ext/client_channel/client_channel_plugin.c \
|
||||
src/core/ext/client_channel/connector.c \
|
||||
src/core/ext/client_channel/http_connect_handshaker.c \
|
||||
src/core/ext/client_channel/http_proxy.c \
|
||||
src/core/ext/client_channel/lb_policy.c \
|
||||
src/core/ext/client_channel/lb_policy_factory.c \
|
||||
src/core/ext/client_channel/lb_policy_registry.c \
|
||||
src/core/ext/client_channel/parse_address.c \
|
||||
src/core/ext/client_channel/proxy_mapper.c \
|
||||
src/core/ext/client_channel/proxy_mapper_registry.c \
|
||||
src/core/ext/client_channel/resolver.c \
|
||||
src/core/ext/client_channel/resolver_factory.c \
|
||||
src/core/ext/client_channel/resolver_registry.c \
|
||||
src/core/ext/client_channel/retry_throttle.c \
|
||||
src/core/ext/client_channel/subchannel.c \
|
||||
src/core/ext/client_channel/subchannel_index.c \
|
||||
src/core/ext/client_channel/uri_parser.c \
|
||||
src/core/ext/filters/client_channel/channel_connectivity.c \
|
||||
src/core/ext/filters/client_channel/client_channel.c \
|
||||
src/core/ext/filters/client_channel/client_channel_factory.c \
|
||||
src/core/ext/filters/client_channel/client_channel_plugin.c \
|
||||
src/core/ext/filters/client_channel/connector.c \
|
||||
src/core/ext/filters/client_channel/http_connect_handshaker.c \
|
||||
src/core/ext/filters/client_channel/http_proxy.c \
|
||||
src/core/ext/filters/client_channel/lb_policy.c \
|
||||
src/core/ext/filters/client_channel/lb_policy_factory.c \
|
||||
src/core/ext/filters/client_channel/lb_policy_registry.c \
|
||||
src/core/ext/filters/client_channel/parse_address.c \
|
||||
src/core/ext/filters/client_channel/proxy_mapper.c \
|
||||
src/core/ext/filters/client_channel/proxy_mapper_registry.c \
|
||||
src/core/ext/filters/client_channel/resolver.c \
|
||||
src/core/ext/filters/client_channel/resolver_factory.c \
|
||||
src/core/ext/filters/client_channel/resolver_registry.c \
|
||||
src/core/ext/filters/client_channel/retry_throttle.c \
|
||||
src/core/ext/filters/client_channel/subchannel.c \
|
||||
src/core/ext/filters/client_channel/subchannel_index.c \
|
||||
src/core/ext/filters/client_channel/uri_parser.c \
|
||||
src/core/ext/filters/deadline/deadline_filter.c \
|
||||
src/core/ext/transport/chttp2/client/chttp2_connector.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/grpclb_channel_secure.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 \
|
||||
src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c \
|
||||
src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c \
|
||||
src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c \
|
||||
src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c \
|
||||
src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c \
|
||||
src/core/ext/filters/client_channel/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/c_ares/dns_resolver_ares.c \
|
||||
src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c \
|
||||
src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.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/filters/client_channel/lb_policy/pick_first/pick_first.c \
|
||||
src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c \
|
||||
src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c \
|
||||
src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c \
|
||||
src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c \
|
||||
src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c \
|
||||
src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c \
|
||||
src/core/ext/filters/load_reporting/load_reporting.c \
|
||||
src/core/ext/filters/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 \
|
||||
|
|
@ -314,6 +329,8 @@ if test "$PHP_GRPC" != "no"; then
|
|||
src/core/ext/census/resource.c \
|
||||
src/core/ext/census/trace_context.c \
|
||||
src/core/ext/census/tracing.c \
|
||||
src/core/ext/filters/max_age/max_age_filter.c \
|
||||
src/core/ext/filters/message_size/message_size_filter.c \
|
||||
src/core/plugin_registry/grpc_plugin_registry.c \
|
||||
src/boringssl/err_data.c \
|
||||
third_party/boringssl/crypto/aes/aes.c \
|
||||
|
|
@ -619,6 +636,55 @@ if test "$PHP_GRPC" != "no"; then
|
|||
third_party/boringssl/ssl/tls13_server.c \
|
||||
third_party/boringssl/ssl/tls_method.c \
|
||||
third_party/boringssl/ssl/tls_record.c \
|
||||
third_party/cares/cares/ares__close_sockets.c \
|
||||
third_party/cares/cares/ares__get_hostent.c \
|
||||
third_party/cares/cares/ares__read_line.c \
|
||||
third_party/cares/cares/ares__timeval.c \
|
||||
third_party/cares/cares/ares_cancel.c \
|
||||
third_party/cares/cares/ares_create_query.c \
|
||||
third_party/cares/cares/ares_data.c \
|
||||
third_party/cares/cares/ares_destroy.c \
|
||||
third_party/cares/cares/ares_expand_name.c \
|
||||
third_party/cares/cares/ares_expand_string.c \
|
||||
third_party/cares/cares/ares_fds.c \
|
||||
third_party/cares/cares/ares_free_hostent.c \
|
||||
third_party/cares/cares/ares_free_string.c \
|
||||
third_party/cares/cares/ares_getenv.c \
|
||||
third_party/cares/cares/ares_gethostbyaddr.c \
|
||||
third_party/cares/cares/ares_gethostbyname.c \
|
||||
third_party/cares/cares/ares_getnameinfo.c \
|
||||
third_party/cares/cares/ares_getopt.c \
|
||||
third_party/cares/cares/ares_getsock.c \
|
||||
third_party/cares/cares/ares_init.c \
|
||||
third_party/cares/cares/ares_library_init.c \
|
||||
third_party/cares/cares/ares_llist.c \
|
||||
third_party/cares/cares/ares_mkquery.c \
|
||||
third_party/cares/cares/ares_nowarn.c \
|
||||
third_party/cares/cares/ares_options.c \
|
||||
third_party/cares/cares/ares_parse_a_reply.c \
|
||||
third_party/cares/cares/ares_parse_aaaa_reply.c \
|
||||
third_party/cares/cares/ares_parse_mx_reply.c \
|
||||
third_party/cares/cares/ares_parse_naptr_reply.c \
|
||||
third_party/cares/cares/ares_parse_ns_reply.c \
|
||||
third_party/cares/cares/ares_parse_ptr_reply.c \
|
||||
third_party/cares/cares/ares_parse_soa_reply.c \
|
||||
third_party/cares/cares/ares_parse_srv_reply.c \
|
||||
third_party/cares/cares/ares_parse_txt_reply.c \
|
||||
third_party/cares/cares/ares_platform.c \
|
||||
third_party/cares/cares/ares_process.c \
|
||||
third_party/cares/cares/ares_query.c \
|
||||
third_party/cares/cares/ares_search.c \
|
||||
third_party/cares/cares/ares_send.c \
|
||||
third_party/cares/cares/ares_strcasecmp.c \
|
||||
third_party/cares/cares/ares_strdup.c \
|
||||
third_party/cares/cares/ares_strerror.c \
|
||||
third_party/cares/cares/ares_timeout.c \
|
||||
third_party/cares/cares/ares_version.c \
|
||||
third_party/cares/cares/ares_writev.c \
|
||||
third_party/cares/cares/bitncmp.c \
|
||||
third_party/cares/cares/inet_net_pton.c \
|
||||
third_party/cares/cares/inet_ntop.c \
|
||||
third_party/cares/cares/windows_port.c \
|
||||
, $ext_shared, , -Wall -Werror \
|
||||
-Wno-parentheses-equality -Wno-unused-value -std=c11 \
|
||||
-fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN \
|
||||
|
|
@ -629,15 +695,22 @@ if test "$PHP_GRPC" != "no"; then
|
|||
PHP_ADD_BUILD_DIR($ext_builddir/src/boringssl)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/census)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/census/gen)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/client_channel)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/grpclb)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/pick_first)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/round_robin)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/load_reporting)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/resolver/dns/c_ares)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/resolver/dns/native)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/resolver/sockaddr)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/client_channel)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/client_channel/lb_policy/grpclb)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/client_channel/lb_policy/pick_first)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/client_channel/lb_policy/round_robin)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/client_channel/resolver/dns/c_ares)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/client_channel/resolver/dns/native)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/client_channel/resolver/sockaddr)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/deadline)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/http)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/http/client)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/http/message_compress)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/http/server)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/load_reporting)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/max_age)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/message_size)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/alpn)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/client)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/client/insecure)
|
||||
|
|
@ -714,5 +787,6 @@ if test "$PHP_GRPC" != "no"; then
|
|||
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/crypto/x509)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/crypto/x509v3)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/ssl)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/third_party/cares/cares)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/third_party/nanopb)
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ A **Compressed-Flag** value of 1 indicates that the binary octet sequence of **M
|
|||
|
||||
For requests, **EOS** (end-of-stream) is indicated by the presence of the END_STREAM flag on the last received DATA frame. In scenarios where the **Request** stream needs to be closed but no data remains to be sent implementations MUST send an empty DATA frame with this flag set.
|
||||
|
||||
###Responses
|
||||
### Responses
|
||||
|
||||
* **Response** → (Response-Headers \*Length-Prefixed-Message Trailers) / Trailers-Only
|
||||
* **Response-Headers** → HTTP-Status [Message-Encoding] [Message-Accept-Encoding] Content-Type \*Custom-Metadata
|
||||
|
|
@ -128,7 +128,7 @@ implementation can decode valid portions while leaving broken %-encodings as-is
|
|||
or replacing them with a replacement character (e.g., '?' or the Unicode
|
||||
replacement character).
|
||||
|
||||
####Example
|
||||
#### Example
|
||||
|
||||
Sample unary-call showing HTTP2 framing sequence
|
||||
|
||||
|
|
@ -162,7 +162,7 @@ HEADERS (flags = END_STREAM, END_HEADERS)
|
|||
grpc-status = 0 # OK
|
||||
trace-proto-bin = jher831yy13JHy3hc
|
||||
```
|
||||
####User Agents
|
||||
#### User Agents
|
||||
|
||||
While the protocol does not require a user-agent to function it is recommended that clients provide a structured user-agent string that provides a basic description of the calling library, version & platform to facilitate issue diagnosis in heterogeneous environments. The following structure is recommended to library developers
|
||||
```
|
||||
|
|
@ -177,7 +177,7 @@ grpc-ruby-jruby/1.3.4
|
|||
grpc-java-android/0.9.1 (gingerbread/1.2.4; nexus5; tmobile)
|
||||
```
|
||||
|
||||
####Idempotency and Retries
|
||||
#### Idempotency and Retries
|
||||
|
||||
Unless explicitly defined to be, gRPC Calls are not assumed to be idempotent. Specifically:
|
||||
|
||||
|
|
@ -186,15 +186,15 @@ Unless explicitly defined to be, gRPC Calls are not assumed to be idempotent. S
|
|||
* Calls that are marked as idempotent may be sent multiple times.
|
||||
|
||||
|
||||
####HTTP2 Transport Mapping
|
||||
#### HTTP2 Transport Mapping
|
||||
|
||||
#####Stream Identification
|
||||
##### Stream Identification
|
||||
All GRPC calls need to specify an internal ID. We will use HTTP2 stream-ids as call identifiers in this scheme. NOTE: These id’s are contextual to an open HTTP2 session and will not be unique within a given process that is handling more than one HTTP2 session nor can they be used as GUIDs.
|
||||
|
||||
#####Data Frames
|
||||
##### Data Frames
|
||||
DATA frame boundaries have no relation to **Length-Prefixed-Message** boundaries and implementations should make no assumptions about their alignment.
|
||||
|
||||
#####Errors
|
||||
##### Errors
|
||||
|
||||
When an application or runtime error occurs during an RPC a **Status** and **Status-Message** are delivered in **Trailers**.
|
||||
|
||||
|
|
@ -219,20 +219,20 @@ ENHANCE_YOUR_CALM|RESOURCE_EXHAUSTED ...with additional error detail provided by
|
|||
INADEQUATE_SECURITY| PERMISSION_DENIED … with additional detail indicating that permission was denied as protocol is not secure enough for call.
|
||||
|
||||
|
||||
#####Security
|
||||
##### Security
|
||||
|
||||
The HTTP2 specification mandates the use of TLS 1.2 or higher when TLS is used with HTTP2. It also places some additional constraints on the allowed ciphers in deployments to avoid known-problems as well as requiring SNI support. It is also expected that HTTP2 will be used in conjunction with proprietary transport security mechanisms about which the specification can make no meaningful recommendations.
|
||||
|
||||
#####Connection Management
|
||||
######GOAWAY Frame
|
||||
##### Connection Management
|
||||
###### GOAWAY Frame
|
||||
Sent by servers to clients to indicate that they will no longer accept any new streams on the associated connections. This frame includes the id of the last successfully accepted stream by the server. Clients should consider any stream initiated after the last successfully accepted stream as UNAVAILABLE and retry the call elsewhere. Clients are free to continue working with the already accepted streams until they complete or the connection is terminated.
|
||||
|
||||
Servers should send GOAWAY before terminating a connection to reliably inform clients which work has been accepted by the server and is being executed.
|
||||
|
||||
######PING Frame
|
||||
###### PING Frame
|
||||
Both clients and servers can send a PING frame that the peer must respond to by precisely echoing what they received. This is used to assert that the connection is still live as well as providing a means to estimate end-to-end latency. If a server initiated PING does not receive a response within the deadline expected by the runtime all outstanding calls on the server will be closed with a CANCELLED status. An expired client initiated PING will cause all calls to be closed with an UNAVAILABLE status. Note that the frequency of PINGs is highly dependent on the network environment, implementations are free to adjust PING frequency based on network and application requirements.
|
||||
|
||||
######Connection failure
|
||||
###### Connection failure
|
||||
If a detectable connection failure occurs on the client all calls will be closed with an UNAVAILABLE status. For servers open calls will be closed with a CANCELLED status.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -83,7 +83,8 @@ in the body.
|
|||
|
||||
User Agent
|
||||
|
||||
* U-A: grpc-web-javascript
|
||||
* Do NOT use User-Agent header (which is to be set by browsers, by default)
|
||||
* Use X-User-Agent: grpc-web-javascript/0.1 (follow the same format as specified in [gRPC over HTTP2](http://www.grpc.io/docs/guides/wire.html))
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## Format
|
||||
|
||||
The log format is described in [this proto file](src/proto/grpc/binary_log/v1alpha/log.proto). It is intended that multiple parts of the call will be logged in separate files, and then correlated by analysis tools using the rpc\_id.
|
||||
The log format is described in [this proto file](/src/proto/grpc/binary_log/v1alpha/log.proto). It is intended that multiple parts of the call will be logged in separate files, and then correlated by analysis tools using the rpc\_id.
|
||||
|
||||
## API
|
||||
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ some configuration as environment variables that can be set.
|
|||
- queue_timeout
|
||||
- server_channel - lightweight trace of significant server channel events
|
||||
- secure_endpoint - traces bytes flowing through encrypted channels
|
||||
- timer - timers (alarms) in the grpc internals
|
||||
- transport_security - traces metadata about secure channel establishment
|
||||
- tcp - traces bytes in and out of a channel
|
||||
|
||||
|
|
|
|||
|
|
@ -8,3 +8,4 @@ future), and the corresponding version numbers that used them:
|
|||
- 1.1 'g' stands for 'good'
|
||||
- 1.2 'g' stands for 'green'
|
||||
- 1.3 'g' stands for 'gentle'
|
||||
- 1.4 'g' stands for 'gregarious'
|
||||
|
|
|
|||
|
|
@ -81,9 +81,8 @@ Procedure:
|
|||
Client marks the request as cacheable by setting the cacheable flag in the
|
||||
request context. Longer term this should be driven by the method option
|
||||
specified in the proto file itself.
|
||||
2. Client calls CacheableUnaryCall with `SimpleRequest` request again
|
||||
immediately with the same payload as the previous request. Cacheable flag is
|
||||
also set for this request's context.
|
||||
2. Client calls CacheableUnaryCall again immediately with the same request and
|
||||
configuration as the previous call.
|
||||
|
||||
Client asserts:
|
||||
* Both calls were successful
|
||||
|
|
@ -986,6 +985,7 @@ for the `SimpleRequest.response_type`. If the server does not support the
|
|||
`response_type`, then it should fail the RPC with `INVALID_ARGUMENT`.
|
||||
|
||||
### CacheableUnaryCall
|
||||
[CacheableUnaryCall]: #cacheableunarycall
|
||||
|
||||
Server gets the default SimpleRequest proto as the request. The content of the
|
||||
request is ignored. It returns the SimpleResponse proto with the payload set
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ The contents of the *auth properties* are populated by an *auth interceptor*. Th
|
|||
|
||||
WARNING: AuthContext is the only reliable source of truth when it comes to authenticating RPCs. Using any other call/context properties for authentication purposes is wrong and inherently unsafe.
|
||||
|
||||
####Example AuthContext contents
|
||||
#### Example AuthContext contents
|
||||
|
||||
For secure channel using mutual TLS authentication with both client and server certificates (test certificates from this repository are used).
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ gRPC comes with some basic "interceptors" already built-in.
|
|||
WARNING: While there is a public API that allows anyone to write their own custom interceptor, please think twice before using it.
|
||||
There are legitimate uses for custom interceptors but you should keep in mind that as auth interceptors essentially decide which RPCs are authenticated and which are not, their code is very sensitive from the security perspective and getting things wrong might have serious consequences. If unsure, we strongly recommend to rely on official & proven interceptors that come with gRPC.
|
||||
|
||||
####Available auth interceptors
|
||||
#### Available auth interceptors
|
||||
- TLS/SSL certificate authentication (built into gRPC's security layer, automatically used whenever you use a secure connection)
|
||||
- (coming soon) JWT auth token authentication
|
||||
- more will be added over time
|
||||
|
|
|
|||
|
|
@ -13,12 +13,21 @@ The service config is a JSON string of the following form:
|
|||
```
|
||||
{
|
||||
// Load balancing policy name.
|
||||
// Supported values are 'round_robin' and 'grpclb'.
|
||||
// Optional; if unset, the default behavior is pick the first available
|
||||
// backend.
|
||||
// Note that if the resolver returns only balancer addresses and no
|
||||
// backend addresses, gRPC will always use the 'grpclb' policy,
|
||||
// regardless of what this field is set to.
|
||||
// Currently, the only selectable client-side policy provided with gRPC
|
||||
// is 'round_robin', but third parties may add their own policies.
|
||||
// This field is optional; if unset, the default behavior is to pick
|
||||
// the first available backend.
|
||||
// If the policy name is set via the client API, that value overrides
|
||||
// the value specified here.
|
||||
//
|
||||
// Note that if the resolver returns at least one balancer address (as
|
||||
// opposed to backend addresses), gRPC will use grpclb (see
|
||||
// https://github.com/grpc/grpc/blob/master/doc/load-balancing.md),
|
||||
// regardless of what LB policy is requested either here or via the
|
||||
// client API. However, if the resolver returns at least one backend
|
||||
// address in addition to the balancer address(es), the client may fall
|
||||
// back to the requested policy if it is unable to reach any of the
|
||||
// grpclb load balancers.
|
||||
'loadBalancingPolicy': string,
|
||||
|
||||
// Per-method configuration. Optional.
|
||||
|
|
|
|||
|
|
@ -1,9 +1,20 @@
|
|||
# Status codes and their use in gRPC
|
||||
|
||||
gRPC uses a set of well defined status codes as part of the RPC API. All RPCs started at a client return a `status` object composed of an integer `code` and a string `message`. The server-side can choose the status it returns for a given RPC.
|
||||
gRPC uses a set of well defined status codes as part of the RPC API. All
|
||||
RPCs started at a client return a `status` object composed of an integer
|
||||
`code` and a string `message`. The server-side can choose the status it
|
||||
returns for a given RPC.
|
||||
|
||||
The gRPC client and server-side implementations may also generate and return `status` on their own when errors happen.
|
||||
Only a subset of the pre-defined status codes are generated by the gRPC libraries. The following table lists these codes and summarizes the situations in which they are generated, either by the client or the server-side library implementation.
|
||||
The gRPC client and server-side implementations may also generate and
|
||||
return `status` on their own when errors happen. Only a subset of
|
||||
the pre-defined status codes are generated by the gRPC libraries. This
|
||||
allows applications to be sure that any other code it sees was actually
|
||||
returned by the application (although it is also possible for the
|
||||
server-side to return one of the codes generated by the gRPC libraries).
|
||||
|
||||
The following table lists the codes that may be returned by the gRPC
|
||||
libraries (on either the client-side or server-side) and summarizes the
|
||||
situations in which they are generated.
|
||||
|
||||
| Case | Code | Generated at Client or Server |
|
||||
| ------------- |:-------------| :-----:|
|
||||
|
|
@ -26,7 +37,7 @@ Only a subset of the pre-defined status codes are generated by the gRPC librarie
|
|||
| Response cardinality violation (method requires exactly one response but server sent some other number of responses) | UNIMPLEMENTED | Client|
|
||||
| Error parsing response proto | INTERNAL | Client|
|
||||
| Error parsing request proto | INTERNAL | Server|
|
||||
|
||||
| Sent or received message was larger than configured limit | RESOURCE_EXHAUSTED | Both |
|
||||
|
||||
The following status codes are never generated by the library:
|
||||
- INVALID_ARGUMENT
|
||||
|
|
|
|||
184
etc/roots.pem
184
etc/roots.pem
|
|
@ -1617,42 +1617,6 @@ wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN
|
|||
pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=WellsSecure Public Root Certificate Authority O=Wells Fargo WellsSecure OU=Wells Fargo Bank NA
|
||||
# Subject: CN=WellsSecure Public Root Certificate Authority O=Wells Fargo WellsSecure OU=Wells Fargo Bank NA
|
||||
# Label: "WellsSecure Public Root Certificate Authority"
|
||||
# Serial: 1
|
||||
# MD5 Fingerprint: 15:ac:a5:c2:92:2d:79:bc:e8:7f:cb:67:ed:02:cf:36
|
||||
# SHA1 Fingerprint: e7:b4:f6:9d:61:ec:90:69:db:7e:90:a7:40:1a:3c:f4:7d:4f:e8:ee
|
||||
# SHA256 Fingerprint: a7:12:72:ae:aa:a3:cf:e8:72:7f:7f:b3:9f:0f:b3:d1:e5:42:6e:90:60:b0:6e:e6:f1:3e:9a:3c:58:33:cd:43
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMx
|
||||
IDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxs
|
||||
cyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9v
|
||||
dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcxMjEzMTcwNzU0WhcNMjIxMjE0
|
||||
MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdl
|
||||
bGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQD
|
||||
DC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw
|
||||
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+r
|
||||
WxxTkqxtnt3CxC5FlAM1iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjU
|
||||
Dk/41itMpBb570OYj7OeUt9tkTmPOL13i0Nj67eT/DBMHAGTthP796EfvyXhdDcs
|
||||
HqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8bJVhHlfXBIEyg1J55oNj
|
||||
z7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiBK0HmOFaf
|
||||
SZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/Slwxl
|
||||
AgMBAAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqG
|
||||
KGh0dHA6Ly9jcmwucGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0P
|
||||
AQH/BAQDAgHGMB0GA1UdDgQWBBQmlRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0j
|
||||
BIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGBi6SBiDCBhTELMAkGA1UEBhMC
|
||||
VVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNX
|
||||
ZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
|
||||
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEB
|
||||
ALkVsUSRzCPIK0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd
|
||||
/ZDJPHV3V3p9+N701NX3leZ0bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pB
|
||||
A4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSljqHyita04pO2t/caaH/+Xc/77szWn
|
||||
k4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+esE2fDbbFwRnzVlhE9
|
||||
iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJtylv
|
||||
2G0xffX8oRAHh84vWdw+WNs=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited
|
||||
# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited
|
||||
# Label: "COMODO ECC Certification Authority"
|
||||
|
|
@ -1738,57 +1702,6 @@ Fj4A4xylNoEYokxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ
|
|||
/L7fCg0=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=Microsec e-Szigno Root CA O=Microsec Ltd. OU=e-Szigno CA
|
||||
# Subject: CN=Microsec e-Szigno Root CA O=Microsec Ltd. OU=e-Szigno CA
|
||||
# Label: "Microsec e-Szigno Root CA"
|
||||
# Serial: 272122594155480254301341951808045322001
|
||||
# MD5 Fingerprint: f0:96:b6:2f:c5:10:d5:67:8e:83:25:32:e8:5e:2e:e5
|
||||
# SHA1 Fingerprint: 23:88:c9:d3:71:cc:9e:96:3d:ff:7d:3c:a7:ce:fc:d6:25:ec:19:0d
|
||||
# SHA256 Fingerprint: 32:7a:3d:76:1a:ba:de:a0:34:eb:99:84:06:27:5c:b1:a4:77:6e:fd:ae:2f:df:6d:01:68:ea:1c:4f:55:67:d0
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAw
|
||||
cjELMAkGA1UEBhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNy
|
||||
b3NlYyBMdGQuMRQwEgYDVQQLEwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9z
|
||||
ZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0MDYxMjI4NDRaFw0xNzA0MDYxMjI4
|
||||
NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEWMBQGA1UEChMN
|
||||
TWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMTGU1p
|
||||
Y3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
||||
ggEKAoIBAQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2u
|
||||
uO/TEdyB5s87lozWbxXGd36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+
|
||||
LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/NoqdNAoI/gqyFxuEPkEeZlApxcpMqyabA
|
||||
vjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjcQR/Ji3HWVBTji1R4P770
|
||||
Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJPqW+jqpx
|
||||
62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcB
|
||||
AQRbMFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3Aw
|
||||
LQYIKwYBBQUHMAKGIWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAP
|
||||
BgNVHRMBAf8EBTADAQH/MIIBcwYDVR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIB
|
||||
AQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3LmUtc3ppZ25vLmh1L1NaU1ov
|
||||
MIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0AdAB2AOEAbgB5
|
||||
ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
|
||||
AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABT
|
||||
AHoAbwBsAGcA4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABh
|
||||
ACAAcwB6AGUAcgBpAG4AdAAgAGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABo
|
||||
AHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMAegBpAGcAbgBvAC4AaAB1AC8AUwBa
|
||||
AFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6Ly93d3cuZS1zemln
|
||||
bm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NOPU1p
|
||||
Y3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxP
|
||||
PU1pY3Jvc2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZv
|
||||
Y2F0aW9uTGlzdDtiaW5hcnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuB
|
||||
EGluZm9AZS1zemlnbm8uaHWkdzB1MSMwIQYDVQQDDBpNaWNyb3NlYyBlLVN6aWdu
|
||||
w7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhTWjEWMBQGA1UEChMNTWlj
|
||||
cm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhVMIGsBgNV
|
||||
HSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJI
|
||||
VTERMA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDAS
|
||||
BgNVBAsTC2UtU3ppZ25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBS
|
||||
b290IENBghEAzLjnv04pGv2i3GalHCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS
|
||||
8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMTnGZjWS7KXHAM/IO8VbH0jgds
|
||||
ZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FEaGAHQzAxQmHl
|
||||
7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
|
||||
86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfR
|
||||
hUZLphK3dehKyVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/
|
||||
MPMMNz7UwiiAc7EBt51alhQBS6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=Certigna O=Dhimyotis
|
||||
# Subject: CN=Certigna O=Dhimyotis
|
||||
# Label: "Certigna"
|
||||
|
|
@ -2014,36 +1927,6 @@ buXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2G8kS1sHNzYDzAgE8yGnLRUhj
|
|||
2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5mmxE=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: O=Japanese Government OU=ApplicationCA
|
||||
# Subject: O=Japanese Government OU=ApplicationCA
|
||||
# Label: "ApplicationCA - Japanese Government"
|
||||
# Serial: 49
|
||||
# MD5 Fingerprint: 7e:23:4e:5b:a7:a5:b4:25:e9:00:07:74:11:62:ae:d6
|
||||
# SHA1 Fingerprint: 7f:8a:b0:cf:d0:51:87:6a:66:f3:36:0f:47:c8:8d:8c:d3:35:fc:74
|
||||
# SHA256 Fingerprint: 2d:47:43:7d:e1:79:51:21:5a:12:f3:c5:8e:51:c7:29:a5:80:26:ef:1f:cc:0a:5f:b3:d9:dc:01:2f:60:0d:19
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEc
|
||||
MBoGA1UEChMTSmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRp
|
||||
b25DQTAeFw0wNzEyMTIxNTAwMDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYT
|
||||
AkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zlcm5tZW50MRYwFAYDVQQLEw1BcHBs
|
||||
aWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp23gdE6H
|
||||
j6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4fl+K
|
||||
f5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55
|
||||
IrmTwcrNwVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cw
|
||||
FO5cjFW6WY2H/CPek9AEjP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDiht
|
||||
QWEjdnjDuGWk81quzMKq2edY3rZ+nYVunyoKb58DKTCXKB28t89UKU5RMfkntigm
|
||||
/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRUWssmP3HMlEYNllPqa0jQ
|
||||
k/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNVBAYTAkpQ
|
||||
MRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOC
|
||||
seODvOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD
|
||||
ggEBADlqRHZ3ODrso2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJ
|
||||
hyzjVOGjprIIC8CFqMjSnHH2HZ9g/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+
|
||||
eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYDio+nEhEMy/0/ecGc/WLuo89U
|
||||
DNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmWdupwX3kSa+Sj
|
||||
B1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
|
||||
rosot4LKGAfmt1t06SAZf7IbiVQ=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only
|
||||
# Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only
|
||||
# Label: "GeoTrust Primary Certification Authority - G3"
|
||||
|
|
@ -4720,39 +4603,6 @@ Yv4HAqGEVka+lgqaE9chTLd8B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW
|
|||
+qtB4Uu2NQvAmxU=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş.
|
||||
# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş.
|
||||
# Label: "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6"
|
||||
# Serial: 138134509972618
|
||||
# MD5 Fingerprint: f8:c5:ee:2a:6b:be:95:8d:08:f7:25:4a:ea:71:3e:46
|
||||
# SHA1 Fingerprint: 8a:5c:8c:ee:a5:03:e6:05:56:ba:d8:1b:d4:f6:c9:b0:ed:e5:2f:e0
|
||||
# SHA256 Fingerprint: 8d:e7:86:55:e1:be:7f:78:47:80:0b:93:f6:94:d2:1d:36:8c:c0:6e:03:3e:7f:ab:04:bb:5e:b9:9d:a6:b7:00
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEJjCCAw6gAwIBAgIGfaHyZeyKMA0GCSqGSIb3DQEBCwUAMIGxMQswCQYDVQQG
|
||||
EwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0wSwYDVQQKDERUw5xSS1RSVVNUIEJpbGdp
|
||||
IMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBB
|
||||
LsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBI
|
||||
aXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2MB4XDTEzMTIxODA5MDQxMFoXDTIzMTIx
|
||||
NjA5MDQxMFowgbExCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExTTBLBgNV
|
||||
BAoMRFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2
|
||||
ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMUIwQAYDVQQDDDlUw5xSS1RSVVNUIEVs
|
||||
ZWt0cm9uaWsgU2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgSDYwggEi
|
||||
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCdsGjW6L0UlqMACprx9MfMkU1x
|
||||
eHe59yEmFXNRFpQJRwXiM/VomjX/3EsvMsew7eKC5W/a2uqsxgbPJQ1BgfbBOCK9
|
||||
+bGlprMBvD9QFyv26WZV1DOzXPhDIHiTVRZwGTLmiddk671IUP320EEDwnS3/faA
|
||||
z1vFq6TWlRKb55cTMgPp1KtDWxbtMyJkKbbSk60vbNg9tvYdDjTu0n2pVQ8g9P0p
|
||||
u5FbHH3GQjhtQiht1AH7zYiXSX6484P4tZgvsycLSF5W506jM7NE1qXyGJTtHB6p
|
||||
lVxiSvgNZ1GpryHV+DKdeboaX+UEVU0TRv/yz3THGmNtwx8XEsMeED5gCLMxAgMB
|
||||
AAGjQjBAMB0GA1UdDgQWBBTdVRcT9qzoSCHK77Wv0QAy7Z6MtTAOBgNVHQ8BAf8E
|
||||
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAb1gNl0Oq
|
||||
FlQ+v6nfkkU/hQu7VtMMUszIv3ZnXuaqs6fvuay0EBQNdH49ba3RfdCaqaXKGDsC
|
||||
QC4qnFAUi/5XfldcEQlLNkVS9z2sFP1E34uXI9TDwe7UU5X+LEr+DXCqu4svLcsy
|
||||
o4LyVN/Y8t3XSHLuSqMplsNEzm61kod2pLv0kmzOLBQJZo6NrRa1xxsJYTvjIKID
|
||||
gI6tflEATseWhvtDmHd9KMeP2Cpu54Rvl0EpABZeTeIT6lnAY2c6RPuY/ATTMHKm
|
||||
9ocJV612ph1jmv3XZch4gyt1O6VbuA1df74jrlZVlFjvH4GMKrLN5ptjnhi85WsG
|
||||
tAuYSyher4hYyw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903
|
||||
# Subject: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903
|
||||
# Label: "Certinomis - Root CA"
|
||||
|
|
@ -5402,3 +5252,37 @@ LSoSOcbDWjLtR5EWDrw4wVDej8oqkDQc7kGUnF4ZLvhFSZl0kbAEb+MEWrGrKqv+
|
|||
x9CWttrhSmQGbmBNvUJO/3jaJMobtNeWOWyu8Q6qp31IiyBMz2TWuJdGsE7RKlY6
|
||||
oJO9r4Ak4Ap+58rVyuiFVdw2KuGUaJPHZnJED4AhMmwlxyOAgwrr
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM
|
||||
# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM
|
||||
# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1"
|
||||
# Serial: 1
|
||||
# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49
|
||||
# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca
|
||||
# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx
|
||||
GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp
|
||||
bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w
|
||||
KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0
|
||||
BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy
|
||||
dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG
|
||||
EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll
|
||||
IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU
|
||||
QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT
|
||||
TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg
|
||||
LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7
|
||||
a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr
|
||||
LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr
|
||||
N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X
|
||||
YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/
|
||||
iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f
|
||||
AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH
|
||||
V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
|
||||
BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh
|
||||
AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf
|
||||
IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4
|
||||
lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c
|
||||
8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf
|
||||
lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@
|
|||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
cc_binary(
|
||||
name = "greeter_client",
|
||||
srcs = ["greeter_client.cc"],
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#gRPC in 3 minutes (C++)
|
||||
# gRPC in 3 minutes (C++)
|
||||
|
||||
## Installation
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#gRPC Basics: C++
|
||||
# gRPC Basics: C++
|
||||
|
||||
This tutorial provides a basic C++ programmer's introduction to working with
|
||||
gRPC. By walking through this example you'll learn how to:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.26228.4
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Greeter", "Greeter\Greeter.csproj", "{13B6DFC8-F5F6-4CC2-99DF-57A7CF042033}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GreeterClient", "GreeterClient\GreeterClient.csproj", "{B754FB02-D501-4308-8B89-33AB7119C80D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GreeterServer", "GreeterServer\GreeterServer.csproj", "{DDBFF994-E076-43AD-B18D-049DFC1B670C}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{13B6DFC8-F5F6-4CC2-99DF-57A7CF042033}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{13B6DFC8-F5F6-4CC2-99DF-57A7CF042033}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{13B6DFC8-F5F6-4CC2-99DF-57A7CF042033}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{13B6DFC8-F5F6-4CC2-99DF-57A7CF042033}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B754FB02-D501-4308-8B89-33AB7119C80D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B754FB02-D501-4308-8B89-33AB7119C80D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B754FB02-D501-4308-8B89-33AB7119C80D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B754FB02-D501-4308-8B89-33AB7119C80D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DDBFF994-E076-43AD-B18D-049DFC1B670C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DDBFF994-E076-43AD-B18D-049DFC1B670C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DDBFF994-E076-43AD-B18D-049DFC1B670C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DDBFF994-E076-43AD-B18D-049DFC1B670C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<AssemblyTitle>Greeter</AssemblyTitle>
|
||||
<TargetFrameworks>netcoreapp1.0</TargetFrameworks>
|
||||
<DebugType>portable</DebugType>
|
||||
<AssemblyName>Greeter</AssemblyName>
|
||||
<PackageId>Greeter</PackageId>
|
||||
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Google.Protobuf" Version="3.2.0" />
|
||||
<PackageReference Include="Google.Protobuf.Tools" Version="3.2.0" />
|
||||
<PackageReference Include="Grpc" Version="1.2.2" />
|
||||
<PackageReference Include="Grpc.Tools" Version="1.2.2" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -10,7 +10,6 @@ using scg = global::System.Collections.Generic;
|
|||
namespace Helloworld {
|
||||
|
||||
/// <summary>Holder for reflection information generated from helloworld.proto</summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public static partial class HelloworldReflection {
|
||||
|
||||
#region Descriptor
|
||||
|
|
@ -41,31 +40,36 @@ namespace Helloworld {
|
|||
}
|
||||
#region Messages
|
||||
/// <summary>
|
||||
/// The request message containing the user's name.
|
||||
/// The request message containing the user's name.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public sealed partial class HelloRequest : pb::IMessage<HelloRequest> {
|
||||
private static readonly pb::MessageParser<HelloRequest> _parser = new pb::MessageParser<HelloRequest>(() => new HelloRequest());
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public static pb::MessageParser<HelloRequest> Parser { get { return _parser; } }
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public static pbr::MessageDescriptor Descriptor {
|
||||
get { return global::Helloworld.HelloworldReflection.Descriptor.MessageTypes[0]; }
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
pbr::MessageDescriptor pb::IMessage.Descriptor {
|
||||
get { return Descriptor; }
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloRequest() {
|
||||
OnConstruction();
|
||||
}
|
||||
|
||||
partial void OnConstruction();
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloRequest(HelloRequest other) : this() {
|
||||
name_ = other.name_;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloRequest Clone() {
|
||||
return new HelloRequest(this);
|
||||
}
|
||||
|
|
@ -73,6 +77,7 @@ namespace Helloworld {
|
|||
/// <summary>Field number for the "name" field.</summary>
|
||||
public const int NameFieldNumber = 1;
|
||||
private string name_ = "";
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public string Name {
|
||||
get { return name_; }
|
||||
set {
|
||||
|
|
@ -80,10 +85,12 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override bool Equals(object other) {
|
||||
return Equals(other as HelloRequest);
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public bool Equals(HelloRequest other) {
|
||||
if (ReferenceEquals(other, null)) {
|
||||
return false;
|
||||
|
|
@ -95,16 +102,19 @@ namespace Helloworld {
|
|||
return true;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override int GetHashCode() {
|
||||
int hash = 1;
|
||||
if (Name.Length != 0) hash ^= Name.GetHashCode();
|
||||
return hash;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override string ToString() {
|
||||
return pb::JsonFormatter.ToDiagnosticString(this);
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void WriteTo(pb::CodedOutputStream output) {
|
||||
if (Name.Length != 0) {
|
||||
output.WriteRawTag(10);
|
||||
|
|
@ -112,6 +122,7 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public int CalculateSize() {
|
||||
int size = 0;
|
||||
if (Name.Length != 0) {
|
||||
|
|
@ -120,6 +131,7 @@ namespace Helloworld {
|
|||
return size;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void MergeFrom(HelloRequest other) {
|
||||
if (other == null) {
|
||||
return;
|
||||
|
|
@ -129,6 +141,7 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void MergeFrom(pb::CodedInputStream input) {
|
||||
uint tag;
|
||||
while ((tag = input.ReadTag()) != 0) {
|
||||
|
|
@ -147,31 +160,36 @@ namespace Helloworld {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The response message containing the greetings
|
||||
/// The response message containing the greetings
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public sealed partial class HelloReply : pb::IMessage<HelloReply> {
|
||||
private static readonly pb::MessageParser<HelloReply> _parser = new pb::MessageParser<HelloReply>(() => new HelloReply());
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public static pb::MessageParser<HelloReply> Parser { get { return _parser; } }
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public static pbr::MessageDescriptor Descriptor {
|
||||
get { return global::Helloworld.HelloworldReflection.Descriptor.MessageTypes[1]; }
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
pbr::MessageDescriptor pb::IMessage.Descriptor {
|
||||
get { return Descriptor; }
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloReply() {
|
||||
OnConstruction();
|
||||
}
|
||||
|
||||
partial void OnConstruction();
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloReply(HelloReply other) : this() {
|
||||
message_ = other.message_;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloReply Clone() {
|
||||
return new HelloReply(this);
|
||||
}
|
||||
|
|
@ -179,6 +197,7 @@ namespace Helloworld {
|
|||
/// <summary>Field number for the "message" field.</summary>
|
||||
public const int MessageFieldNumber = 1;
|
||||
private string message_ = "";
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public string Message {
|
||||
get { return message_; }
|
||||
set {
|
||||
|
|
@ -186,10 +205,12 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override bool Equals(object other) {
|
||||
return Equals(other as HelloReply);
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public bool Equals(HelloReply other) {
|
||||
if (ReferenceEquals(other, null)) {
|
||||
return false;
|
||||
|
|
@ -201,16 +222,19 @@ namespace Helloworld {
|
|||
return true;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override int GetHashCode() {
|
||||
int hash = 1;
|
||||
if (Message.Length != 0) hash ^= Message.GetHashCode();
|
||||
return hash;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override string ToString() {
|
||||
return pb::JsonFormatter.ToDiagnosticString(this);
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void WriteTo(pb::CodedOutputStream output) {
|
||||
if (Message.Length != 0) {
|
||||
output.WriteRawTag(10);
|
||||
|
|
@ -218,6 +242,7 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public int CalculateSize() {
|
||||
int size = 0;
|
||||
if (Message.Length != 0) {
|
||||
|
|
@ -226,6 +251,7 @@ namespace Helloworld {
|
|||
return size;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void MergeFrom(HelloReply other) {
|
||||
if (other == null) {
|
||||
return;
|
||||
|
|
@ -235,6 +261,7 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void MergeFrom(pb::CodedInputStream input) {
|
||||
uint tag;
|
||||
while ((tag = input.ReadTag()) != 0) {
|
||||
|
|
|
|||
|
|
@ -35,21 +35,21 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Grpc.Core;
|
||||
using grpc = global::Grpc.Core;
|
||||
|
||||
namespace Helloworld {
|
||||
/// <summary>
|
||||
/// The greeting service definition.
|
||||
/// The greeting service definition.
|
||||
/// </summary>
|
||||
public static class Greeter
|
||||
public static partial class Greeter
|
||||
{
|
||||
static readonly string __ServiceName = "helloworld.Greeter";
|
||||
|
||||
static readonly Marshaller<global::Helloworld.HelloRequest> __Marshaller_HelloRequest = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Helloworld.HelloRequest.Parser.ParseFrom);
|
||||
static readonly Marshaller<global::Helloworld.HelloReply> __Marshaller_HelloReply = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Helloworld.HelloReply.Parser.ParseFrom);
|
||||
static readonly grpc::Marshaller<global::Helloworld.HelloRequest> __Marshaller_HelloRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Helloworld.HelloRequest.Parser.ParseFrom);
|
||||
static readonly grpc::Marshaller<global::Helloworld.HelloReply> __Marshaller_HelloReply = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Helloworld.HelloReply.Parser.ParseFrom);
|
||||
|
||||
static readonly Method<global::Helloworld.HelloRequest, global::Helloworld.HelloReply> __Method_SayHello = new Method<global::Helloworld.HelloRequest, global::Helloworld.HelloReply>(
|
||||
MethodType.Unary,
|
||||
static readonly grpc::Method<global::Helloworld.HelloRequest, global::Helloworld.HelloReply> __Method_SayHello = new grpc::Method<global::Helloworld.HelloRequest, global::Helloworld.HelloReply>(
|
||||
grpc::MethodType.Unary,
|
||||
__ServiceName,
|
||||
"SayHello",
|
||||
__Marshaller_HelloRequest,
|
||||
|
|
@ -62,29 +62,32 @@ namespace Helloworld {
|
|||
}
|
||||
|
||||
/// <summary>Base class for server-side implementations of Greeter</summary>
|
||||
public abstract class GreeterBase
|
||||
public abstract partial class GreeterBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Sends a greeting
|
||||
/// Sends a greeting
|
||||
/// </summary>
|
||||
public virtual global::System.Threading.Tasks.Task<global::Helloworld.HelloReply> SayHello(global::Helloworld.HelloRequest request, ServerCallContext context)
|
||||
/// <param name="request">The request received from the client.</param>
|
||||
/// <param name="context">The context of the server-side call handler being invoked.</param>
|
||||
/// <returns>The response to send back to the client (wrapped by a task).</returns>
|
||||
public virtual global::System.Threading.Tasks.Task<global::Helloworld.HelloReply> SayHello(global::Helloworld.HelloRequest request, grpc::ServerCallContext context)
|
||||
{
|
||||
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
|
||||
throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>Client for Greeter</summary>
|
||||
public class GreeterClient : ClientBase<GreeterClient>
|
||||
public partial class GreeterClient : grpc::ClientBase<GreeterClient>
|
||||
{
|
||||
/// <summary>Creates a new client for Greeter</summary>
|
||||
/// <param name="channel">The channel to use to make remote calls.</param>
|
||||
public GreeterClient(Channel channel) : base(channel)
|
||||
public GreeterClient(grpc::Channel channel) : base(channel)
|
||||
{
|
||||
}
|
||||
/// <summary>Creates a new client for Greeter that uses a custom <c>CallInvoker</c>.</summary>
|
||||
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
|
||||
public GreeterClient(CallInvoker callInvoker) : base(callInvoker)
|
||||
public GreeterClient(grpc::CallInvoker callInvoker) : base(callInvoker)
|
||||
{
|
||||
}
|
||||
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
|
||||
|
|
@ -98,33 +101,50 @@ namespace Helloworld {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sends a greeting
|
||||
/// Sends a greeting
|
||||
/// </summary>
|
||||
public virtual global::Helloworld.HelloReply SayHello(global::Helloworld.HelloRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
|
||||
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
|
||||
/// <param name="cancellationToken">An optional token for canceling the call.</param>
|
||||
/// <returns>The response received from the server.</returns>
|
||||
public virtual global::Helloworld.HelloReply SayHello(global::Helloworld.HelloRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
{
|
||||
return SayHello(request, new CallOptions(headers, deadline, cancellationToken));
|
||||
return SayHello(request, new grpc::CallOptions(headers, deadline, cancellationToken));
|
||||
}
|
||||
/// <summary>
|
||||
/// Sends a greeting
|
||||
/// Sends a greeting
|
||||
/// </summary>
|
||||
public virtual global::Helloworld.HelloReply SayHello(global::Helloworld.HelloRequest request, CallOptions options)
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="options">The options for the call.</param>
|
||||
/// <returns>The response received from the server.</returns>
|
||||
public virtual global::Helloworld.HelloReply SayHello(global::Helloworld.HelloRequest request, grpc::CallOptions options)
|
||||
{
|
||||
return CallInvoker.BlockingUnaryCall(__Method_SayHello, null, options, request);
|
||||
}
|
||||
/// <summary>
|
||||
/// Sends a greeting
|
||||
/// Sends a greeting
|
||||
/// </summary>
|
||||
public virtual AsyncUnaryCall<global::Helloworld.HelloReply> SayHelloAsync(global::Helloworld.HelloRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
|
||||
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
|
||||
/// <param name="cancellationToken">An optional token for canceling the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncUnaryCall<global::Helloworld.HelloReply> SayHelloAsync(global::Helloworld.HelloRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
{
|
||||
return SayHelloAsync(request, new CallOptions(headers, deadline, cancellationToken));
|
||||
return SayHelloAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
|
||||
}
|
||||
/// <summary>
|
||||
/// Sends a greeting
|
||||
/// Sends a greeting
|
||||
/// </summary>
|
||||
public virtual AsyncUnaryCall<global::Helloworld.HelloReply> SayHelloAsync(global::Helloworld.HelloRequest request, CallOptions options)
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="options">The options for the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncUnaryCall<global::Helloworld.HelloReply> SayHelloAsync(global::Helloworld.HelloRequest request, grpc::CallOptions options)
|
||||
{
|
||||
return CallInvoker.AsyncUnaryCall(__Method_SayHello, null, options, request);
|
||||
}
|
||||
/// <summary>Creates a new instance of client from given <c>ClientBaseConfiguration</c>.</summary>
|
||||
protected override GreeterClient NewInstance(ClientBaseConfiguration configuration)
|
||||
{
|
||||
return new GreeterClient(configuration);
|
||||
|
|
@ -132,9 +152,10 @@ namespace Helloworld {
|
|||
}
|
||||
|
||||
/// <summary>Creates service definition that can be registered with a server</summary>
|
||||
public static ServerServiceDefinition BindService(GreeterBase serviceImpl)
|
||||
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
|
||||
public static grpc::ServerServiceDefinition BindService(GreeterBase serviceImpl)
|
||||
{
|
||||
return ServerServiceDefinition.CreateBuilder()
|
||||
return grpc::ServerServiceDefinition.CreateBuilder()
|
||||
.AddMethod(__Method_SayHello, serviceImpl.SayHello).Build();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,31 +0,0 @@
|
|||
{
|
||||
"title": "Greeter",
|
||||
"version": "1.0.0-*",
|
||||
"buildOptions": {
|
||||
"debugType": "portable",
|
||||
},
|
||||
"dependencies": {
|
||||
"Google.Protobuf": "3.0.0",
|
||||
"Grpc": "1.0.1",
|
||||
},
|
||||
"frameworks": {
|
||||
"net45": {
|
||||
"frameworkAssemblies": {
|
||||
"System.Runtime": "",
|
||||
"System.IO": ""
|
||||
},
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1"
|
||||
}
|
||||
},
|
||||
"netcoreapp1.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"type": "platform",
|
||||
"version": "1.0.1"
|
||||
}
|
||||
},
|
||||
"imports": "dnxcore50"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<AssemblyTitle>GreeterClient</AssemblyTitle>
|
||||
<TargetFrameworks>netcoreapp1.0</TargetFrameworks>
|
||||
<DebugType>portable</DebugType>
|
||||
<AssemblyName>GreeterClient</AssemblyName>
|
||||
<OutputType>Exe</OutputType>
|
||||
<PackageId>GreeterClient</PackageId>
|
||||
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Greeter\Greeter.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
{
|
||||
"title": "GreeterClient",
|
||||
"version": "1.0.0-*",
|
||||
"buildOptions": {
|
||||
"debugType": "portable",
|
||||
"emitEntryPoint": "true"
|
||||
},
|
||||
"dependencies": {
|
||||
"Google.Protobuf": "3.0.0",
|
||||
"Grpc": "1.0.1",
|
||||
"Greeter": {
|
||||
"target": "project"
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net45": {
|
||||
"frameworkAssemblies": {
|
||||
"System.Runtime": "",
|
||||
"System.IO": ""
|
||||
},
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1"
|
||||
}
|
||||
},
|
||||
"netcoreapp1.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"type": "platform",
|
||||
"version": "1.0.1"
|
||||
}
|
||||
},
|
||||
"imports": "dnxcore50"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<AssemblyTitle>GreeterServer</AssemblyTitle>
|
||||
<TargetFrameworks>netcoreapp1.0</TargetFrameworks>
|
||||
<DebugType>portable</DebugType>
|
||||
<AssemblyName>GreeterServer</AssemblyName>
|
||||
<OutputType>Exe</OutputType>
|
||||
<PackageId>GreeterServer</PackageId>
|
||||
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Greeter\Greeter.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
{
|
||||
"title": "GreeterServer",
|
||||
"version": "1.0.0-*",
|
||||
"buildOptions": {
|
||||
"debugType": "portable",
|
||||
"emitEntryPoint": "true"
|
||||
},
|
||||
"dependencies": {
|
||||
"Google.Protobuf": "3.0.0",
|
||||
"Grpc": "1.0.1",
|
||||
"Greeter": {
|
||||
"target": "project"
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net45": {
|
||||
"frameworkAssemblies": {
|
||||
"System.Runtime": "",
|
||||
"System.IO": ""
|
||||
},
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.1"
|
||||
}
|
||||
},
|
||||
"netcoreapp1.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"type": "platform",
|
||||
"version": "1.0.1"
|
||||
}
|
||||
},
|
||||
"imports": "dnxcore50"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -12,26 +12,19 @@ Example projects in this directory depend on the [Grpc](https://www.nuget.org/pa
|
|||
and [Google.Protobuf](https://www.nuget.org/packages/Google.Protobuf/) NuGet packages
|
||||
which have been already added to the project for you.
|
||||
|
||||
The examples in this directory target .NET 4.5 framework, as .NET Core support is
|
||||
currently experimental.
|
||||
|
||||
PREREQUISITES
|
||||
-------------
|
||||
|
||||
- The DotNetCore SDK cli.
|
||||
|
||||
- The .NET 4.5 framework.
|
||||
|
||||
Both are available to download at https://www.microsoft.com/net/download
|
||||
- The [.NET Core SDK](https://www.microsoft.com/net/core).
|
||||
|
||||
BUILD
|
||||
-------
|
||||
|
||||
From the `examples/csharp/helloworld-from-cli` directory:
|
||||
|
||||
- `dotnet restore`
|
||||
- `dotnet restore Greeter.sln`
|
||||
|
||||
- `dotnet build **/project.json` (this will automatically download NuGet dependencies)
|
||||
- `dotnet build Greeter.sln`
|
||||
|
||||
Try it!
|
||||
-------
|
||||
|
|
@ -40,14 +33,14 @@ Try it!
|
|||
|
||||
```
|
||||
> cd GreeterServer
|
||||
> dotnet run
|
||||
> dotnet run -f netcoreapp1.0
|
||||
```
|
||||
|
||||
- Run the client
|
||||
|
||||
```
|
||||
> cd GreeterClient
|
||||
> dotnet run
|
||||
> dotnet run -f netcoreapp1.0
|
||||
```
|
||||
|
||||
Tutorial
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
@rem Copyright 2016, Google Inc.
|
||||
@rem All rights reserved.
|
||||
@rem
|
||||
@rem Redistribution and use in source and binary forms, with or without
|
||||
@rem modification, are permitted provided that the following conditions are
|
||||
@rem met:
|
||||
@rem
|
||||
@rem * Redistributions of source code must retain the above copyright
|
||||
@rem notice, this list of conditions and the following disclaimer.
|
||||
@rem * Redistributions in binary form must reproduce the above
|
||||
@rem copyright notice, this list of conditions and the following disclaimer
|
||||
@rem in the documentation and/or other materials provided with the
|
||||
@rem distribution.
|
||||
@rem * Neither the name of Google Inc. nor the names of its
|
||||
@rem contributors may be used to endorse or promote products derived from
|
||||
@rem this software without specific prior written permission.
|
||||
@rem
|
||||
@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
@rem Generate the C# code for .proto files
|
||||
|
||||
setlocal
|
||||
|
||||
@rem enter this directory
|
||||
cd /d %~dp0
|
||||
|
||||
set PROTOC=%UserProfile%\.nuget\packages\Google.Protobuf.Tools\3.2.0\tools\windows_x64\protoc.exe
|
||||
set PLUGIN=%UserProfile%\.nuget\packages\Grpc.Tools\1.2.2\tools\windows_x64\grpc_csharp_plugin.exe
|
||||
|
||||
%PROTOC% -I../../protos --csharp_out Greeter ../../protos/helloworld.proto --grpc_out Greeter --plugin=protoc-gen-grpc=%PLUGIN%
|
||||
|
||||
endlocal
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"sdk": {
|
||||
"version": "1.0.0-preview2-003121"
|
||||
}
|
||||
}
|
||||
|
|
@ -10,7 +10,8 @@
|
|||
<RootNamespace>Greeter</RootNamespace>
|
||||
<AssemblyName>Greeter</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<NuGetPackageImportStamp>2669b4f2</NuGetPackageImportStamp>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
|
|
@ -31,18 +32,18 @@
|
|||
<ConsolePause>false</ConsolePause>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Reference Include="Google.Protobuf, Version=3.2.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Google.Protobuf.3.2.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Grpc.Core, Version=1.0.1.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Grpc.Core.1.0.1\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Grpc.Core.1.2.2\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Interactive.Async, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\System.Interactive.Async.3.0.0\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
<Reference Include="System.Interactive.Async, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Interactive.Async.3.1.1\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
@ -61,11 +62,11 @@
|
|||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" />
|
||||
<Import Project="..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
@ -10,7 +10,6 @@ using scg = global::System.Collections.Generic;
|
|||
namespace Helloworld {
|
||||
|
||||
/// <summary>Holder for reflection information generated from helloworld.proto</summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public static partial class HelloworldReflection {
|
||||
|
||||
#region Descriptor
|
||||
|
|
@ -41,31 +40,36 @@ namespace Helloworld {
|
|||
}
|
||||
#region Messages
|
||||
/// <summary>
|
||||
/// The request message containing the user's name.
|
||||
/// The request message containing the user's name.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public sealed partial class HelloRequest : pb::IMessage<HelloRequest> {
|
||||
private static readonly pb::MessageParser<HelloRequest> _parser = new pb::MessageParser<HelloRequest>(() => new HelloRequest());
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public static pb::MessageParser<HelloRequest> Parser { get { return _parser; } }
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public static pbr::MessageDescriptor Descriptor {
|
||||
get { return global::Helloworld.HelloworldReflection.Descriptor.MessageTypes[0]; }
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
pbr::MessageDescriptor pb::IMessage.Descriptor {
|
||||
get { return Descriptor; }
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloRequest() {
|
||||
OnConstruction();
|
||||
}
|
||||
|
||||
partial void OnConstruction();
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloRequest(HelloRequest other) : this() {
|
||||
name_ = other.name_;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloRequest Clone() {
|
||||
return new HelloRequest(this);
|
||||
}
|
||||
|
|
@ -73,6 +77,7 @@ namespace Helloworld {
|
|||
/// <summary>Field number for the "name" field.</summary>
|
||||
public const int NameFieldNumber = 1;
|
||||
private string name_ = "";
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public string Name {
|
||||
get { return name_; }
|
||||
set {
|
||||
|
|
@ -80,10 +85,12 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override bool Equals(object other) {
|
||||
return Equals(other as HelloRequest);
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public bool Equals(HelloRequest other) {
|
||||
if (ReferenceEquals(other, null)) {
|
||||
return false;
|
||||
|
|
@ -95,16 +102,19 @@ namespace Helloworld {
|
|||
return true;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override int GetHashCode() {
|
||||
int hash = 1;
|
||||
if (Name.Length != 0) hash ^= Name.GetHashCode();
|
||||
return hash;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override string ToString() {
|
||||
return pb::JsonFormatter.ToDiagnosticString(this);
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void WriteTo(pb::CodedOutputStream output) {
|
||||
if (Name.Length != 0) {
|
||||
output.WriteRawTag(10);
|
||||
|
|
@ -112,6 +122,7 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public int CalculateSize() {
|
||||
int size = 0;
|
||||
if (Name.Length != 0) {
|
||||
|
|
@ -120,6 +131,7 @@ namespace Helloworld {
|
|||
return size;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void MergeFrom(HelloRequest other) {
|
||||
if (other == null) {
|
||||
return;
|
||||
|
|
@ -129,6 +141,7 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void MergeFrom(pb::CodedInputStream input) {
|
||||
uint tag;
|
||||
while ((tag = input.ReadTag()) != 0) {
|
||||
|
|
@ -147,31 +160,36 @@ namespace Helloworld {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// The response message containing the greetings
|
||||
/// The response message containing the greetings
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public sealed partial class HelloReply : pb::IMessage<HelloReply> {
|
||||
private static readonly pb::MessageParser<HelloReply> _parser = new pb::MessageParser<HelloReply>(() => new HelloReply());
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public static pb::MessageParser<HelloReply> Parser { get { return _parser; } }
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public static pbr::MessageDescriptor Descriptor {
|
||||
get { return global::Helloworld.HelloworldReflection.Descriptor.MessageTypes[1]; }
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
pbr::MessageDescriptor pb::IMessage.Descriptor {
|
||||
get { return Descriptor; }
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloReply() {
|
||||
OnConstruction();
|
||||
}
|
||||
|
||||
partial void OnConstruction();
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloReply(HelloReply other) : this() {
|
||||
message_ = other.message_;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public HelloReply Clone() {
|
||||
return new HelloReply(this);
|
||||
}
|
||||
|
|
@ -179,6 +197,7 @@ namespace Helloworld {
|
|||
/// <summary>Field number for the "message" field.</summary>
|
||||
public const int MessageFieldNumber = 1;
|
||||
private string message_ = "";
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public string Message {
|
||||
get { return message_; }
|
||||
set {
|
||||
|
|
@ -186,10 +205,12 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override bool Equals(object other) {
|
||||
return Equals(other as HelloReply);
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public bool Equals(HelloReply other) {
|
||||
if (ReferenceEquals(other, null)) {
|
||||
return false;
|
||||
|
|
@ -201,16 +222,19 @@ namespace Helloworld {
|
|||
return true;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override int GetHashCode() {
|
||||
int hash = 1;
|
||||
if (Message.Length != 0) hash ^= Message.GetHashCode();
|
||||
return hash;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public override string ToString() {
|
||||
return pb::JsonFormatter.ToDiagnosticString(this);
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void WriteTo(pb::CodedOutputStream output) {
|
||||
if (Message.Length != 0) {
|
||||
output.WriteRawTag(10);
|
||||
|
|
@ -218,6 +242,7 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public int CalculateSize() {
|
||||
int size = 0;
|
||||
if (Message.Length != 0) {
|
||||
|
|
@ -226,6 +251,7 @@ namespace Helloworld {
|
|||
return size;
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void MergeFrom(HelloReply other) {
|
||||
if (other == null) {
|
||||
return;
|
||||
|
|
@ -235,6 +261,7 @@ namespace Helloworld {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public void MergeFrom(pb::CodedInputStream input) {
|
||||
uint tag;
|
||||
while ((tag = input.ReadTag()) != 0) {
|
||||
|
|
|
|||
|
|
@ -35,21 +35,21 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Grpc.Core;
|
||||
using grpc = global::Grpc.Core;
|
||||
|
||||
namespace Helloworld {
|
||||
/// <summary>
|
||||
/// The greeting service definition.
|
||||
/// The greeting service definition.
|
||||
/// </summary>
|
||||
public static class Greeter
|
||||
public static partial class Greeter
|
||||
{
|
||||
static readonly string __ServiceName = "helloworld.Greeter";
|
||||
|
||||
static readonly Marshaller<global::Helloworld.HelloRequest> __Marshaller_HelloRequest = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Helloworld.HelloRequest.Parser.ParseFrom);
|
||||
static readonly Marshaller<global::Helloworld.HelloReply> __Marshaller_HelloReply = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Helloworld.HelloReply.Parser.ParseFrom);
|
||||
static readonly grpc::Marshaller<global::Helloworld.HelloRequest> __Marshaller_HelloRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Helloworld.HelloRequest.Parser.ParseFrom);
|
||||
static readonly grpc::Marshaller<global::Helloworld.HelloReply> __Marshaller_HelloReply = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Helloworld.HelloReply.Parser.ParseFrom);
|
||||
|
||||
static readonly Method<global::Helloworld.HelloRequest, global::Helloworld.HelloReply> __Method_SayHello = new Method<global::Helloworld.HelloRequest, global::Helloworld.HelloReply>(
|
||||
MethodType.Unary,
|
||||
static readonly grpc::Method<global::Helloworld.HelloRequest, global::Helloworld.HelloReply> __Method_SayHello = new grpc::Method<global::Helloworld.HelloRequest, global::Helloworld.HelloReply>(
|
||||
grpc::MethodType.Unary,
|
||||
__ServiceName,
|
||||
"SayHello",
|
||||
__Marshaller_HelloRequest,
|
||||
|
|
@ -62,29 +62,32 @@ namespace Helloworld {
|
|||
}
|
||||
|
||||
/// <summary>Base class for server-side implementations of Greeter</summary>
|
||||
public abstract class GreeterBase
|
||||
public abstract partial class GreeterBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Sends a greeting
|
||||
/// Sends a greeting
|
||||
/// </summary>
|
||||
public virtual global::System.Threading.Tasks.Task<global::Helloworld.HelloReply> SayHello(global::Helloworld.HelloRequest request, ServerCallContext context)
|
||||
/// <param name="request">The request received from the client.</param>
|
||||
/// <param name="context">The context of the server-side call handler being invoked.</param>
|
||||
/// <returns>The response to send back to the client (wrapped by a task).</returns>
|
||||
public virtual global::System.Threading.Tasks.Task<global::Helloworld.HelloReply> SayHello(global::Helloworld.HelloRequest request, grpc::ServerCallContext context)
|
||||
{
|
||||
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
|
||||
throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>Client for Greeter</summary>
|
||||
public class GreeterClient : ClientBase<GreeterClient>
|
||||
public partial class GreeterClient : grpc::ClientBase<GreeterClient>
|
||||
{
|
||||
/// <summary>Creates a new client for Greeter</summary>
|
||||
/// <param name="channel">The channel to use to make remote calls.</param>
|
||||
public GreeterClient(Channel channel) : base(channel)
|
||||
public GreeterClient(grpc::Channel channel) : base(channel)
|
||||
{
|
||||
}
|
||||
/// <summary>Creates a new client for Greeter that uses a custom <c>CallInvoker</c>.</summary>
|
||||
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
|
||||
public GreeterClient(CallInvoker callInvoker) : base(callInvoker)
|
||||
public GreeterClient(grpc::CallInvoker callInvoker) : base(callInvoker)
|
||||
{
|
||||
}
|
||||
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
|
||||
|
|
@ -98,33 +101,50 @@ namespace Helloworld {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sends a greeting
|
||||
/// Sends a greeting
|
||||
/// </summary>
|
||||
public virtual global::Helloworld.HelloReply SayHello(global::Helloworld.HelloRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
|
||||
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
|
||||
/// <param name="cancellationToken">An optional token for canceling the call.</param>
|
||||
/// <returns>The response received from the server.</returns>
|
||||
public virtual global::Helloworld.HelloReply SayHello(global::Helloworld.HelloRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
{
|
||||
return SayHello(request, new CallOptions(headers, deadline, cancellationToken));
|
||||
return SayHello(request, new grpc::CallOptions(headers, deadline, cancellationToken));
|
||||
}
|
||||
/// <summary>
|
||||
/// Sends a greeting
|
||||
/// Sends a greeting
|
||||
/// </summary>
|
||||
public virtual global::Helloworld.HelloReply SayHello(global::Helloworld.HelloRequest request, CallOptions options)
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="options">The options for the call.</param>
|
||||
/// <returns>The response received from the server.</returns>
|
||||
public virtual global::Helloworld.HelloReply SayHello(global::Helloworld.HelloRequest request, grpc::CallOptions options)
|
||||
{
|
||||
return CallInvoker.BlockingUnaryCall(__Method_SayHello, null, options, request);
|
||||
}
|
||||
/// <summary>
|
||||
/// Sends a greeting
|
||||
/// Sends a greeting
|
||||
/// </summary>
|
||||
public virtual AsyncUnaryCall<global::Helloworld.HelloReply> SayHelloAsync(global::Helloworld.HelloRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
|
||||
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
|
||||
/// <param name="cancellationToken">An optional token for canceling the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncUnaryCall<global::Helloworld.HelloReply> SayHelloAsync(global::Helloworld.HelloRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
{
|
||||
return SayHelloAsync(request, new CallOptions(headers, deadline, cancellationToken));
|
||||
return SayHelloAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
|
||||
}
|
||||
/// <summary>
|
||||
/// Sends a greeting
|
||||
/// Sends a greeting
|
||||
/// </summary>
|
||||
public virtual AsyncUnaryCall<global::Helloworld.HelloReply> SayHelloAsync(global::Helloworld.HelloRequest request, CallOptions options)
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="options">The options for the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncUnaryCall<global::Helloworld.HelloReply> SayHelloAsync(global::Helloworld.HelloRequest request, grpc::CallOptions options)
|
||||
{
|
||||
return CallInvoker.AsyncUnaryCall(__Method_SayHello, null, options, request);
|
||||
}
|
||||
/// <summary>Creates a new instance of client from given <c>ClientBaseConfiguration</c>.</summary>
|
||||
protected override GreeterClient NewInstance(ClientBaseConfiguration configuration)
|
||||
{
|
||||
return new GreeterClient(configuration);
|
||||
|
|
@ -132,9 +152,10 @@ namespace Helloworld {
|
|||
}
|
||||
|
||||
/// <summary>Creates service definition that can be registered with a server</summary>
|
||||
public static ServerServiceDefinition BindService(GreeterBase serviceImpl)
|
||||
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
|
||||
public static grpc::ServerServiceDefinition BindService(GreeterBase serviceImpl)
|
||||
{
|
||||
return ServerServiceDefinition.CreateBuilder()
|
||||
return grpc::ServerServiceDefinition.CreateBuilder()
|
||||
.AddMethod(__Method_SayHello, serviceImpl.SayHello).Build();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Google.Protobuf" version="3.0.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.0.1" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.0.1" targetFramework="net45" />
|
||||
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
|
||||
<package id="Grpc.Tools" version="1.0.1" targetFramework="net45" />
|
||||
</packages>
|
||||
<package id="Google.Protobuf" version="3.2.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.2.2" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.2.2" targetFramework="net45" />
|
||||
<package id="Grpc.Tools" version="1.2.2" targetFramework="net45" />
|
||||
<package id="System.Interactive.Async" version="3.1.1" targetFramework="net45" />
|
||||
</packages>
|
||||
|
|
@ -10,7 +10,8 @@
|
|||
<RootNamespace>GreeterClient</RootNamespace>
|
||||
<AssemblyName>GreeterClient</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<NuGetPackageImportStamp>5e942a7d</NuGetPackageImportStamp>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
|
|
@ -31,18 +32,18 @@
|
|||
<Externalconsole>true</Externalconsole>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Reference Include="Google.Protobuf, Version=3.2.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Google.Protobuf.3.2.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Grpc.Core, Version=1.0.1.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Grpc.Core.1.0.1\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Grpc.Core.1.2.2\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Interactive.Async, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\System.Interactive.Async.3.0.0\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
<Reference Include="System.Interactive.Async, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Interactive.Async.3.1.1\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
@ -59,11 +60,11 @@
|
|||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" />
|
||||
<Import Project="..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Google.Protobuf" version="3.0.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.0.1" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.0.1" targetFramework="net45" />
|
||||
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
|
||||
</packages>
|
||||
<package id="Google.Protobuf" version="3.2.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.2.2" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.2.2" targetFramework="net45" />
|
||||
<package id="System.Interactive.Async" version="3.1.1" targetFramework="net45" />
|
||||
</packages>
|
||||
|
|
@ -10,7 +10,8 @@
|
|||
<RootNamespace>GreeterServer</RootNamespace>
|
||||
<AssemblyName>GreeterServer</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<NuGetPackageImportStamp>9c7b2963</NuGetPackageImportStamp>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
|
|
@ -31,18 +32,18 @@
|
|||
<Externalconsole>true</Externalconsole>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Reference Include="Google.Protobuf, Version=3.2.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Google.Protobuf.3.2.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Grpc.Core, Version=1.0.1.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Grpc.Core.1.0.1\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Grpc.Core.1.2.2\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Interactive.Async, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\System.Interactive.Async.3.0.0\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
<Reference Include="System.Interactive.Async, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Interactive.Async.3.1.1\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
@ -59,11 +60,11 @@
|
|||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" />
|
||||
<Import Project="..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Google.Protobuf" version="3.0.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.0.1" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.0.1" targetFramework="net45" />
|
||||
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
|
||||
</packages>
|
||||
<package id="Google.Protobuf" version="3.2.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.2.2" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.2.2" targetFramework="net45" />
|
||||
<package id="System.Interactive.Async" version="3.1.1" targetFramework="net45" />
|
||||
</packages>
|
||||
|
|
@ -34,7 +34,7 @@ setlocal
|
|||
@rem enter this directory
|
||||
cd /d %~dp0
|
||||
|
||||
set TOOLS_PATH=packages\Grpc.Tools.1.0.1\tools\windows_x86
|
||||
set TOOLS_PATH=packages\Grpc.Tools.1.2.2\tools\windows_x86
|
||||
|
||||
%TOOLS_PATH%\protoc.exe -I../../protos --csharp_out Greeter ../../protos/helloworld.proto --grpc_out Greeter --plugin=protoc-gen-grpc=%TOOLS_PATH%\grpc_csharp_plugin.exe
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#gRPC Basics: C# sample code
|
||||
# gRPC Basics: C# sample code
|
||||
|
||||
The files in this folder are the samples used in [gRPC Basics: C#][],
|
||||
a detailed tutorial for using gRPC in C#.
|
||||
|
|
|
|||
|
|
@ -53,10 +53,10 @@ namespace Routeguide {
|
|||
}
|
||||
#region Messages
|
||||
/// <summary>
|
||||
/// Points are represented as latitude-longitude pairs in the E7 representation
|
||||
/// (degrees multiplied by 10**7 and rounded to the nearest integer).
|
||||
/// Latitudes should be in the range +/- 90 degrees and longitude should be in
|
||||
/// the range +/- 180 degrees (inclusive).
|
||||
/// Points are represented as latitude-longitude pairs in the E7 representation
|
||||
/// (degrees multiplied by 10**7 and rounded to the nearest integer).
|
||||
/// Latitudes should be in the range +/- 90 degrees and longitude should be in
|
||||
/// the range +/- 180 degrees (inclusive).
|
||||
/// </summary>
|
||||
public sealed partial class Point : pb::IMessage<Point> {
|
||||
private static readonly pb::MessageParser<Point> _parser = new pb::MessageParser<Point>(() => new Point());
|
||||
|
|
@ -204,8 +204,8 @@ namespace Routeguide {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// A latitude-longitude rectangle, represented as two diagonally opposite
|
||||
/// points "lo" and "hi".
|
||||
/// A latitude-longitude rectangle, represented as two diagonally opposite
|
||||
/// points "lo" and "hi".
|
||||
/// </summary>
|
||||
public sealed partial class Rectangle : pb::IMessage<Rectangle> {
|
||||
private static readonly pb::MessageParser<Rectangle> _parser = new pb::MessageParser<Rectangle>(() => new Rectangle());
|
||||
|
|
@ -244,7 +244,7 @@ namespace Routeguide {
|
|||
public const int LoFieldNumber = 1;
|
||||
private global::Routeguide.Point lo_;
|
||||
/// <summary>
|
||||
/// One corner of the rectangle.
|
||||
/// One corner of the rectangle.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public global::Routeguide.Point Lo {
|
||||
|
|
@ -258,7 +258,7 @@ namespace Routeguide {
|
|||
public const int HiFieldNumber = 2;
|
||||
private global::Routeguide.Point hi_;
|
||||
/// <summary>
|
||||
/// The other corner of the rectangle.
|
||||
/// The other corner of the rectangle.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public global::Routeguide.Point Hi {
|
||||
|
|
@ -371,9 +371,9 @@ namespace Routeguide {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// A feature names something at a given point.
|
||||
/// A feature names something at a given point.
|
||||
///
|
||||
/// If a feature could not be named, the name is empty.
|
||||
/// If a feature could not be named, the name is empty.
|
||||
/// </summary>
|
||||
public sealed partial class Feature : pb::IMessage<Feature> {
|
||||
private static readonly pb::MessageParser<Feature> _parser = new pb::MessageParser<Feature>(() => new Feature());
|
||||
|
|
@ -412,7 +412,7 @@ namespace Routeguide {
|
|||
public const int NameFieldNumber = 1;
|
||||
private string name_ = "";
|
||||
/// <summary>
|
||||
/// The name of the feature.
|
||||
/// The name of the feature.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public string Name {
|
||||
|
|
@ -426,7 +426,7 @@ namespace Routeguide {
|
|||
public const int LocationFieldNumber = 2;
|
||||
private global::Routeguide.Point location_;
|
||||
/// <summary>
|
||||
/// The point where the feature is detected.
|
||||
/// The point where the feature is detected.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public global::Routeguide.Point Location {
|
||||
|
|
@ -533,7 +533,7 @@ namespace Routeguide {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// A RouteNote is a message sent while at a given point.
|
||||
/// A RouteNote is a message sent while at a given point.
|
||||
/// </summary>
|
||||
public sealed partial class RouteNote : pb::IMessage<RouteNote> {
|
||||
private static readonly pb::MessageParser<RouteNote> _parser = new pb::MessageParser<RouteNote>(() => new RouteNote());
|
||||
|
|
@ -572,7 +572,7 @@ namespace Routeguide {
|
|||
public const int LocationFieldNumber = 1;
|
||||
private global::Routeguide.Point location_;
|
||||
/// <summary>
|
||||
/// The location from which the message is sent.
|
||||
/// The location from which the message is sent.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public global::Routeguide.Point Location {
|
||||
|
|
@ -586,7 +586,7 @@ namespace Routeguide {
|
|||
public const int MessageFieldNumber = 2;
|
||||
private string message_ = "";
|
||||
/// <summary>
|
||||
/// The message to be sent.
|
||||
/// The message to be sent.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public string Message {
|
||||
|
|
@ -693,11 +693,11 @@ namespace Routeguide {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// A RouteSummary is received in response to a RecordRoute rpc.
|
||||
/// A RouteSummary is received in response to a RecordRoute rpc.
|
||||
///
|
||||
/// It contains the number of individual points received, the number of
|
||||
/// detected features, and the total distance covered as the cumulative sum of
|
||||
/// the distance between each point.
|
||||
/// It contains the number of individual points received, the number of
|
||||
/// detected features, and the total distance covered as the cumulative sum of
|
||||
/// the distance between each point.
|
||||
/// </summary>
|
||||
public sealed partial class RouteSummary : pb::IMessage<RouteSummary> {
|
||||
private static readonly pb::MessageParser<RouteSummary> _parser = new pb::MessageParser<RouteSummary>(() => new RouteSummary());
|
||||
|
|
@ -738,7 +738,7 @@ namespace Routeguide {
|
|||
public const int PointCountFieldNumber = 1;
|
||||
private int pointCount_;
|
||||
/// <summary>
|
||||
/// The number of points received.
|
||||
/// The number of points received.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public int PointCount {
|
||||
|
|
@ -752,7 +752,7 @@ namespace Routeguide {
|
|||
public const int FeatureCountFieldNumber = 2;
|
||||
private int featureCount_;
|
||||
/// <summary>
|
||||
/// The number of known features passed while traversing the route.
|
||||
/// The number of known features passed while traversing the route.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public int FeatureCount {
|
||||
|
|
@ -766,7 +766,7 @@ namespace Routeguide {
|
|||
public const int DistanceFieldNumber = 3;
|
||||
private int distance_;
|
||||
/// <summary>
|
||||
/// The distance covered in metres.
|
||||
/// The distance covered in metres.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public int Distance {
|
||||
|
|
@ -780,7 +780,7 @@ namespace Routeguide {
|
|||
public const int ElapsedTimeFieldNumber = 4;
|
||||
private int elapsedTime_;
|
||||
/// <summary>
|
||||
/// The duration of the traversal in seconds.
|
||||
/// The duration of the traversal in seconds.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
public int ElapsedTime {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@
|
|||
<AssemblyName>RouteGuide</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<NuGetPackageImportStamp>de2137f9</NuGetPackageImportStamp>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
|
|
@ -31,13 +32,13 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Reference Include="Google.Protobuf, Version=3.2.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Google.Protobuf.3.2.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Grpc.Core, Version=1.0.1.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Grpc.Core.1.0.1\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Grpc.Core.1.2.2\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
|
|
@ -45,15 +46,15 @@
|
|||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Interactive.Async, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Interactive.Async.3.1.1\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Interactive.Async, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\System.Interactive.Async.3.0.0\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
|
|
@ -74,12 +75,12 @@
|
|||
</None>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" />
|
||||
<Import Project="..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets'))" />
|
||||
</Target>
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
|
@ -88,4 +89,4 @@
|
|||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
@ -35,45 +35,45 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Grpc.Core;
|
||||
using grpc = global::Grpc.Core;
|
||||
|
||||
namespace Routeguide {
|
||||
/// <summary>
|
||||
/// Interface exported by the server.
|
||||
/// Interface exported by the server.
|
||||
/// </summary>
|
||||
public static class RouteGuide
|
||||
public static partial class RouteGuide
|
||||
{
|
||||
static readonly string __ServiceName = "routeguide.RouteGuide";
|
||||
|
||||
static readonly Marshaller<global::Routeguide.Point> __Marshaller_Point = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Routeguide.Point.Parser.ParseFrom);
|
||||
static readonly Marshaller<global::Routeguide.Feature> __Marshaller_Feature = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Routeguide.Feature.Parser.ParseFrom);
|
||||
static readonly Marshaller<global::Routeguide.Rectangle> __Marshaller_Rectangle = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Routeguide.Rectangle.Parser.ParseFrom);
|
||||
static readonly Marshaller<global::Routeguide.RouteSummary> __Marshaller_RouteSummary = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Routeguide.RouteSummary.Parser.ParseFrom);
|
||||
static readonly Marshaller<global::Routeguide.RouteNote> __Marshaller_RouteNote = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Routeguide.RouteNote.Parser.ParseFrom);
|
||||
static readonly grpc::Marshaller<global::Routeguide.Point> __Marshaller_Point = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Routeguide.Point.Parser.ParseFrom);
|
||||
static readonly grpc::Marshaller<global::Routeguide.Feature> __Marshaller_Feature = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Routeguide.Feature.Parser.ParseFrom);
|
||||
static readonly grpc::Marshaller<global::Routeguide.Rectangle> __Marshaller_Rectangle = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Routeguide.Rectangle.Parser.ParseFrom);
|
||||
static readonly grpc::Marshaller<global::Routeguide.RouteSummary> __Marshaller_RouteSummary = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Routeguide.RouteSummary.Parser.ParseFrom);
|
||||
static readonly grpc::Marshaller<global::Routeguide.RouteNote> __Marshaller_RouteNote = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Routeguide.RouteNote.Parser.ParseFrom);
|
||||
|
||||
static readonly Method<global::Routeguide.Point, global::Routeguide.Feature> __Method_GetFeature = new Method<global::Routeguide.Point, global::Routeguide.Feature>(
|
||||
MethodType.Unary,
|
||||
static readonly grpc::Method<global::Routeguide.Point, global::Routeguide.Feature> __Method_GetFeature = new grpc::Method<global::Routeguide.Point, global::Routeguide.Feature>(
|
||||
grpc::MethodType.Unary,
|
||||
__ServiceName,
|
||||
"GetFeature",
|
||||
__Marshaller_Point,
|
||||
__Marshaller_Feature);
|
||||
|
||||
static readonly Method<global::Routeguide.Rectangle, global::Routeguide.Feature> __Method_ListFeatures = new Method<global::Routeguide.Rectangle, global::Routeguide.Feature>(
|
||||
MethodType.ServerStreaming,
|
||||
static readonly grpc::Method<global::Routeguide.Rectangle, global::Routeguide.Feature> __Method_ListFeatures = new grpc::Method<global::Routeguide.Rectangle, global::Routeguide.Feature>(
|
||||
grpc::MethodType.ServerStreaming,
|
||||
__ServiceName,
|
||||
"ListFeatures",
|
||||
__Marshaller_Rectangle,
|
||||
__Marshaller_Feature);
|
||||
|
||||
static readonly Method<global::Routeguide.Point, global::Routeguide.RouteSummary> __Method_RecordRoute = new Method<global::Routeguide.Point, global::Routeguide.RouteSummary>(
|
||||
MethodType.ClientStreaming,
|
||||
static readonly grpc::Method<global::Routeguide.Point, global::Routeguide.RouteSummary> __Method_RecordRoute = new grpc::Method<global::Routeguide.Point, global::Routeguide.RouteSummary>(
|
||||
grpc::MethodType.ClientStreaming,
|
||||
__ServiceName,
|
||||
"RecordRoute",
|
||||
__Marshaller_Point,
|
||||
__Marshaller_RouteSummary);
|
||||
|
||||
static readonly Method<global::Routeguide.RouteNote, global::Routeguide.RouteNote> __Method_RouteChat = new Method<global::Routeguide.RouteNote, global::Routeguide.RouteNote>(
|
||||
MethodType.DuplexStreaming,
|
||||
static readonly grpc::Method<global::Routeguide.RouteNote, global::Routeguide.RouteNote> __Method_RouteChat = new grpc::Method<global::Routeguide.RouteNote, global::Routeguide.RouteNote>(
|
||||
grpc::MethodType.DuplexStreaming,
|
||||
__ServiceName,
|
||||
"RouteChat",
|
||||
__Marshaller_RouteNote,
|
||||
|
|
@ -86,69 +86,83 @@ namespace Routeguide {
|
|||
}
|
||||
|
||||
/// <summary>Base class for server-side implementations of RouteGuide</summary>
|
||||
public abstract class RouteGuideBase
|
||||
public abstract partial class RouteGuideBase
|
||||
{
|
||||
/// <summary>
|
||||
/// A simple RPC.
|
||||
/// A simple RPC.
|
||||
///
|
||||
/// Obtains the feature at a given position.
|
||||
/// Obtains the feature at a given position.
|
||||
///
|
||||
/// A feature with an empty name is returned if there's no feature at the given
|
||||
/// position.
|
||||
/// A feature with an empty name is returned if there's no feature at the given
|
||||
/// position.
|
||||
/// </summary>
|
||||
public virtual global::System.Threading.Tasks.Task<global::Routeguide.Feature> GetFeature(global::Routeguide.Point request, ServerCallContext context)
|
||||
/// <param name="request">The request received from the client.</param>
|
||||
/// <param name="context">The context of the server-side call handler being invoked.</param>
|
||||
/// <returns>The response to send back to the client (wrapped by a task).</returns>
|
||||
public virtual global::System.Threading.Tasks.Task<global::Routeguide.Feature> GetFeature(global::Routeguide.Point request, grpc::ServerCallContext context)
|
||||
{
|
||||
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
|
||||
throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A server-to-client streaming RPC.
|
||||
/// A server-to-client streaming RPC.
|
||||
///
|
||||
/// Obtains the Features available within the given Rectangle. Results are
|
||||
/// streamed rather than returned at once (e.g. in a response message with a
|
||||
/// repeated field), as the rectangle may cover a large area and contain a
|
||||
/// huge number of features.
|
||||
/// Obtains the Features available within the given Rectangle. Results are
|
||||
/// streamed rather than returned at once (e.g. in a response message with a
|
||||
/// repeated field), as the rectangle may cover a large area and contain a
|
||||
/// huge number of features.
|
||||
/// </summary>
|
||||
public virtual global::System.Threading.Tasks.Task ListFeatures(global::Routeguide.Rectangle request, IServerStreamWriter<global::Routeguide.Feature> responseStream, ServerCallContext context)
|
||||
/// <param name="request">The request received from the client.</param>
|
||||
/// <param name="responseStream">Used for sending responses back to the client.</param>
|
||||
/// <param name="context">The context of the server-side call handler being invoked.</param>
|
||||
/// <returns>A task indicating completion of the handler.</returns>
|
||||
public virtual global::System.Threading.Tasks.Task ListFeatures(global::Routeguide.Rectangle request, grpc::IServerStreamWriter<global::Routeguide.Feature> responseStream, grpc::ServerCallContext context)
|
||||
{
|
||||
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
|
||||
throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A client-to-server streaming RPC.
|
||||
/// A client-to-server streaming RPC.
|
||||
///
|
||||
/// Accepts a stream of Points on a route being traversed, returning a
|
||||
/// RouteSummary when traversal is completed.
|
||||
/// Accepts a stream of Points on a route being traversed, returning a
|
||||
/// RouteSummary when traversal is completed.
|
||||
/// </summary>
|
||||
public virtual global::System.Threading.Tasks.Task<global::Routeguide.RouteSummary> RecordRoute(IAsyncStreamReader<global::Routeguide.Point> requestStream, ServerCallContext context)
|
||||
/// <param name="requestStream">Used for reading requests from the client.</param>
|
||||
/// <param name="context">The context of the server-side call handler being invoked.</param>
|
||||
/// <returns>The response to send back to the client (wrapped by a task).</returns>
|
||||
public virtual global::System.Threading.Tasks.Task<global::Routeguide.RouteSummary> RecordRoute(grpc::IAsyncStreamReader<global::Routeguide.Point> requestStream, grpc::ServerCallContext context)
|
||||
{
|
||||
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
|
||||
throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A Bidirectional streaming RPC.
|
||||
/// A Bidirectional streaming RPC.
|
||||
///
|
||||
/// Accepts a stream of RouteNotes sent while a route is being traversed,
|
||||
/// while receiving other RouteNotes (e.g. from other users).
|
||||
/// Accepts a stream of RouteNotes sent while a route is being traversed,
|
||||
/// while receiving other RouteNotes (e.g. from other users).
|
||||
/// </summary>
|
||||
public virtual global::System.Threading.Tasks.Task RouteChat(IAsyncStreamReader<global::Routeguide.RouteNote> requestStream, IServerStreamWriter<global::Routeguide.RouteNote> responseStream, ServerCallContext context)
|
||||
/// <param name="requestStream">Used for reading requests from the client.</param>
|
||||
/// <param name="responseStream">Used for sending responses back to the client.</param>
|
||||
/// <param name="context">The context of the server-side call handler being invoked.</param>
|
||||
/// <returns>A task indicating completion of the handler.</returns>
|
||||
public virtual global::System.Threading.Tasks.Task RouteChat(grpc::IAsyncStreamReader<global::Routeguide.RouteNote> requestStream, grpc::IServerStreamWriter<global::Routeguide.RouteNote> responseStream, grpc::ServerCallContext context)
|
||||
{
|
||||
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
|
||||
throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>Client for RouteGuide</summary>
|
||||
public class RouteGuideClient : ClientBase<RouteGuideClient>
|
||||
public partial class RouteGuideClient : grpc::ClientBase<RouteGuideClient>
|
||||
{
|
||||
/// <summary>Creates a new client for RouteGuide</summary>
|
||||
/// <param name="channel">The channel to use to make remote calls.</param>
|
||||
public RouteGuideClient(Channel channel) : base(channel)
|
||||
public RouteGuideClient(grpc::Channel channel) : base(channel)
|
||||
{
|
||||
}
|
||||
/// <summary>Creates a new client for RouteGuide that uses a custom <c>CallInvoker</c>.</summary>
|
||||
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
|
||||
public RouteGuideClient(CallInvoker callInvoker) : base(callInvoker)
|
||||
public RouteGuideClient(grpc::CallInvoker callInvoker) : base(callInvoker)
|
||||
{
|
||||
}
|
||||
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
|
||||
|
|
@ -162,117 +176,154 @@ namespace Routeguide {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// A simple RPC.
|
||||
/// A simple RPC.
|
||||
///
|
||||
/// Obtains the feature at a given position.
|
||||
/// Obtains the feature at a given position.
|
||||
///
|
||||
/// A feature with an empty name is returned if there's no feature at the given
|
||||
/// position.
|
||||
/// A feature with an empty name is returned if there's no feature at the given
|
||||
/// position.
|
||||
/// </summary>
|
||||
public virtual global::Routeguide.Feature GetFeature(global::Routeguide.Point request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
|
||||
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
|
||||
/// <param name="cancellationToken">An optional token for canceling the call.</param>
|
||||
/// <returns>The response received from the server.</returns>
|
||||
public virtual global::Routeguide.Feature GetFeature(global::Routeguide.Point request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
{
|
||||
return GetFeature(request, new CallOptions(headers, deadline, cancellationToken));
|
||||
return GetFeature(request, new grpc::CallOptions(headers, deadline, cancellationToken));
|
||||
}
|
||||
/// <summary>
|
||||
/// A simple RPC.
|
||||
/// A simple RPC.
|
||||
///
|
||||
/// Obtains the feature at a given position.
|
||||
/// Obtains the feature at a given position.
|
||||
///
|
||||
/// A feature with an empty name is returned if there's no feature at the given
|
||||
/// position.
|
||||
/// A feature with an empty name is returned if there's no feature at the given
|
||||
/// position.
|
||||
/// </summary>
|
||||
public virtual global::Routeguide.Feature GetFeature(global::Routeguide.Point request, CallOptions options)
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="options">The options for the call.</param>
|
||||
/// <returns>The response received from the server.</returns>
|
||||
public virtual global::Routeguide.Feature GetFeature(global::Routeguide.Point request, grpc::CallOptions options)
|
||||
{
|
||||
return CallInvoker.BlockingUnaryCall(__Method_GetFeature, null, options, request);
|
||||
}
|
||||
/// <summary>
|
||||
/// A simple RPC.
|
||||
/// A simple RPC.
|
||||
///
|
||||
/// Obtains the feature at a given position.
|
||||
/// Obtains the feature at a given position.
|
||||
///
|
||||
/// A feature with an empty name is returned if there's no feature at the given
|
||||
/// position.
|
||||
/// A feature with an empty name is returned if there's no feature at the given
|
||||
/// position.
|
||||
/// </summary>
|
||||
public virtual AsyncUnaryCall<global::Routeguide.Feature> GetFeatureAsync(global::Routeguide.Point request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
|
||||
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
|
||||
/// <param name="cancellationToken">An optional token for canceling the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncUnaryCall<global::Routeguide.Feature> GetFeatureAsync(global::Routeguide.Point request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
{
|
||||
return GetFeatureAsync(request, new CallOptions(headers, deadline, cancellationToken));
|
||||
return GetFeatureAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
|
||||
}
|
||||
/// <summary>
|
||||
/// A simple RPC.
|
||||
/// A simple RPC.
|
||||
///
|
||||
/// Obtains the feature at a given position.
|
||||
/// Obtains the feature at a given position.
|
||||
///
|
||||
/// A feature with an empty name is returned if there's no feature at the given
|
||||
/// position.
|
||||
/// A feature with an empty name is returned if there's no feature at the given
|
||||
/// position.
|
||||
/// </summary>
|
||||
public virtual AsyncUnaryCall<global::Routeguide.Feature> GetFeatureAsync(global::Routeguide.Point request, CallOptions options)
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="options">The options for the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncUnaryCall<global::Routeguide.Feature> GetFeatureAsync(global::Routeguide.Point request, grpc::CallOptions options)
|
||||
{
|
||||
return CallInvoker.AsyncUnaryCall(__Method_GetFeature, null, options, request);
|
||||
}
|
||||
/// <summary>
|
||||
/// A server-to-client streaming RPC.
|
||||
/// A server-to-client streaming RPC.
|
||||
///
|
||||
/// Obtains the Features available within the given Rectangle. Results are
|
||||
/// streamed rather than returned at once (e.g. in a response message with a
|
||||
/// repeated field), as the rectangle may cover a large area and contain a
|
||||
/// huge number of features.
|
||||
/// Obtains the Features available within the given Rectangle. Results are
|
||||
/// streamed rather than returned at once (e.g. in a response message with a
|
||||
/// repeated field), as the rectangle may cover a large area and contain a
|
||||
/// huge number of features.
|
||||
/// </summary>
|
||||
public virtual AsyncServerStreamingCall<global::Routeguide.Feature> ListFeatures(global::Routeguide.Rectangle request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
|
||||
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
|
||||
/// <param name="cancellationToken">An optional token for canceling the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncServerStreamingCall<global::Routeguide.Feature> ListFeatures(global::Routeguide.Rectangle request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
{
|
||||
return ListFeatures(request, new CallOptions(headers, deadline, cancellationToken));
|
||||
return ListFeatures(request, new grpc::CallOptions(headers, deadline, cancellationToken));
|
||||
}
|
||||
/// <summary>
|
||||
/// A server-to-client streaming RPC.
|
||||
/// A server-to-client streaming RPC.
|
||||
///
|
||||
/// Obtains the Features available within the given Rectangle. Results are
|
||||
/// streamed rather than returned at once (e.g. in a response message with a
|
||||
/// repeated field), as the rectangle may cover a large area and contain a
|
||||
/// huge number of features.
|
||||
/// Obtains the Features available within the given Rectangle. Results are
|
||||
/// streamed rather than returned at once (e.g. in a response message with a
|
||||
/// repeated field), as the rectangle may cover a large area and contain a
|
||||
/// huge number of features.
|
||||
/// </summary>
|
||||
public virtual AsyncServerStreamingCall<global::Routeguide.Feature> ListFeatures(global::Routeguide.Rectangle request, CallOptions options)
|
||||
/// <param name="request">The request to send to the server.</param>
|
||||
/// <param name="options">The options for the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncServerStreamingCall<global::Routeguide.Feature> ListFeatures(global::Routeguide.Rectangle request, grpc::CallOptions options)
|
||||
{
|
||||
return CallInvoker.AsyncServerStreamingCall(__Method_ListFeatures, null, options, request);
|
||||
}
|
||||
/// <summary>
|
||||
/// A client-to-server streaming RPC.
|
||||
/// A client-to-server streaming RPC.
|
||||
///
|
||||
/// Accepts a stream of Points on a route being traversed, returning a
|
||||
/// RouteSummary when traversal is completed.
|
||||
/// Accepts a stream of Points on a route being traversed, returning a
|
||||
/// RouteSummary when traversal is completed.
|
||||
/// </summary>
|
||||
public virtual AsyncClientStreamingCall<global::Routeguide.Point, global::Routeguide.RouteSummary> RecordRoute(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
/// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
|
||||
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
|
||||
/// <param name="cancellationToken">An optional token for canceling the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncClientStreamingCall<global::Routeguide.Point, global::Routeguide.RouteSummary> RecordRoute(grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
{
|
||||
return RecordRoute(new CallOptions(headers, deadline, cancellationToken));
|
||||
return RecordRoute(new grpc::CallOptions(headers, deadline, cancellationToken));
|
||||
}
|
||||
/// <summary>
|
||||
/// A client-to-server streaming RPC.
|
||||
/// A client-to-server streaming RPC.
|
||||
///
|
||||
/// Accepts a stream of Points on a route being traversed, returning a
|
||||
/// RouteSummary when traversal is completed.
|
||||
/// Accepts a stream of Points on a route being traversed, returning a
|
||||
/// RouteSummary when traversal is completed.
|
||||
/// </summary>
|
||||
public virtual AsyncClientStreamingCall<global::Routeguide.Point, global::Routeguide.RouteSummary> RecordRoute(CallOptions options)
|
||||
/// <param name="options">The options for the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncClientStreamingCall<global::Routeguide.Point, global::Routeguide.RouteSummary> RecordRoute(grpc::CallOptions options)
|
||||
{
|
||||
return CallInvoker.AsyncClientStreamingCall(__Method_RecordRoute, null, options);
|
||||
}
|
||||
/// <summary>
|
||||
/// A Bidirectional streaming RPC.
|
||||
/// A Bidirectional streaming RPC.
|
||||
///
|
||||
/// Accepts a stream of RouteNotes sent while a route is being traversed,
|
||||
/// while receiving other RouteNotes (e.g. from other users).
|
||||
/// Accepts a stream of RouteNotes sent while a route is being traversed,
|
||||
/// while receiving other RouteNotes (e.g. from other users).
|
||||
/// </summary>
|
||||
public virtual AsyncDuplexStreamingCall<global::Routeguide.RouteNote, global::Routeguide.RouteNote> RouteChat(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
/// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
|
||||
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
|
||||
/// <param name="cancellationToken">An optional token for canceling the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncDuplexStreamingCall<global::Routeguide.RouteNote, global::Routeguide.RouteNote> RouteChat(grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
|
||||
{
|
||||
return RouteChat(new CallOptions(headers, deadline, cancellationToken));
|
||||
return RouteChat(new grpc::CallOptions(headers, deadline, cancellationToken));
|
||||
}
|
||||
/// <summary>
|
||||
/// A Bidirectional streaming RPC.
|
||||
/// A Bidirectional streaming RPC.
|
||||
///
|
||||
/// Accepts a stream of RouteNotes sent while a route is being traversed,
|
||||
/// while receiving other RouteNotes (e.g. from other users).
|
||||
/// Accepts a stream of RouteNotes sent while a route is being traversed,
|
||||
/// while receiving other RouteNotes (e.g. from other users).
|
||||
/// </summary>
|
||||
public virtual AsyncDuplexStreamingCall<global::Routeguide.RouteNote, global::Routeguide.RouteNote> RouteChat(CallOptions options)
|
||||
/// <param name="options">The options for the call.</param>
|
||||
/// <returns>The call object.</returns>
|
||||
public virtual grpc::AsyncDuplexStreamingCall<global::Routeguide.RouteNote, global::Routeguide.RouteNote> RouteChat(grpc::CallOptions options)
|
||||
{
|
||||
return CallInvoker.AsyncDuplexStreamingCall(__Method_RouteChat, null, options);
|
||||
}
|
||||
/// <summary>Creates a new instance of client from given <c>ClientBaseConfiguration</c>.</summary>
|
||||
protected override RouteGuideClient NewInstance(ClientBaseConfiguration configuration)
|
||||
{
|
||||
return new RouteGuideClient(configuration);
|
||||
|
|
@ -280,9 +331,10 @@ namespace Routeguide {
|
|||
}
|
||||
|
||||
/// <summary>Creates service definition that can be registered with a server</summary>
|
||||
public static ServerServiceDefinition BindService(RouteGuideBase serviceImpl)
|
||||
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
|
||||
public static grpc::ServerServiceDefinition BindService(RouteGuideBase serviceImpl)
|
||||
{
|
||||
return ServerServiceDefinition.CreateBuilder()
|
||||
return grpc::ServerServiceDefinition.CreateBuilder()
|
||||
.AddMethod(__Method_GetFeature, serviceImpl.GetFeature)
|
||||
.AddMethod(__Method_ListFeatures, serviceImpl.ListFeatures)
|
||||
.AddMethod(__Method_RecordRoute, serviceImpl.RecordRoute)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Google.Protobuf" version="3.0.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.0.1" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.0.1" targetFramework="net45" />
|
||||
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
|
||||
<package id="Google.Protobuf" version="3.2.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.2.2" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.2.2" targetFramework="net45" />
|
||||
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
|
||||
</packages>
|
||||
<package id="System.Interactive.Async" version="3.1.1" targetFramework="net45" />
|
||||
</packages>
|
||||
|
|
@ -11,7 +11,8 @@
|
|||
<AssemblyName>RouteGuideClient</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<NuGetPackageImportStamp>b880049a</NuGetPackageImportStamp>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
|
|
@ -33,13 +34,13 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Reference Include="Google.Protobuf, Version=3.2.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Google.Protobuf.3.2.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Grpc.Core, Version=1.0.1.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Grpc.Core.1.0.1\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Grpc.Core.1.2.2\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
|
|
@ -47,9 +48,9 @@
|
|||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Interactive.Async, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\System.Interactive.Async.3.0.0\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
<Reference Include="System.Interactive.Async, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Interactive.Async.3.1.1\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
|
|
@ -71,12 +72,12 @@
|
|||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" />
|
||||
<Import Project="..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets'))" />
|
||||
</Target>
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
|
@ -85,4 +86,4 @@
|
|||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Google.Protobuf" version="3.0.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.0.1" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.0.1" targetFramework="net45" />
|
||||
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
|
||||
<package id="Google.Protobuf" version="3.2.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.2.2" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.2.2" targetFramework="net45" />
|
||||
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
|
||||
</packages>
|
||||
<package id="System.Interactive.Async" version="3.1.1" targetFramework="net45" />
|
||||
</packages>
|
||||
|
|
@ -11,7 +11,8 @@
|
|||
<AssemblyName>RouteGuideServer</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<NuGetPackageImportStamp>946ecc79</NuGetPackageImportStamp>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
|
|
@ -33,13 +34,13 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Reference Include="Google.Protobuf, Version=3.2.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Google.Protobuf.3.2.0\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Grpc.Core, Version=1.0.1.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Grpc.Core.1.0.1\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Grpc.Core.1.2.2\lib\net45\Grpc.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
|
|
@ -47,15 +48,15 @@
|
|||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Interactive.Async, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Interactive.Async.3.1.1\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Interactive.Async, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\System.Interactive.Async.3.0.0\lib\net45\System.Interactive.Async.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Program.cs" />
|
||||
|
|
@ -72,12 +73,12 @@
|
|||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" />
|
||||
<Import Project="..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.0.1\build\net45\Grpc.Core.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.2.2\build\net45\Grpc.Core.targets'))" />
|
||||
</Target>
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
|
@ -86,4 +87,4 @@
|
|||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Google.Protobuf" version="3.0.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.0.1" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.0.1" targetFramework="net45" />
|
||||
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
|
||||
<package id="Google.Protobuf" version="3.2.0" targetFramework="net45" />
|
||||
<package id="Grpc" version="1.2.2" targetFramework="net45" />
|
||||
<package id="Grpc.Core" version="1.2.2" targetFramework="net45" />
|
||||
<package id="Grpc.Tools" version="1.2.2" targetFramework="net45" />
|
||||
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
|
||||
<package id="Grpc.Tools" version="1.0.1" targetFramework="net45" />
|
||||
</packages>
|
||||
<package id="System.Interactive.Async" version="3.1.1" targetFramework="net45" />
|
||||
</packages>
|
||||
|
|
@ -34,7 +34,7 @@ setlocal
|
|||
@rem enter this directory
|
||||
cd /d %~dp0
|
||||
|
||||
set TOOLS_PATH=packages\Grpc.Tools.1.0.0\tools\windows_x86
|
||||
set TOOLS_PATH=packages\Grpc.Tools.1.2.2\tools\windows_x86
|
||||
|
||||
%TOOLS_PATH%\protoc.exe -I../../protos --csharp_out RouteGuide ../../protos/route_guide.proto --grpc_out RouteGuide --plugin=protoc-gen-grpc=%TOOLS_PATH%\grpc_csharp_plugin.exe
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#gRPC Basics: Node.js sample code
|
||||
# gRPC Basics: Node.js sample code
|
||||
|
||||
The files in this folder are the samples used in [gRPC Basics: Node.js][], a detailed tutorial for using gRPC in Node.js.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#gRPC Basics: Node.js sample code
|
||||
# gRPC Basics: Node.js sample code
|
||||
|
||||
The files in this folder are the samples used in [gRPC Basics: Node.js][], a detailed tutorial for using gRPC in Node.js.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
#OAuth2 on gRPC: Objective-C
|
||||
# OAuth2 on gRPC: Objective-C
|
||||
|
||||
This is the supporting code for the tutorial "[OAuth2 on gRPC: Objective-C](http://www.grpc.io/docs/tutorials/auth/oauth2-objective-c.html)."
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#gRPC in 3 minutes (Objective-C)
|
||||
# gRPC in 3 minutes (Objective-C)
|
||||
|
||||
## Installation
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#gRPC Basics: Objective-C
|
||||
# gRPC Basics: Objective-C
|
||||
|
||||
This is the supporting code for the tutorial "[gRPC Basics: Objective-C](http://www.grpc.io/docs/tutorials/basic/objective-c.html)."
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#gRPC Basics: PHP sample code
|
||||
# gRPC Basics: PHP sample code
|
||||
|
||||
The files in this folder are the samples used in [gRPC Basics: PHP][],
|
||||
a detailed tutorial for using gRPC in PHP.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#Errors and Cancelletion code samples for grpc-ruby
|
||||
# Errors and Cancelletion code samples for grpc-ruby
|
||||
|
||||
The examples in this directory show use of grpc errors.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#gRPC Basics: Ruby sample code
|
||||
# gRPC Basics: Ruby sample code
|
||||
|
||||
The files in this folder are the samples used in [gRPC Basics: Ruby][],
|
||||
a detailed tutorial for using gRPC in Ruby.
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'gRPC-Core'
|
||||
version = '1.3.0-dev'
|
||||
version = '1.4.0-dev'
|
||||
s.version = version
|
||||
s.summary = 'Core cross-platform gRPC library, written in C'
|
||||
s.homepage = 'http://www.grpc.io'
|
||||
|
|
@ -197,9 +197,13 @@ Pod::Spec.new do |s|
|
|||
# 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/arena.h',
|
||||
'src/core/lib/support/atomic.h',
|
||||
'src/core/lib/support/atomic_with_atm.h',
|
||||
'src/core/lib/support/atomic_with_std.h',
|
||||
'src/core/lib/support/backoff.h',
|
||||
'src/core/lib/support/block_annotate.h',
|
||||
'src/core/lib/support/env.h',
|
||||
'src/core/lib/support/memory.h',
|
||||
'src/core/lib/support/mpscq.h',
|
||||
'src/core/lib/support/murmur_hash.h',
|
||||
'src/core/lib/support/spinlock.h',
|
||||
|
|
@ -258,20 +262,13 @@ Pod::Spec.new do |s|
|
|||
'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/deadline_filter.h',
|
||||
'src/core/lib/channel/handshaker.h',
|
||||
'src/core/lib/channel/handshaker_factory.h',
|
||||
'src/core/lib/channel/handshaker_registry.h',
|
||||
'src/core/lib/channel/http_client_filter.h',
|
||||
'src/core/lib/channel/http_server_filter.h',
|
||||
'src/core/lib/channel/max_age_filter.h',
|
||||
'src/core/lib/channel/message_size_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',
|
||||
|
|
@ -281,7 +278,11 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/iomgr/endpoint_pair.h',
|
||||
'src/core/lib/iomgr/error.h',
|
||||
'src/core/lib/iomgr/error_internal.h',
|
||||
'src/core/lib/iomgr/ev_epoll_linux.h',
|
||||
'src/core/lib/iomgr/ev_epoll1_linux.h',
|
||||
'src/core/lib/iomgr/ev_epoll_limited_pollers_linux.h',
|
||||
'src/core/lib/iomgr/ev_epoll_thread_pool_linux.h',
|
||||
'src/core/lib/iomgr/ev_epollex_linux.h',
|
||||
'src/core/lib/iomgr/ev_epollsig_linux.h',
|
||||
'src/core/lib/iomgr/ev_poll_posix.h',
|
||||
'src/core/lib/iomgr/ev_posix.h',
|
||||
'src/core/lib/iomgr/exec_ctx.h',
|
||||
|
|
@ -290,7 +291,9 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/iomgr/iomgr.h',
|
||||
'src/core/lib/iomgr/iomgr_internal.h',
|
||||
'src/core/lib/iomgr/iomgr_posix.h',
|
||||
'src/core/lib/iomgr/is_epollexclusive_available.h',
|
||||
'src/core/lib/iomgr/load_file.h',
|
||||
'src/core/lib/iomgr/lockfree_event.h',
|
||||
'src/core/lib/iomgr/network_status_tracker.h',
|
||||
'src/core/lib/iomgr/polling_entity.h',
|
||||
'src/core/lib/iomgr/pollset.h',
|
||||
|
|
@ -310,6 +313,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/iomgr/socket_utils.h',
|
||||
'src/core/lib/iomgr/socket_utils_posix.h',
|
||||
'src/core/lib/iomgr/socket_windows.h',
|
||||
'src/core/lib/iomgr/sys_epoll_wrapper.h',
|
||||
'src/core/lib/iomgr/tcp_client.h',
|
||||
'src/core/lib/iomgr/tcp_client_posix.h',
|
||||
'src/core/lib/iomgr/tcp_posix.h',
|
||||
|
|
@ -321,6 +325,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/iomgr/timer.h',
|
||||
'src/core/lib/iomgr/timer_generic.h',
|
||||
'src/core/lib/iomgr/timer_heap.h',
|
||||
'src/core/lib/iomgr/timer_manager.h',
|
||||
'src/core/lib/iomgr/timer_uv.h',
|
||||
'src/core/lib/iomgr/udp_server.h',
|
||||
'src/core/lib/iomgr/unix_sockets_posix.h',
|
||||
|
|
@ -366,6 +371,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/transport/timeout_encoding.h',
|
||||
'src/core/lib/transport/transport.h',
|
||||
'src/core/lib/transport/transport_impl.h',
|
||||
'src/core/lib/debug/trace.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',
|
||||
|
|
@ -379,12 +385,16 @@ Pod::Spec.new do |s|
|
|||
'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_settings.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/stream_map.h',
|
||||
'src/core/ext/transport/chttp2/transport/varint.h',
|
||||
'src/core/ext/transport/chttp2/alpn/alpn.h',
|
||||
'src/core/ext/filters/http/client/http_client_filter.h',
|
||||
'src/core/ext/filters/http/message_compress/message_compress_filter.h',
|
||||
'src/core/ext/filters/http/server/http_server_filter.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',
|
||||
|
|
@ -408,39 +418,43 @@ Pod::Spec.new do |s|
|
|||
'src/core/tsi/ssl_transport_security.h',
|
||||
'src/core/tsi/ssl_types.h',
|
||||
'src/core/tsi/transport_security.h',
|
||||
'src/core/tsi/transport_security_adapter.h',
|
||||
'src/core/tsi/transport_security_interface.h',
|
||||
'src/core/ext/transport/chttp2/server/chttp2_server.h',
|
||||
'src/core/ext/client_channel/client_channel.h',
|
||||
'src/core/ext/client_channel/client_channel_factory.h',
|
||||
'src/core/ext/client_channel/connector.h',
|
||||
'src/core/ext/client_channel/http_connect_handshaker.h',
|
||||
'src/core/ext/client_channel/http_proxy.h',
|
||||
'src/core/ext/client_channel/lb_policy.h',
|
||||
'src/core/ext/client_channel/lb_policy_factory.h',
|
||||
'src/core/ext/client_channel/lb_policy_registry.h',
|
||||
'src/core/ext/client_channel/parse_address.h',
|
||||
'src/core/ext/client_channel/proxy_mapper.h',
|
||||
'src/core/ext/client_channel/proxy_mapper_registry.h',
|
||||
'src/core/ext/client_channel/resolver.h',
|
||||
'src/core/ext/client_channel/resolver_factory.h',
|
||||
'src/core/ext/client_channel/resolver_registry.h',
|
||||
'src/core/ext/client_channel/retry_throttle.h',
|
||||
'src/core/ext/client_channel/subchannel.h',
|
||||
'src/core/ext/client_channel/subchannel_index.h',
|
||||
'src/core/ext/client_channel/uri_parser.h',
|
||||
'src/core/ext/filters/client_channel/client_channel.h',
|
||||
'src/core/ext/filters/client_channel/client_channel_factory.h',
|
||||
'src/core/ext/filters/client_channel/connector.h',
|
||||
'src/core/ext/filters/client_channel/http_connect_handshaker.h',
|
||||
'src/core/ext/filters/client_channel/http_proxy.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy_factory.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy_registry.h',
|
||||
'src/core/ext/filters/client_channel/parse_address.h',
|
||||
'src/core/ext/filters/client_channel/proxy_mapper.h',
|
||||
'src/core/ext/filters/client_channel/proxy_mapper_registry.h',
|
||||
'src/core/ext/filters/client_channel/resolver.h',
|
||||
'src/core/ext/filters/client_channel/resolver_factory.h',
|
||||
'src/core/ext/filters/client_channel/resolver_registry.h',
|
||||
'src/core/ext/filters/client_channel/retry_throttle.h',
|
||||
'src/core/ext/filters/client_channel/subchannel.h',
|
||||
'src/core/ext/filters/client_channel/subchannel_index.h',
|
||||
'src/core/ext/filters/client_channel/uri_parser.h',
|
||||
'src/core/ext/filters/deadline/deadline_filter.h',
|
||||
'src/core/ext/transport/chttp2/client/chttp2_connector.h',
|
||||
'src/core/ext/lb_policy/grpclb/grpclb.h',
|
||||
'src/core/ext/lb_policy/grpclb/grpclb_channel.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',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h',
|
||||
'src/core/ext/filters/client_channel/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/resolver/dns/c_ares/grpc_ares_ev_driver.h',
|
||||
'src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h',
|
||||
'src/core/ext/load_reporting/load_reporting.h',
|
||||
'src/core/ext/load_reporting/load_reporting_filter.h',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h',
|
||||
'src/core/ext/filters/load_reporting/load_reporting.h',
|
||||
'src/core/ext/filters/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',
|
||||
|
|
@ -457,23 +471,18 @@ Pod::Spec.new do |s|
|
|||
'src/core/ext/census/trace_status.h',
|
||||
'src/core/ext/census/trace_string.h',
|
||||
'src/core/ext/census/tracing.h',
|
||||
'src/core/ext/filters/max_age/max_age_filter.h',
|
||||
'src/core/ext/filters/message_size/message_size_filter.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/deadline_filter.c',
|
||||
'src/core/lib/channel/handshaker.c',
|
||||
'src/core/lib/channel/handshaker_factory.c',
|
||||
'src/core/lib/channel/handshaker_registry.c',
|
||||
'src/core/lib/channel/http_client_filter.c',
|
||||
'src/core/lib/channel/http_server_filter.c',
|
||||
'src/core/lib/channel/max_age_filter.c',
|
||||
'src/core/lib/channel/message_size_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',
|
||||
|
|
@ -484,7 +493,11 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/iomgr/endpoint_pair_uv.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_epoll1_linux.c',
|
||||
'src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c',
|
||||
'src/core/lib/iomgr/ev_epoll_thread_pool_linux.c',
|
||||
'src/core/lib/iomgr/ev_epollex_linux.c',
|
||||
'src/core/lib/iomgr/ev_epollsig_linux.c',
|
||||
'src/core/lib/iomgr/ev_poll_posix.c',
|
||||
'src/core/lib/iomgr/ev_posix.c',
|
||||
'src/core/lib/iomgr/exec_ctx.c',
|
||||
|
|
@ -494,7 +507,9 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/iomgr/iomgr_posix.c',
|
||||
'src/core/lib/iomgr/iomgr_uv.c',
|
||||
'src/core/lib/iomgr/iomgr_windows.c',
|
||||
'src/core/lib/iomgr/is_epollexclusive_available.c',
|
||||
'src/core/lib/iomgr/load_file.c',
|
||||
'src/core/lib/iomgr/lockfree_event.c',
|
||||
'src/core/lib/iomgr/network_status_tracker.c',
|
||||
'src/core/lib/iomgr/polling_entity.c',
|
||||
'src/core/lib/iomgr/pollset_set_uv.c',
|
||||
|
|
@ -529,6 +544,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/iomgr/time_averaged_stats.c',
|
||||
'src/core/lib/iomgr/timer_generic.c',
|
||||
'src/core/lib/iomgr/timer_heap.c',
|
||||
'src/core/lib/iomgr/timer_manager.c',
|
||||
'src/core/lib/iomgr/timer_uv.c',
|
||||
'src/core/lib/iomgr/udp_server.c',
|
||||
'src/core/lib/iomgr/unix_sockets_posix.c',
|
||||
|
|
@ -565,7 +581,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/surface/completion_queue.c',
|
||||
'src/core/lib/surface/completion_queue_factory.c',
|
||||
'src/core/lib/surface/event_string.c',
|
||||
'src/core/lib/surface/lame_client.c',
|
||||
'src/core/lib/surface/lame_client.cc',
|
||||
'src/core/lib/surface/metadata_array.c',
|
||||
'src/core/lib/surface/server.c',
|
||||
'src/core/lib/surface/validate_metadata.c',
|
||||
|
|
@ -583,6 +599,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/transport/timeout_encoding.c',
|
||||
'src/core/lib/transport/transport.c',
|
||||
'src/core/lib/transport/transport_op_string.c',
|
||||
'src/core/lib/debug/trace.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',
|
||||
|
|
@ -597,6 +614,7 @@ Pod::Spec.new do |s|
|
|||
'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/http2_settings.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',
|
||||
|
|
@ -605,6 +623,10 @@ Pod::Spec.new do |s|
|
|||
'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/ext/filters/http/client/http_client_filter.c',
|
||||
'src/core/ext/filters/http/http_filters_plugin.c',
|
||||
'src/core/ext/filters/http/message_compress/message_compress_filter.c',
|
||||
'src/core/ext/filters/http/server/http_server_filter.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',
|
||||
|
|
@ -632,49 +654,53 @@ Pod::Spec.new do |s|
|
|||
'src/core/tsi/fake_transport_security.c',
|
||||
'src/core/tsi/ssl_transport_security.c',
|
||||
'src/core/tsi/transport_security.c',
|
||||
'src/core/tsi/transport_security_adapter.c',
|
||||
'src/core/ext/transport/chttp2/server/chttp2_server.c',
|
||||
'src/core/ext/transport/chttp2/client/secure/secure_channel_create.c',
|
||||
'src/core/ext/client_channel/channel_connectivity.c',
|
||||
'src/core/ext/client_channel/client_channel.c',
|
||||
'src/core/ext/client_channel/client_channel_factory.c',
|
||||
'src/core/ext/client_channel/client_channel_plugin.c',
|
||||
'src/core/ext/client_channel/connector.c',
|
||||
'src/core/ext/client_channel/http_connect_handshaker.c',
|
||||
'src/core/ext/client_channel/http_proxy.c',
|
||||
'src/core/ext/client_channel/lb_policy.c',
|
||||
'src/core/ext/client_channel/lb_policy_factory.c',
|
||||
'src/core/ext/client_channel/lb_policy_registry.c',
|
||||
'src/core/ext/client_channel/parse_address.c',
|
||||
'src/core/ext/client_channel/proxy_mapper.c',
|
||||
'src/core/ext/client_channel/proxy_mapper_registry.c',
|
||||
'src/core/ext/client_channel/resolver.c',
|
||||
'src/core/ext/client_channel/resolver_factory.c',
|
||||
'src/core/ext/client_channel/resolver_registry.c',
|
||||
'src/core/ext/client_channel/retry_throttle.c',
|
||||
'src/core/ext/client_channel/subchannel.c',
|
||||
'src/core/ext/client_channel/subchannel_index.c',
|
||||
'src/core/ext/client_channel/uri_parser.c',
|
||||
'src/core/ext/filters/client_channel/channel_connectivity.c',
|
||||
'src/core/ext/filters/client_channel/client_channel.c',
|
||||
'src/core/ext/filters/client_channel/client_channel_factory.c',
|
||||
'src/core/ext/filters/client_channel/client_channel_plugin.c',
|
||||
'src/core/ext/filters/client_channel/connector.c',
|
||||
'src/core/ext/filters/client_channel/http_connect_handshaker.c',
|
||||
'src/core/ext/filters/client_channel/http_proxy.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy_factory.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy_registry.c',
|
||||
'src/core/ext/filters/client_channel/parse_address.c',
|
||||
'src/core/ext/filters/client_channel/proxy_mapper.c',
|
||||
'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
|
||||
'src/core/ext/filters/client_channel/resolver.c',
|
||||
'src/core/ext/filters/client_channel/resolver_factory.c',
|
||||
'src/core/ext/filters/client_channel/resolver_registry.c',
|
||||
'src/core/ext/filters/client_channel/retry_throttle.c',
|
||||
'src/core/ext/filters/client_channel/subchannel.c',
|
||||
'src/core/ext/filters/client_channel/subchannel_index.c',
|
||||
'src/core/ext/filters/client_channel/uri_parser.c',
|
||||
'src/core/ext/filters/deadline/deadline_filter.c',
|
||||
'src/core/ext/transport/chttp2/client/chttp2_connector.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/grpclb_channel_secure.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',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c',
|
||||
'src/core/ext/filters/client_channel/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/c_ares/dns_resolver_ares.c',
|
||||
'src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
|
||||
'src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.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/filters/client_channel/lb_policy/pick_first/pick_first.c',
|
||||
'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c',
|
||||
'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c',
|
||||
'src/core/ext/filters/load_reporting/load_reporting.c',
|
||||
'src/core/ext/filters/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',
|
||||
|
|
@ -689,13 +715,19 @@ Pod::Spec.new do |s|
|
|||
'src/core/ext/census/resource.c',
|
||||
'src/core/ext/census/trace_context.c',
|
||||
'src/core/ext/census/tracing.c',
|
||||
'src/core/ext/filters/max_age/max_age_filter.c',
|
||||
'src/core/ext/filters/message_size/message_size_filter.c',
|
||||
'src/core/plugin_registry/grpc_plugin_registry.c'
|
||||
|
||||
ss.private_header_files = 'src/core/lib/profiling/timers.h',
|
||||
'src/core/lib/support/arena.h',
|
||||
'src/core/lib/support/atomic.h',
|
||||
'src/core/lib/support/atomic_with_atm.h',
|
||||
'src/core/lib/support/atomic_with_std.h',
|
||||
'src/core/lib/support/backoff.h',
|
||||
'src/core/lib/support/block_annotate.h',
|
||||
'src/core/lib/support/env.h',
|
||||
'src/core/lib/support/memory.h',
|
||||
'src/core/lib/support/mpscq.h',
|
||||
'src/core/lib/support/murmur_hash.h',
|
||||
'src/core/lib/support/spinlock.h',
|
||||
|
|
@ -708,20 +740,13 @@ Pod::Spec.new do |s|
|
|||
'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/deadline_filter.h',
|
||||
'src/core/lib/channel/handshaker.h',
|
||||
'src/core/lib/channel/handshaker_factory.h',
|
||||
'src/core/lib/channel/handshaker_registry.h',
|
||||
'src/core/lib/channel/http_client_filter.h',
|
||||
'src/core/lib/channel/http_server_filter.h',
|
||||
'src/core/lib/channel/max_age_filter.h',
|
||||
'src/core/lib/channel/message_size_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',
|
||||
|
|
@ -731,7 +756,11 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/iomgr/endpoint_pair.h',
|
||||
'src/core/lib/iomgr/error.h',
|
||||
'src/core/lib/iomgr/error_internal.h',
|
||||
'src/core/lib/iomgr/ev_epoll_linux.h',
|
||||
'src/core/lib/iomgr/ev_epoll1_linux.h',
|
||||
'src/core/lib/iomgr/ev_epoll_limited_pollers_linux.h',
|
||||
'src/core/lib/iomgr/ev_epoll_thread_pool_linux.h',
|
||||
'src/core/lib/iomgr/ev_epollex_linux.h',
|
||||
'src/core/lib/iomgr/ev_epollsig_linux.h',
|
||||
'src/core/lib/iomgr/ev_poll_posix.h',
|
||||
'src/core/lib/iomgr/ev_posix.h',
|
||||
'src/core/lib/iomgr/exec_ctx.h',
|
||||
|
|
@ -740,7 +769,9 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/iomgr/iomgr.h',
|
||||
'src/core/lib/iomgr/iomgr_internal.h',
|
||||
'src/core/lib/iomgr/iomgr_posix.h',
|
||||
'src/core/lib/iomgr/is_epollexclusive_available.h',
|
||||
'src/core/lib/iomgr/load_file.h',
|
||||
'src/core/lib/iomgr/lockfree_event.h',
|
||||
'src/core/lib/iomgr/network_status_tracker.h',
|
||||
'src/core/lib/iomgr/polling_entity.h',
|
||||
'src/core/lib/iomgr/pollset.h',
|
||||
|
|
@ -760,6 +791,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/iomgr/socket_utils.h',
|
||||
'src/core/lib/iomgr/socket_utils_posix.h',
|
||||
'src/core/lib/iomgr/socket_windows.h',
|
||||
'src/core/lib/iomgr/sys_epoll_wrapper.h',
|
||||
'src/core/lib/iomgr/tcp_client.h',
|
||||
'src/core/lib/iomgr/tcp_client_posix.h',
|
||||
'src/core/lib/iomgr/tcp_posix.h',
|
||||
|
|
@ -771,6 +803,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/iomgr/timer.h',
|
||||
'src/core/lib/iomgr/timer_generic.h',
|
||||
'src/core/lib/iomgr/timer_heap.h',
|
||||
'src/core/lib/iomgr/timer_manager.h',
|
||||
'src/core/lib/iomgr/timer_uv.h',
|
||||
'src/core/lib/iomgr/udp_server.h',
|
||||
'src/core/lib/iomgr/unix_sockets_posix.h',
|
||||
|
|
@ -816,6 +849,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/transport/timeout_encoding.h',
|
||||
'src/core/lib/transport/transport.h',
|
||||
'src/core/lib/transport/transport_impl.h',
|
||||
'src/core/lib/debug/trace.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',
|
||||
|
|
@ -829,12 +863,16 @@ Pod::Spec.new do |s|
|
|||
'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_settings.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/stream_map.h',
|
||||
'src/core/ext/transport/chttp2/transport/varint.h',
|
||||
'src/core/ext/transport/chttp2/alpn/alpn.h',
|
||||
'src/core/ext/filters/http/client/http_client_filter.h',
|
||||
'src/core/ext/filters/http/message_compress/message_compress_filter.h',
|
||||
'src/core/ext/filters/http/server/http_server_filter.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',
|
||||
|
|
@ -858,39 +896,43 @@ Pod::Spec.new do |s|
|
|||
'src/core/tsi/ssl_transport_security.h',
|
||||
'src/core/tsi/ssl_types.h',
|
||||
'src/core/tsi/transport_security.h',
|
||||
'src/core/tsi/transport_security_adapter.h',
|
||||
'src/core/tsi/transport_security_interface.h',
|
||||
'src/core/ext/transport/chttp2/server/chttp2_server.h',
|
||||
'src/core/ext/client_channel/client_channel.h',
|
||||
'src/core/ext/client_channel/client_channel_factory.h',
|
||||
'src/core/ext/client_channel/connector.h',
|
||||
'src/core/ext/client_channel/http_connect_handshaker.h',
|
||||
'src/core/ext/client_channel/http_proxy.h',
|
||||
'src/core/ext/client_channel/lb_policy.h',
|
||||
'src/core/ext/client_channel/lb_policy_factory.h',
|
||||
'src/core/ext/client_channel/lb_policy_registry.h',
|
||||
'src/core/ext/client_channel/parse_address.h',
|
||||
'src/core/ext/client_channel/proxy_mapper.h',
|
||||
'src/core/ext/client_channel/proxy_mapper_registry.h',
|
||||
'src/core/ext/client_channel/resolver.h',
|
||||
'src/core/ext/client_channel/resolver_factory.h',
|
||||
'src/core/ext/client_channel/resolver_registry.h',
|
||||
'src/core/ext/client_channel/retry_throttle.h',
|
||||
'src/core/ext/client_channel/subchannel.h',
|
||||
'src/core/ext/client_channel/subchannel_index.h',
|
||||
'src/core/ext/client_channel/uri_parser.h',
|
||||
'src/core/ext/filters/client_channel/client_channel.h',
|
||||
'src/core/ext/filters/client_channel/client_channel_factory.h',
|
||||
'src/core/ext/filters/client_channel/connector.h',
|
||||
'src/core/ext/filters/client_channel/http_connect_handshaker.h',
|
||||
'src/core/ext/filters/client_channel/http_proxy.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy_factory.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy_registry.h',
|
||||
'src/core/ext/filters/client_channel/parse_address.h',
|
||||
'src/core/ext/filters/client_channel/proxy_mapper.h',
|
||||
'src/core/ext/filters/client_channel/proxy_mapper_registry.h',
|
||||
'src/core/ext/filters/client_channel/resolver.h',
|
||||
'src/core/ext/filters/client_channel/resolver_factory.h',
|
||||
'src/core/ext/filters/client_channel/resolver_registry.h',
|
||||
'src/core/ext/filters/client_channel/retry_throttle.h',
|
||||
'src/core/ext/filters/client_channel/subchannel.h',
|
||||
'src/core/ext/filters/client_channel/subchannel_index.h',
|
||||
'src/core/ext/filters/client_channel/uri_parser.h',
|
||||
'src/core/ext/filters/deadline/deadline_filter.h',
|
||||
'src/core/ext/transport/chttp2/client/chttp2_connector.h',
|
||||
'src/core/ext/lb_policy/grpclb/grpclb.h',
|
||||
'src/core/ext/lb_policy/grpclb/grpclb_channel.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',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h',
|
||||
'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h',
|
||||
'src/core/ext/filters/client_channel/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/resolver/dns/c_ares/grpc_ares_ev_driver.h',
|
||||
'src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h',
|
||||
'src/core/ext/load_reporting/load_reporting.h',
|
||||
'src/core/ext/load_reporting/load_reporting_filter.h',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h',
|
||||
'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h',
|
||||
'src/core/ext/filters/load_reporting/load_reporting.h',
|
||||
'src/core/ext/filters/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',
|
||||
|
|
@ -906,7 +948,9 @@ Pod::Spec.new do |s|
|
|||
'src/core/ext/census/trace_propagation.h',
|
||||
'src/core/ext/census/trace_status.h',
|
||||
'src/core/ext/census/trace_string.h',
|
||||
'src/core/ext/census/tracing.h'
|
||||
'src/core/ext/census/tracing.h',
|
||||
'src/core/ext/filters/max_age/max_age_filter.h',
|
||||
'src/core/ext/filters/message_size/message_size_filter.h'
|
||||
end
|
||||
|
||||
s.subspec 'Cronet-Interface' do |ss|
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'gRPC-ProtoRPC'
|
||||
version = '1.3.0-dev'
|
||||
version = '1.4.0-dev'
|
||||
s.version = version
|
||||
s.summary = 'RPC library for Protocol Buffers, based on gRPC'
|
||||
s.homepage = 'http://www.grpc.io'
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'gRPC-RxLibrary'
|
||||
version = '1.3.0-dev'
|
||||
version = '1.4.0-dev'
|
||||
s.version = version
|
||||
s.summary = 'Reactive Extensions library for iOS/OSX.'
|
||||
s.homepage = 'http://www.grpc.io'
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'gRPC'
|
||||
version = '1.3.0-dev'
|
||||
version = '1.4.0-dev'
|
||||
s.version = version
|
||||
s.summary = 'gRPC client library for iOS/OSX'
|
||||
s.homepage = 'http://www.grpc.io'
|
||||
|
|
|
|||
10
grpc.def
10
grpc.def
|
|
@ -70,9 +70,9 @@ EXPORTS
|
|||
grpc_channel_ping
|
||||
grpc_channel_register_call
|
||||
grpc_channel_create_registered_call
|
||||
grpc_call_arena_alloc
|
||||
grpc_call_start_batch
|
||||
grpc_call_get_peer
|
||||
grpc_call_set_load_reporting_cost_context
|
||||
grpc_census_call_set_context
|
||||
grpc_census_call_get_context
|
||||
grpc_channel_get_target
|
||||
|
|
@ -82,13 +82,13 @@ EXPORTS
|
|||
grpc_channel_destroy
|
||||
grpc_call_cancel
|
||||
grpc_call_cancel_with_status
|
||||
grpc_call_destroy
|
||||
grpc_call_ref
|
||||
grpc_call_unref
|
||||
grpc_server_request_call
|
||||
grpc_server_register_method
|
||||
grpc_server_request_registered_call
|
||||
grpc_server_create
|
||||
grpc_server_register_completion_queue
|
||||
grpc_server_register_non_listening_completion_queue
|
||||
grpc_server_add_insecure_http2_port
|
||||
grpc_server_start
|
||||
grpc_server_shutdown_and_notify
|
||||
|
|
@ -141,10 +141,12 @@ EXPORTS
|
|||
grpc_server_credentials_set_auth_metadata_processor
|
||||
grpc_slice_ref
|
||||
grpc_slice_unref
|
||||
grpc_slice_copy
|
||||
grpc_slice_new
|
||||
grpc_slice_new_with_user_data
|
||||
grpc_slice_new_with_len
|
||||
grpc_slice_malloc
|
||||
grpc_slice_malloc_large
|
||||
grpc_slice_intern
|
||||
grpc_slice_from_copied_string
|
||||
grpc_slice_from_copied_buffer
|
||||
|
|
@ -153,6 +155,7 @@ EXPORTS
|
|||
grpc_slice_sub
|
||||
grpc_slice_sub_no_ref
|
||||
grpc_slice_split_tail
|
||||
grpc_slice_split_tail_maybe_ref
|
||||
grpc_slice_split_head
|
||||
grpc_empty_slice
|
||||
grpc_slice_default_hash_impl
|
||||
|
|
@ -181,6 +184,7 @@ EXPORTS
|
|||
grpc_slice_buffer_move_into
|
||||
grpc_slice_buffer_trim_end
|
||||
grpc_slice_buffer_move_first
|
||||
grpc_slice_buffer_move_first_no_ref
|
||||
grpc_slice_buffer_move_first_into_buffer
|
||||
grpc_slice_buffer_take_first
|
||||
grpc_slice_buffer_undo_take_first
|
||||
|
|
|
|||
182
grpc.gemspec
182
grpc.gemspec
|
|
@ -24,7 +24,7 @@ Gem::Specification.new do |s|
|
|||
s.files += Dir.glob('include/grpc/**/*')
|
||||
s.test_files = Dir.glob('src/ruby/spec/**/*')
|
||||
s.bindir = 'src/ruby/bin'
|
||||
s.require_paths = %w( src/ruby/bin src/ruby/lib src/ruby/pb )
|
||||
s.require_paths = %w( src/ruby/lib src/ruby/bin src/ruby/pb )
|
||||
s.platform = Gem::Platform::RUBY
|
||||
|
||||
s.add_dependency 'google-protobuf', '~> 3.1'
|
||||
|
|
@ -82,9 +82,13 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( include/grpc/impl/codegen/sync_windows.h )
|
||||
s.files += %w( src/core/lib/profiling/timers.h )
|
||||
s.files += %w( src/core/lib/support/arena.h )
|
||||
s.files += %w( src/core/lib/support/atomic.h )
|
||||
s.files += %w( src/core/lib/support/atomic_with_atm.h )
|
||||
s.files += %w( src/core/lib/support/atomic_with_std.h )
|
||||
s.files += %w( src/core/lib/support/backoff.h )
|
||||
s.files += %w( src/core/lib/support/block_annotate.h )
|
||||
s.files += %w( src/core/lib/support/env.h )
|
||||
s.files += %w( src/core/lib/support/memory.h )
|
||||
s.files += %w( src/core/lib/support/mpscq.h )
|
||||
s.files += %w( src/core/lib/support/murmur_hash.h )
|
||||
s.files += %w( src/core/lib/support/spinlock.h )
|
||||
|
|
@ -174,20 +178,13 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/channel/channel_args.h )
|
||||
s.files += %w( src/core/lib/channel/channel_stack.h )
|
||||
s.files += %w( src/core/lib/channel/channel_stack_builder.h )
|
||||
s.files += %w( src/core/lib/channel/compress_filter.h )
|
||||
s.files += %w( src/core/lib/channel/connected_channel.h )
|
||||
s.files += %w( src/core/lib/channel/context.h )
|
||||
s.files += %w( src/core/lib/channel/deadline_filter.h )
|
||||
s.files += %w( src/core/lib/channel/handshaker.h )
|
||||
s.files += %w( src/core/lib/channel/handshaker_factory.h )
|
||||
s.files += %w( src/core/lib/channel/handshaker_registry.h )
|
||||
s.files += %w( src/core/lib/channel/http_client_filter.h )
|
||||
s.files += %w( src/core/lib/channel/http_server_filter.h )
|
||||
s.files += %w( src/core/lib/channel/max_age_filter.h )
|
||||
s.files += %w( src/core/lib/channel/message_size_filter.h )
|
||||
s.files += %w( src/core/lib/compression/algorithm_metadata.h )
|
||||
s.files += %w( src/core/lib/compression/message_compress.h )
|
||||
s.files += %w( src/core/lib/debug/trace.h )
|
||||
s.files += %w( src/core/lib/http/format_request.h )
|
||||
s.files += %w( src/core/lib/http/httpcli.h )
|
||||
s.files += %w( src/core/lib/http/parser.h )
|
||||
|
|
@ -197,7 +194,11 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/iomgr/endpoint_pair.h )
|
||||
s.files += %w( src/core/lib/iomgr/error.h )
|
||||
s.files += %w( src/core/lib/iomgr/error_internal.h )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epoll_linux.h )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epoll1_linux.h )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epoll_limited_pollers_linux.h )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epoll_thread_pool_linux.h )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epollex_linux.h )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epollsig_linux.h )
|
||||
s.files += %w( src/core/lib/iomgr/ev_poll_posix.h )
|
||||
s.files += %w( src/core/lib/iomgr/ev_posix.h )
|
||||
s.files += %w( src/core/lib/iomgr/exec_ctx.h )
|
||||
|
|
@ -206,7 +207,9 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/iomgr/iomgr.h )
|
||||
s.files += %w( src/core/lib/iomgr/iomgr_internal.h )
|
||||
s.files += %w( src/core/lib/iomgr/iomgr_posix.h )
|
||||
s.files += %w( src/core/lib/iomgr/is_epollexclusive_available.h )
|
||||
s.files += %w( src/core/lib/iomgr/load_file.h )
|
||||
s.files += %w( src/core/lib/iomgr/lockfree_event.h )
|
||||
s.files += %w( src/core/lib/iomgr/network_status_tracker.h )
|
||||
s.files += %w( src/core/lib/iomgr/polling_entity.h )
|
||||
s.files += %w( src/core/lib/iomgr/pollset.h )
|
||||
|
|
@ -226,6 +229,7 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/iomgr/socket_utils.h )
|
||||
s.files += %w( src/core/lib/iomgr/socket_utils_posix.h )
|
||||
s.files += %w( src/core/lib/iomgr/socket_windows.h )
|
||||
s.files += %w( src/core/lib/iomgr/sys_epoll_wrapper.h )
|
||||
s.files += %w( src/core/lib/iomgr/tcp_client.h )
|
||||
s.files += %w( src/core/lib/iomgr/tcp_client_posix.h )
|
||||
s.files += %w( src/core/lib/iomgr/tcp_posix.h )
|
||||
|
|
@ -237,6 +241,7 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/iomgr/timer.h )
|
||||
s.files += %w( src/core/lib/iomgr/timer_generic.h )
|
||||
s.files += %w( src/core/lib/iomgr/timer_heap.h )
|
||||
s.files += %w( src/core/lib/iomgr/timer_manager.h )
|
||||
s.files += %w( src/core/lib/iomgr/timer_uv.h )
|
||||
s.files += %w( src/core/lib/iomgr/udp_server.h )
|
||||
s.files += %w( src/core/lib/iomgr/unix_sockets_posix.h )
|
||||
|
|
@ -282,6 +287,7 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/transport/timeout_encoding.h )
|
||||
s.files += %w( src/core/lib/transport/transport.h )
|
||||
s.files += %w( src/core/lib/transport/transport_impl.h )
|
||||
s.files += %w( src/core/lib/debug/trace.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/bin_decoder.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/bin_encoder.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/chttp2_transport.h )
|
||||
|
|
@ -295,12 +301,16 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/ext/transport/chttp2/transport/hpack_encoder.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/hpack_parser.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/hpack_table.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/http2_settings.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/huffsyms.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/incoming_metadata.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/internal.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/stream_map.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/varint.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/alpn/alpn.h )
|
||||
s.files += %w( src/core/ext/filters/http/client/http_client_filter.h )
|
||||
s.files += %w( src/core/ext/filters/http/message_compress/message_compress_filter.h )
|
||||
s.files += %w( src/core/ext/filters/http/server/http_server_filter.h )
|
||||
s.files += %w( src/core/lib/security/context/security_context.h )
|
||||
s.files += %w( src/core/lib/security/credentials/composite/composite_credentials.h )
|
||||
s.files += %w( src/core/lib/security/credentials/credentials.h )
|
||||
|
|
@ -324,39 +334,43 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/tsi/ssl_transport_security.h )
|
||||
s.files += %w( src/core/tsi/ssl_types.h )
|
||||
s.files += %w( src/core/tsi/transport_security.h )
|
||||
s.files += %w( src/core/tsi/transport_security_adapter.h )
|
||||
s.files += %w( src/core/tsi/transport_security_interface.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/server/chttp2_server.h )
|
||||
s.files += %w( src/core/ext/client_channel/client_channel.h )
|
||||
s.files += %w( src/core/ext/client_channel/client_channel_factory.h )
|
||||
s.files += %w( src/core/ext/client_channel/connector.h )
|
||||
s.files += %w( src/core/ext/client_channel/http_connect_handshaker.h )
|
||||
s.files += %w( src/core/ext/client_channel/http_proxy.h )
|
||||
s.files += %w( src/core/ext/client_channel/lb_policy.h )
|
||||
s.files += %w( src/core/ext/client_channel/lb_policy_factory.h )
|
||||
s.files += %w( src/core/ext/client_channel/lb_policy_registry.h )
|
||||
s.files += %w( src/core/ext/client_channel/parse_address.h )
|
||||
s.files += %w( src/core/ext/client_channel/proxy_mapper.h )
|
||||
s.files += %w( src/core/ext/client_channel/proxy_mapper_registry.h )
|
||||
s.files += %w( src/core/ext/client_channel/resolver.h )
|
||||
s.files += %w( src/core/ext/client_channel/resolver_factory.h )
|
||||
s.files += %w( src/core/ext/client_channel/resolver_registry.h )
|
||||
s.files += %w( src/core/ext/client_channel/retry_throttle.h )
|
||||
s.files += %w( src/core/ext/client_channel/subchannel.h )
|
||||
s.files += %w( src/core/ext/client_channel/subchannel_index.h )
|
||||
s.files += %w( src/core/ext/client_channel/uri_parser.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/client_channel.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/client_channel_factory.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/connector.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/http_connect_handshaker.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/http_proxy.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy_factory.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy_registry.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/parse_address.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/proxy_mapper.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/proxy_mapper_registry.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver_factory.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver_registry.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/retry_throttle.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/subchannel.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/subchannel_index.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/uri_parser.h )
|
||||
s.files += %w( src/core/ext/filters/deadline/deadline_filter.h )
|
||||
s.files += %w( src/core/ext/transport/chttp2/client/chttp2_connector.h )
|
||||
s.files += %w( src/core/ext/lb_policy/grpclb/grpclb.h )
|
||||
s.files += %w( src/core/ext/lb_policy/grpclb/grpclb_channel.h )
|
||||
s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.h )
|
||||
s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h )
|
||||
s.files += %w( third_party/nanopb/pb.h )
|
||||
s.files += %w( third_party/nanopb/pb_common.h )
|
||||
s.files += %w( third_party/nanopb/pb_decode.h )
|
||||
s.files += %w( third_party/nanopb/pb_encode.h )
|
||||
s.files += %w( src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h )
|
||||
s.files += %w( src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h )
|
||||
s.files += %w( src/core/ext/load_reporting/load_reporting.h )
|
||||
s.files += %w( src/core/ext/load_reporting/load_reporting_filter.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h )
|
||||
s.files += %w( src/core/ext/filters/load_reporting/load_reporting.h )
|
||||
s.files += %w( src/core/ext/filters/load_reporting/load_reporting_filter.h )
|
||||
s.files += %w( src/core/ext/census/aggregation.h )
|
||||
s.files += %w( src/core/ext/census/base_resources.h )
|
||||
s.files += %w( src/core/ext/census/census_interface.h )
|
||||
|
|
@ -373,23 +387,18 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/ext/census/trace_status.h )
|
||||
s.files += %w( src/core/ext/census/trace_string.h )
|
||||
s.files += %w( src/core/ext/census/tracing.h )
|
||||
s.files += %w( src/core/ext/filters/max_age/max_age_filter.h )
|
||||
s.files += %w( src/core/ext/filters/message_size/message_size_filter.h )
|
||||
s.files += %w( src/core/lib/surface/init.c )
|
||||
s.files += %w( src/core/lib/channel/channel_args.c )
|
||||
s.files += %w( src/core/lib/channel/channel_stack.c )
|
||||
s.files += %w( src/core/lib/channel/channel_stack_builder.c )
|
||||
s.files += %w( src/core/lib/channel/compress_filter.c )
|
||||
s.files += %w( src/core/lib/channel/connected_channel.c )
|
||||
s.files += %w( src/core/lib/channel/deadline_filter.c )
|
||||
s.files += %w( src/core/lib/channel/handshaker.c )
|
||||
s.files += %w( src/core/lib/channel/handshaker_factory.c )
|
||||
s.files += %w( src/core/lib/channel/handshaker_registry.c )
|
||||
s.files += %w( src/core/lib/channel/http_client_filter.c )
|
||||
s.files += %w( src/core/lib/channel/http_server_filter.c )
|
||||
s.files += %w( src/core/lib/channel/max_age_filter.c )
|
||||
s.files += %w( src/core/lib/channel/message_size_filter.c )
|
||||
s.files += %w( src/core/lib/compression/compression.c )
|
||||
s.files += %w( src/core/lib/compression/message_compress.c )
|
||||
s.files += %w( src/core/lib/debug/trace.c )
|
||||
s.files += %w( src/core/lib/http/format_request.c )
|
||||
s.files += %w( src/core/lib/http/httpcli.c )
|
||||
s.files += %w( src/core/lib/http/parser.c )
|
||||
|
|
@ -400,7 +409,11 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/iomgr/endpoint_pair_uv.c )
|
||||
s.files += %w( src/core/lib/iomgr/endpoint_pair_windows.c )
|
||||
s.files += %w( src/core/lib/iomgr/error.c )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epoll_linux.c )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epoll1_linux.c )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epoll_thread_pool_linux.c )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epollex_linux.c )
|
||||
s.files += %w( src/core/lib/iomgr/ev_epollsig_linux.c )
|
||||
s.files += %w( src/core/lib/iomgr/ev_poll_posix.c )
|
||||
s.files += %w( src/core/lib/iomgr/ev_posix.c )
|
||||
s.files += %w( src/core/lib/iomgr/exec_ctx.c )
|
||||
|
|
@ -410,7 +423,9 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/iomgr/iomgr_posix.c )
|
||||
s.files += %w( src/core/lib/iomgr/iomgr_uv.c )
|
||||
s.files += %w( src/core/lib/iomgr/iomgr_windows.c )
|
||||
s.files += %w( src/core/lib/iomgr/is_epollexclusive_available.c )
|
||||
s.files += %w( src/core/lib/iomgr/load_file.c )
|
||||
s.files += %w( src/core/lib/iomgr/lockfree_event.c )
|
||||
s.files += %w( src/core/lib/iomgr/network_status_tracker.c )
|
||||
s.files += %w( src/core/lib/iomgr/polling_entity.c )
|
||||
s.files += %w( src/core/lib/iomgr/pollset_set_uv.c )
|
||||
|
|
@ -445,6 +460,7 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/iomgr/time_averaged_stats.c )
|
||||
s.files += %w( src/core/lib/iomgr/timer_generic.c )
|
||||
s.files += %w( src/core/lib/iomgr/timer_heap.c )
|
||||
s.files += %w( src/core/lib/iomgr/timer_manager.c )
|
||||
s.files += %w( src/core/lib/iomgr/timer_uv.c )
|
||||
s.files += %w( src/core/lib/iomgr/udp_server.c )
|
||||
s.files += %w( src/core/lib/iomgr/unix_sockets_posix.c )
|
||||
|
|
@ -481,7 +497,7 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/surface/completion_queue.c )
|
||||
s.files += %w( src/core/lib/surface/completion_queue_factory.c )
|
||||
s.files += %w( src/core/lib/surface/event_string.c )
|
||||
s.files += %w( src/core/lib/surface/lame_client.c )
|
||||
s.files += %w( src/core/lib/surface/lame_client.cc )
|
||||
s.files += %w( src/core/lib/surface/metadata_array.c )
|
||||
s.files += %w( src/core/lib/surface/server.c )
|
||||
s.files += %w( src/core/lib/surface/validate_metadata.c )
|
||||
|
|
@ -499,6 +515,7 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/transport/timeout_encoding.c )
|
||||
s.files += %w( src/core/lib/transport/transport.c )
|
||||
s.files += %w( src/core/lib/transport/transport_op_string.c )
|
||||
s.files += %w( src/core/lib/debug/trace.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/bin_decoder.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/bin_encoder.c )
|
||||
|
|
@ -513,6 +530,7 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/ext/transport/chttp2/transport/hpack_encoder.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/hpack_parser.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/hpack_table.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/http2_settings.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/huffsyms.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/incoming_metadata.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/parsing.c )
|
||||
|
|
@ -521,6 +539,10 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/ext/transport/chttp2/transport/varint.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/transport/writing.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/alpn/alpn.c )
|
||||
s.files += %w( src/core/ext/filters/http/client/http_client_filter.c )
|
||||
s.files += %w( src/core/ext/filters/http/http_filters_plugin.c )
|
||||
s.files += %w( src/core/ext/filters/http/message_compress/message_compress_filter.c )
|
||||
s.files += %w( src/core/ext/filters/http/server/http_server_filter.c )
|
||||
s.files += %w( src/core/lib/http/httpcli_security_connector.c )
|
||||
s.files += %w( src/core/lib/security/context/security_context.c )
|
||||
s.files += %w( src/core/lib/security/credentials/composite/composite_credentials.c )
|
||||
|
|
@ -548,49 +570,53 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/tsi/fake_transport_security.c )
|
||||
s.files += %w( src/core/tsi/ssl_transport_security.c )
|
||||
s.files += %w( src/core/tsi/transport_security.c )
|
||||
s.files += %w( src/core/tsi/transport_security_adapter.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/server/chttp2_server.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/client/secure/secure_channel_create.c )
|
||||
s.files += %w( src/core/ext/client_channel/channel_connectivity.c )
|
||||
s.files += %w( src/core/ext/client_channel/client_channel.c )
|
||||
s.files += %w( src/core/ext/client_channel/client_channel_factory.c )
|
||||
s.files += %w( src/core/ext/client_channel/client_channel_plugin.c )
|
||||
s.files += %w( src/core/ext/client_channel/connector.c )
|
||||
s.files += %w( src/core/ext/client_channel/http_connect_handshaker.c )
|
||||
s.files += %w( src/core/ext/client_channel/http_proxy.c )
|
||||
s.files += %w( src/core/ext/client_channel/lb_policy.c )
|
||||
s.files += %w( src/core/ext/client_channel/lb_policy_factory.c )
|
||||
s.files += %w( src/core/ext/client_channel/lb_policy_registry.c )
|
||||
s.files += %w( src/core/ext/client_channel/parse_address.c )
|
||||
s.files += %w( src/core/ext/client_channel/proxy_mapper.c )
|
||||
s.files += %w( src/core/ext/client_channel/proxy_mapper_registry.c )
|
||||
s.files += %w( src/core/ext/client_channel/resolver.c )
|
||||
s.files += %w( src/core/ext/client_channel/resolver_factory.c )
|
||||
s.files += %w( src/core/ext/client_channel/resolver_registry.c )
|
||||
s.files += %w( src/core/ext/client_channel/retry_throttle.c )
|
||||
s.files += %w( src/core/ext/client_channel/subchannel.c )
|
||||
s.files += %w( src/core/ext/client_channel/subchannel_index.c )
|
||||
s.files += %w( src/core/ext/client_channel/uri_parser.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/channel_connectivity.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/client_channel.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/client_channel_factory.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/client_channel_plugin.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/connector.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/http_connect_handshaker.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/http_proxy.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy_factory.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy_registry.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/parse_address.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/proxy_mapper.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/proxy_mapper_registry.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver_factory.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver_registry.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/retry_throttle.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/subchannel.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/subchannel_index.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/uri_parser.c )
|
||||
s.files += %w( src/core/ext/filters/deadline/deadline_filter.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/client/chttp2_connector.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create.c )
|
||||
s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c )
|
||||
s.files += %w( src/core/ext/lb_policy/grpclb/grpclb.c )
|
||||
s.files += %w( src/core/ext/lb_policy/grpclb/grpclb_channel_secure.c )
|
||||
s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.c )
|
||||
s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c )
|
||||
s.files += %w( third_party/nanopb/pb_common.c )
|
||||
s.files += %w( third_party/nanopb/pb_decode.c )
|
||||
s.files += %w( third_party/nanopb/pb_encode.c )
|
||||
s.files += %w( src/core/ext/lb_policy/pick_first/pick_first.c )
|
||||
s.files += %w( src/core/ext/lb_policy/round_robin/round_robin.c )
|
||||
s.files += %w( src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c )
|
||||
s.files += %w( src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c )
|
||||
s.files += %w( src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c )
|
||||
s.files += %w( src/core/ext/resolver/dns/native/dns_resolver.c )
|
||||
s.files += %w( src/core/ext/resolver/sockaddr/sockaddr_resolver.c )
|
||||
s.files += %w( src/core/ext/load_reporting/load_reporting.c )
|
||||
s.files += %w( src/core/ext/load_reporting/load_reporting_filter.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c )
|
||||
s.files += %w( src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c )
|
||||
s.files += %w( src/core/ext/filters/load_reporting/load_reporting.c )
|
||||
s.files += %w( src/core/ext/filters/load_reporting/load_reporting_filter.c )
|
||||
s.files += %w( src/core/ext/census/base_resources.c )
|
||||
s.files += %w( src/core/ext/census/context.c )
|
||||
s.files += %w( src/core/ext/census/gen/census.pb.c )
|
||||
|
|
@ -605,6 +631,8 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/ext/census/resource.c )
|
||||
s.files += %w( src/core/ext/census/trace_context.c )
|
||||
s.files += %w( src/core/ext/census/tracing.c )
|
||||
s.files += %w( src/core/ext/filters/max_age/max_age_filter.c )
|
||||
s.files += %w( src/core/ext/filters/message_size/message_size_filter.c )
|
||||
s.files += %w( src/core/plugin_registry/grpc_plugin_registry.c )
|
||||
s.files += %w( third_party/boringssl/crypto/aes/internal.h )
|
||||
s.files += %w( third_party/boringssl/crypto/asn1/asn1_locl.h )
|
||||
|
|
|
|||
|
|
@ -145,17 +145,19 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface<R> {
|
|||
public:
|
||||
/// Create a stream and write the first request out.
|
||||
template <class W>
|
||||
ClientAsyncReader(ChannelInterface* channel, CompletionQueue* cq,
|
||||
const RpcMethod& method, ClientContext* context,
|
||||
const W& request, void* tag)
|
||||
: context_(context), call_(channel->CreateCall(method, context, cq)) {
|
||||
init_ops_.set_output_tag(tag);
|
||||
init_ops_.SendInitialMetadata(context->send_initial_metadata_,
|
||||
context->initial_metadata_flags());
|
||||
// TODO(ctiller): don't assert
|
||||
GPR_CODEGEN_ASSERT(init_ops_.SendMessage(request).ok());
|
||||
init_ops_.ClientSendClose();
|
||||
call_.PerformOps(&init_ops_);
|
||||
static ClientAsyncReader* Create(ChannelInterface* channel,
|
||||
CompletionQueue* cq, const RpcMethod& method,
|
||||
ClientContext* context, const W& request,
|
||||
void* tag) {
|
||||
Call call = channel->CreateCall(method, context, cq);
|
||||
return new (g_core_codegen_interface->grpc_call_arena_alloc(
|
||||
call.call(), sizeof(ClientAsyncReader)))
|
||||
ClientAsyncReader(call, context, request, tag);
|
||||
}
|
||||
|
||||
// always allocated against a call arena, no memory free required
|
||||
static void operator delete(void* ptr, std::size_t size) {
|
||||
assert(size == sizeof(ClientAsyncReader));
|
||||
}
|
||||
|
||||
void ReadInitialMetadata(void* tag) override {
|
||||
|
|
@ -185,6 +187,19 @@ class ClientAsyncReader final : public ClientAsyncReaderInterface<R> {
|
|||
}
|
||||
|
||||
private:
|
||||
template <class W>
|
||||
ClientAsyncReader(Call call, ClientContext* context, const W& request,
|
||||
void* tag)
|
||||
: context_(context), call_(call) {
|
||||
init_ops_.set_output_tag(tag);
|
||||
init_ops_.SendInitialMetadata(context->send_initial_metadata_,
|
||||
context->initial_metadata_flags());
|
||||
// TODO(ctiller): don't assert
|
||||
GPR_CODEGEN_ASSERT(init_ops_.SendMessage(request).ok());
|
||||
init_ops_.ClientSendClose();
|
||||
call_.PerformOps(&init_ops_);
|
||||
}
|
||||
|
||||
ClientContext* context_;
|
||||
Call call_;
|
||||
CallOpSet<CallOpSendInitialMetadata, CallOpSendMessage, CallOpClientSendClose>
|
||||
|
|
@ -210,23 +225,19 @@ template <class W>
|
|||
class ClientAsyncWriter final : public ClientAsyncWriterInterface<W> {
|
||||
public:
|
||||
template <class R>
|
||||
ClientAsyncWriter(ChannelInterface* channel, CompletionQueue* cq,
|
||||
const RpcMethod& method, ClientContext* context,
|
||||
R* response, void* tag)
|
||||
: context_(context), call_(channel->CreateCall(method, context, cq)) {
|
||||
finish_ops_.RecvMessage(response);
|
||||
finish_ops_.AllowNoMessage();
|
||||
// if corked bit is set in context, we buffer up the initial metadata to
|
||||
// coalesce with later message to be sent. No op is performed.
|
||||
if (context_->initial_metadata_corked_) {
|
||||
write_ops_.SendInitialMetadata(context->send_initial_metadata_,
|
||||
context->initial_metadata_flags());
|
||||
} else {
|
||||
write_ops_.set_output_tag(tag);
|
||||
write_ops_.SendInitialMetadata(context->send_initial_metadata_,
|
||||
context->initial_metadata_flags());
|
||||
call_.PerformOps(&write_ops_);
|
||||
}
|
||||
static ClientAsyncWriter* Create(ChannelInterface* channel,
|
||||
CompletionQueue* cq, const RpcMethod& method,
|
||||
ClientContext* context, R* response,
|
||||
void* tag) {
|
||||
Call call = channel->CreateCall(method, context, cq);
|
||||
return new (g_core_codegen_interface->grpc_call_arena_alloc(
|
||||
call.call(), sizeof(ClientAsyncWriter)))
|
||||
ClientAsyncWriter(call, context, response, tag);
|
||||
}
|
||||
|
||||
// always allocated against a call arena, no memory free required
|
||||
static void operator delete(void* ptr, std::size_t size) {
|
||||
assert(size == sizeof(ClientAsyncWriter));
|
||||
}
|
||||
|
||||
void ReadInitialMetadata(void* tag) override {
|
||||
|
|
@ -271,6 +282,24 @@ class ClientAsyncWriter final : public ClientAsyncWriterInterface<W> {
|
|||
}
|
||||
|
||||
private:
|
||||
template <class R>
|
||||
ClientAsyncWriter(Call call, ClientContext* context, R* response, void* tag)
|
||||
: context_(context), call_(call) {
|
||||
finish_ops_.RecvMessage(response);
|
||||
finish_ops_.AllowNoMessage();
|
||||
// if corked bit is set in context, we buffer up the initial metadata to
|
||||
// coalesce with later message to be sent. No op is performed.
|
||||
if (context_->initial_metadata_corked_) {
|
||||
write_ops_.SendInitialMetadata(context->send_initial_metadata_,
|
||||
context->initial_metadata_flags());
|
||||
} else {
|
||||
write_ops_.set_output_tag(tag);
|
||||
write_ops_.SendInitialMetadata(context->send_initial_metadata_,
|
||||
context->initial_metadata_flags());
|
||||
call_.PerformOps(&write_ops_);
|
||||
}
|
||||
}
|
||||
|
||||
ClientContext* context_;
|
||||
Call call_;
|
||||
CallOpSet<CallOpRecvInitialMetadata> meta_ops_;
|
||||
|
|
@ -298,21 +327,20 @@ template <class W, class R>
|
|||
class ClientAsyncReaderWriter final
|
||||
: public ClientAsyncReaderWriterInterface<W, R> {
|
||||
public:
|
||||
ClientAsyncReaderWriter(ChannelInterface* channel, CompletionQueue* cq,
|
||||
const RpcMethod& method, ClientContext* context,
|
||||
void* tag)
|
||||
: context_(context), call_(channel->CreateCall(method, context, cq)) {
|
||||
if (context_->initial_metadata_corked_) {
|
||||
// if corked bit is set in context, we buffer up the initial metadata to
|
||||
// coalesce with later message to be sent. No op is performed.
|
||||
write_ops_.SendInitialMetadata(context->send_initial_metadata_,
|
||||
context->initial_metadata_flags());
|
||||
} else {
|
||||
write_ops_.set_output_tag(tag);
|
||||
write_ops_.SendInitialMetadata(context->send_initial_metadata_,
|
||||
context->initial_metadata_flags());
|
||||
call_.PerformOps(&write_ops_);
|
||||
}
|
||||
static ClientAsyncReaderWriter* Create(ChannelInterface* channel,
|
||||
CompletionQueue* cq,
|
||||
const RpcMethod& method,
|
||||
ClientContext* context, void* tag) {
|
||||
Call call = channel->CreateCall(method, context, cq);
|
||||
|
||||
return new (g_core_codegen_interface->grpc_call_arena_alloc(
|
||||
call.call(), sizeof(ClientAsyncReaderWriter)))
|
||||
ClientAsyncReaderWriter(call, context, tag);
|
||||
}
|
||||
|
||||
// always allocated against a call arena, no memory free required
|
||||
static void operator delete(void* ptr, std::size_t size) {
|
||||
assert(size == sizeof(ClientAsyncReaderWriter));
|
||||
}
|
||||
|
||||
void ReadInitialMetadata(void* tag) override {
|
||||
|
|
@ -366,6 +394,21 @@ class ClientAsyncReaderWriter final
|
|||
}
|
||||
|
||||
private:
|
||||
ClientAsyncReaderWriter(Call call, ClientContext* context, void* tag)
|
||||
: context_(context), call_(call) {
|
||||
if (context_->initial_metadata_corked_) {
|
||||
// if corked bit is set in context, we buffer up the initial metadata to
|
||||
// coalesce with later message to be sent. No op is performed.
|
||||
write_ops_.SendInitialMetadata(context->send_initial_metadata_,
|
||||
context->initial_metadata_flags());
|
||||
} else {
|
||||
write_ops_.set_output_tag(tag);
|
||||
write_ops_.SendInitialMetadata(context->send_initial_metadata_,
|
||||
context->initial_metadata_flags());
|
||||
call_.PerformOps(&write_ops_);
|
||||
}
|
||||
}
|
||||
|
||||
ClientContext* context_;
|
||||
Call call_;
|
||||
CallOpSet<CallOpRecvInitialMetadata> meta_ops_;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#ifndef GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H
|
||||
#define GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H
|
||||
|
||||
#include <assert.h>
|
||||
#include <grpc++/impl/codegen/call.h>
|
||||
#include <grpc++/impl/codegen/channel_interface.h>
|
||||
#include <grpc++/impl/codegen/client_context.h>
|
||||
|
|
@ -59,57 +60,67 @@ class ClientAsyncResponseReader final
|
|||
: public ClientAsyncResponseReaderInterface<R> {
|
||||
public:
|
||||
template <class W>
|
||||
ClientAsyncResponseReader(ChannelInterface* channel, CompletionQueue* cq,
|
||||
const RpcMethod& method, ClientContext* context,
|
||||
const W& request)
|
||||
: context_(context),
|
||||
call_(channel->CreateCall(method, context, cq)),
|
||||
collection_(std::make_shared<CallOpSetCollection>()) {
|
||||
collection_->init_buf_.SetCollection(collection_);
|
||||
collection_->init_buf_.SendInitialMetadata(
|
||||
context->send_initial_metadata_, context->initial_metadata_flags());
|
||||
// TODO(ctiller): don't assert
|
||||
GPR_CODEGEN_ASSERT(collection_->init_buf_.SendMessage(request).ok());
|
||||
collection_->init_buf_.ClientSendClose();
|
||||
call_.PerformOps(&collection_->init_buf_);
|
||||
static ClientAsyncResponseReader* Create(ChannelInterface* channel,
|
||||
CompletionQueue* cq,
|
||||
const RpcMethod& method,
|
||||
ClientContext* context,
|
||||
const W& request) {
|
||||
Call call = channel->CreateCall(method, context, cq);
|
||||
return new (g_core_codegen_interface->grpc_call_arena_alloc(
|
||||
call.call(), sizeof(ClientAsyncResponseReader)))
|
||||
ClientAsyncResponseReader(call, context, request);
|
||||
}
|
||||
|
||||
// always allocated against a call arena, no memory free required
|
||||
static void operator delete(void* ptr, std::size_t size) {
|
||||
assert(size == sizeof(ClientAsyncResponseReader));
|
||||
}
|
||||
|
||||
void ReadInitialMetadata(void* tag) {
|
||||
GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_);
|
||||
|
||||
collection_->meta_buf_.SetCollection(collection_);
|
||||
collection_->meta_buf_.set_output_tag(tag);
|
||||
collection_->meta_buf_.RecvInitialMetadata(context_);
|
||||
call_.PerformOps(&collection_->meta_buf_);
|
||||
meta_buf_.set_output_tag(tag);
|
||||
meta_buf_.RecvInitialMetadata(context_);
|
||||
call_.PerformOps(&meta_buf_);
|
||||
}
|
||||
|
||||
void Finish(R* msg, Status* status, void* tag) {
|
||||
collection_->finish_buf_.SetCollection(collection_);
|
||||
collection_->finish_buf_.set_output_tag(tag);
|
||||
finish_buf_.set_output_tag(tag);
|
||||
if (!context_->initial_metadata_received_) {
|
||||
collection_->finish_buf_.RecvInitialMetadata(context_);
|
||||
finish_buf_.RecvInitialMetadata(context_);
|
||||
}
|
||||
collection_->finish_buf_.RecvMessage(msg);
|
||||
collection_->finish_buf_.AllowNoMessage();
|
||||
collection_->finish_buf_.ClientRecvStatus(context_, status);
|
||||
call_.PerformOps(&collection_->finish_buf_);
|
||||
finish_buf_.RecvMessage(msg);
|
||||
finish_buf_.AllowNoMessage();
|
||||
finish_buf_.ClientRecvStatus(context_, status);
|
||||
call_.PerformOps(&finish_buf_);
|
||||
}
|
||||
|
||||
private:
|
||||
ClientContext* context_;
|
||||
ClientContext* const context_;
|
||||
Call call_;
|
||||
|
||||
class CallOpSetCollection : public CallOpSetCollectionInterface {
|
||||
public:
|
||||
SneakyCallOpSet<CallOpSendInitialMetadata, CallOpSendMessage,
|
||||
CallOpClientSendClose>
|
||||
init_buf_;
|
||||
CallOpSet<CallOpRecvInitialMetadata> meta_buf_;
|
||||
CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>,
|
||||
CallOpClientRecvStatus>
|
||||
finish_buf_;
|
||||
};
|
||||
std::shared_ptr<CallOpSetCollection> collection_;
|
||||
template <class W>
|
||||
ClientAsyncResponseReader(Call call, ClientContext* context, const W& request)
|
||||
: context_(context), call_(call) {
|
||||
init_buf_.SendInitialMetadata(context->send_initial_metadata_,
|
||||
context->initial_metadata_flags());
|
||||
// TODO(ctiller): don't assert
|
||||
GPR_CODEGEN_ASSERT(init_buf_.SendMessage(request).ok());
|
||||
init_buf_.ClientSendClose();
|
||||
call_.PerformOps(&init_buf_);
|
||||
}
|
||||
|
||||
// disable operator new
|
||||
static void* operator new(std::size_t size);
|
||||
static void* operator new(std::size_t size, void* p) { return p; };
|
||||
|
||||
SneakyCallOpSet<CallOpSendInitialMetadata, CallOpSendMessage,
|
||||
CallOpClientSendClose>
|
||||
init_buf_;
|
||||
CallOpSet<CallOpRecvInitialMetadata> meta_buf_;
|
||||
CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>,
|
||||
CallOpClientRecvStatus>
|
||||
finish_buf_;
|
||||
};
|
||||
|
||||
template <class W>
|
||||
|
|
@ -179,4 +190,12 @@ class ServerAsyncResponseWriter final : public ServerAsyncStreamingInterface {
|
|||
|
||||
} // namespace grpc
|
||||
|
||||
namespace std {
|
||||
template <class R>
|
||||
class default_delete<grpc::ClientAsyncResponseReader<R>> {
|
||||
public:
|
||||
void operator()(void* p) {}
|
||||
};
|
||||
}
|
||||
|
||||
#endif // GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#ifndef GRPCXX_IMPL_CODEGEN_CALL_H
|
||||
#define GRPCXX_IMPL_CODEGEN_CALL_H
|
||||
|
||||
#include <assert.h>
|
||||
#include <cstring>
|
||||
#include <functional>
|
||||
#include <map>
|
||||
|
|
@ -47,9 +48,9 @@
|
|||
#include <grpc++/impl/codegen/serialization_traits.h>
|
||||
#include <grpc++/impl/codegen/slice.h>
|
||||
#include <grpc++/impl/codegen/status.h>
|
||||
#include <grpc++/impl/codegen/status_helper.h>
|
||||
#include <grpc++/impl/codegen/string_ref.h>
|
||||
|
||||
#include <grpc/impl/codegen/atm.h>
|
||||
#include <grpc/impl/codegen/compression_types.h>
|
||||
#include <grpc/impl/codegen/grpc_types.h>
|
||||
|
||||
|
|
@ -63,21 +64,31 @@ class CallHook;
|
|||
class CompletionQueue;
|
||||
extern CoreCodegenInterface* g_core_codegen_interface;
|
||||
|
||||
const char kBinaryErrorDetailsKey[] = "grpc-status-details-bin";
|
||||
|
||||
// TODO(yangg) if the map is changed before we send, the pointers will be a
|
||||
// mess. Make sure it does not happen.
|
||||
inline grpc_metadata* FillMetadataArray(
|
||||
const std::multimap<grpc::string, grpc::string>& metadata) {
|
||||
if (metadata.empty()) {
|
||||
const std::multimap<grpc::string, grpc::string>& metadata,
|
||||
size_t* metadata_count, const grpc::string& optional_error_details) {
|
||||
*metadata_count = metadata.size() + (optional_error_details.empty() ? 0 : 1);
|
||||
if (*metadata_count == 0) {
|
||||
return nullptr;
|
||||
}
|
||||
grpc_metadata* metadata_array =
|
||||
(grpc_metadata*)(g_core_codegen_interface->gpr_malloc(
|
||||
metadata.size() * sizeof(grpc_metadata)));
|
||||
(*metadata_count) * sizeof(grpc_metadata)));
|
||||
size_t i = 0;
|
||||
for (auto iter = metadata.cbegin(); iter != metadata.cend(); ++iter, ++i) {
|
||||
metadata_array[i].key = SliceReferencingString(iter->first);
|
||||
metadata_array[i].value = SliceReferencingString(iter->second);
|
||||
}
|
||||
if (!optional_error_details.empty()) {
|
||||
metadata_array[i].key =
|
||||
g_core_codegen_interface->grpc_slice_from_static_buffer(
|
||||
kBinaryErrorDetailsKey, sizeof(kBinaryErrorDetailsKey) - 1);
|
||||
metadata_array[i].value = SliceReferencingString(optional_error_details);
|
||||
}
|
||||
return metadata_array;
|
||||
}
|
||||
|
||||
|
|
@ -216,8 +227,8 @@ class CallOpSendInitialMetadata {
|
|||
maybe_compression_level_.is_set = false;
|
||||
send_ = true;
|
||||
flags_ = flags;
|
||||
initial_metadata_count_ = metadata.size();
|
||||
initial_metadata_ = FillMetadataArray(metadata);
|
||||
initial_metadata_ =
|
||||
FillMetadataArray(metadata, &initial_metadata_count_, "");
|
||||
}
|
||||
|
||||
void set_compression_level(grpc_compression_level level) {
|
||||
|
|
@ -236,8 +247,10 @@ class CallOpSendInitialMetadata {
|
|||
op->data.send_initial_metadata.metadata = initial_metadata_;
|
||||
op->data.send_initial_metadata.maybe_compression_level.is_set =
|
||||
maybe_compression_level_.is_set;
|
||||
op->data.send_initial_metadata.maybe_compression_level.level =
|
||||
maybe_compression_level_.level;
|
||||
if (maybe_compression_level_.is_set) {
|
||||
op->data.send_initial_metadata.maybe_compression_level.level =
|
||||
maybe_compression_level_.level;
|
||||
}
|
||||
}
|
||||
void FinishOp(bool* status) {
|
||||
if (!send_) return;
|
||||
|
|
@ -351,28 +364,6 @@ class CallOpRecvMessage {
|
|||
bool allow_not_getting_message_;
|
||||
};
|
||||
|
||||
namespace CallOpGenericRecvMessageHelper {
|
||||
class DeserializeFunc {
|
||||
public:
|
||||
virtual Status Deserialize(grpc_byte_buffer* buf) = 0;
|
||||
virtual ~DeserializeFunc() {}
|
||||
};
|
||||
|
||||
template <class R>
|
||||
class DeserializeFuncType final : public DeserializeFunc {
|
||||
public:
|
||||
DeserializeFuncType(R* message) : message_(message) {}
|
||||
Status Deserialize(grpc_byte_buffer* buf) override {
|
||||
return SerializationTraits<R>::Deserialize(buf, message_);
|
||||
}
|
||||
|
||||
~DeserializeFuncType() override {}
|
||||
|
||||
private:
|
||||
R* message_; // Not a managed pointer because management is external to this
|
||||
};
|
||||
} // namespace CallOpGenericRecvMessageHelper
|
||||
|
||||
class CallOpGenericRecvMessage {
|
||||
public:
|
||||
CallOpGenericRecvMessage()
|
||||
|
|
@ -380,11 +371,9 @@ class CallOpGenericRecvMessage {
|
|||
|
||||
template <class R>
|
||||
void RecvMessage(R* message) {
|
||||
// Use an explicit base class pointer to avoid resolution error in the
|
||||
// following unique_ptr::reset for some old implementations.
|
||||
CallOpGenericRecvMessageHelper::DeserializeFunc* func =
|
||||
new CallOpGenericRecvMessageHelper::DeserializeFuncType<R>(message);
|
||||
deserialize_.reset(func);
|
||||
deserialize_ = [message](grpc_byte_buffer* buf) -> Status {
|
||||
return SerializationTraits<R>::Deserialize(buf, message);
|
||||
};
|
||||
}
|
||||
|
||||
// Do not change status if no message is received.
|
||||
|
|
@ -407,7 +396,7 @@ class CallOpGenericRecvMessage {
|
|||
if (recv_buf_) {
|
||||
if (*status) {
|
||||
got_message = true;
|
||||
*status = deserialize_->Deserialize(recv_buf_).ok();
|
||||
*status = deserialize_(recv_buf_).ok();
|
||||
} else {
|
||||
got_message = false;
|
||||
g_core_codegen_interface->grpc_byte_buffer_destroy(recv_buf_);
|
||||
|
|
@ -418,11 +407,12 @@ class CallOpGenericRecvMessage {
|
|||
*status = false;
|
||||
}
|
||||
}
|
||||
deserialize_.reset();
|
||||
deserialize_ = DeserializeFunc();
|
||||
}
|
||||
|
||||
private:
|
||||
std::unique_ptr<CallOpGenericRecvMessageHelper::DeserializeFunc> deserialize_;
|
||||
typedef std::function<Status(grpc_byte_buffer*)> DeserializeFunc;
|
||||
DeserializeFunc deserialize_;
|
||||
grpc_byte_buffer* recv_buf_;
|
||||
bool allow_not_getting_message_;
|
||||
};
|
||||
|
|
@ -454,11 +444,12 @@ class CallOpServerSendStatus {
|
|||
void ServerSendStatus(
|
||||
const std::multimap<grpc::string, grpc::string>& trailing_metadata,
|
||||
const Status& status) {
|
||||
trailing_metadata_count_ = trailing_metadata.size();
|
||||
trailing_metadata_ = FillMetadataArray(trailing_metadata);
|
||||
send_error_details_ = status.error_details();
|
||||
trailing_metadata_ = FillMetadataArray(
|
||||
trailing_metadata, &trailing_metadata_count_, send_error_details_);
|
||||
send_status_available_ = true;
|
||||
send_status_code_ = static_cast<grpc_status_code>(GetCanonicalCode(status));
|
||||
send_status_details_ = status.error_message();
|
||||
send_status_code_ = static_cast<grpc_status_code>(status.error_code());
|
||||
send_error_message_ = status.error_message();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
|
@ -470,9 +461,9 @@ class CallOpServerSendStatus {
|
|||
trailing_metadata_count_;
|
||||
op->data.send_status_from_server.trailing_metadata = trailing_metadata_;
|
||||
op->data.send_status_from_server.status = send_status_code_;
|
||||
status_details_slice_ = SliceReferencingString(send_status_details_);
|
||||
error_message_slice_ = SliceReferencingString(send_error_message_);
|
||||
op->data.send_status_from_server.status_details =
|
||||
send_status_details_.empty() ? nullptr : &status_details_slice_;
|
||||
send_error_message_.empty() ? nullptr : &error_message_slice_;
|
||||
op->flags = 0;
|
||||
op->reserved = NULL;
|
||||
}
|
||||
|
|
@ -486,10 +477,11 @@ class CallOpServerSendStatus {
|
|||
private:
|
||||
bool send_status_available_;
|
||||
grpc_status_code send_status_code_;
|
||||
grpc::string send_status_details_;
|
||||
grpc::string send_error_details_;
|
||||
grpc::string send_error_message_;
|
||||
size_t trailing_metadata_count_;
|
||||
grpc_metadata* trailing_metadata_;
|
||||
grpc_slice status_details_slice_;
|
||||
grpc_slice error_message_slice_;
|
||||
};
|
||||
|
||||
class CallOpRecvInitialMetadata {
|
||||
|
|
@ -528,6 +520,7 @@ class CallOpClientRecvStatus {
|
|||
void ClientRecvStatus(ClientContext* context, Status* status) {
|
||||
metadata_map_ = &context->trailing_metadata_;
|
||||
recv_status_ = status;
|
||||
error_message_ = g_core_codegen_interface->grpc_empty_slice();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
|
@ -537,7 +530,7 @@ class CallOpClientRecvStatus {
|
|||
op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
|
||||
op->data.recv_status_on_client.trailing_metadata = metadata_map_->arr();
|
||||
op->data.recv_status_on_client.status = &status_code_;
|
||||
op->data.recv_status_on_client.status_details = &status_details_;
|
||||
op->data.recv_status_on_client.status_details = &error_message_;
|
||||
op->flags = 0;
|
||||
op->reserved = NULL;
|
||||
}
|
||||
|
|
@ -545,10 +538,17 @@ class CallOpClientRecvStatus {
|
|||
void FinishOp(bool* status) {
|
||||
if (recv_status_ == nullptr) return;
|
||||
metadata_map_->FillMap();
|
||||
grpc::string binary_error_details;
|
||||
auto iter = metadata_map_->map()->find(kBinaryErrorDetailsKey);
|
||||
if (iter != metadata_map_->map()->end()) {
|
||||
binary_error_details =
|
||||
grpc::string(iter->second.begin(), iter->second.length());
|
||||
}
|
||||
*recv_status_ = Status(static_cast<StatusCode>(status_code_),
|
||||
grpc::string(GRPC_SLICE_START_PTR(status_details_),
|
||||
GRPC_SLICE_END_PTR(status_details_)));
|
||||
g_core_codegen_interface->grpc_slice_unref(status_details_);
|
||||
grpc::string(GRPC_SLICE_START_PTR(error_message_),
|
||||
GRPC_SLICE_END_PTR(error_message_)),
|
||||
binary_error_details);
|
||||
g_core_codegen_interface->grpc_slice_unref(error_message_);
|
||||
recv_status_ = nullptr;
|
||||
}
|
||||
|
||||
|
|
@ -556,20 +556,9 @@ class CallOpClientRecvStatus {
|
|||
MetadataMap* metadata_map_;
|
||||
Status* recv_status_;
|
||||
grpc_status_code status_code_;
|
||||
grpc_slice status_details_;
|
||||
grpc_slice error_message_;
|
||||
};
|
||||
|
||||
/// An abstract collection of CallOpSet's, to be used whenever
|
||||
/// CallOpSet objects must be thought of as a group. Each member
|
||||
/// of the group should have a shared_ptr back to the collection,
|
||||
/// as will the object that instantiates the collection, allowing
|
||||
/// for automatic ref-counting. In practice, any actual use should
|
||||
/// derive from this base class. This is specifically necessary if
|
||||
/// some of the CallOpSet's in the collection are "Sneaky" and don't
|
||||
/// report back to the C++ layer CQ operations
|
||||
class CallOpSetCollectionInterface
|
||||
: public std::enable_shared_from_this<CallOpSetCollectionInterface> {};
|
||||
|
||||
/// An abstract collection of call ops, used to generate the
|
||||
/// grpc_call_op structure to pass down to the lower layers,
|
||||
/// and as it is-a CompletionQueueTag, also massages the final
|
||||
|
|
@ -577,18 +566,9 @@ class CallOpSetCollectionInterface
|
|||
/// API.
|
||||
class CallOpSetInterface : public CompletionQueueTag {
|
||||
public:
|
||||
CallOpSetInterface() {}
|
||||
/// Fills in grpc_op, starting from ops[*nops] and moving
|
||||
/// upwards.
|
||||
virtual void FillOps(grpc_op* ops, size_t* nops) = 0;
|
||||
|
||||
/// Mark this as belonging to a collection if needed
|
||||
void SetCollection(std::shared_ptr<CallOpSetCollectionInterface> collection) {
|
||||
collection_ = collection;
|
||||
}
|
||||
|
||||
protected:
|
||||
std::shared_ptr<CallOpSetCollectionInterface> collection_;
|
||||
virtual void FillOps(grpc_call* call, grpc_op* ops, size_t* nops) = 0;
|
||||
};
|
||||
|
||||
/// Primary implementaiton of CallOpSetInterface.
|
||||
|
|
@ -609,13 +589,15 @@ class CallOpSet : public CallOpSetInterface,
|
|||
public Op6 {
|
||||
public:
|
||||
CallOpSet() : return_tag_(this) {}
|
||||
void FillOps(grpc_op* ops, size_t* nops) override {
|
||||
void FillOps(grpc_call* call, grpc_op* ops, size_t* nops) override {
|
||||
this->Op1::AddOp(ops, nops);
|
||||
this->Op2::AddOp(ops, nops);
|
||||
this->Op3::AddOp(ops, nops);
|
||||
this->Op4::AddOp(ops, nops);
|
||||
this->Op5::AddOp(ops, nops);
|
||||
this->Op6::AddOp(ops, nops);
|
||||
g_core_codegen_interface->grpc_call_ref(call);
|
||||
call_ = call;
|
||||
}
|
||||
|
||||
bool FinalizeResult(void** tag, bool* status) override {
|
||||
|
|
@ -626,7 +608,7 @@ class CallOpSet : public CallOpSetInterface,
|
|||
this->Op5::FinishOp(status);
|
||||
this->Op6::FinishOp(status);
|
||||
*tag = return_tag_;
|
||||
collection_.reset(); // drop the ref at this point
|
||||
g_core_codegen_interface->grpc_call_unref(call_);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -634,6 +616,7 @@ class CallOpSet : public CallOpSetInterface,
|
|||
|
||||
private:
|
||||
void* return_tag_;
|
||||
grpc_call* call_;
|
||||
};
|
||||
|
||||
/// A CallOpSet that does not post completions to the completion queue.
|
||||
|
|
|
|||
|
|
@ -52,7 +52,9 @@ template <class InputMessage, class OutputMessage>
|
|||
Status BlockingUnaryCall(ChannelInterface* channel, const RpcMethod& method,
|
||||
ClientContext* context, const InputMessage& request,
|
||||
OutputMessage* result) {
|
||||
CompletionQueue cq;
|
||||
CompletionQueue cq(grpc_completion_queue_attributes{
|
||||
GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK,
|
||||
GRPC_CQ_DEFAULT_POLLING}); // Pluckable completion queue
|
||||
Call call(channel->CreateCall(method, context, &cq));
|
||||
CallOpSet<CallOpSendInitialMetadata, CallOpSendMessage,
|
||||
CallOpRecvInitialMetadata, CallOpRecvMessage<OutputMessage>,
|
||||
|
|
|
|||
|
|
@ -102,10 +102,9 @@ class CompletionQueue : private GrpcLibraryCodegen {
|
|||
public:
|
||||
/// Default constructor. Implicitly creates a \a grpc_completion_queue
|
||||
/// instance.
|
||||
CompletionQueue() {
|
||||
cq_ = g_core_codegen_interface->grpc_completion_queue_create(nullptr);
|
||||
InitialAvalanching(); // reserve this for the future shutdown
|
||||
}
|
||||
CompletionQueue()
|
||||
: CompletionQueue(grpc_completion_queue_attributes{
|
||||
GRPC_CQ_CURRENT_VERSION, GRPC_CQ_NEXT, GRPC_CQ_DEFAULT_POLLING}) {}
|
||||
|
||||
/// Wrap \a take, taking ownership of the instance.
|
||||
///
|
||||
|
|
@ -185,6 +184,16 @@ class CompletionQueue : private GrpcLibraryCodegen {
|
|||
};
|
||||
void CompleteAvalanching();
|
||||
|
||||
protected:
|
||||
/// Private constructor of CompletionQueue only visible to friend classes
|
||||
CompletionQueue(const grpc_completion_queue_attributes& attributes) {
|
||||
cq_ = g_core_codegen_interface->grpc_completion_queue_create(
|
||||
g_core_codegen_interface->grpc_completion_queue_factory_lookup(
|
||||
&attributes),
|
||||
&attributes, NULL);
|
||||
InitialAvalanching(); // reserve this for the future shutdown
|
||||
}
|
||||
|
||||
private:
|
||||
// Friend synchronous wrappers so that they can access Pluck(), which is
|
||||
// a semi-private API geared towards the synchronous implementation.
|
||||
|
|
@ -237,6 +246,12 @@ class CompletionQueue : private GrpcLibraryCodegen {
|
|||
|
||||
/// Performs a single polling pluck on \a tag.
|
||||
/// \warning Must not be mixed with calls to \a Next.
|
||||
///
|
||||
/// TODO: sreek - This calls tag->FinalizeResult() even if the cq_ is already
|
||||
/// shutdown. This is most likely a bug and if it is a bug, then change this
|
||||
/// implementation to simple call the other TryPluck function with a zero
|
||||
/// timeout. i.e:
|
||||
/// TryPluck(tag, gpr_time_0(GPR_CLOCK_REALTIME))
|
||||
void TryPluck(CompletionQueueTag* tag) {
|
||||
auto deadline = g_core_codegen_interface->gpr_time_0(GPR_CLOCK_REALTIME);
|
||||
auto ev = g_core_codegen_interface->grpc_completion_queue_pluck(
|
||||
|
|
@ -248,6 +263,23 @@ class CompletionQueue : private GrpcLibraryCodegen {
|
|||
GPR_CODEGEN_ASSERT(!tag->FinalizeResult(&ignored, &ok));
|
||||
}
|
||||
|
||||
/// Performs a single polling pluck on \a tag. Calls tag->FinalizeResult if
|
||||
/// the pluck() was successful and returned the tag.
|
||||
///
|
||||
/// This exects tag->FinalizeResult (if called) to return 'false' i.e expects
|
||||
/// that the tag is internal not something that is returned to the user.
|
||||
void TryPluck(CompletionQueueTag* tag, gpr_timespec deadline) {
|
||||
auto ev = g_core_codegen_interface->grpc_completion_queue_pluck(
|
||||
cq_, tag, deadline, nullptr);
|
||||
if (ev.type == GRPC_QUEUE_TIMEOUT || ev.type == GRPC_QUEUE_SHUTDOWN) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool ok = ev.success != 0;
|
||||
void* ignored = tag;
|
||||
GPR_CODEGEN_ASSERT(!tag->FinalizeResult(&ignored, &ok));
|
||||
}
|
||||
|
||||
grpc_completion_queue* cq_; // owned
|
||||
|
||||
gpr_atm avalanches_in_flight_;
|
||||
|
|
@ -257,17 +289,19 @@ class CompletionQueue : private GrpcLibraryCodegen {
|
|||
/// by servers. Instantiated by \a ServerBuilder.
|
||||
class ServerCompletionQueue : public CompletionQueue {
|
||||
public:
|
||||
bool IsFrequentlyPolled() { return is_frequently_polled_; }
|
||||
bool IsFrequentlyPolled() { return polling_type_ != GRPC_CQ_NON_LISTENING; }
|
||||
|
||||
private:
|
||||
bool is_frequently_polled_;
|
||||
grpc_cq_polling_type polling_type_;
|
||||
friend class ServerBuilder;
|
||||
/// \param is_frequently_polled Informs the GRPC library about whether the
|
||||
/// server completion queue would be actively polled (by calling Next() or
|
||||
/// AsyncNext()). By default all server completion queues are assumed to be
|
||||
/// frequently polled.
|
||||
ServerCompletionQueue(bool is_frequently_polled = true)
|
||||
: is_frequently_polled_(is_frequently_polled) {}
|
||||
ServerCompletionQueue(grpc_cq_polling_type polling_type)
|
||||
: CompletionQueue(grpc_completion_queue_attributes{
|
||||
GRPC_CQ_CURRENT_VERSION, GRPC_CQ_NEXT, polling_type}),
|
||||
polling_type_(polling_type) {}
|
||||
};
|
||||
|
||||
} // namespace grpc
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
#ifndef GRPCXX_IMPL_CODEGEN_CONFIG_PROTOBUF_H
|
||||
#define GRPCXX_IMPL_CODEGEN_CONFIG_PROTOBUF_H
|
||||
|
||||
#define GRPC_OPEN_SOURCE_PROTO
|
||||
|
||||
#ifndef GRPC_CUSTOM_PROTOBUF_INT64
|
||||
#include <google/protobuf/stubs/common.h>
|
||||
#define GRPC_CUSTOM_PROTOBUF_INT64 ::google::protobuf::int64
|
||||
|
|
|
|||
|
|
@ -38,14 +38,25 @@
|
|||
|
||||
#include <grpc++/impl/codegen/core_codegen_interface.h>
|
||||
#include <grpc/byte_buffer.h>
|
||||
#include <grpc/grpc.h>
|
||||
#include <grpc/impl/codegen/grpc_types.h>
|
||||
|
||||
namespace grpc {
|
||||
|
||||
/// Implementation of the core codegen interface.
|
||||
class CoreCodegen : public CoreCodegenInterface {
|
||||
class CoreCodegen final : public CoreCodegenInterface {
|
||||
private:
|
||||
grpc_completion_queue* grpc_completion_queue_create(void* reserved) override;
|
||||
virtual const grpc_completion_queue_factory*
|
||||
grpc_completion_queue_factory_lookup(
|
||||
const grpc_completion_queue_attributes* attributes) override;
|
||||
virtual grpc_completion_queue* grpc_completion_queue_create(
|
||||
const grpc_completion_queue_factory* factory,
|
||||
const grpc_completion_queue_attributes* attributes,
|
||||
void* reserved) override;
|
||||
grpc_completion_queue* grpc_completion_queue_create_for_next(
|
||||
void* reserved) override;
|
||||
grpc_completion_queue* grpc_completion_queue_create_for_pluck(
|
||||
void* reserved) override;
|
||||
void grpc_completion_queue_destroy(grpc_completion_queue* cq) override;
|
||||
grpc_event grpc_completion_queue_pluck(grpc_completion_queue* cq, void* tag,
|
||||
gpr_timespec deadline,
|
||||
|
|
@ -64,6 +75,10 @@ class CoreCodegen : public CoreCodegenInterface {
|
|||
void gpr_cv_signal(gpr_cv* cv) override;
|
||||
void gpr_cv_broadcast(gpr_cv* cv) override;
|
||||
|
||||
void grpc_call_ref(grpc_call* call) override;
|
||||
void grpc_call_unref(grpc_call* call) override;
|
||||
virtual void* grpc_call_arena_alloc(grpc_call* call, size_t length) override;
|
||||
|
||||
void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) override;
|
||||
|
||||
int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
|
||||
|
|
@ -75,10 +90,15 @@ class CoreCodegen : public CoreCodegenInterface {
|
|||
|
||||
grpc_byte_buffer* grpc_raw_byte_buffer_create(grpc_slice* slice,
|
||||
size_t nslices) override;
|
||||
|
||||
grpc_slice grpc_slice_new_with_user_data(void* p, size_t len,
|
||||
void (*destroy)(void*),
|
||||
void* user_data) override;
|
||||
grpc_slice grpc_empty_slice() override;
|
||||
grpc_slice grpc_slice_malloc(size_t length) override;
|
||||
void grpc_slice_unref(grpc_slice slice) override;
|
||||
grpc_slice grpc_slice_ref(grpc_slice slice) override;
|
||||
grpc_slice grpc_slice_split_tail(grpc_slice* s, size_t split) override;
|
||||
grpc_slice grpc_slice_split_head(grpc_slice* s, size_t split) override;
|
||||
void grpc_slice_buffer_add(grpc_slice_buffer* sb, grpc_slice slice) override;
|
||||
void grpc_slice_buffer_pop(grpc_slice_buffer* sb) override;
|
||||
grpc_slice grpc_slice_from_static_buffer(const void* buffer,
|
||||
|
|
|
|||
|
|
@ -59,7 +59,15 @@ class CoreCodegenInterface {
|
|||
virtual void assert_fail(const char* failed_assertion, const char* file,
|
||||
int line) = 0;
|
||||
|
||||
virtual const grpc_completion_queue_factory*
|
||||
grpc_completion_queue_factory_lookup(
|
||||
const grpc_completion_queue_attributes* attributes) = 0;
|
||||
virtual grpc_completion_queue* grpc_completion_queue_create(
|
||||
const grpc_completion_queue_factory* factory,
|
||||
const grpc_completion_queue_attributes* attributes, void* reserved) = 0;
|
||||
virtual grpc_completion_queue* grpc_completion_queue_create_for_next(
|
||||
void* reserved) = 0;
|
||||
virtual grpc_completion_queue* grpc_completion_queue_create_for_pluck(
|
||||
void* reserved) = 0;
|
||||
virtual void grpc_completion_queue_destroy(grpc_completion_queue* cq) = 0;
|
||||
virtual grpc_event grpc_completion_queue_pluck(grpc_completion_queue* cq,
|
||||
|
|
@ -93,10 +101,18 @@ class CoreCodegenInterface {
|
|||
|
||||
virtual grpc_byte_buffer* grpc_raw_byte_buffer_create(grpc_slice* slice,
|
||||
size_t nslices) = 0;
|
||||
|
||||
virtual grpc_slice grpc_slice_new_with_user_data(void* p, size_t len,
|
||||
void (*destroy)(void*),
|
||||
void* user_data) = 0;
|
||||
virtual void grpc_call_ref(grpc_call* call) = 0;
|
||||
virtual void grpc_call_unref(grpc_call* call) = 0;
|
||||
virtual void* grpc_call_arena_alloc(grpc_call* call, size_t length) = 0;
|
||||
virtual grpc_slice grpc_empty_slice() = 0;
|
||||
virtual grpc_slice grpc_slice_malloc(size_t length) = 0;
|
||||
virtual void grpc_slice_unref(grpc_slice slice) = 0;
|
||||
virtual grpc_slice grpc_slice_ref(grpc_slice slice) = 0;
|
||||
virtual grpc_slice grpc_slice_split_tail(grpc_slice* s, size_t split) = 0;
|
||||
virtual grpc_slice grpc_slice_split_head(grpc_slice* s, size_t split) = 0;
|
||||
virtual void grpc_slice_buffer_add(grpc_slice_buffer* sb,
|
||||
grpc_slice slice) = 0;
|
||||
virtual void grpc_slice_buffer_pop(grpc_slice_buffer* sb) = 0;
|
||||
|
|
|
|||
|
|
@ -52,10 +52,9 @@ namespace internal {
|
|||
|
||||
class GrpcBufferWriterPeer;
|
||||
|
||||
const int kGrpcBufferWriterMaxBufferLength = 8192;
|
||||
const int kGrpcBufferWriterMaxBufferLength = 1024 * 1024;
|
||||
|
||||
class GrpcBufferWriter final
|
||||
: public ::grpc::protobuf::io::ZeroCopyOutputStream {
|
||||
class GrpcBufferWriter : public ::grpc::protobuf::io::ZeroCopyOutputStream {
|
||||
public:
|
||||
explicit GrpcBufferWriter(grpc_byte_buffer** bp, int block_size)
|
||||
: block_size_(block_size), byte_count_(0), have_backup_(false) {
|
||||
|
|
@ -103,6 +102,8 @@ class GrpcBufferWriter final
|
|||
|
||||
grpc::protobuf::int64 ByteCount() const override { return byte_count_; }
|
||||
|
||||
grpc_slice_buffer* SliceBuffer() { return slice_buffer_; }
|
||||
|
||||
private:
|
||||
friend class GrpcBufferWriterPeer;
|
||||
const int block_size_;
|
||||
|
|
@ -113,8 +114,7 @@ class GrpcBufferWriter final
|
|||
grpc_slice slice_;
|
||||
};
|
||||
|
||||
class GrpcBufferReader final
|
||||
: public ::grpc::protobuf::io::ZeroCopyInputStream {
|
||||
class GrpcBufferReader : public ::grpc::protobuf::io::ZeroCopyInputStream {
|
||||
public:
|
||||
explicit GrpcBufferReader(grpc_byte_buffer* buffer)
|
||||
: byte_count_(0), backup_count_(0), status_() {
|
||||
|
|
@ -175,64 +175,91 @@ class GrpcBufferReader final
|
|||
return byte_count_ - backup_count_;
|
||||
}
|
||||
|
||||
private:
|
||||
protected:
|
||||
int64_t byte_count_;
|
||||
int64_t backup_count_;
|
||||
grpc_byte_buffer_reader reader_;
|
||||
grpc_slice slice_;
|
||||
Status status_;
|
||||
};
|
||||
|
||||
template <class BufferWriter, class T>
|
||||
Status GenericSerialize(const grpc::protobuf::Message& msg,
|
||||
grpc_byte_buffer** bp, bool* own_buffer) {
|
||||
static_assert(
|
||||
std::is_base_of<protobuf::io::ZeroCopyOutputStream, BufferWriter>::value,
|
||||
"BufferWriter must be a subclass of io::ZeroCopyOutputStream");
|
||||
*own_buffer = true;
|
||||
int byte_size = msg.ByteSize();
|
||||
if (byte_size <= internal::kGrpcBufferWriterMaxBufferLength) {
|
||||
grpc_slice slice = g_core_codegen_interface->grpc_slice_malloc(byte_size);
|
||||
GPR_CODEGEN_ASSERT(
|
||||
GRPC_SLICE_END_PTR(slice) ==
|
||||
msg.SerializeWithCachedSizesToArray(GRPC_SLICE_START_PTR(slice)));
|
||||
*bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(&slice, 1);
|
||||
g_core_codegen_interface->grpc_slice_unref(slice);
|
||||
return g_core_codegen_interface->ok();
|
||||
} else {
|
||||
BufferWriter writer(bp, internal::kGrpcBufferWriterMaxBufferLength);
|
||||
return msg.SerializeToZeroCopyStream(&writer)
|
||||
? g_core_codegen_interface->ok()
|
||||
: Status(StatusCode::INTERNAL, "Failed to serialize message");
|
||||
}
|
||||
}
|
||||
|
||||
template <class BufferReader, class T>
|
||||
Status GenericDeserialize(grpc_byte_buffer* buffer,
|
||||
grpc::protobuf::Message* msg) {
|
||||
static_assert(
|
||||
std::is_base_of<protobuf::io::ZeroCopyInputStream, BufferReader>::value,
|
||||
"BufferReader must be a subclass of io::ZeroCopyInputStream");
|
||||
if (buffer == nullptr) {
|
||||
return Status(StatusCode::INTERNAL, "No payload");
|
||||
}
|
||||
Status result = g_core_codegen_interface->ok();
|
||||
{
|
||||
BufferReader reader(buffer);
|
||||
if (!reader.status().ok()) {
|
||||
return reader.status();
|
||||
}
|
||||
::grpc::protobuf::io::CodedInputStream decoder(&reader);
|
||||
decoder.SetTotalBytesLimit(INT_MAX, INT_MAX);
|
||||
if (!msg->ParseFromCodedStream(&decoder)) {
|
||||
result = Status(StatusCode::INTERNAL, msg->InitializationErrorString());
|
||||
}
|
||||
if (!decoder.ConsumedEntireMessage()) {
|
||||
result = Status(StatusCode::INTERNAL, "Did not read entire message");
|
||||
}
|
||||
}
|
||||
g_core_codegen_interface->grpc_byte_buffer_destroy(buffer);
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace internal
|
||||
|
||||
// this is needed so the following class does not conflict with protobuf
|
||||
// serializers that utilize internal-only tools.
|
||||
#ifdef GRPC_OPEN_SOURCE_PROTO
|
||||
// This class provides a protobuf serializer. It translates between protobuf
|
||||
// objects and grpc_byte_buffers. More information about SerializationTraits can
|
||||
// be found in include/grpc++/impl/codegen/serialization_traits.h.
|
||||
template <class T>
|
||||
class SerializationTraits<T, typename std::enable_if<std::is_base_of<
|
||||
grpc::protobuf::Message, T>::value>::type> {
|
||||
public:
|
||||
static Status Serialize(const grpc::protobuf::Message& msg,
|
||||
grpc_byte_buffer** bp, bool* own_buffer) {
|
||||
*own_buffer = true;
|
||||
int byte_size = msg.ByteSize();
|
||||
if (byte_size <= internal::kGrpcBufferWriterMaxBufferLength) {
|
||||
grpc_slice slice = g_core_codegen_interface->grpc_slice_malloc(byte_size);
|
||||
GPR_CODEGEN_ASSERT(
|
||||
GRPC_SLICE_END_PTR(slice) ==
|
||||
msg.SerializeWithCachedSizesToArray(GRPC_SLICE_START_PTR(slice)));
|
||||
*bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(&slice, 1);
|
||||
g_core_codegen_interface->grpc_slice_unref(slice);
|
||||
return g_core_codegen_interface->ok();
|
||||
} else {
|
||||
internal::GrpcBufferWriter writer(
|
||||
bp, internal::kGrpcBufferWriterMaxBufferLength);
|
||||
return msg.SerializeToZeroCopyStream(&writer)
|
||||
? g_core_codegen_interface->ok()
|
||||
: Status(StatusCode::INTERNAL, "Failed to serialize message");
|
||||
}
|
||||
return internal::GenericSerialize<internal::GrpcBufferWriter, T>(
|
||||
msg, bp, own_buffer);
|
||||
}
|
||||
|
||||
static Status Deserialize(grpc_byte_buffer* buffer,
|
||||
grpc::protobuf::Message* msg) {
|
||||
if (buffer == nullptr) {
|
||||
return Status(StatusCode::INTERNAL, "No payload");
|
||||
}
|
||||
Status result = g_core_codegen_interface->ok();
|
||||
{
|
||||
internal::GrpcBufferReader reader(buffer);
|
||||
if (!reader.status().ok()) {
|
||||
return reader.status();
|
||||
}
|
||||
::grpc::protobuf::io::CodedInputStream decoder(&reader);
|
||||
decoder.SetTotalBytesLimit(INT_MAX, INT_MAX);
|
||||
if (!msg->ParseFromCodedStream(&decoder)) {
|
||||
result = Status(StatusCode::INTERNAL, msg->InitializationErrorString());
|
||||
}
|
||||
if (!decoder.ConsumedEntireMessage()) {
|
||||
result = Status(StatusCode::INTERNAL, "Did not read entire message");
|
||||
}
|
||||
}
|
||||
g_core_codegen_interface->grpc_byte_buffer_destroy(buffer);
|
||||
return result;
|
||||
return internal::GenericDeserialize<internal::GrpcBufferReader, T>(buffer,
|
||||
msg);
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
} // namespace grpc
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
|
||||
#include <grpc/impl/codegen/compression_types.h>
|
||||
|
||||
#include <grpc++/impl/codegen/completion_queue_tag.h>
|
||||
#include <grpc++/impl/codegen/config.h>
|
||||
#include <grpc++/impl/codegen/create_auth_context.h>
|
||||
#include <grpc++/impl/codegen/metadata_map.h>
|
||||
|
|
@ -211,6 +212,8 @@ class ServerContext {
|
|||
class CompletionOp;
|
||||
|
||||
void BeginCompletionOp(Call* call);
|
||||
// Return the tag queued by BeginCompletionOp()
|
||||
CompletionQueueTag* GetCompletionOpTag();
|
||||
|
||||
ServerContext(gpr_timespec deadline, grpc_metadata_array* arr);
|
||||
|
||||
|
|
|
|||
|
|
@ -122,9 +122,7 @@ class ServerInterface : public CallHook {
|
|||
/// caller is required to keep all completion queues live until the server is
|
||||
/// destroyed.
|
||||
/// \param num_cqs How many completion queues does \a cqs hold.
|
||||
///
|
||||
/// \return true on a successful shutdown.
|
||||
virtual bool Start(ServerCompletionQueue** cqs, size_t num_cqs) = 0;
|
||||
virtual void Start(ServerCompletionQueue** cqs, size_t num_cqs) = 0;
|
||||
|
||||
virtual void ShutdownInternal(gpr_timespec deadline) = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -47,10 +47,16 @@ class Status {
|
|||
/// Construct an OK instance.
|
||||
Status() : code_(StatusCode::OK) {}
|
||||
|
||||
/// Construct an instance with associated \a code and \a details (also
|
||||
// referred to as "error_message").
|
||||
Status(StatusCode code, const grpc::string& details)
|
||||
: code_(code), details_(details) {}
|
||||
/// Construct an instance with associated \a code and \a error_message
|
||||
Status(StatusCode code, const grpc::string& error_message)
|
||||
: code_(code), error_message_(error_message) {}
|
||||
|
||||
/// Construct an instance with \a code, \a error_message and \a error_details
|
||||
Status(StatusCode code, const grpc::string& error_message,
|
||||
const grpc::string& error_details)
|
||||
: code_(code),
|
||||
error_message_(error_message),
|
||||
binary_error_details_(error_details) {}
|
||||
|
||||
// Pre-defined special status objects.
|
||||
/// An OK pre-defined instance.
|
||||
|
|
@ -61,14 +67,18 @@ class Status {
|
|||
/// Return the instance's error code.
|
||||
StatusCode error_code() const { return code_; }
|
||||
/// Return the instance's error message.
|
||||
grpc::string error_message() const { return details_; }
|
||||
grpc::string error_message() const { return error_message_; }
|
||||
/// Return the (binary) error details.
|
||||
// Usually it contains a serialized google.rpc.Status proto.
|
||||
grpc::string error_details() const { return binary_error_details_; }
|
||||
|
||||
/// Is the status OK?
|
||||
bool ok() const { return code_ == StatusCode::OK; }
|
||||
|
||||
private:
|
||||
StatusCode code_;
|
||||
grpc::string details_;
|
||||
grpc::string error_message_;
|
||||
grpc::string binary_error_details_;
|
||||
};
|
||||
|
||||
} // namespace grpc
|
||||
|
|
|
|||
|
|
@ -155,7 +155,11 @@ class ClientReader final : public ClientReaderInterface<R> {
|
|||
template <class W>
|
||||
ClientReader(ChannelInterface* channel, const RpcMethod& method,
|
||||
ClientContext* context, const W& request)
|
||||
: context_(context), call_(channel->CreateCall(method, context, &cq_)) {
|
||||
: context_(context),
|
||||
cq_(grpc_completion_queue_attributes{
|
||||
GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK,
|
||||
GRPC_CQ_DEFAULT_POLLING}), // Pluckable cq
|
||||
call_(channel->CreateCall(method, context, &cq_)) {
|
||||
CallOpSet<CallOpSendInitialMetadata, CallOpSendMessage,
|
||||
CallOpClientSendClose>
|
||||
ops;
|
||||
|
|
@ -227,7 +231,11 @@ class ClientWriter : public ClientWriterInterface<W> {
|
|||
template <class R>
|
||||
ClientWriter(ChannelInterface* channel, const RpcMethod& method,
|
||||
ClientContext* context, R* response)
|
||||
: context_(context), call_(channel->CreateCall(method, context, &cq_)) {
|
||||
: context_(context),
|
||||
cq_(grpc_completion_queue_attributes{
|
||||
GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK,
|
||||
GRPC_CQ_DEFAULT_POLLING}), // Pluckable cq
|
||||
call_(channel->CreateCall(method, context, &cq_)) {
|
||||
finish_ops_.RecvMessage(response);
|
||||
finish_ops_.AllowNoMessage();
|
||||
|
||||
|
|
@ -325,7 +333,11 @@ class ClientReaderWriter final : public ClientReaderWriterInterface<W, R> {
|
|||
/// Blocking create a stream.
|
||||
ClientReaderWriter(ChannelInterface* channel, const RpcMethod& method,
|
||||
ClientContext* context)
|
||||
: context_(context), call_(channel->CreateCall(method, context, &cq_)) {
|
||||
: context_(context),
|
||||
cq_(grpc_completion_queue_attributes{
|
||||
GRPC_CQ_CURRENT_VERSION, GRPC_CQ_PLUCK,
|
||||
GRPC_CQ_DEFAULT_POLLING}), // Pluckable cq
|
||||
call_(channel->CreateCall(method, context, &cq_)) {
|
||||
if (!context_->initial_metadata_corked_) {
|
||||
CallOpSet<CallOpSendInitialMetadata> ops;
|
||||
ops.SendInitialMetadata(context->send_initial_metadata_,
|
||||
|
|
@ -562,7 +574,7 @@ class ServerReaderWriterBody final {
|
|||
Call* const call_;
|
||||
ServerContext* const ctx_;
|
||||
};
|
||||
}
|
||||
} // namespace internal
|
||||
|
||||
// class to represent the user API for a bidirectional streaming call
|
||||
template <class W, class R>
|
||||
|
|
|
|||
|
|
@ -1,217 +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_THRIFT_SERIALIZER_H
|
||||
#define GRPCXX_IMPL_CODEGEN_THRIFT_SERIALIZER_H
|
||||
|
||||
#include <grpc/impl/codegen/byte_buffer_reader.h>
|
||||
#include <grpc/impl/codegen/slice.h>
|
||||
#include <thrift/protocol/TBinaryProtocol.h>
|
||||
#include <thrift/protocol/TCompactProtocol.h>
|
||||
#include <thrift/protocol/TProtocolException.h>
|
||||
#include <thrift/transport/TBufferTransports.h>
|
||||
#include <thrift/transport/TTransportUtils.h>
|
||||
#include <boost/make_shared.hpp>
|
||||
#include <memory>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
|
||||
namespace apache {
|
||||
namespace thrift {
|
||||
namespace util {
|
||||
|
||||
using apache::thrift::protocol::TBinaryProtocolT;
|
||||
using apache::thrift::protocol::TCompactProtocolT;
|
||||
using apache::thrift::protocol::TMessageType;
|
||||
using apache::thrift::protocol::TNetworkBigEndian;
|
||||
using apache::thrift::transport::TMemoryBuffer;
|
||||
using apache::thrift::transport::TBufferBase;
|
||||
using apache::thrift::transport::TTransport;
|
||||
|
||||
template <typename Dummy, typename Protocol>
|
||||
class ThriftSerializer {
|
||||
public:
|
||||
ThriftSerializer()
|
||||
: prepared_(false),
|
||||
last_deserialized_(false),
|
||||
serialize_version_(false) {}
|
||||
|
||||
virtual ~ThriftSerializer() {}
|
||||
|
||||
// Serialize the passed type into the internal buffer
|
||||
// and returns a pointer to internal buffer and its size
|
||||
template <typename T>
|
||||
void Serialize(const T& fields, const uint8_t** serialized_buffer,
|
||||
size_t* serialized_len) {
|
||||
// prepare or reset buffer
|
||||
if (!prepared_ || last_deserialized_) {
|
||||
prepare();
|
||||
} else {
|
||||
buffer_->resetBuffer();
|
||||
}
|
||||
last_deserialized_ = false;
|
||||
|
||||
// if required serialize protocol version
|
||||
if (serialize_version_) {
|
||||
protocol_->writeMessageBegin("", TMessageType(0), 0);
|
||||
}
|
||||
|
||||
// serialize fields into buffer
|
||||
fields.write(protocol_.get());
|
||||
|
||||
// write the end of message
|
||||
if (serialize_version_) {
|
||||
protocol_->writeMessageEnd();
|
||||
}
|
||||
|
||||
uint8_t* byte_buffer;
|
||||
uint32_t byte_buffer_size;
|
||||
buffer_->getBuffer(&byte_buffer, &byte_buffer_size);
|
||||
*serialized_buffer = byte_buffer;
|
||||
*serialized_len = byte_buffer_size;
|
||||
}
|
||||
|
||||
// Serialize the passed type into the byte buffer
|
||||
template <typename T>
|
||||
void Serialize(const T& fields, grpc_byte_buffer** bp) {
|
||||
const uint8_t* byte_buffer;
|
||||
size_t byte_buffer_size;
|
||||
|
||||
Serialize(fields, &byte_buffer, &byte_buffer_size);
|
||||
|
||||
grpc_slice slice = grpc_slice_from_copied_buffer(
|
||||
reinterpret_cast<const char*>(byte_buffer), byte_buffer_size);
|
||||
|
||||
*bp = grpc_raw_byte_buffer_create(&slice, 1);
|
||||
|
||||
grpc_slice_unref(slice);
|
||||
}
|
||||
|
||||
// Deserialize the passed char array into the passed type, returns the number
|
||||
// of bytes that have been consumed from the passed string.
|
||||
template <typename T>
|
||||
uint32_t Deserialize(uint8_t* serialized_buffer, size_t length, T* fields) {
|
||||
// prepare buffer if necessary
|
||||
if (!prepared_) {
|
||||
prepare();
|
||||
}
|
||||
last_deserialized_ = true;
|
||||
|
||||
// reset buffer transport
|
||||
buffer_->resetBuffer(serialized_buffer, length);
|
||||
|
||||
// read the protocol version if necessary
|
||||
if (serialize_version_) {
|
||||
std::string name = "";
|
||||
TMessageType mt = static_cast<TMessageType>(0);
|
||||
int32_t seq_id = 0;
|
||||
protocol_->readMessageBegin(name, mt, seq_id);
|
||||
}
|
||||
|
||||
// deserialize buffer into fields
|
||||
uint32_t len = fields->read(protocol_.get());
|
||||
|
||||
// read the end of message
|
||||
if (serialize_version_) {
|
||||
protocol_->readMessageEnd();
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
// Deserialize the passed byte buffer to passed type, returns the number
|
||||
// of bytes consumed from byte buffer
|
||||
template <typename T>
|
||||
uint32_t Deserialize(grpc_byte_buffer* buffer, T* msg) {
|
||||
grpc_byte_buffer_reader reader;
|
||||
grpc_byte_buffer_reader_init(&reader, buffer);
|
||||
|
||||
grpc_slice slice = grpc_byte_buffer_reader_readall(&reader);
|
||||
|
||||
uint32_t len =
|
||||
Deserialize(GRPC_SLICE_START_PTR(slice), GRPC_SLICE_LENGTH(slice), msg);
|
||||
|
||||
grpc_slice_unref(slice);
|
||||
|
||||
grpc_byte_buffer_reader_destroy(&reader);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
// set serialization version flag
|
||||
void SetSerializeVersion(bool value) { serialize_version_ = value; }
|
||||
|
||||
// Set the container size limit to deserialize
|
||||
// This function should be called after buffer_ is initialized
|
||||
void SetContainerSizeLimit(int32_t container_limit) {
|
||||
if (!prepared_) {
|
||||
prepare();
|
||||
}
|
||||
protocol_->setContainerSizeLimit(container_limit);
|
||||
}
|
||||
|
||||
// Set the string size limit to deserialize
|
||||
// This function should be called after buffer_ is initialized
|
||||
void SetStringSizeLimit(int32_t string_limit) {
|
||||
if (!prepared_) {
|
||||
prepare();
|
||||
}
|
||||
protocol_->setStringSizeLimit(string_limit);
|
||||
}
|
||||
|
||||
private:
|
||||
bool prepared_;
|
||||
bool last_deserialized_;
|
||||
boost::shared_ptr<TMemoryBuffer> buffer_;
|
||||
std::shared_ptr<Protocol> protocol_;
|
||||
bool serialize_version_;
|
||||
|
||||
void prepare() {
|
||||
buffer_ = boost::make_shared<TMemoryBuffer>();
|
||||
// create a protocol for the memory buffer transport
|
||||
protocol_ = std::make_shared<Protocol>(buffer_);
|
||||
prepared_ = true;
|
||||
}
|
||||
|
||||
}; // ThriftSerializer
|
||||
|
||||
typedef ThriftSerializer<void, TBinaryProtocolT<TBufferBase, TNetworkBigEndian>>
|
||||
ThriftSerializerBinary;
|
||||
typedef ThriftSerializer<void, TCompactProtocolT<TBufferBase>>
|
||||
ThriftSerializerCompact;
|
||||
|
||||
} // namespace util
|
||||
} // namespace thrift
|
||||
} // namespace apache
|
||||
|
||||
#endif // GRPCXX_IMPL_CODEGEN_THRIFT_SERIALIZER_H
|
||||
|
|
@ -1,83 +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_THRIFT_UTILS_H
|
||||
#define GRPCXX_IMPL_CODEGEN_THRIFT_UTILS_H
|
||||
|
||||
#include <grpc++/impl/codegen/config.h>
|
||||
#include <grpc++/impl/codegen/core_codegen_interface.h>
|
||||
#include <grpc++/impl/codegen/serialization_traits.h>
|
||||
#include <grpc++/impl/codegen/status.h>
|
||||
#include <grpc++/impl/codegen/status_code_enum.h>
|
||||
#include <grpc++/impl/codegen/thrift_serializer.h>
|
||||
#include <grpc/impl/codegen/byte_buffer_reader.h>
|
||||
#include <grpc/impl/codegen/slice.h>
|
||||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
|
||||
namespace grpc {
|
||||
|
||||
using apache::thrift::util::ThriftSerializerCompact;
|
||||
|
||||
template <class T>
|
||||
class SerializationTraits<T, typename std::enable_if<std::is_base_of<
|
||||
apache::thrift::TBase, T>::value>::type> {
|
||||
public:
|
||||
static Status Serialize(const T& msg, grpc_byte_buffer** bp,
|
||||
bool* own_buffer) {
|
||||
*own_buffer = true;
|
||||
|
||||
ThriftSerializerCompact serializer;
|
||||
serializer.Serialize(msg, bp);
|
||||
|
||||
return Status(StatusCode::OK, "ok");
|
||||
}
|
||||
|
||||
static Status Deserialize(grpc_byte_buffer* buffer, T* msg,
|
||||
int max_receive_message_size) {
|
||||
if (!buffer) {
|
||||
return Status(StatusCode::INTERNAL, "No payload");
|
||||
}
|
||||
|
||||
ThriftSerializerCompact deserializer;
|
||||
deserializer.Deserialize(buffer, msg);
|
||||
|
||||
grpc_byte_buffer_destroy(buffer);
|
||||
|
||||
return Status(StatusCode::OK, "ok");
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace grpc
|
||||
|
||||
#endif // GRPCXX_IMPL_CODEGEN_THRIFT_UTILS_H
|
||||
|
|
@ -89,7 +89,8 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
|
|||
/// Called before server is started.
|
||||
virtual void PreServerStart(Server* server) {}
|
||||
/// Called after a server port is added.
|
||||
virtual void AddPort(Server* server, int port) {}
|
||||
virtual void AddPort(Server* server, const grpc::string& addr,
|
||||
ServerCredentials* creds, int port) {}
|
||||
};
|
||||
/// Set the global callback object. Can only be called once. Does not take
|
||||
/// ownership of callbacks, and expects the pointed to object to be alive
|
||||
|
|
@ -177,9 +178,7 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
|
|||
/// caller is required to keep all completion queues live until the server is
|
||||
/// destroyed.
|
||||
/// \param num_cqs How many completion queues does \a cqs hold.
|
||||
///
|
||||
/// \return true on a successful shutdown.
|
||||
bool Start(ServerCompletionQueue** cqs, size_t num_cqs) override;
|
||||
void Start(ServerCompletionQueue** cqs, size_t num_cqs) override;
|
||||
|
||||
void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -195,10 +195,10 @@ class ServerBuilder {
|
|||
|
||||
struct SyncServerSettings {
|
||||
SyncServerSettings()
|
||||
: num_cqs(1),
|
||||
: num_cqs(gpr_cpu_num_cores()),
|
||||
min_pollers(1),
|
||||
max_pollers(INT_MAX),
|
||||
cq_timeout_msec(1000) {}
|
||||
max_pollers(2),
|
||||
cq_timeout_msec(10000) {}
|
||||
|
||||
// Number of server completion queues to create to listen to incoming RPCs.
|
||||
int num_cqs;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
*
|
||||
* Copyright 2017, Google Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following disclaimer
|
||||
* in the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* * Neither the name of Google Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPCXX_SUPPORT_ERROR_DETAILS_H
|
||||
#define GRPCXX_SUPPORT_ERROR_DETAILS_H
|
||||
|
||||
#include <grpc++/support/status.h>
|
||||
|
||||
namespace google {
|
||||
namespace rpc {
|
||||
class Status;
|
||||
} // namespace rpc
|
||||
} // namespace google
|
||||
|
||||
namespace grpc {
|
||||
|
||||
// Maps a grpc::Status to a google::rpc::Status.
|
||||
// The given \a to object will be cleared.
|
||||
// On success, returns status with OK.
|
||||
// Returns status with INVALID_ARGUMENT, if failed to deserialize.
|
||||
// Returns status with FAILED_PRECONDITION, if \a to is nullptr.
|
||||
Status ExtractErrorDetails(const Status& from, ::google::rpc::Status* to);
|
||||
|
||||
// Maps google::rpc::Status to a grpc::Status.
|
||||
// Returns OK on success.
|
||||
// Returns status with FAILED_PRECONDITION if \a to is nullptr.
|
||||
Status SetErrorDetails(const ::google::rpc::Status& from, Status* to);
|
||||
|
||||
} // namespace grpc
|
||||
|
||||
#endif // GRPCXX_SUPPORT_ERROR_DETAILS_H
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
/*
|
||||
*
|
||||
* Copyright 2017, 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_TEST_MOCK_STREAM_H
|
||||
#define GRPCXX_TEST_MOCK_STREAM_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <gmock/gmock.h>
|
||||
#include <grpc++/impl/codegen/call.h>
|
||||
#include <grpc++/support/async_stream.h>
|
||||
#include <grpc++/support/async_unary_call.h>
|
||||
#include <grpc++/support/sync_stream.h>
|
||||
|
||||
namespace grpc {
|
||||
namespace testing {
|
||||
|
||||
template <class R>
|
||||
class MockClientReader : public ClientReaderInterface<R> {
|
||||
public:
|
||||
MockClientReader() = default;
|
||||
|
||||
// ClientStreamingInterface
|
||||
MOCK_METHOD0_T(Finish, Status());
|
||||
|
||||
// ReaderInterface
|
||||
MOCK_METHOD1_T(NextMessageSize, bool(uint32_t*));
|
||||
MOCK_METHOD1_T(Read, bool(R*));
|
||||
|
||||
// ClientReaderInterface
|
||||
MOCK_METHOD0_T(WaitForInitialMetadata, void());
|
||||
};
|
||||
|
||||
template <class W>
|
||||
class MockClientWriter : public ClientWriterInterface<W> {
|
||||
public:
|
||||
MockClientWriter() = default;
|
||||
|
||||
// ClientStreamingInterface
|
||||
MOCK_METHOD0_T(Finish, Status());
|
||||
|
||||
// WriterInterface
|
||||
MOCK_METHOD2_T(Write, bool(const W&, const WriteOptions));
|
||||
|
||||
// ClientWriterInterface
|
||||
MOCK_METHOD0_T(WritesDone, bool());
|
||||
};
|
||||
|
||||
template <class W, class R>
|
||||
class MockClientReaderWriter : public ClientReaderWriterInterface<W, R> {
|
||||
public:
|
||||
MockClientReaderWriter() = default;
|
||||
|
||||
// ClientStreamingInterface
|
||||
MOCK_METHOD0_T(Finish, Status());
|
||||
|
||||
// ReaderInterface
|
||||
MOCK_METHOD1_T(NextMessageSize, bool(uint32_t*));
|
||||
MOCK_METHOD1_T(Read, bool(R*));
|
||||
|
||||
// WriterInterface
|
||||
MOCK_METHOD2_T(Write, bool(const W&, const WriteOptions));
|
||||
|
||||
// ClientReaderWriterInterface
|
||||
MOCK_METHOD0_T(WaitForInitialMetadata, void());
|
||||
MOCK_METHOD0_T(WritesDone, bool());
|
||||
};
|
||||
|
||||
// TODO: We do not support mocking an async RPC for now.
|
||||
|
||||
template <class R>
|
||||
class MockClientAsyncResponseReader
|
||||
: public ClientAsyncResponseReaderInterface<R> {
|
||||
public:
|
||||
MockClientAsyncResponseReader() = default;
|
||||
|
||||
MOCK_METHOD1_T(ReadInitialMetadata, void(void*));
|
||||
MOCK_METHOD3_T(Finish, void(R*, Status*, void*));
|
||||
};
|
||||
|
||||
template <class R>
|
||||
class MockClientAsyncReader : public ClientAsyncReaderInterface<R> {
|
||||
public:
|
||||
MockClientAsyncReader() = default;
|
||||
|
||||
// ClientAsyncStreamingInterface
|
||||
MOCK_METHOD1_T(ReadInitialMetadata, void(void*));
|
||||
MOCK_METHOD2_T(Finish, void(Status*, void*));
|
||||
|
||||
// AsyncReaderInterface
|
||||
MOCK_METHOD2_T(Read, void(R*, void*));
|
||||
};
|
||||
|
||||
template <class W>
|
||||
class MockClientAsyncWriter : public ClientAsyncWriterInterface<W> {
|
||||
public:
|
||||
MockClientAsyncWriter() = default;
|
||||
|
||||
// ClientAsyncStreamingInterface
|
||||
MOCK_METHOD1_T(ReadInitialMetadata, void(void*));
|
||||
MOCK_METHOD2_T(Finish, void(Status*, void*));
|
||||
|
||||
// AsyncWriterInterface
|
||||
MOCK_METHOD2_T(Write, void(const W&, void*));
|
||||
|
||||
// ClientAsyncWriterInterface
|
||||
MOCK_METHOD1_T(WritesDone, void(void*));
|
||||
};
|
||||
|
||||
template <class W, class R>
|
||||
class MockClientAsyncReaderWriter
|
||||
: public ClientAsyncReaderWriterInterface<W, R> {
|
||||
public:
|
||||
MockClientAsyncReaderWriter() = default;
|
||||
|
||||
// ClientAsyncStreamingInterface
|
||||
MOCK_METHOD1_T(ReadInitialMetadata, void(void*));
|
||||
MOCK_METHOD2_T(Finish, void(Status*, void*));
|
||||
|
||||
// AsyncWriterInterface
|
||||
MOCK_METHOD2_T(Write, void(const W&, void*));
|
||||
|
||||
// AsyncReaderInterface
|
||||
MOCK_METHOD2_T(Read, void(R*, void*));
|
||||
|
||||
// ClientAsyncReaderWriterInterface
|
||||
MOCK_METHOD1_T(WritesDone, void(void*));
|
||||
};
|
||||
|
||||
} // namespace testing
|
||||
} // namespace grpc
|
||||
|
||||
#endif // GRPCXX_TEST_MOCK_STREAM_H
|
||||
|
|
@ -93,55 +93,6 @@ GRPCAPI const char *grpc_version_string(void);
|
|||
/** Return a string specifying what the 'g' in gRPC stands for */
|
||||
GRPCAPI const char *grpc_g_stands_for(void);
|
||||
|
||||
/** Specifies the type of APIs to use to pop events from the completion queue */
|
||||
typedef enum {
|
||||
/* Events are popped out by calling grpc_completion_queue_next() API ONLY */
|
||||
GRPC_CQ_NEXT = 1,
|
||||
|
||||
/* Events are popped out by calling grpc_completion_queue_pluck() API ONLY */
|
||||
GRPC_CQ_PLUCK
|
||||
} grpc_cq_completion_type;
|
||||
|
||||
/** Completion queues internally MAY maintain a set of file descriptors in a
|
||||
structure called 'pollset'. This enum specifies if a completion queue has an
|
||||
associated pollset and any restrictions on the type of file descriptors that
|
||||
can be present in the pollset.
|
||||
|
||||
I/O progress can only be made when grpc_completion_queue_next() or
|
||||
grpc_completion_queue_pluck() are called on the completion queue (unless the
|
||||
grpc_cq_polling_type is GRPC_CQ_NON_POLLING) and hence it is very important
|
||||
to actively call these APIs */
|
||||
typedef enum {
|
||||
/** The completion queue will have an associated pollset and there is no
|
||||
restriction on the type of file descriptors the pollset may contain */
|
||||
GRPC_CQ_DEFAULT_POLLING,
|
||||
|
||||
/* Similar to GRPC_CQ_DEFAULT_POLLING except that the completion queues will
|
||||
not contain any 'listening file descriptors' (i.e file descriptors used to
|
||||
listen to incoming channels) */
|
||||
GRPC_CQ_NON_LISTENING,
|
||||
|
||||
/* The completion queue will not have an associated pollset. Note that
|
||||
grpc_completion_queue_next() or grpc_completion_queue_pluck() MUST still be
|
||||
called to pop events from the completion queue; it is not required to call
|
||||
them actively to make I/O progress */
|
||||
GRPC_CQ_NON_POLLING
|
||||
} grpc_cq_polling_type;
|
||||
|
||||
#define GRPC_CQ_CURRENT_VERSION 1
|
||||
typedef struct grpc_completion_queue_attributes {
|
||||
/* The version number of this structure. More fields might be added to this
|
||||
structure in future. */
|
||||
int version; /* Set to GRPC_CQ_CURRENT_VERSION */
|
||||
|
||||
grpc_cq_completion_type cq_completion_type;
|
||||
|
||||
grpc_cq_polling_type cq_polling_type;
|
||||
} grpc_completion_queue_attributes;
|
||||
|
||||
/** The completion queue factory structure is opaque to the callers of grpc */
|
||||
typedef struct grpc_completion_queue_factory grpc_completion_queue_factory;
|
||||
|
||||
/** Returns the completion queue factory based on the attributes. MAY return a
|
||||
NULL if no factory can be found */
|
||||
GRPCAPI const grpc_completion_queue_factory *
|
||||
|
|
@ -159,7 +110,9 @@ GRPCAPI grpc_completion_queue *grpc_completion_queue_create_for_pluck(
|
|||
void *reserved);
|
||||
|
||||
/** Create a completion queue */
|
||||
GRPCAPI grpc_completion_queue *grpc_completion_queue_create(void *reserved);
|
||||
GRPCAPI grpc_completion_queue *grpc_completion_queue_create(
|
||||
const grpc_completion_queue_factory *factory,
|
||||
const grpc_completion_queue_attributes *attributes, void *reserved);
|
||||
|
||||
/** Blocks until an event is available, the completion queue is being shut down,
|
||||
or deadline is reached.
|
||||
|
|
@ -263,6 +216,10 @@ GRPCAPI grpc_call *grpc_channel_create_registered_call(
|
|||
grpc_completion_queue *completion_queue, void *registered_call_handle,
|
||||
gpr_timespec deadline, void *reserved);
|
||||
|
||||
/** Allocate memory in the grpc_call arena: this memory is automatically
|
||||
discarded at call completion */
|
||||
GRPCAPI void *grpc_call_arena_alloc(grpc_call *call, size_t size);
|
||||
|
||||
/** Start a batch of operations defined in the array ops; when complete, post a
|
||||
completion of type 'tag' to the completion queue bound to the call.
|
||||
The order of ops specified in the batch has no significance.
|
||||
|
|
@ -294,12 +251,6 @@ GRPCAPI grpc_call_error grpc_call_start_batch(grpc_call *call,
|
|||
functionality. Instead, use grpc_auth_context. */
|
||||
GRPCAPI char *grpc_call_get_peer(grpc_call *call);
|
||||
|
||||
struct grpc_load_reporting_cost_context;
|
||||
|
||||
/* Associate costs contained in \a cost_context to \a call. */
|
||||
GRPCAPI void grpc_call_set_load_reporting_cost_context(
|
||||
grpc_call *call, struct grpc_load_reporting_cost_context *context);
|
||||
|
||||
struct census_context;
|
||||
|
||||
/** Set census context for a call; Must be called before first call to
|
||||
|
|
@ -345,7 +296,7 @@ GRPCAPI void grpc_channel_destroy(grpc_channel *channel);
|
|||
/** Called by clients to cancel an RPC on the server.
|
||||
Can be called multiple times, from any thread.
|
||||
THREAD-SAFETY grpc_call_cancel and grpc_call_cancel_with_status
|
||||
are thread-safe, and can be called at any point before grpc_call_destroy
|
||||
are thread-safe, and can be called at any point before grpc_call_unref
|
||||
is called.*/
|
||||
GRPCAPI grpc_call_error grpc_call_cancel(grpc_call *call, void *reserved);
|
||||
|
||||
|
|
@ -360,9 +311,13 @@ GRPCAPI grpc_call_error grpc_call_cancel_with_status(grpc_call *call,
|
|||
const char *description,
|
||||
void *reserved);
|
||||
|
||||
/** Destroy a call.
|
||||
THREAD SAFETY: grpc_call_destroy is thread-compatible */
|
||||
GRPCAPI void grpc_call_destroy(grpc_call *call);
|
||||
/** Ref a call.
|
||||
THREAD SAFETY: grpc_call_unref is thread-compatible */
|
||||
GRPCAPI void grpc_call_ref(grpc_call *call);
|
||||
|
||||
/** Unref a call.
|
||||
THREAD SAFETY: grpc_call_unref is thread-compatible */
|
||||
GRPCAPI void grpc_call_unref(grpc_call *call);
|
||||
|
||||
/** Request notification of a new call.
|
||||
Once a call is received, a notification tagged with \a tag_new is added to
|
||||
|
|
@ -423,15 +378,6 @@ GRPCAPI void grpc_server_register_completion_queue(grpc_server *server,
|
|||
grpc_completion_queue *cq,
|
||||
void *reserved);
|
||||
|
||||
/** Register a non-listening completion queue with the server. This API is
|
||||
similar to grpc_server_register_completion_queue except that the server will
|
||||
not use this completion_queue to listen to any incoming channels.
|
||||
|
||||
Registering a non-listening completion queue will have negative performance
|
||||
impact and hence this API is not recommended for production use cases. */
|
||||
GRPCAPI void grpc_server_register_non_listening_completion_queue(
|
||||
grpc_server *server, grpc_completion_queue *q, void *reserved);
|
||||
|
||||
/** Add a HTTP2 over plaintext over tcp listener.
|
||||
Returns bound port number on success, 0 on failure.
|
||||
REQUIRES: server not started */
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ typedef struct {
|
|||
} grpc_ssl_pem_key_cert_pair;
|
||||
|
||||
/* Creates an SSL credentials object.
|
||||
- pem_roots_cert is the NULL-terminated string containing the PEM encoding
|
||||
- pem_root_certs is the NULL-terminated string containing the PEM encoding
|
||||
of the server root certificates. If this parameter is NULL, the
|
||||
implementation will first try to dereference the file pointed by the
|
||||
GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment variable, and if that fails,
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue