Merge github.com:grpc/grpc into are-includes-sane

Conflicts:
	tools/doxygen/Doxyfile.c++.internal
pull/2214/head
Craig Tiller 10 years ago
commit fe8592ee99
  1. 2
      .travis.yml
  2. 27
      BUILD
  3. 8
      Makefile
  4. 3
      build.json
  5. 481
      gRPC.podspec
  6. 1
      include/grpc++/impl/call.h
  7. 12
      src/compiler/objective_c_plugin.cc
  8. 6
      src/core/iomgr/pollset_windows.c
  9. 4
      src/core/support/histogram.c
  10. 1
      src/core/surface/completion_queue.c
  11. 2
      src/objective-c/GRPCClient/GRPCCall.h
  12. 2
      src/objective-c/GRPCClient/GRPCCall.m
  13. 2
      src/objective-c/GRPCClient/private/GRPCDelegateWrapper.m
  14. 2
      src/objective-c/GRPCClient/private/GRPCMethodName+HTTP2Encoding.h
  15. 2
      src/objective-c/GRPCClient/private/GRPCSecureChannel.m
  16. 2
      src/objective-c/GRPCClient/private/NSError+GRPC.m
  17. 2
      src/objective-c/ProtoRPC/ProtoRPC.h
  18. 6
      src/objective-c/ProtoRPC/ProtoRPC.m
  19. 6
      src/objective-c/ProtoRPC/ProtoService.m
  20. 2
      src/objective-c/RxLibrary/transformations/GRXMappingWriter.h
  21. 8
      src/objective-c/examples/Sample/Sample/ViewController.m
  22. 8
      src/objective-c/tests/GRPCClientTests.m
  23. 6
      src/objective-c/tests/InteropTests.m
  24. 8
      src/objective-c/tests/LocalClearTextTests.m
  25. 6
      src/objective-c/tests/RxLibraryUnitTests.m
  26. 27
      templates/BUILD.template
  27. 128
      templates/gRPC.podspec.template
  28. 2
      templates/tools/doxygen/Doxyfile.include
  29. 27
      test/proto/messages.proto
  30. 8
      test/proto/test.proto
  31. 0
      tools/codegen/core/gen_hpack_tables.c
  32. 38
      tools/doxygen/Doxyfile.c++
  33. 69
      tools/doxygen/Doxyfile.c++.internal
  34. 36
      tools/doxygen/Doxyfile.core
  35. 297
      tools/doxygen/Doxyfile.core.internal
  36. 3
      tools/run_tests/sources_and_headers.json
  37. 4
      vsprojects/Grpc.mak

@ -34,7 +34,7 @@ script:
- if [ ! -z "$USE_GCC" ] ; then export CC=gcc-$USE_GCC ; export CXX=g++-$USE_GCC ; fi - if [ ! -z "$USE_GCC" ] ; then export CC=gcc-$USE_GCC ; export CXX=g++-$USE_GCC ; fi
- ./tools/run_tests/run_tests.py -l $TEST -t -j $JOBS -c $CONFIG -s 4.0 - ./tools/run_tests/run_tests.py -l $TEST -t -j $JOBS -c $CONFIG -s 4.0
after_success: after_success:
- if [ "$CONFIG" = "gcov" ] ; then coveralls --exclude third_party --exclude gens --exclude test --exclude src/compiler -b. --gcov-options '\-p' ; fi - if [ "$CONFIG" = "gcov" ] ; then coveralls --exclude third_party --exclude gens --exclude test --exclude tools --exclude src/compiler -b. --gcov-options '\-p' ; fi
notifications: notifications:
email: false email: false
webhooks: webhooks:

27
BUILD

@ -856,3 +856,30 @@ cc_binary(
objc_path = "src/objective-c"
rx_library_path = objc_path + "/RxLibrary"
objc_library(
name = "rx_library",
hdrs = glob([
rx_library_path + "/*.h",
rx_library_path + "/transformations/*.h",
]),
srcs = glob([
rx_library_path + "/*.m",
rx_library_path + "/transformations/*.m",
]),
includes = [objc_path],
deps = [
":rx_library_private",
],
)
objc_library(
name = "rx_library_private",
hdrs = glob([rx_library_path + "/private/*.h"]),
srcs = glob([rx_library_path + "/private/*.m"]),
visibility = ["//visibility:private"],
)

@ -5645,7 +5645,7 @@ endif
GEN_HPACK_TABLES_SRC = \ GEN_HPACK_TABLES_SRC = \
src/core/transport/chttp2/gen_hpack_tables.c \ tools/codegen/core/gen_hpack_tables.c \
GEN_HPACK_TABLES_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GEN_HPACK_TABLES_SRC)))) GEN_HPACK_TABLES_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GEN_HPACK_TABLES_SRC))))
ifeq ($(NO_SECURE),true) ifeq ($(NO_SECURE),true)
@ -5656,14 +5656,14 @@ $(BINDIR)/$(CONFIG)/gen_hpack_tables: openssl_dep_error
else else
$(BINDIR)/$(CONFIG)/gen_hpack_tables: $(GEN_HPACK_TABLES_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(BINDIR)/$(CONFIG)/gen_hpack_tables: $(GEN_HPACK_TABLES_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a
$(E) "[LD] Linking $@" $(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) $(LD) $(LDFLAGS) $(GEN_HPACK_TABLES_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/gen_hpack_tables $(Q) $(LD) $(LDFLAGS) $(GEN_HPACK_TABLES_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/gen_hpack_tables
endif endif
$(OBJDIR)/$(CONFIG)/src/core/transport/chttp2/gen_hpack_tables.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(OBJDIR)/$(CONFIG)/tools/codegen/core/gen_hpack_tables.o: $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a
deps_gen_hpack_tables: $(GEN_HPACK_TABLES_OBJS:.o=.dep) deps_gen_hpack_tables: $(GEN_HPACK_TABLES_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true) ifneq ($(NO_SECURE),true)

@ -997,10 +997,9 @@
"build": "tool", "build": "tool",
"language": "c", "language": "c",
"src": [ "src": [
"src/core/transport/chttp2/gen_hpack_tables.c" "tools/codegen/core/gen_hpack_tables.c"
], ],
"deps": [ "deps": [
"grpc_test_util",
"gpr", "gpr",
"grpc" "grpc"
] ]

File diff suppressed because one or more lines are too long

@ -41,6 +41,7 @@
#include <grpc++/status.h> #include <grpc++/status.h>
#include <grpc++/impl/serialization_traits.h> #include <grpc++/impl/serialization_traits.h>
#include <functional>
#include <memory> #include <memory>
#include <map> #include <map>

@ -62,8 +62,8 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
{ {
// Generate .pbrpc.h // Generate .pbrpc.h
string imports = string("#import \"") + file_name + ".pbobjc.h\"\n" string imports = string("#import \"") + file_name + ".pbobjc.h\"\n\n"
"#import <gRPC/ProtoService.h>\n"; "#import <ProtoRPC/ProtoService.h>\n";
// TODO(jcanizales): Instead forward-declare the input and output types // TODO(jcanizales): Instead forward-declare the input and output types
// and import the files in the .pbrpc.m // and import the files in the .pbrpc.m
@ -87,10 +87,10 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
{ {
// Generate .pbrpc.m // Generate .pbrpc.m
string imports = string("#import \"") + file_name + ".pbrpc.h\"\n" string imports = string("#import \"") + file_name + ".pbrpc.h\"\n\n"
"#import <gRPC/GRXWriteable.h>\n" "#import <ProtoRPC/ProtoRPC.h>\n"
"#import <gRPC/GRXWriter+Immediate.h>\n" "#import <RxLibrary/GRXWriteable.h>\n"
"#import <gRPC/ProtoRPC.h>\n"; "#import <RxLibrary/GRXWriter+Immediate.h>\n";
string definitions; string definitions;
for (int i = 0; i < file->service_count(); i++) { for (int i = 0; i < file->service_count(); i++) {

@ -39,6 +39,7 @@
#include "src/core/iomgr/alarm_internal.h" #include "src/core/iomgr/alarm_internal.h"
#include "src/core/iomgr/iomgr_internal.h" #include "src/core/iomgr/iomgr_internal.h"
#include "src/core/iomgr/pollset.h"
#include "src/core/iomgr/pollset_windows.h" #include "src/core/iomgr/pollset_windows.h"
/* There isn't really any such thing as a pollset under Windows, due to the /* There isn't really any such thing as a pollset under Windows, due to the
@ -54,6 +55,7 @@ void grpc_pollset_init(grpc_pollset *pollset) {
void grpc_pollset_shutdown(grpc_pollset *pollset, void grpc_pollset_shutdown(grpc_pollset *pollset,
void (*shutdown_done)(void *arg), void (*shutdown_done)(void *arg),
void *shutdown_done_arg) { void *shutdown_done_arg) {
grpc_pollset_kick(pollset);
shutdown_done(shutdown_done_arg); shutdown_done(shutdown_done_arg);
} }
@ -68,10 +70,10 @@ int grpc_pollset_work(grpc_pollset *pollset, gpr_timespec deadline) {
if (gpr_time_cmp(now, deadline) > 0) { if (gpr_time_cmp(now, deadline) > 0) {
return 0 /* GPR_FALSE */; return 0 /* GPR_FALSE */;
} }
if (grpc_maybe_call_delayed_callbacks(NULL, 1 /* GPR_TRUE */)) { if (grpc_maybe_call_delayed_callbacks(&pollset->mu, 1 /* GPR_TRUE */)) {
return 1 /* GPR_TRUE */; return 1 /* GPR_TRUE */;
} }
if (grpc_alarm_check(NULL, now, &deadline)) { if (grpc_alarm_check(&pollset->mu, now, &deadline)) {
return 1 /* GPR_TRUE */; return 1 /* GPR_TRUE */;
} }
gpr_cv_wait(&pollset->cv, &pollset->mu, deadline); gpr_cv_wait(&pollset->cv, &pollset->mu, deadline);

@ -164,7 +164,9 @@ static double threshold_for_count_below(gpr_histogram *h, double count_below) {
size_t lower_idx; size_t lower_idx;
size_t upper_idx; size_t upper_idx;
GPR_ASSERT(h->count >= 1); if (h->count == 0) {
return 0.0;
}
if (count_below <= 0) { if (count_below <= 0) {
return h->min_seen; return h->min_seen;

@ -208,6 +208,7 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc,
} }
if (cc->shutdown) { if (cc->shutdown) {
ev = create_shutdown_event(); ev = create_shutdown_event();
grpc_pollset_kick(&cc->pollset);
break; break;
} }
if (!grpc_pollset_work(&cc->pollset, deadline)) { if (!grpc_pollset_work(&cc->pollset, deadline)) {

@ -46,7 +46,7 @@
// transparently on the same TCP connection. // transparently on the same TCP connection.
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <gRPC/GRXWriter.h> #import <RxLibrary/GRXWriter.h>
@class GRPCMethodName; @class GRPCMethodName;

@ -34,7 +34,7 @@
#import "GRPCCall.h" #import "GRPCCall.h"
#include <grpc/grpc.h> #include <grpc/grpc.h>
#include <grpc/support/grpc_time.h> #include <grpc/support/time.h>
#import "GRPCMethodName.h" #import "GRPCMethodName.h"
#import "private/GRPCChannel.h" #import "private/GRPCChannel.h"

@ -33,7 +33,7 @@
#import "GRPCDelegateWrapper.h" #import "GRPCDelegateWrapper.h"
#import <gRPC/GRXWriteable.h> #import <RxLibrary/GRXWriteable.h>
@interface GRPCDelegateWrapper () @interface GRPCDelegateWrapper ()
// These are atomic so that cancellation can nillify them from any thread. // These are atomic so that cancellation can nillify them from any thread.

@ -33,7 +33,7 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import "GRPCMethodName.h" #import "GRPCClient/GRPCMethodName.h"
@interface GRPCMethodName (HTTP2Encoding) @interface GRPCMethodName (HTTP2Encoding)
- (NSString *)HTTP2Path; - (NSString *)HTTP2Path;

@ -38,7 +38,7 @@
@implementation GRPCSecureChannel @implementation GRPCSecureChannel
- (instancetype)initWithHost:(NSString *)host { - (instancetype)initWithHost:(NSString *)host {
static const grpc_credentials *kCredentials; static grpc_credentials *kCredentials;
static dispatch_once_t loading; static dispatch_once_t loading;
dispatch_once(&loading, ^{ dispatch_once(&loading, ^{
// Do not use NSBundle.mainBundle, as it's nil for tests of library projects. // Do not use NSBundle.mainBundle, as it's nil for tests of library projects.

@ -33,7 +33,7 @@
#import "NSError+GRPC.h" #import "NSError+GRPC.h"
#include <grpc.h> #include <grpc/grpc.h>
NSString * const kGRPCErrorDomain = @"io.grpc"; NSString * const kGRPCErrorDomain = @"io.grpc";

@ -32,7 +32,7 @@
*/ */
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <gRPC/GRPCCall.h> #import <GRPCClient/GRPCCall.h>
@interface ProtoRPC : GRPCCall @interface ProtoRPC : GRPCCall

@ -33,10 +33,10 @@
#import "ProtoRPC.h" #import "ProtoRPC.h"
#import <gRPC/GRXWriteable.h>
#import <gRPC/GRXWriter.h>
#import <gRPC/GRXWriter+Transformations.h>
#import <Protobuf/GPBProtocolBuffers.h> #import <Protobuf/GPBProtocolBuffers.h>
#import <RxLibrary/GRXWriteable.h>
#import <RxLibrary/GRXWriter.h>
#import <RxLibrary/GRXWriter+Transformations.h>
@implementation ProtoRPC { @implementation ProtoRPC {
id<GRXWriteable> _responseWriteable; id<GRXWriteable> _responseWriteable;

@ -33,9 +33,9 @@
#import "ProtoService.h" #import "ProtoService.h"
#import <gRPC/GRPCMethodName.h> #import <GRPCClient/GRPCMethodName.h>
#import <gRPC/GRXWriteable.h> #import <RxLibrary/GRXWriteable.h>
#import <gRPC/GRXWriter.h> #import <RxLibrary/GRXWriter.h>
#import "ProtoRPC.h" #import "ProtoRPC.h"

@ -31,7 +31,7 @@
* *
*/ */
#import "GRXWriter.h" #import "RxLibrary/GRXWriter.h"
// A "proxy" writer that transforms all the values of its input writer by using a mapping function. // A "proxy" writer that transforms all the values of its input writer by using a mapping function.
@interface GRXMappingWriter : GRXWriter @interface GRXMappingWriter : GRXWriter

@ -33,12 +33,12 @@
#import "ViewController.h" #import "ViewController.h"
#import <gRPC/GRPCCall.h> #import <GRPCClient/GRPCCall.h>
#import <gRPC/GRPCMethodName.h> #import <GRPCClient/GRPCMethodName.h>
#import <gRPC/GRXWriter+Immediate.h>
#import <gRPC/GRXWriteable.h>
#import <RemoteTest/Messages.pbobjc.h> #import <RemoteTest/Messages.pbobjc.h>
#import <RemoteTest/Test.pbrpc.h> #import <RemoteTest/Test.pbrpc.h>
#import <RxLibrary/GRXWriter+Immediate.h>
#import <RxLibrary/GRXWriteable.h>
@implementation ViewController @implementation ViewController

@ -34,11 +34,11 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <XCTest/XCTest.h> #import <XCTest/XCTest.h>
#import <gRPC/GRPCCall.h> #import <GRPCClient/GRPCCall.h>
#import <gRPC/GRPCMethodName.h> #import <GRPCClient/GRPCMethodName.h>
#import <gRPC/GRXWriter+Immediate.h>
#import <gRPC/GRXWriteable.h>
#import <RemoteTest/Messages.pbobjc.h> #import <RemoteTest/Messages.pbobjc.h>
#import <RxLibrary/GRXWriteable.h>
#import <RxLibrary/GRXWriter+Immediate.h>
// These are a few tests similar to InteropTests, but which use the generic gRPC client (GRPCCall) // These are a few tests similar to InteropTests, but which use the generic gRPC client (GRPCCall)
// rather than a generated proto library on top of it. // rather than a generated proto library on top of it.

@ -36,13 +36,13 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <XCTest/XCTest.h> #import <XCTest/XCTest.h>
#import <gRPC/GRXWriter+Immediate.h> #import <ProtoRPC/ProtoRPC.h>
#import <gRPC/GRXBufferedPipe.h>
#import <gRPC/ProtoRPC.h>
#import <RemoteTest/Empty.pbobjc.h> #import <RemoteTest/Empty.pbobjc.h>
#import <RemoteTest/Messages.pbobjc.h> #import <RemoteTest/Messages.pbobjc.h>
#import <RemoteTest/Test.pbobjc.h> #import <RemoteTest/Test.pbobjc.h>
#import <RemoteTest/Test.pbrpc.h> #import <RemoteTest/Test.pbrpc.h>
#import <RxLibrary/GRXBufferedPipe.h>
#import <RxLibrary/GRXWriter+Immediate.h>
// Convenience constructors for the generated proto messages: // Convenience constructors for the generated proto messages:

@ -34,12 +34,12 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <XCTest/XCTest.h> #import <XCTest/XCTest.h>
#import <gRPC/GRPCCall.h> #import <GRPCClient/GRPCCall.h>
#import <gRPC/GRPCMethodName.h> #import <GRPCClient/GRPCMethodName.h>
#import <gRPC/GRXWriter+Immediate.h>
#import <gRPC/GRXWriteable.h>
#import <RouteGuide/RouteGuide.pbobjc.h> #import <RouteGuide/RouteGuide.pbobjc.h>
#import <RouteGuide/RouteGuide.pbrpc.h> #import <RouteGuide/RouteGuide.pbrpc.h>
#import <RxLibrary/GRXWriteable.h>
#import <RxLibrary/GRXWriter+Immediate.h>
// These tests require a gRPC "RouteGuide" sample server to be running locally. You can compile and // These tests require a gRPC "RouteGuide" sample server to be running locally. You can compile and
// run one by following the instructions here: https://github.com/grpc/grpc-common/blob/master/cpp/cpptutorial.md#try-it-out // run one by following the instructions here: https://github.com/grpc/grpc-common/blob/master/cpp/cpptutorial.md#try-it-out

@ -34,9 +34,9 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <XCTest/XCTest.h> #import <XCTest/XCTest.h>
#import <gRPC/GRXBufferedPipe.h> #import <RxLibrary/GRXBufferedPipe.h>
#import <gRPC/GRXWriter.h> #import <RxLibrary/GRXWriteable.h>
#import <gRPC/GRXWriteable.h> #import <RxLibrary/GRXWriter.h>
// A mock of a GRXSingleValueHandler block that can be queried for how many times it was called and // A mock of a GRXSingleValueHandler block that can be queried for how many times it was called and
// what were the last values passed to it. // what were the last values passed to it.

@ -112,3 +112,30 @@ cc_binary(
], ],
) )
</%def> </%def>
objc_path = "src/objective-c"
rx_library_path = objc_path + "/RxLibrary"
objc_library(
name = "rx_library",
hdrs = glob([
rx_library_path + "/*.h",
rx_library_path + "/transformations/*.h",
]),
srcs = glob([
rx_library_path + "/*.m",
rx_library_path + "/transformations/*.m",
]),
includes = [objc_path],
deps = [
":rx_library_private",
],
)
objc_library(
name = "rx_library_private",
hdrs = glob([rx_library_path + "/private/*.h"]),
srcs = glob([rx_library_path + "/private/*.m"]),
visibility = ["//visibility:private"],
)

@ -38,11 +38,27 @@ bad_header_names = ('time.h', 'string.h')
def fix_header_name(name): def fix_header_name(name):
split_name = name.split('/') split_name = name.split('/')
if split_name[-1] in bad_header_names: if split_name[-1] in bad_header_names:
return '/'.join(split_name[:-1] + ['grpc_' + split_name[-1]]) split_name[-1] = 'grpc_' + split_name[-1]
else: if split_name[0] == 'include':
return name split_name = split_name[1:]
return '/'.join(split_name)
def grpc_files(libs):
out = []
for lib in libs:
if lib.name in ("grpc", "gpr"):
out.extend(fix_header_name(h) for h in lib.get('headers', []))
out.extend(fix_header_name(h) for h in lib.get('public_headers', []))
out.extend(lib.get('src', []))
return out;
def grpc_private_headers(libs):
out = []
for lib in libs:
if lib.name in ("grpc", "gpr"):
out.extend(lib.get('headers', []))
return out
%> %>
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC' s.name = 'gRPC'
s.version = '0.6.0' s.version = '0.6.0'
@ -58,53 +74,27 @@ Pod::Spec.new do |s|
s.osx.deployment_target = '10.8' s.osx.deployment_target = '10.8'
s.requires_arc = true s.requires_arc = true
objc_dir = 'src/objective-c'
# Reactive Extensions library for iOS. # Reactive Extensions library for iOS.
s.subspec 'RxLibrary' do |rs| s.subspec 'RxLibrary' do |ss|
rs.source_files = 'src/objective-c/RxLibrary/*.{h,m}', src_dir = "#{objc_dir}/RxLibrary"
'src/objective-c/RxLibrary/transformations/*.{h,m}', ss.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}"
'src/objective-c/RxLibrary/private/*.{h,m}' ss.private_header_files = "#{src_dir}/private/*.h"
rs.private_header_files = 'src/objective-c/RxLibrary/private/*.h' ss.header_mappings_dir = "#{objc_dir}"
end end
# Core cross-platform gRPC library, written in C. # Core cross-platform gRPC library, written in C.
s.subspec 'C-Core' do |cs| s.subspec 'C-Core' do |ss|
cs.source_files = \ ss.source_files = ${(',\n' + 22*' ').join('\'%s\'' % f for f in grpc_files(libs))}
% for lib in libs:
% if lib.name in ("grpc", "gpr"): ss.private_header_files = ${(',\n' + 30*' ').join('\'%s\'' % f for f in grpc_private_headers(libs))}
% for hdr in lib.get("headers", []):
'${fix_header_name(hdr)}', \ ss.header_mappings_dir = '.'
% endfor
% for hdr in lib.get("public_headers", []): ss.requires_arc = false
'${fix_header_name(hdr)}', \ ss.libraries = 'z'
% endfor ss.dependency 'OpenSSL', '~> 1.0.200'
% for src in lib.src:
'${src}', \
% endfor
% endif
% endfor
cs.private_header_files = \
% for lib in libs:
% if lib.name in ("grpc", "gpr"):
% for hdr in lib.get("headers", []):
'${hdr}', \
% endfor
% endif
% endfor
cs.header_mappings_dir = '.'
# The core library includes its headers as either "src/core/..." or "grpc/...", meaning we have
# to tell XCode to look for headers under the "include" subdirectory too.
#
# TODO(jcanizales): Instead of doing this, during installation move everything under
# "include/grpc" one directory up. The directory names under PODS_ROOT are implementation
# details of Cocoapods, and have changed in the past, breaking this podspec.
cs.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/Headers/Private/gRPC" ' +
'"$(PODS_ROOT)/Headers/Private/gRPC/include"' }
cs.requires_arc = false
cs.libraries = 'z'
cs.dependency 'OpenSSL', '~> 1.0.200'
end end
# This is a workaround for Cocoapods Issue #1437. # This is a workaround for Cocoapods Issue #1437.
@ -112,12 +102,15 @@ Pod::Spec.new do |s|
# It needs to be here (top-level) instead of in the C-Core subspec because Cocoapods doesn't run # It needs to be here (top-level) instead of in the C-Core subspec because Cocoapods doesn't run
# prepare_command's of subspecs. # prepare_command's of subspecs.
# #
# TODO(jcanizales): Try out Todd Reed's solution at Issue #1437. # TODO(jcanizales): Try out others' solutions at Issue #1437.
s.prepare_command = <<-CMD s.prepare_command = <<-CMD
# Move contents of include up a level to avoid manually specifying include paths
cp -r "include/grpc" "."
DIR_TIME="grpc/support" DIR_TIME="grpc/support"
BAD_TIME="$DIR_TIME/time.h" BAD_TIME="$DIR_TIME/time.h"
GOOD_TIME="$DIR_TIME/grpc_time.h" GOOD_TIME="$DIR_TIME/grpc_time.h"
grep -rl "$BAD_TIME" include/grpc src/core | xargs sed -i '' -e s@$BAD_TIME@$GOOD_TIME@g grep -rl "$BAD_TIME" grpc src/core src/objective-c/GRPCClient | xargs sed -i '' -e s@$BAD_TIME@$GOOD_TIME@g
if [ -f "include/$BAD_TIME" ]; if [ -f "include/$BAD_TIME" ];
then then
mv -f "include/$BAD_TIME" "include/$GOOD_TIME" mv -f "include/$BAD_TIME" "include/$GOOD_TIME"
@ -126,7 +119,7 @@ Pod::Spec.new do |s|
DIR_STRING="src/core/support" DIR_STRING="src/core/support"
BAD_STRING="$DIR_STRING/string.h" BAD_STRING="$DIR_STRING/string.h"
GOOD_STRING="$DIR_STRING/grpc_string.h" GOOD_STRING="$DIR_STRING/grpc_string.h"
grep -rl "$BAD_STRING" include/grpc src/core | xargs sed -i '' -e s@$BAD_STRING@$GOOD_STRING@g grep -rl "$BAD_STRING" grpc src/core src/objective-c/GRPCClient | xargs sed -i '' -e s@$BAD_STRING@$GOOD_STRING@g
if [ -f "$BAD_STRING" ]; if [ -f "$BAD_STRING" ];
then then
mv -f "$BAD_STRING" "$GOOD_STRING" mv -f "$BAD_STRING" "$GOOD_STRING"
@ -134,28 +127,27 @@ Pod::Spec.new do |s|
CMD CMD
# Objective-C wrapper around the core gRPC library. # Objective-C wrapper around the core gRPC library.
s.subspec 'GRPCClient' do |gs| s.subspec 'GRPCClient' do |ss|
gs.source_files = 'src/objective-c/GRPCClient/*.{h,m}', src_dir = "#{objc_dir}/GRPCClient"
'src/objective-c/GRPCClient/private/*.{h,m}' ss.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}"
gs.private_header_files = 'src/objective-c/GRPCClient/private/*.h' ss.private_header_files = "#{src_dir}/private/*.h"
gs.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w' ss.header_mappings_dir = "#{objc_dir}"
gs.dependency 'gRPC/C-Core' ss.dependency 'gRPC/C-Core'
# TODO(jcanizales): Remove this when the prepare_command moves everything under "include/grpc" ss.dependency 'gRPC/RxLibrary'
# one directory up.
gs.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/Headers/Public/gRPC/include"' }
gs.dependency 'gRPC/RxLibrary'
# Certificates, to be able to establish TLS connections: # Certificates, to be able to establish TLS connections:
gs.resource_bundles = { 'gRPC' => ['etc/roots.pem'] } ss.resource_bundles = { 'gRPC' => ['etc/roots.pem'] }
end end
# RPC library for ProtocolBuffers, based on gRPC # RPC library for ProtocolBuffers, based on gRPC
s.subspec 'ProtoRPC' do |ps| s.subspec 'ProtoRPC' do |ss|
ps.source_files = 'src/objective-c/ProtoRPC/*.{h,m}' src_dir = "#{objc_dir}/ProtoRPC"
ss.source_files = "#{src_dir}/*.{h,m}"
ps.dependency 'gRPC/GRPCClient' ss.header_mappings_dir = "#{objc_dir}"
ps.dependency 'gRPC/RxLibrary'
ps.dependency 'Protobuf', '~> 3.0.0-alpha-3' ss.dependency 'gRPC/GRPCClient'
ss.dependency 'gRPC/RxLibrary'
ss.dependency 'Protobuf', '~> 3.0.0-alpha-3'
end end
end end

@ -778,7 +778,7 @@ WARN_LOGFILE =
# spaces. # spaces.
# Note: If this tag is empty the current directory is searched. # Note: If this tag is empty the current directory is searched.
INPUT = ${' '.join( INPUT = ${' \\\n'.join(
itertools.chain.from_iterable( itertools.chain.from_iterable(
target.public_headers + target.public_headers +
([] ([]

@ -46,6 +46,14 @@ enum PayloadType {
RANDOM = 2; RANDOM = 2;
} }
// Compression algorithms
enum CompressionType {
// No compression
NONE = 0;
GZIP = 1;
DEFLATE = 2;
}
// A block of data, to simply increase gRPC message size. // A block of data, to simply increase gRPC message size.
message Payload { message Payload {
// The type of data in body. // The type of data in body.
@ -54,6 +62,13 @@ message Payload {
optional bytes body = 2; optional bytes body = 2;
} }
// A protobuf representation for grpc status. This is used by test
// clients to specify a status that the server should attempt to return.
message EchoStatus {
optional int32 code = 1;
optional string message = 2;
}
// Unary request. // Unary request.
message SimpleRequest { message SimpleRequest {
// Desired payload type in the response from the server. // Desired payload type in the response from the server.
@ -72,6 +87,12 @@ message SimpleRequest {
// Whether SimpleResponse should include OAuth scope. // Whether SimpleResponse should include OAuth scope.
optional bool fill_oauth_scope = 5; optional bool fill_oauth_scope = 5;
// Compression algorithm to be used by the server for the response (stream)
optional CompressionType response_compression = 6;
// Whether server should return a given status
optional EchoStatus response_status = 7;
} }
// Unary response, as configured by the request. // Unary response, as configured by the request.
@ -123,6 +144,12 @@ message StreamingOutputCallRequest {
// Optional input payload sent along with the request. // Optional input payload sent along with the request.
optional Payload payload = 3; optional Payload payload = 3;
// Compression algorithm to be used by the server for the response (stream)
optional CompressionType response_compression = 6;
// Whether server should return a given status
optional EchoStatus response_status = 7;
} }
// Server-streaming response, as configured by the request and parameters. // Server-streaming response, as configured by the request and parameters.

@ -71,3 +71,11 @@ service TestService {
rpc HalfDuplexCall(stream StreamingOutputCallRequest) rpc HalfDuplexCall(stream StreamingOutputCallRequest)
returns (stream StreamingOutputCallResponse); returns (stream StreamingOutputCallResponse);
} }
// A simple service NOT implemented at servers so clients can test for
// that case.
service UnimplementedService {
// A call that no server should implement
rpc UnimplementedCall(grpc.testing.Empty) returns(grpc.testing.Empty);
}

@ -760,7 +760,43 @@ WARN_LOGFILE =
# spaces. # spaces.
# Note: If this tag is empty the current directory is searched. # Note: If this tag is empty the current directory is searched.
INPUT = include/grpc++/async_generic_service.h include/grpc++/async_unary_call.h include/grpc++/byte_buffer.h include/grpc++/channel_arguments.h include/grpc++/channel_interface.h include/grpc++/client_context.h include/grpc++/completion_queue.h include/grpc++/config.h include/grpc++/config_protobuf.h include/grpc++/create_channel.h include/grpc++/credentials.h include/grpc++/generic_stub.h include/grpc++/impl/call.h include/grpc++/impl/client_unary_call.h include/grpc++/impl/grpc_library.h include/grpc++/impl/internal_stub.h include/grpc++/impl/proto_utils.h include/grpc++/impl/rpc_method.h include/grpc++/impl/rpc_service_method.h include/grpc++/impl/serialization_traits.h include/grpc++/impl/service_type.h include/grpc++/impl/sync.h include/grpc++/impl/sync_cxx11.h include/grpc++/impl/sync_no_cxx11.h include/grpc++/impl/thd.h include/grpc++/impl/thd_cxx11.h include/grpc++/impl/thd_no_cxx11.h include/grpc++/server.h include/grpc++/server_builder.h include/grpc++/server_context.h include/grpc++/server_credentials.h include/grpc++/slice.h include/grpc++/status.h include/grpc++/status_code_enum.h include/grpc++/stream.h include/grpc++/thread_pool_interface.h include/grpc++/time.h INPUT = include/grpc++/async_generic_service.h \
include/grpc++/async_unary_call.h \
include/grpc++/byte_buffer.h \
include/grpc++/channel_arguments.h \
include/grpc++/channel_interface.h \
include/grpc++/client_context.h \
include/grpc++/completion_queue.h \
include/grpc++/config.h \
include/grpc++/config_protobuf.h \
include/grpc++/create_channel.h \
include/grpc++/credentials.h \
include/grpc++/generic_stub.h \
include/grpc++/impl/call.h \
include/grpc++/impl/client_unary_call.h \
include/grpc++/impl/grpc_library.h \
include/grpc++/impl/internal_stub.h \
include/grpc++/impl/proto_utils.h \
include/grpc++/impl/rpc_method.h \
include/grpc++/impl/rpc_service_method.h \
include/grpc++/impl/serialization_traits.h \
include/grpc++/impl/service_type.h \
include/grpc++/impl/sync.h \
include/grpc++/impl/sync_cxx11.h \
include/grpc++/impl/sync_no_cxx11.h \
include/grpc++/impl/thd.h \
include/grpc++/impl/thd_cxx11.h \
include/grpc++/impl/thd_no_cxx11.h \
include/grpc++/server.h \
include/grpc++/server_builder.h \
include/grpc++/server_context.h \
include/grpc++/server_credentials.h \
include/grpc++/slice.h \
include/grpc++/status.h \
include/grpc++/status_code_enum.h \
include/grpc++/stream.h \
include/grpc++/thread_pool_interface.h \
include/grpc++/time.h
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses

@ -760,7 +760,74 @@ WARN_LOGFILE =
# spaces. # spaces.
# Note: If this tag is empty the current directory is searched. # Note: If this tag is empty the current directory is searched.
INPUT = include/grpc++/async_generic_service.h include/grpc++/async_unary_call.h include/grpc++/byte_buffer.h include/grpc++/channel_arguments.h include/grpc++/channel_interface.h include/grpc++/client_context.h include/grpc++/completion_queue.h include/grpc++/config.h include/grpc++/config_protobuf.h include/grpc++/create_channel.h include/grpc++/credentials.h include/grpc++/generic_stub.h include/grpc++/impl/call.h include/grpc++/impl/client_unary_call.h include/grpc++/impl/grpc_library.h include/grpc++/impl/internal_stub.h include/grpc++/impl/proto_utils.h include/grpc++/impl/rpc_method.h include/grpc++/impl/rpc_service_method.h include/grpc++/impl/serialization_traits.h include/grpc++/impl/service_type.h include/grpc++/impl/sync.h include/grpc++/impl/sync_cxx11.h include/grpc++/impl/sync_no_cxx11.h include/grpc++/impl/thd.h include/grpc++/impl/thd_cxx11.h include/grpc++/impl/thd_no_cxx11.h include/grpc++/server.h include/grpc++/server_builder.h include/grpc++/server_context.h include/grpc++/server_credentials.h include/grpc++/slice.h include/grpc++/status.h include/grpc++/status_code_enum.h include/grpc++/stream.h include/grpc++/thread_pool_interface.h include/grpc++/time.h src/cpp/client/secure_credentials.h src/cpp/server/secure_server_credentials.h src/cpp/client/channel.h src/cpp/server/thread_pool.h src/cpp/client/secure_channel_arguments.cc src/cpp/client/secure_credentials.cc src/cpp/server/secure_server_credentials.cc src/cpp/client/channel.cc src/cpp/client/channel_arguments.cc src/cpp/client/client_context.cc src/cpp/client/create_channel.cc src/cpp/client/credentials.cc src/cpp/client/generic_stub.cc src/cpp/client/insecure_credentials.cc src/cpp/client/internal_stub.cc src/cpp/common/call.cc src/cpp/common/completion_queue.cc src/cpp/common/rpc_method.cc src/cpp/proto/proto_utils.cc src/cpp/server/async_generic_service.cc src/cpp/server/create_default_thread_pool.cc src/cpp/server/insecure_server_credentials.cc src/cpp/server/server.cc src/cpp/server/server_builder.cc src/cpp/server/server_context.cc src/cpp/server/server_credentials.cc src/cpp/server/thread_pool.cc src/cpp/util/byte_buffer.cc src/cpp/util/slice.cc src/cpp/util/status.cc src/cpp/util/time.cc INPUT = include/grpc++/async_generic_service.h \
include/grpc++/async_unary_call.h \
include/grpc++/byte_buffer.h \
include/grpc++/channel_arguments.h \
include/grpc++/channel_interface.h \
include/grpc++/client_context.h \
include/grpc++/completion_queue.h \
include/grpc++/config.h \
include/grpc++/config_protobuf.h \
include/grpc++/create_channel.h \
include/grpc++/credentials.h \
include/grpc++/generic_stub.h \
include/grpc++/impl/call.h \
include/grpc++/impl/client_unary_call.h \
include/grpc++/impl/grpc_library.h \
include/grpc++/impl/internal_stub.h \
include/grpc++/impl/proto_utils.h \
include/grpc++/impl/rpc_method.h \
include/grpc++/impl/rpc_service_method.h \
include/grpc++/impl/serialization_traits.h \
include/grpc++/impl/service_type.h \
include/grpc++/impl/sync.h \
include/grpc++/impl/sync_cxx11.h \
include/grpc++/impl/sync_no_cxx11.h \
include/grpc++/impl/thd.h \
include/grpc++/impl/thd_cxx11.h \
include/grpc++/impl/thd_no_cxx11.h \
include/grpc++/server.h \
include/grpc++/server_builder.h \
include/grpc++/server_context.h \
include/grpc++/server_credentials.h \
include/grpc++/slice.h \
include/grpc++/status.h \
include/grpc++/status_code_enum.h \
include/grpc++/stream.h \
include/grpc++/thread_pool_interface.h \
include/grpc++/time.h \
src/cpp/client/secure_credentials.h \
src/cpp/server/secure_server_credentials.h \
src/cpp/client/channel.h \
src/cpp/server/thread_pool.h \
src/cpp/client/secure_channel_arguments.cc \
src/cpp/client/secure_credentials.cc \
src/cpp/server/secure_server_credentials.cc \
src/cpp/client/channel.cc \
src/cpp/client/channel_arguments.cc \
src/cpp/client/client_context.cc \
src/cpp/client/create_channel.cc \
src/cpp/client/credentials.cc \
src/cpp/client/generic_stub.cc \
src/cpp/client/insecure_credentials.cc \
src/cpp/client/internal_stub.cc \
src/cpp/common/call.cc \
src/cpp/common/completion_queue.cc \
src/cpp/common/rpc_method.cc \
src/cpp/proto/proto_utils.cc \
src/cpp/server/async_generic_service.cc \
src/cpp/server/create_default_thread_pool.cc \
src/cpp/server/insecure_server_credentials.cc \
src/cpp/server/server.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_context.cc \
src/cpp/server/server_credentials.cc \
src/cpp/server/thread_pool.cc \
src/cpp/util/byte_buffer.cc \
src/cpp/util/slice.cc \
src/cpp/util/status.cc \
src/cpp/util/time.cc
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses

@ -760,7 +760,41 @@ WARN_LOGFILE =
# spaces. # spaces.
# Note: If this tag is empty the current directory is searched. # Note: If this tag is empty the current directory is searched.
INPUT = include/grpc/grpc_security.h include/grpc/byte_buffer.h include/grpc/byte_buffer_reader.h include/grpc/compression.h include/grpc/grpc.h include/grpc/status.h include/grpc/census.h include/grpc/support/alloc.h include/grpc/support/atm.h include/grpc/support/atm_gcc_atomic.h include/grpc/support/atm_gcc_sync.h include/grpc/support/atm_win32.h include/grpc/support/cancellable_platform.h include/grpc/support/cmdline.h include/grpc/support/cpu.h include/grpc/support/histogram.h include/grpc/support/host_port.h include/grpc/support/log.h include/grpc/support/log_win32.h include/grpc/support/port_platform.h include/grpc/support/slice.h include/grpc/support/slice_buffer.h include/grpc/support/string_util.h include/grpc/support/subprocess.h include/grpc/support/sync.h include/grpc/support/sync_generic.h include/grpc/support/sync_posix.h include/grpc/support/sync_win32.h include/grpc/support/thd.h include/grpc/support/time.h include/grpc/support/tls.h include/grpc/support/tls_gcc.h include/grpc/support/tls_msvc.h include/grpc/support/tls_pthread.h include/grpc/support/useful.h INPUT = include/grpc/grpc_security.h \
include/grpc/byte_buffer.h \
include/grpc/byte_buffer_reader.h \
include/grpc/compression.h \
include/grpc/grpc.h \
include/grpc/status.h \
include/grpc/census.h \
include/grpc/support/alloc.h \
include/grpc/support/atm.h \
include/grpc/support/atm_gcc_atomic.h \
include/grpc/support/atm_gcc_sync.h \
include/grpc/support/atm_win32.h \
include/grpc/support/cancellable_platform.h \
include/grpc/support/cmdline.h \
include/grpc/support/cpu.h \
include/grpc/support/histogram.h \
include/grpc/support/host_port.h \
include/grpc/support/log.h \
include/grpc/support/log_win32.h \
include/grpc/support/port_platform.h \
include/grpc/support/slice.h \
include/grpc/support/slice_buffer.h \
include/grpc/support/string_util.h \
include/grpc/support/subprocess.h \
include/grpc/support/sync.h \
include/grpc/support/sync_generic.h \
include/grpc/support/sync_posix.h \
include/grpc/support/sync_win32.h \
include/grpc/support/thd.h \
include/grpc/support/time.h \
include/grpc/support/tls.h \
include/grpc/support/tls_gcc.h \
include/grpc/support/tls_msvc.h \
include/grpc/support/tls_pthread.h \
include/grpc/support/useful.h
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses

File diff suppressed because one or more lines are too long

@ -199,7 +199,6 @@
}, },
{ {
"deps": [ "deps": [
"grpc_test_util",
"gpr", "gpr",
"grpc" "grpc"
], ],
@ -207,7 +206,7 @@
"language": "c", "language": "c",
"name": "gen_hpack_tables", "name": "gen_hpack_tables",
"src": [ "src": [
"src/core/transport/chttp2/gen_hpack_tables.c" "tools/codegen/core/gen_hpack_tables.c"
] ]
}, },
{ {

@ -135,8 +135,8 @@ fling_server: fling_server.exe
$(OUT_DIR)\fling_server.exe $(OUT_DIR)\fling_server.exe
gen_hpack_tables.exe: build_libs $(OUT_DIR) gen_hpack_tables.exe: build_libs $(OUT_DIR)
echo Building gen_hpack_tables echo Building gen_hpack_tables
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\src\core\transport\chttp2\gen_hpack_tables.c $(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ $(REPO_ROOT)\tools\codegen\core\gen_hpack_tables.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gen_hpack_tables.exe" Debug\grpc_test_util.lib Debug\gpr.lib Debug\grpc.lib $(LIBS) $(OUT_DIR)\gen_hpack_tables.obj $(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gen_hpack_tables.exe" Debug\gpr.lib Debug\grpc.lib $(LIBS) $(OUT_DIR)\gen_hpack_tables.obj
gen_hpack_tables: gen_hpack_tables.exe gen_hpack_tables: gen_hpack_tables.exe
echo Running gen_hpack_tables echo Running gen_hpack_tables
$(OUT_DIR)\gen_hpack_tables.exe $(OUT_DIR)\gen_hpack_tables.exe

Loading…
Cancel
Save