1 /* 2 * 3 * Copyright 2015 gRPC authors. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 */ 18 19 #import <Foundation/Foundation.h> 20 21 #import <grpc/impl/compression_types.h> 22 23 #import "GRPCChannelFactory.h" 24 25 #import <GRPCClient/GRPCCallOptions.h> 26 27 NS_ASSUME_NONNULL_BEGIN 28 29 @class GRPCCompletionQueue; 30 struct grpc_call; 31 struct grpc_channel_credentials; 32 33 @interface GRPCHost : NSObject 34 35 + (void)resetAllHostSettings; 36 37 @property(nonatomic, readonly) NSString *address; 38 @property(nonatomic, copy, nullable) NSString *userAgentPrefix; 39 @property(nonatomic, copy, nullable) NSString *userAgentSuffix; 40 @property(nonatomic) grpc_compression_algorithm compressAlgorithm; 41 @property(nonatomic) int keepaliveInterval; 42 @property(nonatomic) int keepaliveTimeout; 43 @property(nonatomic) id logContext; 44 @property(nonatomic) BOOL retryEnabled; 45 46 @property(nonatomic) unsigned int minConnectTimeout; 47 @property(nonatomic) unsigned int initialConnectBackoff; 48 @property(nonatomic) unsigned int maxConnectBackoff; 49 50 @property(nonatomic) id<GRPCChannelFactory> channelFactory; 51 52 /** The following properties should only be modified for testing: */ 53 54 @property(nonatomic, copy, nullable) NSString *hostNameOverride; 55 56 /** The default response size limit is 4MB. Set this to override that default. */ 57 @property(nonatomic) NSUInteger responseSizeLimitOverride; 58 59 - (nullable instancetype)init NS_UNAVAILABLE; 60 /** Host objects initialized with the same address are the same. */ 61 + (nullable instancetype)hostWithAddress:(NSString *)address; 62 - (nullable instancetype)initWithAddress:(NSString *)address NS_DESIGNATED_INITIALIZER; 63 - (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCerts 64 withPrivateKey:(nullable NSString *)pemPrivateKey 65 withCertChain:(nullable NSString *)pemCertChain 66 error:(NSError **)errorPtr; 67 68 @property(atomic) GRPCTransportType transportType; 69 70 + (GRPCCallOptions *)callOptionsForHost:(NSString *)host; 71 72 @end 73 74 NS_ASSUME_NONNULL_END 75