mirror of https://github.com/grpc/grpc.git
commit
d2a575a458
269 changed files with 14349 additions and 5803 deletions
@ -0,0 +1,4 @@ |
||||
set noparent |
||||
@jtattermusch |
||||
@nicolasnoble |
||||
@matt-kwong |
@ -0,0 +1,409 @@ |
||||
// !$*UTF8*$! |
||||
{ |
||||
archiveVersion = 1; |
||||
classes = { |
||||
}; |
||||
objectVersion = 48; |
||||
objects = { |
||||
|
||||
/* Begin PBXBuildFile section */ |
||||
3DC71E95B8670DC619CF8693 /* libPods-HelloWorldCpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E3077D82811A6434769B437 /* libPods-HelloWorldCpp.a */; }; |
||||
5E9D65611FFD689B00C955D4 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E9D65601FFD689B00C955D4 /* AppDelegate.mm */; }; |
||||
5E9D65641FFD689B00C955D4 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E9D65631FFD689B00C955D4 /* ViewController.mm */; }; |
||||
5E9D65671FFD689B00C955D4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5E9D65651FFD689B00C955D4 /* Main.storyboard */; }; |
||||
5E9D65691FFD689B00C955D4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5E9D65681FFD689B00C955D4 /* Assets.xcassets */; }; |
||||
5E9D656C1FFD689B00C955D4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5E9D656A1FFD689B00C955D4 /* LaunchScreen.storyboard */; }; |
||||
5E9D656F1FFD689C00C955D4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E9D656E1FFD689C00C955D4 /* main.m */; }; |
||||
/* End PBXBuildFile section */ |
||||
|
||||
/* Begin PBXFileReference section */ |
||||
0A6137606FDBA874FCF64753 /* Pods-HelloWorldCpp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloWorldCpp.release.xcconfig"; path = "Pods/Target Support Files/Pods-HelloWorldCpp/Pods-HelloWorldCpp.release.xcconfig"; sourceTree = "<group>"; }; |
||||
5E9D655C1FFD689B00C955D4 /* HelloWorldCpp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorldCpp.app; sourceTree = BUILT_PRODUCTS_DIR; }; |
||||
5E9D655F1FFD689B00C955D4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; |
||||
5E9D65601FFD689B00C955D4 /* AppDelegate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = "<group>"; }; |
||||
5E9D65621FFD689B00C955D4 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; }; |
||||
5E9D65631FFD689B00C955D4 /* ViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ViewController.mm; sourceTree = "<group>"; }; |
||||
5E9D65661FFD689B00C955D4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; |
||||
5E9D65681FFD689B00C955D4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; |
||||
5E9D656B1FFD689B00C955D4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; |
||||
5E9D656D1FFD689C00C955D4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; |
||||
5E9D656E1FFD689C00C955D4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; |
||||
8E3077D82811A6434769B437 /* libPods-HelloWorldCpp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HelloWorldCpp.a"; sourceTree = BUILT_PRODUCTS_DIR; }; |
||||
AF0FF6EB66DA2C30CFC575EA /* Pods-HelloWorldCpp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloWorldCpp.debug.xcconfig"; path = "Pods/Target Support Files/Pods-HelloWorldCpp/Pods-HelloWorldCpp.debug.xcconfig"; sourceTree = "<group>"; }; |
||||
/* End PBXFileReference section */ |
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */ |
||||
5E9D65591FFD689B00C955D4 /* Frameworks */ = { |
||||
isa = PBXFrameworksBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
3DC71E95B8670DC619CF8693 /* libPods-HelloWorldCpp.a in Frameworks */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXFrameworksBuildPhase section */ |
||||
|
||||
/* Begin PBXGroup section */ |
||||
08FBFA5AB49E037A86EA64D7 /* Frameworks */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
8E3077D82811A6434769B437 /* libPods-HelloWorldCpp.a */, |
||||
); |
||||
name = Frameworks; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
5E9D65531FFD689B00C955D4 = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
5E9D655E1FFD689B00C955D4 /* HelloWorldCpp */, |
||||
5E9D655D1FFD689B00C955D4 /* Products */, |
||||
E40B264856595518D408CF3E /* Pods */, |
||||
08FBFA5AB49E037A86EA64D7 /* Frameworks */, |
||||
); |
||||
sourceTree = "<group>"; |
||||
}; |
||||
5E9D655D1FFD689B00C955D4 /* Products */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
5E9D655C1FFD689B00C955D4 /* HelloWorldCpp.app */, |
||||
); |
||||
name = Products; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
5E9D655E1FFD689B00C955D4 /* HelloWorldCpp */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
5E9D655F1FFD689B00C955D4 /* AppDelegate.h */, |
||||
5E9D65601FFD689B00C955D4 /* AppDelegate.mm */, |
||||
5E9D65621FFD689B00C955D4 /* ViewController.h */, |
||||
5E9D65631FFD689B00C955D4 /* ViewController.mm */, |
||||
5E9D65651FFD689B00C955D4 /* Main.storyboard */, |
||||
5E9D65681FFD689B00C955D4 /* Assets.xcassets */, |
||||
5E9D656A1FFD689B00C955D4 /* LaunchScreen.storyboard */, |
||||
5E9D656D1FFD689C00C955D4 /* Info.plist */, |
||||
5E9D656E1FFD689C00C955D4 /* main.m */, |
||||
); |
||||
path = HelloWorldCpp; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
E40B264856595518D408CF3E /* Pods */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
AF0FF6EB66DA2C30CFC575EA /* Pods-HelloWorldCpp.debug.xcconfig */, |
||||
0A6137606FDBA874FCF64753 /* Pods-HelloWorldCpp.release.xcconfig */, |
||||
); |
||||
name = Pods; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
/* End PBXGroup section */ |
||||
|
||||
/* Begin PBXNativeTarget section */ |
||||
5E9D655B1FFD689B00C955D4 /* HelloWorldCpp */ = { |
||||
isa = PBXNativeTarget; |
||||
buildConfigurationList = 5E9D65721FFD689C00C955D4 /* Build configuration list for PBXNativeTarget "HelloWorldCpp" */; |
||||
buildPhases = ( |
||||
4D66D60BD88AA4D5813859A9 /* [CP] Check Pods Manifest.lock */, |
||||
5E9D65581FFD689B00C955D4 /* Sources */, |
||||
5E9D65591FFD689B00C955D4 /* Frameworks */, |
||||
5E9D655A1FFD689B00C955D4 /* Resources */, |
||||
CA89B315EACC5A6F8816FD26 /* [CP] Embed Pods Frameworks */, |
||||
6C4D930C765719D03893663B /* [CP] Copy Pods Resources */, |
||||
); |
||||
buildRules = ( |
||||
); |
||||
dependencies = ( |
||||
); |
||||
name = HelloWorldCpp; |
||||
productName = HelloWorldCpp; |
||||
productReference = 5E9D655C1FFD689B00C955D4 /* HelloWorldCpp.app */; |
||||
productType = "com.apple.product-type.application"; |
||||
}; |
||||
/* End PBXNativeTarget section */ |
||||
|
||||
/* Begin PBXProject section */ |
||||
5E9D65541FFD689B00C955D4 /* Project object */ = { |
||||
isa = PBXProject; |
||||
attributes = { |
||||
LastUpgradeCheck = 0920; |
||||
ORGANIZATIONNAME = gRPC; |
||||
TargetAttributes = { |
||||
5E9D655B1FFD689B00C955D4 = { |
||||
CreatedOnToolsVersion = 9.2; |
||||
ProvisioningStyle = Automatic; |
||||
}; |
||||
}; |
||||
}; |
||||
buildConfigurationList = 5E9D65571FFD689B00C955D4 /* Build configuration list for PBXProject "HelloWorldCpp" */; |
||||
compatibilityVersion = "Xcode 8.0"; |
||||
developmentRegion = en; |
||||
hasScannedForEncodings = 0; |
||||
knownRegions = ( |
||||
en, |
||||
Base, |
||||
); |
||||
mainGroup = 5E9D65531FFD689B00C955D4; |
||||
productRefGroup = 5E9D655D1FFD689B00C955D4 /* Products */; |
||||
projectDirPath = ""; |
||||
projectRoot = ""; |
||||
targets = ( |
||||
5E9D655B1FFD689B00C955D4 /* HelloWorldCpp */, |
||||
); |
||||
}; |
||||
/* End PBXProject section */ |
||||
|
||||
/* Begin PBXResourcesBuildPhase section */ |
||||
5E9D655A1FFD689B00C955D4 /* Resources */ = { |
||||
isa = PBXResourcesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
5E9D656C1FFD689B00C955D4 /* LaunchScreen.storyboard in Resources */, |
||||
5E9D65691FFD689B00C955D4 /* Assets.xcassets in Resources */, |
||||
5E9D65671FFD689B00C955D4 /* Main.storyboard in Resources */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXResourcesBuildPhase section */ |
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */ |
||||
4D66D60BD88AA4D5813859A9 /* [CP] Check Pods Manifest.lock */ = { |
||||
isa = PBXShellScriptBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
); |
||||
inputPaths = ( |
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock", |
||||
"${PODS_ROOT}/Manifest.lock", |
||||
); |
||||
name = "[CP] Check Pods Manifest.lock"; |
||||
outputPaths = ( |
||||
"$(DERIVED_FILE_DIR)/Pods-HelloWorldCpp-checkManifestLockResult.txt", |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
shellPath = /bin/sh; |
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; |
||||
showEnvVarsInLog = 0; |
||||
}; |
||||
6C4D930C765719D03893663B /* [CP] Copy Pods Resources */ = { |
||||
isa = PBXShellScriptBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
); |
||||
inputPaths = ( |
||||
); |
||||
name = "[CP] Copy Pods Resources"; |
||||
outputPaths = ( |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
shellPath = /bin/sh; |
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-HelloWorldCpp/Pods-HelloWorldCpp-resources.sh\"\n"; |
||||
showEnvVarsInLog = 0; |
||||
}; |
||||
CA89B315EACC5A6F8816FD26 /* [CP] Embed Pods Frameworks */ = { |
||||
isa = PBXShellScriptBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
); |
||||
inputPaths = ( |
||||
); |
||||
name = "[CP] Embed Pods Frameworks"; |
||||
outputPaths = ( |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
shellPath = /bin/sh; |
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-HelloWorldCpp/Pods-HelloWorldCpp-frameworks.sh\"\n"; |
||||
showEnvVarsInLog = 0; |
||||
}; |
||||
/* End PBXShellScriptBuildPhase section */ |
||||
|
||||
/* Begin PBXSourcesBuildPhase section */ |
||||
5E9D65581FFD689B00C955D4 /* Sources */ = { |
||||
isa = PBXSourcesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
5E9D65641FFD689B00C955D4 /* ViewController.mm in Sources */, |
||||
5E9D656F1FFD689C00C955D4 /* main.m in Sources */, |
||||
5E9D65611FFD689B00C955D4 /* AppDelegate.mm in Sources */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXSourcesBuildPhase section */ |
||||
|
||||
/* Begin PBXVariantGroup section */ |
||||
5E9D65651FFD689B00C955D4 /* Main.storyboard */ = { |
||||
isa = PBXVariantGroup; |
||||
children = ( |
||||
5E9D65661FFD689B00C955D4 /* Base */, |
||||
); |
||||
name = Main.storyboard; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
5E9D656A1FFD689B00C955D4 /* LaunchScreen.storyboard */ = { |
||||
isa = PBXVariantGroup; |
||||
children = ( |
||||
5E9D656B1FFD689B00C955D4 /* Base */, |
||||
); |
||||
name = LaunchScreen.storyboard; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
/* End PBXVariantGroup section */ |
||||
|
||||
/* Begin XCBuildConfiguration section */ |
||||
5E9D65701FFD689C00C955D4 /* Debug */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ALWAYS_SEARCH_USER_PATHS = NO; |
||||
CLANG_ANALYZER_NONNULL = YES; |
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; |
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; |
||||
CLANG_CXX_LIBRARY = "libc++"; |
||||
CLANG_ENABLE_MODULES = YES; |
||||
CLANG_ENABLE_OBJC_ARC = YES; |
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; |
||||
CLANG_WARN_BOOL_CONVERSION = YES; |
||||
CLANG_WARN_COMMA = YES; |
||||
CLANG_WARN_CONSTANT_CONVERSION = YES; |
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; |
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES; |
||||
CLANG_WARN_EMPTY_BODY = YES; |
||||
CLANG_WARN_ENUM_CONVERSION = YES; |
||||
CLANG_WARN_INFINITE_RECURSION = YES; |
||||
CLANG_WARN_INT_CONVERSION = YES; |
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; |
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; |
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; |
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; |
||||
CLANG_WARN_STRICT_PROTOTYPES = YES; |
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES; |
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; |
||||
CLANG_WARN_UNREACHABLE_CODE = YES; |
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; |
||||
CODE_SIGN_IDENTITY = "iPhone Developer"; |
||||
COPY_PHASE_STRIP = NO; |
||||
DEBUG_INFORMATION_FORMAT = dwarf; |
||||
ENABLE_STRICT_OBJC_MSGSEND = YES; |
||||
ENABLE_TESTABILITY = YES; |
||||
GCC_C_LANGUAGE_STANDARD = gnu11; |
||||
GCC_DYNAMIC_NO_PIC = NO; |
||||
GCC_NO_COMMON_BLOCKS = YES; |
||||
GCC_OPTIMIZATION_LEVEL = 0; |
||||
GCC_PREPROCESSOR_DEFINITIONS = ( |
||||
"DEBUG=1", |
||||
"$(inherited)", |
||||
); |
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; |
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; |
||||
GCC_WARN_UNDECLARED_SELECTOR = YES; |
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; |
||||
GCC_WARN_UNUSED_FUNCTION = YES; |
||||
GCC_WARN_UNUSED_VARIABLE = YES; |
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.2; |
||||
MTL_ENABLE_DEBUG_INFO = YES; |
||||
ONLY_ACTIVE_ARCH = YES; |
||||
SDKROOT = iphoneos; |
||||
}; |
||||
name = Debug; |
||||
}; |
||||
5E9D65711FFD689C00C955D4 /* Release */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ALWAYS_SEARCH_USER_PATHS = NO; |
||||
CLANG_ANALYZER_NONNULL = YES; |
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; |
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; |
||||
CLANG_CXX_LIBRARY = "libc++"; |
||||
CLANG_ENABLE_MODULES = YES; |
||||
CLANG_ENABLE_OBJC_ARC = YES; |
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; |
||||
CLANG_WARN_BOOL_CONVERSION = YES; |
||||
CLANG_WARN_COMMA = YES; |
||||
CLANG_WARN_CONSTANT_CONVERSION = YES; |
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; |
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES; |
||||
CLANG_WARN_EMPTY_BODY = YES; |
||||
CLANG_WARN_ENUM_CONVERSION = YES; |
||||
CLANG_WARN_INFINITE_RECURSION = YES; |
||||
CLANG_WARN_INT_CONVERSION = YES; |
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; |
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; |
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; |
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; |
||||
CLANG_WARN_STRICT_PROTOTYPES = YES; |
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES; |
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; |
||||
CLANG_WARN_UNREACHABLE_CODE = YES; |
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; |
||||
CODE_SIGN_IDENTITY = "iPhone Developer"; |
||||
COPY_PHASE_STRIP = NO; |
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; |
||||
ENABLE_NS_ASSERTIONS = NO; |
||||
ENABLE_STRICT_OBJC_MSGSEND = YES; |
||||
GCC_C_LANGUAGE_STANDARD = gnu11; |
||||
GCC_NO_COMMON_BLOCKS = YES; |
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; |
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; |
||||
GCC_WARN_UNDECLARED_SELECTOR = YES; |
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; |
||||
GCC_WARN_UNUSED_FUNCTION = YES; |
||||
GCC_WARN_UNUSED_VARIABLE = YES; |
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.2; |
||||
MTL_ENABLE_DEBUG_INFO = NO; |
||||
SDKROOT = iphoneos; |
||||
VALIDATE_PRODUCT = YES; |
||||
}; |
||||
name = Release; |
||||
}; |
||||
5E9D65731FFD689C00C955D4 /* Debug */ = { |
||||
isa = XCBuildConfiguration; |
||||
baseConfigurationReference = AF0FF6EB66DA2C30CFC575EA /* Pods-HelloWorldCpp.debug.xcconfig */; |
||||
buildSettings = { |
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; |
||||
CODE_SIGN_STYLE = Automatic; |
||||
DEVELOPMENT_TEAM = EQHXZ8M8AV; |
||||
INFOPLIST_FILE = HelloWorldCpp/Info.plist; |
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; |
||||
PRODUCT_BUNDLE_IDENTIFIER = io.grpc.HelloWorldCpp; |
||||
PRODUCT_NAME = "$(TARGET_NAME)"; |
||||
TARGETED_DEVICE_FAMILY = "1,2"; |
||||
}; |
||||
name = Debug; |
||||
}; |
||||
5E9D65741FFD689C00C955D4 /* Release */ = { |
||||
isa = XCBuildConfiguration; |
||||
baseConfigurationReference = 0A6137606FDBA874FCF64753 /* Pods-HelloWorldCpp.release.xcconfig */; |
||||
buildSettings = { |
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; |
||||
CODE_SIGN_STYLE = Automatic; |
||||
DEVELOPMENT_TEAM = EQHXZ8M8AV; |
||||
INFOPLIST_FILE = HelloWorldCpp/Info.plist; |
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; |
||||
PRODUCT_BUNDLE_IDENTIFIER = io.grpc.HelloWorldCpp; |
||||
PRODUCT_NAME = "$(TARGET_NAME)"; |
||||
TARGETED_DEVICE_FAMILY = "1,2"; |
||||
}; |
||||
name = Release; |
||||
}; |
||||
/* End XCBuildConfiguration section */ |
||||
|
||||
/* Begin XCConfigurationList section */ |
||||
5E9D65571FFD689B00C955D4 /* Build configuration list for PBXProject "HelloWorldCpp" */ = { |
||||
isa = XCConfigurationList; |
||||
buildConfigurations = ( |
||||
5E9D65701FFD689C00C955D4 /* Debug */, |
||||
5E9D65711FFD689C00C955D4 /* Release */, |
||||
); |
||||
defaultConfigurationIsVisible = 0; |
||||
defaultConfigurationName = Release; |
||||
}; |
||||
5E9D65721FFD689C00C955D4 /* Build configuration list for PBXNativeTarget "HelloWorldCpp" */ = { |
||||
isa = XCConfigurationList; |
||||
buildConfigurations = ( |
||||
5E9D65731FFD689C00C955D4 /* Debug */, |
||||
5E9D65741FFD689C00C955D4 /* Release */, |
||||
); |
||||
defaultConfigurationIsVisible = 0; |
||||
defaultConfigurationName = Release; |
||||
}; |
||||
/* End XCConfigurationList section */ |
||||
}; |
||||
rootObject = 5E9D65541FFD689B00C955D4 /* Project object */; |
||||
} |
@ -0,0 +1,23 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2018 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#import <UIKit/UIKit.h> |
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate> |
||||
@property (strong, nonatomic) UIWindow *window; |
||||
@end |
@ -0,0 +1,22 @@ |
||||
/* |
||||
* |
||||
* Copyright 2018 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0 |
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#import "AppDelegate.h" |
||||
|
||||
@implementation AppDelegate |
||||
@end |
@ -0,0 +1,93 @@ |
||||
{ |
||||
"images" : [ |
||||
{ |
||||
"idiom" : "iphone", |
||||
"size" : "20x20", |
||||
"scale" : "2x" |
||||
}, |
||||
{ |
||||
"idiom" : "iphone", |
||||
"size" : "20x20", |
||||
"scale" : "3x" |
||||
}, |
||||
{ |
||||
"idiom" : "iphone", |
||||
"size" : "29x29", |
||||
"scale" : "2x" |
||||
}, |
||||
{ |
||||
"idiom" : "iphone", |
||||
"size" : "29x29", |
||||
"scale" : "3x" |
||||
}, |
||||
{ |
||||
"idiom" : "iphone", |
||||
"size" : "40x40", |
||||
"scale" : "2x" |
||||
}, |
||||
{ |
||||
"idiom" : "iphone", |
||||
"size" : "40x40", |
||||
"scale" : "3x" |
||||
}, |
||||
{ |
||||
"idiom" : "iphone", |
||||
"size" : "60x60", |
||||
"scale" : "2x" |
||||
}, |
||||
{ |
||||
"idiom" : "iphone", |
||||
"size" : "60x60", |
||||
"scale" : "3x" |
||||
}, |
||||
{ |
||||
"idiom" : "ipad", |
||||
"size" : "20x20", |
||||
"scale" : "1x" |
||||
}, |
||||
{ |
||||
"idiom" : "ipad", |
||||
"size" : "20x20", |
||||
"scale" : "2x" |
||||
}, |
||||
{ |
||||
"idiom" : "ipad", |
||||
"size" : "29x29", |
||||
"scale" : "1x" |
||||
}, |
||||
{ |
||||
"idiom" : "ipad", |
||||
"size" : "29x29", |
||||
"scale" : "2x" |
||||
}, |
||||
{ |
||||
"idiom" : "ipad", |
||||
"size" : "40x40", |
||||
"scale" : "1x" |
||||
}, |
||||
{ |
||||
"idiom" : "ipad", |
||||
"size" : "40x40", |
||||
"scale" : "2x" |
||||
}, |
||||
{ |
||||
"idiom" : "ipad", |
||||
"size" : "76x76", |
||||
"scale" : "1x" |
||||
}, |
||||
{ |
||||
"idiom" : "ipad", |
||||
"size" : "76x76", |
||||
"scale" : "2x" |
||||
}, |
||||
{ |
||||
"idiom" : "ipad", |
||||
"size" : "83.5x83.5", |
||||
"scale" : "2x" |
||||
} |
||||
], |
||||
"info" : { |
||||
"version" : 1, |
||||
"author" : "xcode" |
||||
} |
||||
} |
@ -0,0 +1,25 @@ |
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" systemVersion="17A277" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> |
||||
<dependencies> |
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/> |
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/> |
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
||||
</dependencies> |
||||
<scenes> |
||||
<!--View Controller--> |
||||
<scene sceneID="EHf-IW-A2E"> |
||||
<objects> |
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController"> |
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> |
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> |
||||
</view> |
||||
</viewController> |
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> |
||||
</objects> |
||||
<point key="canvasLocation" x="53" y="375"/> |
||||
</scene> |
||||
</scenes> |
||||
</document> |
@ -0,0 +1,24 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" systemVersion="17A277" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r"> |
||||
<dependencies> |
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/> |
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/> |
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
||||
</dependencies> |
||||
<scenes> |
||||
<!--View Controller--> |
||||
<scene sceneID="tne-QT-ifu"> |
||||
<objects> |
||||
<viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController"> |
||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC"> |
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> |
||||
</view> |
||||
</viewController> |
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> |
||||
</objects> |
||||
</scene> |
||||
</scenes> |
||||
</document> |
@ -0,0 +1,45 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||
<plist version="1.0"> |
||||
<dict> |
||||
<key>CFBundleDevelopmentRegion</key> |
||||
<string>$(DEVELOPMENT_LANGUAGE)</string> |
||||
<key>CFBundleExecutable</key> |
||||
<string>$(EXECUTABLE_NAME)</string> |
||||
<key>CFBundleIdentifier</key> |
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> |
||||
<key>CFBundleInfoDictionaryVersion</key> |
||||
<string>6.0</string> |
||||
<key>CFBundleName</key> |
||||
<string>$(PRODUCT_NAME)</string> |
||||
<key>CFBundlePackageType</key> |
||||
<string>APPL</string> |
||||
<key>CFBundleShortVersionString</key> |
||||
<string>1.0</string> |
||||
<key>CFBundleVersion</key> |
||||
<string>1</string> |
||||
<key>LSRequiresIPhoneOS</key> |
||||
<true/> |
||||
<key>UILaunchStoryboardName</key> |
||||
<string>LaunchScreen</string> |
||||
<key>UIMainStoryboardFile</key> |
||||
<string>Main</string> |
||||
<key>UIRequiredDeviceCapabilities</key> |
||||
<array> |
||||
<string>armv7</string> |
||||
</array> |
||||
<key>UISupportedInterfaceOrientations</key> |
||||
<array> |
||||
<string>UIInterfaceOrientationPortrait</string> |
||||
<string>UIInterfaceOrientationLandscapeLeft</string> |
||||
<string>UIInterfaceOrientationLandscapeRight</string> |
||||
</array> |
||||
<key>UISupportedInterfaceOrientations~ipad</key> |
||||
<array> |
||||
<string>UIInterfaceOrientationPortrait</string> |
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string> |
||||
<string>UIInterfaceOrientationLandscapeLeft</string> |
||||
<string>UIInterfaceOrientationLandscapeRight</string> |
||||
</array> |
||||
</dict> |
||||
</plist> |
@ -0,0 +1,23 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2018 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#import <UIKit/UIKit.h> |
||||
|
||||
@interface ViewController : UIViewController |
||||
@end |
||||
|
@ -0,0 +1,101 @@ |
||||
/* |
||||
* |
||||
* Copyright 2018 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0 |
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#import "ViewController.h" |
||||
#import <grpc++/grpc++.h> |
||||
#include <grpc++/generic/generic_stub.h> |
||||
#include <grpc++/generic/async_generic_service.h> |
||||
|
||||
static void* tag(int i) { return (void*)(intptr_t)i; } |
||||
|
||||
// Serialized Proto bytes of Hello World example |
||||
const uint8_t kMessage[] = |
||||
{0x0A, 0x0B, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x2D, 0x43}; |
||||
|
||||
@interface ViewController () |
||||
|
||||
@end |
||||
|
||||
@implementation ViewController { |
||||
grpc::CompletionQueue cq_; |
||||
std::unique_ptr<grpc::GenericStub> generic_stub_; |
||||
} |
||||
|
||||
- (void)viewDidLoad { |
||||
[super viewDidLoad]; |
||||
|
||||
// Setup call stub |
||||
std::shared_ptr<grpc::Channel> channel = |
||||
CreateChannel("localhost:50051", grpc::InsecureChannelCredentials()); |
||||
generic_stub_.reset(new grpc::GenericStub(channel)); |
||||
|
||||
const grpc::string kMethodName("/helloworld.Greeter/SayHello"); |
||||
void* got_tag; |
||||
bool ok; |
||||
|
||||
grpc::ClientContext cli_ctx; |
||||
std::unique_ptr<grpc::GenericClientAsyncReaderWriter> call = |
||||
generic_stub_->Call(&cli_ctx, kMethodName, &cq_, tag(1)); |
||||
cq_.Next(&got_tag, &ok); |
||||
if (!ok || got_tag != tag(1)) { |
||||
NSLog(@"Failed to create call."); |
||||
abort(); |
||||
} |
||||
grpc::Slice send_slice = grpc::Slice(kMessage, sizeof(kMessage) / sizeof(kMessage[0])); |
||||
std::unique_ptr<grpc::ByteBuffer> send_buffer(new grpc::ByteBuffer(&send_slice, 1)); |
||||
call->Write(*send_buffer, tag(2)); |
||||
cq_.Next(&got_tag, &ok); |
||||
if (!ok || got_tag != tag(2)) { |
||||
NSLog(@"Failed to send message."); |
||||
abort(); |
||||
} |
||||
grpc::ByteBuffer recv_buffer; |
||||
call->Read(&recv_buffer, tag(3)); |
||||
cq_.Next(&got_tag, &ok); |
||||
if (!ok || got_tag != tag(3)) { |
||||
NSLog(@"Failed to receive message."); |
||||
abort(); |
||||
} |
||||
|
||||
grpc::Status status; |
||||
call->Finish(&status, tag(4)); |
||||
cq_.Next(&got_tag, &ok); |
||||
if (!ok || got_tag != tag(4)) { |
||||
NSLog(@"Failed to finish call."); |
||||
abort(); |
||||
} |
||||
if (!status.ok()) { |
||||
NSLog(@"Received unsuccessful status code: %d", status.error_code()); |
||||
abort(); |
||||
} |
||||
std::vector<grpc::Slice> slices; |
||||
recv_buffer.Dump(&slices); |
||||
NSString *recvBytes = [[NSString alloc] init]; |
||||
for (auto slice : slices) { |
||||
auto p = slice.begin(); |
||||
while (p != slice.end()) { |
||||
recvBytes = |
||||
[recvBytes stringByAppendingString:[NSString stringWithFormat:@"%02x ", *p]]; |
||||
p++; |
||||
} |
||||
} |
||||
NSLog(@"Hello World succeeded.\nReceived bytes: %@\n" |
||||
"Expected bytes: 0a 11 48 65 6c 6c 6f 20 4f 62 6a 65 63 74 69 76 65 2d 43", recvBytes); |
||||
} |
||||
|
||||
@end |
@ -0,0 +1,26 @@ |
||||
/* |
||||
* |
||||
* Copyright 2018 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0 |
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#import <UIKit/UIKit.h> |
||||
#import "AppDelegate.h" |
||||
|
||||
int main(int argc, char * argv[]) { |
||||
@autoreleasepool { |
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); |
||||
} |
||||
} |
@ -0,0 +1,8 @@ |
||||
source 'https://github.com/CocoaPods/Specs.git' |
||||
platform :ios, '8.0' |
||||
|
||||
install! 'cocoapods', :deterministic_uuids => false |
||||
|
||||
target 'HelloWorldCpp' do |
||||
pod 'gRPC-C++' |
||||
end |
@ -0,0 +1,685 @@ |
||||
# This file has been automatically generated from a template file. |
||||
# Please make modifications to `templates/gRPC-C++.podspec.template` |
||||
# instead. This file can be regenerated from the template by running |
||||
# `tools/buildgen/generate_projects.sh`. |
||||
|
||||
# gRPC C++ CocoaPods podspec |
||||
# |
||||
# Copyright 2017 gRPC authors. |
||||
# |
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
|
||||
|
||||
Pod::Spec.new do |s| |
||||
s.name = 'gRPC-C++' |
||||
# TODO (mxyan): use version that match gRPC version when pod is stabilized |
||||
# version = '1.10.0-dev' |
||||
version = '0.0.1' |
||||
s.version = version |
||||
s.summary = 'gRPC C++ library' |
||||
s.homepage = 'https://grpc.io' |
||||
s.license = 'Apache License, Version 2.0' |
||||
s.authors = { 'The gRPC contributors' => 'grpc-packages@google.com' } |
||||
|
||||
grpc_version = '1.10.0-dev' |
||||
|
||||
s.source = { |
||||
:git => 'https://github.com/grpc/grpc.git', |
||||
:tag => "v#{grpc_version}", |
||||
} |
||||
|
||||
s.ios.deployment_target = '7.0' |
||||
s.osx.deployment_target = '10.9' |
||||
s.requires_arc = false |
||||
|
||||
# Add include prefix `grpc++` (i.e. `#include <grpc++/xxx.h>`). |
||||
s.header_dir = 'grpc++' |
||||
|
||||
s.pod_target_xcconfig = { |
||||
'HEADER_SEARCH_PATHS' => '"$(inherited)" "$(PODS_TARGET_SRCROOT)/include"', |
||||
'USER_HEADER_SEARCH_PATHS' => '"$(PODS_TARGET_SRCROOT)"', |
||||
'GCC_PREPROCESSOR_DEFINITIONS' => '"$(inherited)" "COCOAPODS=1" "PB_NO_PACKED_STRUCTS=1"', |
||||
'CLANG_WARN_STRICT_PROTOTYPES' => 'NO', |
||||
'CLANG_WARN_DOCUMENTATION_COMMENTS' => 'NO', |
||||
|
||||
# If we don't set these two settings, `include/grpc/support/time.h` and |
||||
# `src/core/lib/support/string.h` shadow the system `<time.h>` and `<string.h>`, breaking the |
||||
# build. |
||||
'USE_HEADERMAP' => 'NO', |
||||
'ALWAYS_SEARCH_USER_PATHS' => 'NO', |
||||
} |
||||
|
||||
s.libraries = 'c++' |
||||
|
||||
s.default_subspecs = 'Interface', 'Implementation' |
||||
|
||||
s.subspec 'Interface' do |ss| |
||||
ss.header_mappings_dir = 'include/grpc++' |
||||
|
||||
ss.source_files = 'include/grpc++/alarm.h', |
||||
'include/grpc++/channel.h', |
||||
'include/grpc++/client_context.h', |
||||
'include/grpc++/completion_queue.h', |
||||
'include/grpc++/create_channel.h', |
||||
'include/grpc++/create_channel_posix.h', |
||||
'include/grpc++/ext/health_check_service_server_builder_option.h', |
||||
'include/grpc++/generic/async_generic_service.h', |
||||
'include/grpc++/generic/generic_stub.h', |
||||
'include/grpc++/grpc++.h', |
||||
'include/grpc++/health_check_service_interface.h', |
||||
'include/grpc++/impl/call.h', |
||||
'include/grpc++/impl/channel_argument_option.h', |
||||
'include/grpc++/impl/client_unary_call.h', |
||||
'include/grpc++/impl/codegen/core_codegen.h', |
||||
'include/grpc++/impl/grpc_library.h', |
||||
'include/grpc++/impl/method_handler_impl.h', |
||||
'include/grpc++/impl/rpc_method.h', |
||||
'include/grpc++/impl/rpc_service_method.h', |
||||
'include/grpc++/impl/serialization_traits.h', |
||||
'include/grpc++/impl/server_builder_option.h', |
||||
'include/grpc++/impl/server_builder_plugin.h', |
||||
'include/grpc++/impl/server_initializer.h', |
||||
'include/grpc++/impl/service_type.h', |
||||
'include/grpc++/resource_quota.h', |
||||
'include/grpc++/security/auth_context.h', |
||||
'include/grpc++/security/auth_metadata_processor.h', |
||||
'include/grpc++/security/credentials.h', |
||||
'include/grpc++/security/server_credentials.h', |
||||
'include/grpc++/server.h', |
||||
'include/grpc++/server_builder.h', |
||||
'include/grpc++/server_context.h', |
||||
'include/grpc++/server_posix.h', |
||||
'include/grpc++/support/async_stream.h', |
||||
'include/grpc++/support/async_unary_call.h', |
||||
'include/grpc++/support/byte_buffer.h', |
||||
'include/grpc++/support/channel_arguments.h', |
||||
'include/grpc++/support/config.h', |
||||
'include/grpc++/support/slice.h', |
||||
'include/grpc++/support/status.h', |
||||
'include/grpc++/support/status_code_enum.h', |
||||
'include/grpc++/support/string_ref.h', |
||||
'include/grpc++/support/stub_options.h', |
||||
'include/grpc++/support/sync_stream.h', |
||||
'include/grpc++/support/time.h', |
||||
'include/grpc++/impl/codegen/async_stream.h', |
||||
'include/grpc++/impl/codegen/async_unary_call.h', |
||||
'include/grpc++/impl/codegen/byte_buffer.h', |
||||
'include/grpc++/impl/codegen/call.h', |
||||
'include/grpc++/impl/codegen/call_hook.h', |
||||
'include/grpc++/impl/codegen/channel_interface.h', |
||||
'include/grpc++/impl/codegen/client_context.h', |
||||
'include/grpc++/impl/codegen/client_unary_call.h', |
||||
'include/grpc++/impl/codegen/completion_queue.h', |
||||
'include/grpc++/impl/codegen/completion_queue_tag.h', |
||||
'include/grpc++/impl/codegen/config.h', |
||||
'include/grpc++/impl/codegen/core_codegen_interface.h', |
||||
'include/grpc++/impl/codegen/create_auth_context.h', |
||||
'include/grpc++/impl/codegen/grpc_library.h', |
||||
'include/grpc++/impl/codegen/metadata_map.h', |
||||
'include/grpc++/impl/codegen/method_handler_impl.h', |
||||
'include/grpc++/impl/codegen/rpc_method.h', |
||||
'include/grpc++/impl/codegen/rpc_service_method.h', |
||||
'include/grpc++/impl/codegen/security/auth_context.h', |
||||
'include/grpc++/impl/codegen/serialization_traits.h', |
||||
'include/grpc++/impl/codegen/server_context.h', |
||||
'include/grpc++/impl/codegen/server_interface.h', |
||||
'include/grpc++/impl/codegen/service_type.h', |
||||
'include/grpc++/impl/codegen/slice.h', |
||||
'include/grpc++/impl/codegen/status.h', |
||||
'include/grpc++/impl/codegen/status_code_enum.h', |
||||
'include/grpc++/impl/codegen/string_ref.h', |
||||
'include/grpc++/impl/codegen/stub_options.h', |
||||
'include/grpc++/impl/codegen/sync_stream.h', |
||||
'include/grpc++/impl/codegen/time.h' |
||||
end |
||||
|
||||
s.subspec 'Implementation' do |ss| |
||||
ss.header_mappings_dir = '.' |
||||
ss.dependency "#{s.name}/Interface", version |
||||
ss.dependency 'gRPC-Core', grpc_version |
||||
ss.dependency 'nanopb', '~> 0.3' |
||||
|
||||
ss.source_files = 'include/grpc++/impl/codegen/core_codegen.h', |
||||
'src/cpp/client/secure_credentials.h', |
||||
'src/cpp/common/secure_auth_context.h', |
||||
'src/cpp/server/secure_server_credentials.h', |
||||
'src/cpp/client/create_channel_internal.h', |
||||
'src/cpp/common/channel_filter.h', |
||||
'src/cpp/server/dynamic_thread_pool.h', |
||||
'src/cpp/server/health/default_health_check_service.h', |
||||
'src/cpp/server/health/health.pb.h', |
||||
'src/cpp/server/thread_pool_interface.h', |
||||
'src/cpp/thread_manager/thread_manager.h', |
||||
'src/cpp/client/insecure_credentials.cc', |
||||
'src/cpp/client/secure_credentials.cc', |
||||
'src/cpp/common/auth_property_iterator.cc', |
||||
'src/cpp/common/secure_auth_context.cc', |
||||
'src/cpp/common/secure_channel_arguments.cc', |
||||
'src/cpp/common/secure_create_auth_context.cc', |
||||
'src/cpp/server/insecure_server_credentials.cc', |
||||
'src/cpp/server/secure_server_credentials.cc', |
||||
'src/cpp/client/channel_cc.cc', |
||||
'src/cpp/client/client_context.cc', |
||||
'src/cpp/client/create_channel.cc', |
||||
'src/cpp/client/create_channel_internal.cc', |
||||
'src/cpp/client/create_channel_posix.cc', |
||||
'src/cpp/client/credentials_cc.cc', |
||||
'src/cpp/client/generic_stub.cc', |
||||
'src/cpp/common/channel_arguments.cc', |
||||
'src/cpp/common/channel_filter.cc', |
||||
'src/cpp/common/completion_queue_cc.cc', |
||||
'src/cpp/common/core_codegen.cc', |
||||
'src/cpp/common/resource_quota_cc.cc', |
||||
'src/cpp/common/rpc_method.cc', |
||||
'src/cpp/common/version_cc.cc', |
||||
'src/cpp/server/async_generic_service.cc', |
||||
'src/cpp/server/channel_argument_option.cc', |
||||
'src/cpp/server/create_default_thread_pool.cc', |
||||
'src/cpp/server/dynamic_thread_pool.cc', |
||||
'src/cpp/server/health/default_health_check_service.cc', |
||||
'src/cpp/server/health/health.pb.c', |
||||
'src/cpp/server/health/health_check_service.cc', |
||||
'src/cpp/server/health/health_check_service_server_builder_option.cc', |
||||
'src/cpp/server/server_builder.cc', |
||||
'src/cpp/server/server_cc.cc', |
||||
'src/cpp/server/server_context.cc', |
||||
'src/cpp/server/server_credentials.cc', |
||||
'src/cpp/server/server_posix.cc', |
||||
'src/cpp/thread_manager/thread_manager.cc', |
||||
'src/cpp/util/byte_buffer_cc.cc', |
||||
'src/cpp/util/slice_cc.cc', |
||||
'src/cpp/util/status.cc', |
||||
'src/cpp/util/string_ref.cc', |
||||
'src/cpp/util/time_cc.cc', |
||||
'src/cpp/codegen/codegen_init.cc', |
||||
'src/core/lib/gpr/arena.h', |
||||
'src/core/lib/gpr/env.h', |
||||
'src/core/lib/gpr/fork.h', |
||||
'src/core/lib/gpr/mpscq.h', |
||||
'src/core/lib/gpr/murmur_hash.h', |
||||
'src/core/lib/gpr/spinlock.h', |
||||
'src/core/lib/gpr/string.h', |
||||
'src/core/lib/gpr/string_windows.h', |
||||
'src/core/lib/gpr/thd_internal.h', |
||||
'src/core/lib/gpr/time_precise.h', |
||||
'src/core/lib/gpr/tmpfile.h', |
||||
'src/core/lib/gprpp/abstract.h', |
||||
'src/core/lib/gprpp/atomic.h', |
||||
'src/core/lib/gprpp/atomic_with_atm.h', |
||||
'src/core/lib/gprpp/atomic_with_std.h', |
||||
'src/core/lib/gprpp/manual_constructor.h', |
||||
'src/core/lib/gprpp/memory.h', |
||||
'src/core/lib/profiling/timers.h', |
||||
'src/core/ext/transport/chttp2/transport/bin_decoder.h', |
||||
'src/core/ext/transport/chttp2/transport/bin_encoder.h', |
||||
'src/core/ext/transport/chttp2/transport/chttp2_transport.h', |
||||
'src/core/ext/transport/chttp2/transport/flow_control.h', |
||||
'src/core/ext/transport/chttp2/transport/frame.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_data.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_goaway.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_ping.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_rst_stream.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_settings.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_window_update.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_encoder.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_parser.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_table.h', |
||||
'src/core/ext/transport/chttp2/transport/http2_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', |
||||
'src/core/lib/security/credentials/fake/fake_credentials.h', |
||||
'src/core/lib/security/credentials/google_default/google_default_credentials.h', |
||||
'src/core/lib/security/credentials/iam/iam_credentials.h', |
||||
'src/core/lib/security/credentials/jwt/json_token.h', |
||||
'src/core/lib/security/credentials/jwt/jwt_credentials.h', |
||||
'src/core/lib/security/credentials/jwt/jwt_verifier.h', |
||||
'src/core/lib/security/credentials/oauth2/oauth2_credentials.h', |
||||
'src/core/lib/security/credentials/plugin/plugin_credentials.h', |
||||
'src/core/lib/security/credentials/ssl/ssl_credentials.h', |
||||
'src/core/lib/security/transport/auth_filters.h', |
||||
'src/core/lib/security/transport/lb_targets_info.h', |
||||
'src/core/lib/security/transport/secure_endpoint.h', |
||||
'src/core/lib/security/transport/security_connector.h', |
||||
'src/core/lib/security/transport/security_handshaker.h', |
||||
'src/core/lib/security/transport/tsi_error.h', |
||||
'src/core/lib/security/util/json_util.h', |
||||
'src/core/tsi/alts_transport_security.h', |
||||
'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_grpc.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/filters/client_channel/backup_poller.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/transport/inproc/inproc_transport.h', |
||||
'src/core/lib/backoff/backoff.h', |
||||
'src/core/lib/channel/channel_args.h', |
||||
'src/core/lib/channel/channel_stack.h', |
||||
'src/core/lib/channel/channel_stack_builder.h', |
||||
'src/core/lib/channel/connected_channel.h', |
||||
'src/core/lib/channel/context.h', |
||||
'src/core/lib/channel/handshaker.h', |
||||
'src/core/lib/channel/handshaker_factory.h', |
||||
'src/core/lib/channel/handshaker_registry.h', |
||||
'src/core/lib/compression/algorithm_metadata.h', |
||||
'src/core/lib/compression/compression_internal.h', |
||||
'src/core/lib/compression/message_compress.h', |
||||
'src/core/lib/compression/stream_compression.h', |
||||
'src/core/lib/compression/stream_compression_gzip.h', |
||||
'src/core/lib/compression/stream_compression_identity.h', |
||||
'src/core/lib/debug/stats.h', |
||||
'src/core/lib/debug/stats_data.h', |
||||
'src/core/lib/gprpp/debug_location.h', |
||||
'src/core/lib/gprpp/inlined_vector.h', |
||||
'src/core/lib/gprpp/orphanable.h', |
||||
'src/core/lib/gprpp/ref_counted.h', |
||||
'src/core/lib/gprpp/ref_counted_ptr.h', |
||||
'src/core/lib/http/format_request.h', |
||||
'src/core/lib/http/httpcli.h', |
||||
'src/core/lib/http/parser.h', |
||||
'src/core/lib/iomgr/block_annotate.h', |
||||
'src/core/lib/iomgr/call_combiner.h', |
||||
'src/core/lib/iomgr/closure.h', |
||||
'src/core/lib/iomgr/combiner.h', |
||||
'src/core/lib/iomgr/endpoint.h', |
||||
'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_epoll1_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', |
||||
'src/core/lib/iomgr/executor.h', |
||||
'src/core/lib/iomgr/gethostname.h', |
||||
'src/core/lib/iomgr/iocp_windows.h', |
||||
'src/core/lib/iomgr/iomgr.h', |
||||
'src/core/lib/iomgr/iomgr_internal.h', |
||||
'src/core/lib/iomgr/iomgr_posix.h', |
||||
'src/core/lib/iomgr/iomgr_uv.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/nameser.h', |
||||
'src/core/lib/iomgr/network_status_tracker.h', |
||||
'src/core/lib/iomgr/polling_entity.h', |
||||
'src/core/lib/iomgr/pollset.h', |
||||
'src/core/lib/iomgr/pollset_set.h', |
||||
'src/core/lib/iomgr/pollset_set_windows.h', |
||||
'src/core/lib/iomgr/pollset_uv.h', |
||||
'src/core/lib/iomgr/pollset_windows.h', |
||||
'src/core/lib/iomgr/port.h', |
||||
'src/core/lib/iomgr/resolve_address.h', |
||||
'src/core/lib/iomgr/resource_quota.h', |
||||
'src/core/lib/iomgr/sockaddr.h', |
||||
'src/core/lib/iomgr/sockaddr_posix.h', |
||||
'src/core/lib/iomgr/sockaddr_utils.h', |
||||
'src/core/lib/iomgr/sockaddr_windows.h', |
||||
'src/core/lib/iomgr/socket_factory_posix.h', |
||||
'src/core/lib/iomgr/socket_mutator.h', |
||||
'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', |
||||
'src/core/lib/iomgr/tcp_server.h', |
||||
'src/core/lib/iomgr/tcp_server_utils_posix.h', |
||||
'src/core/lib/iomgr/tcp_uv.h', |
||||
'src/core/lib/iomgr/tcp_windows.h', |
||||
'src/core/lib/iomgr/time_averaged_stats.h', |
||||
'src/core/lib/iomgr/timer.h', |
||||
'src/core/lib/iomgr/timer_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', |
||||
'src/core/lib/iomgr/wakeup_fd_cv.h', |
||||
'src/core/lib/iomgr/wakeup_fd_pipe.h', |
||||
'src/core/lib/iomgr/wakeup_fd_posix.h', |
||||
'src/core/lib/json/json.h', |
||||
'src/core/lib/json/json_common.h', |
||||
'src/core/lib/json/json_reader.h', |
||||
'src/core/lib/json/json_writer.h', |
||||
'src/core/lib/slice/b64.h', |
||||
'src/core/lib/slice/percent_encoding.h', |
||||
'src/core/lib/slice/slice_hash_table.h', |
||||
'src/core/lib/slice/slice_internal.h', |
||||
'src/core/lib/slice/slice_string_helpers.h', |
||||
'src/core/lib/surface/alarm_internal.h', |
||||
'src/core/lib/surface/api_trace.h', |
||||
'src/core/lib/surface/call.h', |
||||
'src/core/lib/surface/call_test_only.h', |
||||
'src/core/lib/surface/channel.h', |
||||
'src/core/lib/surface/channel_init.h', |
||||
'src/core/lib/surface/channel_stack_type.h', |
||||
'src/core/lib/surface/completion_queue.h', |
||||
'src/core/lib/surface/completion_queue_factory.h', |
||||
'src/core/lib/surface/event_string.h', |
||||
'src/core/lib/surface/init.h', |
||||
'src/core/lib/surface/lame_client.h', |
||||
'src/core/lib/surface/server.h', |
||||
'src/core/lib/surface/validate_metadata.h', |
||||
'src/core/lib/transport/bdp_estimator.h', |
||||
'src/core/lib/transport/byte_stream.h', |
||||
'src/core/lib/transport/connectivity_state.h', |
||||
'src/core/lib/transport/error_utils.h', |
||||
'src/core/lib/transport/http2_errors.h', |
||||
'src/core/lib/transport/metadata.h', |
||||
'src/core/lib/transport/metadata_batch.h', |
||||
'src/core/lib/transport/pid_controller.h', |
||||
'src/core/lib/transport/service_config.h', |
||||
'src/core/lib/transport/static_metadata.h', |
||||
'src/core/lib/transport/status_conversion.h', |
||||
'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/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/core/ext/filters/client_channel/resolver/fake/fake_resolver.h', |
||||
'src/core/ext/filters/client_channel/lb_policy/subchannel_list.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/server_load_reporting_filter.h', |
||||
'src/core/ext/filters/load_reporting/server_load_reporting_plugin.h', |
||||
'src/core/ext/filters/max_age/max_age_filter.h', |
||||
'src/core/ext/filters/message_size/message_size_filter.h', |
||||
'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h', |
||||
'src/core/ext/filters/workarounds/workaround_utils.h' |
||||
|
||||
ss.private_header_files = 'include/grpc++/impl/codegen/core_codegen.h', |
||||
'src/cpp/client/secure_credentials.h', |
||||
'src/cpp/common/secure_auth_context.h', |
||||
'src/cpp/server/secure_server_credentials.h', |
||||
'src/cpp/client/create_channel_internal.h', |
||||
'src/cpp/common/channel_filter.h', |
||||
'src/cpp/server/dynamic_thread_pool.h', |
||||
'src/cpp/server/health/default_health_check_service.h', |
||||
'src/cpp/server/health/health.pb.h', |
||||
'src/cpp/server/thread_pool_interface.h', |
||||
'src/cpp/thread_manager/thread_manager.h', |
||||
'src/core/lib/gpr/arena.h', |
||||
'src/core/lib/gpr/env.h', |
||||
'src/core/lib/gpr/fork.h', |
||||
'src/core/lib/gpr/mpscq.h', |
||||
'src/core/lib/gpr/murmur_hash.h', |
||||
'src/core/lib/gpr/spinlock.h', |
||||
'src/core/lib/gpr/string.h', |
||||
'src/core/lib/gpr/string_windows.h', |
||||
'src/core/lib/gpr/thd_internal.h', |
||||
'src/core/lib/gpr/time_precise.h', |
||||
'src/core/lib/gpr/tmpfile.h', |
||||
'src/core/lib/gprpp/abstract.h', |
||||
'src/core/lib/gprpp/atomic.h', |
||||
'src/core/lib/gprpp/atomic_with_atm.h', |
||||
'src/core/lib/gprpp/atomic_with_std.h', |
||||
'src/core/lib/gprpp/manual_constructor.h', |
||||
'src/core/lib/gprpp/memory.h', |
||||
'src/core/lib/profiling/timers.h', |
||||
'src/core/lib/backoff/backoff.h', |
||||
'src/core/lib/channel/channel_args.h', |
||||
'src/core/lib/channel/channel_stack.h', |
||||
'src/core/lib/channel/channel_stack_builder.h', |
||||
'src/core/lib/channel/connected_channel.h', |
||||
'src/core/lib/channel/context.h', |
||||
'src/core/lib/channel/handshaker.h', |
||||
'src/core/lib/channel/handshaker_factory.h', |
||||
'src/core/lib/channel/handshaker_registry.h', |
||||
'src/core/lib/compression/algorithm_metadata.h', |
||||
'src/core/lib/compression/compression_internal.h', |
||||
'src/core/lib/compression/message_compress.h', |
||||
'src/core/lib/compression/stream_compression.h', |
||||
'src/core/lib/compression/stream_compression_gzip.h', |
||||
'src/core/lib/compression/stream_compression_identity.h', |
||||
'src/core/lib/debug/stats.h', |
||||
'src/core/lib/debug/stats_data.h', |
||||
'src/core/lib/gprpp/debug_location.h', |
||||
'src/core/lib/gprpp/inlined_vector.h', |
||||
'src/core/lib/gprpp/orphanable.h', |
||||
'src/core/lib/gprpp/ref_counted.h', |
||||
'src/core/lib/gprpp/ref_counted_ptr.h', |
||||
'src/core/lib/http/format_request.h', |
||||
'src/core/lib/http/httpcli.h', |
||||
'src/core/lib/http/parser.h', |
||||
'src/core/lib/iomgr/block_annotate.h', |
||||
'src/core/lib/iomgr/call_combiner.h', |
||||
'src/core/lib/iomgr/closure.h', |
||||
'src/core/lib/iomgr/combiner.h', |
||||
'src/core/lib/iomgr/endpoint.h', |
||||
'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_epoll1_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', |
||||
'src/core/lib/iomgr/executor.h', |
||||
'src/core/lib/iomgr/gethostname.h', |
||||
'src/core/lib/iomgr/iocp_windows.h', |
||||
'src/core/lib/iomgr/iomgr.h', |
||||
'src/core/lib/iomgr/iomgr_internal.h', |
||||
'src/core/lib/iomgr/iomgr_posix.h', |
||||
'src/core/lib/iomgr/iomgr_uv.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/nameser.h', |
||||
'src/core/lib/iomgr/network_status_tracker.h', |
||||
'src/core/lib/iomgr/polling_entity.h', |
||||
'src/core/lib/iomgr/pollset.h', |
||||
'src/core/lib/iomgr/pollset_set.h', |
||||
'src/core/lib/iomgr/pollset_set_windows.h', |
||||
'src/core/lib/iomgr/pollset_uv.h', |
||||
'src/core/lib/iomgr/pollset_windows.h', |
||||
'src/core/lib/iomgr/port.h', |
||||
'src/core/lib/iomgr/resolve_address.h', |
||||
'src/core/lib/iomgr/resource_quota.h', |
||||
'src/core/lib/iomgr/sockaddr.h', |
||||
'src/core/lib/iomgr/sockaddr_posix.h', |
||||
'src/core/lib/iomgr/sockaddr_utils.h', |
||||
'src/core/lib/iomgr/sockaddr_windows.h', |
||||
'src/core/lib/iomgr/socket_factory_posix.h', |
||||
'src/core/lib/iomgr/socket_mutator.h', |
||||
'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', |
||||
'src/core/lib/iomgr/tcp_server.h', |
||||
'src/core/lib/iomgr/tcp_server_utils_posix.h', |
||||
'src/core/lib/iomgr/tcp_uv.h', |
||||
'src/core/lib/iomgr/tcp_windows.h', |
||||
'src/core/lib/iomgr/time_averaged_stats.h', |
||||
'src/core/lib/iomgr/timer.h', |
||||
'src/core/lib/iomgr/timer_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', |
||||
'src/core/lib/iomgr/wakeup_fd_cv.h', |
||||
'src/core/lib/iomgr/wakeup_fd_pipe.h', |
||||
'src/core/lib/iomgr/wakeup_fd_posix.h', |
||||
'src/core/lib/json/json.h', |
||||
'src/core/lib/json/json_common.h', |
||||
'src/core/lib/json/json_reader.h', |
||||
'src/core/lib/json/json_writer.h', |
||||
'src/core/lib/slice/b64.h', |
||||
'src/core/lib/slice/percent_encoding.h', |
||||
'src/core/lib/slice/slice_hash_table.h', |
||||
'src/core/lib/slice/slice_internal.h', |
||||
'src/core/lib/slice/slice_string_helpers.h', |
||||
'src/core/lib/surface/alarm_internal.h', |
||||
'src/core/lib/surface/api_trace.h', |
||||
'src/core/lib/surface/call.h', |
||||
'src/core/lib/surface/call_test_only.h', |
||||
'src/core/lib/surface/channel.h', |
||||
'src/core/lib/surface/channel_init.h', |
||||
'src/core/lib/surface/channel_stack_type.h', |
||||
'src/core/lib/surface/completion_queue.h', |
||||
'src/core/lib/surface/completion_queue_factory.h', |
||||
'src/core/lib/surface/event_string.h', |
||||
'src/core/lib/surface/init.h', |
||||
'src/core/lib/surface/lame_client.h', |
||||
'src/core/lib/surface/server.h', |
||||
'src/core/lib/surface/validate_metadata.h', |
||||
'src/core/lib/transport/bdp_estimator.h', |
||||
'src/core/lib/transport/byte_stream.h', |
||||
'src/core/lib/transport/connectivity_state.h', |
||||
'src/core/lib/transport/error_utils.h', |
||||
'src/core/lib/transport/http2_errors.h', |
||||
'src/core/lib/transport/metadata.h', |
||||
'src/core/lib/transport/metadata_batch.h', |
||||
'src/core/lib/transport/pid_controller.h', |
||||
'src/core/lib/transport/service_config.h', |
||||
'src/core/lib/transport/static_metadata.h', |
||||
'src/core/lib/transport/status_conversion.h', |
||||
'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/inproc/inproc_transport.h' |
||||
end |
||||
|
||||
s.subspec 'Tests' do |ss| |
||||
ss.header_mappings_dir = '.' |
||||
|
||||
ss.dependency "#{s.name}/Interface", version |
||||
ss.dependency "#{s.name}/Implementation", version |
||||
ss.dependency "gRPC-Core/Tests", grpc_version |
||||
|
||||
ss.source_files = 'test/cpp/util/create_test_channel.cc', |
||||
'test/cpp/util/string_ref_helper.cc', |
||||
'test/cpp/util/subprocess.cc', |
||||
'test/cpp/util/test_credentials_provider.cc', |
||||
'test/cpp/util/create_test_channel.h', |
||||
'test/cpp/util/string_ref_helper.h', |
||||
'test/cpp/util/subprocess.h', |
||||
'test/cpp/util/test_credentials_provider.h', |
||||
'test/core/util/test_config.h', |
||||
'test/core/end2end/data/ssl_test_data.h', |
||||
'test/core/security/oauth2_utils.h', |
||||
'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h', |
||||
'test/core/end2end/cq_verifier.h', |
||||
'test/core/end2end/fixtures/http_proxy_fixture.h', |
||||
'test/core/end2end/fixtures/proxy.h', |
||||
'test/core/iomgr/endpoint_tests.h', |
||||
'test/core/util/debugger_macros.h', |
||||
'test/core/util/grpc_profiler.h', |
||||
'test/core/util/histogram.h', |
||||
'test/core/util/memory_counters.h', |
||||
'test/core/util/mock_endpoint.h', |
||||
'test/core/util/parse_hexstring.h', |
||||
'test/core/util/passthru_endpoint.h', |
||||
'test/core/util/port.h', |
||||
'test/core/util/port_server_client.h', |
||||
'test/core/util/slice_splitter.h', |
||||
'test/core/util/tracer_util.h', |
||||
'test/core/util/trickle_endpoint.h', |
||||
'src/core/ext/filters/client_channel/backup_poller.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/transport/bin_decoder.h', |
||||
'src/core/ext/transport/chttp2/transport/bin_encoder.h', |
||||
'src/core/ext/transport/chttp2/transport/chttp2_transport.h', |
||||
'src/core/ext/transport/chttp2/transport/flow_control.h', |
||||
'src/core/ext/transport/chttp2/transport/frame.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_data.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_goaway.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_ping.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_rst_stream.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_settings.h', |
||||
'src/core/ext/transport/chttp2/transport/frame_window_update.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_encoder.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_parser.h', |
||||
'src/core/ext/transport/chttp2/transport/hpack_table.h', |
||||
'src/core/ext/transport/chttp2/transport/http2_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' |
||||
end |
||||
|
||||
s.prepare_command = <<-END_OF_COMMAND |
||||
find src/cpp/ -type f -exec sed -E -i'.back' 's;#include "third_party/nanopb/(.*)";#include <nanopb/\\1>;g' {} \\\; |
||||
find src/cpp/ -name "*.back" -type f -delete |
||||
find src/core/ -regex ".*\.h" -type f -exec sed -E -i'.back' 's;#include "third_party/nanopb/(.*)";#include <nanopb/\\1>;g' {} \\\; |
||||
find src/core/ -name "*.back" -type f -delete |
||||
END_OF_COMMAND |
||||
end |
@ -0,0 +1,48 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2017 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#ifndef GRPC_COMPRESSION_RUBY_H |
||||
#define GRPC_COMPRESSION_RUBY_H |
||||
|
||||
#include <grpc/impl/codegen/port_platform.h> |
||||
|
||||
#include <grpc/impl/codegen/compression_types.h> |
||||
#include <grpc/slice.h> |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
/** Parses the \a slice as a grpc_compression_algorithm instance and updating \a
|
||||
* algorithm following algorithm names compatible with Ruby. Returns 1 upon |
||||
* success, 0 otherwise. */ |
||||
GRPCAPI int grpc_compression_algorithm_parse_ruby( |
||||
grpc_slice value, grpc_compression_algorithm* algorithm); |
||||
|
||||
/** Updates \a name with the encoding name corresponding to a valid \a
|
||||
* algorithm. The \a name follows names compatible with Ruby. Note that \a name |
||||
* is statically allocated and must *not* be freed. Returns 1 upon success, 0 |
||||
* otherwise. */ |
||||
GRPCAPI int grpc_compression_algorithm_name_ruby( |
||||
grpc_compression_algorithm algorithm, const char** name); |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif /* GRPC_COMPRESSION_RUBY_H */ |
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,273 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2015 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
|
||||
#include <grpc/compression.h> |
||||
#include <grpc/support/useful.h> |
||||
|
||||
#include "src/core/lib/compression/algorithm_metadata.h" |
||||
#include "src/core/lib/compression/compression_internal.h" |
||||
#include "src/core/lib/surface/api_trace.h" |
||||
#include "src/core/lib/transport/static_metadata.h" |
||||
|
||||
/* Interfaces related to MD */ |
||||
|
||||
grpc_message_compression_algorithm |
||||
grpc_message_compression_algorithm_from_slice(grpc_slice str) { |
||||
if (grpc_slice_eq(str, GRPC_MDSTR_IDENTITY)) |
||||
return GRPC_MESSAGE_COMPRESS_NONE; |
||||
if (grpc_slice_eq(str, GRPC_MDSTR_DEFLATE)) |
||||
return GRPC_MESSAGE_COMPRESS_DEFLATE; |
||||
if (grpc_slice_eq(str, GRPC_MDSTR_GZIP)) return GRPC_MESSAGE_COMPRESS_GZIP; |
||||
return GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT; |
||||
} |
||||
|
||||
grpc_stream_compression_algorithm grpc_stream_compression_algorithm_from_slice( |
||||
grpc_slice str) { |
||||
if (grpc_slice_eq(str, GRPC_MDSTR_IDENTITY)) return GRPC_STREAM_COMPRESS_NONE; |
||||
if (grpc_slice_eq(str, GRPC_MDSTR_GZIP)) return GRPC_STREAM_COMPRESS_GZIP; |
||||
return GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT; |
||||
} |
||||
|
||||
grpc_mdelem grpc_message_compression_encoding_mdelem( |
||||
grpc_message_compression_algorithm algorithm) { |
||||
switch (algorithm) { |
||||
case GRPC_MESSAGE_COMPRESS_NONE: |
||||
return GRPC_MDELEM_GRPC_ENCODING_IDENTITY; |
||||
case GRPC_MESSAGE_COMPRESS_DEFLATE: |
||||
return GRPC_MDELEM_GRPC_ENCODING_DEFLATE; |
||||
case GRPC_MESSAGE_COMPRESS_GZIP: |
||||
return GRPC_MDELEM_GRPC_ENCODING_GZIP; |
||||
default: |
||||
break; |
||||
} |
||||
return GRPC_MDNULL; |
||||
} |
||||
|
||||
grpc_mdelem grpc_stream_compression_encoding_mdelem( |
||||
grpc_stream_compression_algorithm algorithm) { |
||||
switch (algorithm) { |
||||
case GRPC_STREAM_COMPRESS_NONE: |
||||
return GRPC_MDELEM_CONTENT_ENCODING_IDENTITY; |
||||
case GRPC_STREAM_COMPRESS_GZIP: |
||||
return GRPC_MDELEM_CONTENT_ENCODING_GZIP; |
||||
default: |
||||
break; |
||||
} |
||||
return GRPC_MDNULL; |
||||
} |
||||
|
||||
/* Interfaces performing transformation between compression algorithms and
|
||||
* levels. */ |
||||
grpc_message_compression_algorithm |
||||
grpc_compression_algorithm_to_message_compression_algorithm( |
||||
grpc_compression_algorithm algo) { |
||||
switch (algo) { |
||||
case GRPC_COMPRESS_MESSAGE_DEFLATE: |
||||
return GRPC_MESSAGE_COMPRESS_DEFLATE; |
||||
case GRPC_COMPRESS_MESSAGE_GZIP: |
||||
return GRPC_MESSAGE_COMPRESS_GZIP; |
||||
default: |
||||
return GRPC_MESSAGE_COMPRESS_NONE; |
||||
} |
||||
} |
||||
|
||||
grpc_stream_compression_algorithm |
||||
grpc_compression_algorithm_to_stream_compression_algorithm( |
||||
grpc_compression_algorithm algo) { |
||||
switch (algo) { |
||||
case GRPC_COMPRESS_STREAM_GZIP: |
||||
return GRPC_STREAM_COMPRESS_GZIP; |
||||
default: |
||||
return GRPC_STREAM_COMPRESS_NONE; |
||||
} |
||||
} |
||||
|
||||
uint32_t grpc_compression_bitset_to_message_bitset(uint32_t bitset) { |
||||
return bitset & ((1u << GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT) - 1); |
||||
} |
||||
|
||||
uint32_t grpc_compression_bitset_to_stream_bitset(uint32_t bitset) { |
||||
uint32_t identity = (bitset & 1u); |
||||
uint32_t other_bits = |
||||
(bitset >> (GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT - 1)) & |
||||
((1u << GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT) - 2); |
||||
return identity | other_bits; |
||||
} |
||||
|
||||
uint32_t grpc_compression_bitset_from_message_stream_compression_bitset( |
||||
uint32_t message_bitset, uint32_t stream_bitset) { |
||||
uint32_t offset_stream_bitset = |
||||
(stream_bitset & 1u) | |
||||
((stream_bitset & (~1u)) << (GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT - 1)); |
||||
return message_bitset | offset_stream_bitset; |
||||
} |
||||
|
||||
int grpc_compression_algorithm_from_message_stream_compression_algorithm( |
||||
grpc_compression_algorithm* algorithm, |
||||
grpc_message_compression_algorithm message_algorithm, |
||||
grpc_stream_compression_algorithm stream_algorithm) { |
||||
if (message_algorithm != GRPC_MESSAGE_COMPRESS_NONE && |
||||
stream_algorithm != GRPC_STREAM_COMPRESS_NONE) { |
||||
*algorithm = GRPC_COMPRESS_NONE; |
||||
return 0; |
||||
} |
||||
if (message_algorithm == GRPC_MESSAGE_COMPRESS_NONE) { |
||||
switch (stream_algorithm) { |
||||
case GRPC_STREAM_COMPRESS_NONE: |
||||
*algorithm = GRPC_COMPRESS_NONE; |
||||
return 1; |
||||
case GRPC_STREAM_COMPRESS_GZIP: |
||||
*algorithm = GRPC_COMPRESS_STREAM_GZIP; |
||||
return 1; |
||||
default: |
||||
*algorithm = GRPC_COMPRESS_NONE; |
||||
return 0; |
||||
} |
||||
} else { |
||||
switch (message_algorithm) { |
||||
case GRPC_MESSAGE_COMPRESS_NONE: |
||||
*algorithm = GRPC_COMPRESS_NONE; |
||||
return 1; |
||||
case GRPC_MESSAGE_COMPRESS_DEFLATE: |
||||
*algorithm = GRPC_COMPRESS_MESSAGE_DEFLATE; |
||||
return 1; |
||||
case GRPC_MESSAGE_COMPRESS_GZIP: |
||||
*algorithm = GRPC_COMPRESS_MESSAGE_GZIP; |
||||
return 1; |
||||
default: |
||||
*algorithm = GRPC_COMPRESS_NONE; |
||||
return 0; |
||||
} |
||||
} |
||||
return 0; |
||||
} |
||||
|
||||
/* Interfaces for message compression. */ |
||||
|
||||
int grpc_message_compression_algorithm_name( |
||||
grpc_message_compression_algorithm algorithm, const char** name) { |
||||
GRPC_API_TRACE( |
||||
"grpc_message_compression_algorithm_parse(algorithm=%d, name=%p)", 2, |
||||
((int)algorithm, name)); |
||||
switch (algorithm) { |
||||
case GRPC_MESSAGE_COMPRESS_NONE: |
||||
*name = "identity"; |
||||
return 1; |
||||
case GRPC_MESSAGE_COMPRESS_DEFLATE: |
||||
*name = "deflate"; |
||||
return 1; |
||||
case GRPC_MESSAGE_COMPRESS_GZIP: |
||||
*name = "gzip"; |
||||
return 1; |
||||
case GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT: |
||||
return 0; |
||||
} |
||||
return 0; |
||||
} |
||||
|
||||
/* TODO(dgq): Add the ability to specify parameters to the individual
|
||||
* compression algorithms */ |
||||
grpc_message_compression_algorithm grpc_message_compression_algorithm_for_level( |
||||
grpc_compression_level level, uint32_t accepted_encodings) { |
||||
GRPC_API_TRACE("grpc_message_compression_algorithm_for_level(level=%d)", 1, |
||||
((int)level)); |
||||
if (level > GRPC_COMPRESS_LEVEL_HIGH) { |
||||
gpr_log(GPR_ERROR, "Unknown message compression level %d.", (int)level); |
||||
abort(); |
||||
} |
||||
|
||||
const size_t num_supported = |
||||
GPR_BITCOUNT(accepted_encodings) - 1; /* discard NONE */ |
||||
if (level == GRPC_COMPRESS_LEVEL_NONE || num_supported == 0) { |
||||
return GRPC_MESSAGE_COMPRESS_NONE; |
||||
} |
||||
|
||||
GPR_ASSERT(level > 0); |
||||
|
||||
/* Establish a "ranking" or compression algorithms in increasing order of
|
||||
* compression. |
||||
* This is simplistic and we will probably want to introduce other dimensions |
||||
* in the future (cpu/memory cost, etc). */ |
||||
const grpc_message_compression_algorithm algos_ranking[] = { |
||||
GRPC_MESSAGE_COMPRESS_GZIP, GRPC_MESSAGE_COMPRESS_DEFLATE}; |
||||
|
||||
/* intersect algos_ranking with the supported ones keeping the ranked order */ |
||||
grpc_message_compression_algorithm |
||||
sorted_supported_algos[GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT]; |
||||
size_t algos_supported_idx = 0; |
||||
for (size_t i = 0; i < GPR_ARRAY_SIZE(algos_ranking); i++) { |
||||
const grpc_message_compression_algorithm alg = algos_ranking[i]; |
||||
for (size_t j = 0; j < num_supported; j++) { |
||||
if (GPR_BITGET(accepted_encodings, alg) == 1) { |
||||
/* if \a alg in supported */ |
||||
sorted_supported_algos[algos_supported_idx++] = alg; |
||||
break; |
||||
} |
||||
} |
||||
if (algos_supported_idx == num_supported) break; |
||||
} |
||||
|
||||
switch (level) { |
||||
case GRPC_COMPRESS_LEVEL_NONE: |
||||
abort(); /* should have been handled already */ |
||||
case GRPC_COMPRESS_LEVEL_LOW: |
||||
return sorted_supported_algos[0]; |
||||
case GRPC_COMPRESS_LEVEL_MED: |
||||
return sorted_supported_algos[num_supported / 2]; |
||||
case GRPC_COMPRESS_LEVEL_HIGH: |
||||
return sorted_supported_algos[num_supported - 1]; |
||||
default: |
||||
abort(); |
||||
}; |
||||
} |
||||
|
||||
int grpc_message_compression_algorithm_parse( |
||||
grpc_slice value, grpc_message_compression_algorithm* algorithm) { |
||||
if (grpc_slice_eq(value, GRPC_MDSTR_IDENTITY)) { |
||||
*algorithm = GRPC_MESSAGE_COMPRESS_NONE; |
||||
return 1; |
||||
} else if (grpc_slice_eq(value, GRPC_MDSTR_DEFLATE)) { |
||||
*algorithm = GRPC_MESSAGE_COMPRESS_DEFLATE; |
||||
return 1; |
||||
} else if (grpc_slice_eq(value, GRPC_MDSTR_GZIP)) { |
||||
*algorithm = GRPC_MESSAGE_COMPRESS_GZIP; |
||||
return 1; |
||||
} else { |
||||
return 0; |
||||
} |
||||
return 0; |
||||
} |
||||
|
||||
/* Interfaces for stream compression. */ |
||||
|
||||
int grpc_stream_compression_algorithm_parse( |
||||
grpc_slice value, grpc_stream_compression_algorithm* algorithm) { |
||||
if (grpc_slice_eq(value, GRPC_MDSTR_IDENTITY)) { |
||||
*algorithm = GRPC_STREAM_COMPRESS_NONE; |
||||
return 1; |
||||
} else if (grpc_slice_eq(value, GRPC_MDSTR_GZIP)) { |
||||
*algorithm = GRPC_STREAM_COMPRESS_GZIP; |
||||
return 1; |
||||
} else { |
||||
return 0; |
||||
} |
||||
return 0; |
||||
} |
@ -0,0 +1,86 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2017 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#ifndef GRPC_CORE_LIB_COMPRESSION_COMPRESSION_INTERNAL_H |
||||
#define GRPC_CORE_LIB_COMPRESSION_COMPRESSION_INTERNAL_H |
||||
|
||||
#include <grpc/impl/codegen/compression_types.h> |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
typedef enum { |
||||
GRPC_MESSAGE_COMPRESS_NONE = 0, |
||||
GRPC_MESSAGE_COMPRESS_DEFLATE, |
||||
GRPC_MESSAGE_COMPRESS_GZIP, |
||||
/* TODO(ctiller): snappy */ |
||||
GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT |
||||
} grpc_message_compression_algorithm; |
||||
|
||||
/** Stream compresssion algorithms supported by gRPC */ |
||||
typedef enum { |
||||
GRPC_STREAM_COMPRESS_NONE = 0, |
||||
GRPC_STREAM_COMPRESS_GZIP, |
||||
GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT |
||||
} grpc_stream_compression_algorithm; |
||||
|
||||
/* Interfaces performing transformation between compression algorithms and
|
||||
* levels. */ |
||||
|
||||
grpc_message_compression_algorithm |
||||
grpc_compression_algorithm_to_message_compression_algorithm( |
||||
grpc_compression_algorithm algo); |
||||
|
||||
grpc_stream_compression_algorithm |
||||
grpc_compression_algorithm_to_stream_compression_algorithm( |
||||
grpc_compression_algorithm algo); |
||||
|
||||
uint32_t grpc_compression_bitset_to_message_bitset(uint32_t bitset); |
||||
|
||||
uint32_t grpc_compression_bitset_to_stream_bitset(uint32_t bitset); |
||||
|
||||
uint32_t grpc_compression_bitset_from_message_stream_compression_bitset( |
||||
uint32_t message_bitset, uint32_t stream_bitset); |
||||
|
||||
int grpc_compression_algorithm_from_message_stream_compression_algorithm( |
||||
grpc_compression_algorithm* algorithm, |
||||
grpc_message_compression_algorithm message_algorithm, |
||||
grpc_stream_compression_algorithm stream_algorithm); |
||||
|
||||
/* Interfaces for message compression. */ |
||||
|
||||
int grpc_message_compression_algorithm_name( |
||||
grpc_message_compression_algorithm algorithm, const char** name); |
||||
|
||||
grpc_message_compression_algorithm grpc_message_compression_algorithm_for_level( |
||||
grpc_compression_level level, uint32_t accepted_encodings); |
||||
|
||||
int grpc_message_compression_algorithm_parse( |
||||
grpc_slice value, grpc_message_compression_algorithm* algorithm); |
||||
|
||||
/* Interfaces for stream compression. */ |
||||
|
||||
int grpc_stream_compression_algorithm_parse( |
||||
grpc_slice value, grpc_stream_compression_algorithm* algorithm); |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif /* GRPC_CORE_LIB_COMPRESSION_COMPRESSION_INTERNAL_H */ |
@ -0,0 +1,66 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2017 gRPC authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
#include <grpc/compression_ruby.h> |
||||
#include <grpc/support/useful.h> |
||||
|
||||
#include "src/core/lib/surface/api_trace.h" |
||||
#include "src/core/lib/transport/static_metadata.h" |
||||
|
||||
int grpc_compression_algorithm_parse_ruby( |
||||
grpc_slice name, grpc_compression_algorithm* algorithm) { |
||||
if (grpc_slice_eq(name, GRPC_MDSTR_IDENTITY)) { |
||||
*algorithm = GRPC_COMPRESS_NONE; |
||||
return 1; |
||||
} else if (grpc_slice_eq(name, GRPC_MDSTR_DEFLATE)) { |
||||
*algorithm = GRPC_COMPRESS_MESSAGE_DEFLATE; |
||||
return 1; |
||||
} else if (grpc_slice_eq(name, GRPC_MDSTR_GZIP)) { |
||||
*algorithm = GRPC_COMPRESS_MESSAGE_GZIP; |
||||
return 1; |
||||
} else if (grpc_slice_eq(name, GRPC_MDSTR_STREAM_SLASH_GZIP)) { |
||||
*algorithm = GRPC_COMPRESS_STREAM_GZIP; |
||||
return 1; |
||||
} else { |
||||
return 0; |
||||
} |
||||
return 0; |
||||
} |
||||
|
||||
int grpc_compression_algorithm_name_ruby(grpc_compression_algorithm algorithm, |
||||
const char** name) { |
||||
GRPC_API_TRACE("grpc_compression_algorithm_parse(algorithm=%d, name=%p)", 2, |
||||
((int)algorithm, name)); |
||||
switch (algorithm) { |
||||
case GRPC_COMPRESS_NONE: |
||||
*name = "identity"; |
||||
return 1; |
||||
case GRPC_COMPRESS_MESSAGE_DEFLATE: |
||||
*name = "deflate"; |
||||
return 1; |
||||
case GRPC_COMPRESS_MESSAGE_GZIP: |
||||
*name = "gzip"; |
||||
return 1; |
||||
case GRPC_COMPRESS_STREAM_GZIP: |
||||
*name = "stream/gzip"; |
||||
return 1; |
||||
case GRPC_COMPRESS_ALGORITHMS_COUNT: |
||||
return 0; |
||||
} |
||||
return 0; |
||||
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue