diff options
author | ncteisen <ncteisen@gmail.com> | 2018-06-28 00:12:02 -0700 |
---|---|---|
committer | ncteisen <ncteisen@gmail.com> | 2018-06-28 00:12:02 -0700 |
commit | 8db7788d46fcdf9f35e8708e3b04bc4753f9f288 (patch) | |
tree | d321282205f58aa6dad45c29f4c3ab9331553436 /src/objective-c/GRPCClient | |
parent | 0d878eae6cedf32e6e77e02f4c29ec232b41eb63 (diff) | |
parent | 28512108da77ccbc7954642c71312425744dfe19 (diff) |
Merge branch 'master' of https://github.com/grpc/grpc into serialization
Diffstat (limited to 'src/objective-c/GRPCClient')
-rw-r--r-- | src/objective-c/GRPCClient/GRPCCall+ChannelArg.h | 15 | ||||
-rw-r--r-- | src/objective-c/GRPCClient/GRPCCall+ChannelArg.m | 15 | ||||
-rw-r--r-- | src/objective-c/GRPCClient/private/GRPCHost.h | 5 | ||||
-rw-r--r-- | src/objective-c/GRPCClient/private/GRPCHost.m | 15 |
4 files changed, 50 insertions, 0 deletions
diff --git a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h index c05ba54c99..803f19dedf 100644 --- a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h +++ b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h @@ -55,4 +55,19 @@ typedef NS_ENUM(NSInteger, GRPCCompressAlgorithm) { timeout:(int)timeout forHost:(nonnull NSString *)host; +/** Enable/Disable automatic retry of gRPC calls on the channel. If automatic retry is enabled, the + * retry is controlled by server's service config. If automatic retry is disabled, failed calls are + * immediately returned to the application layer. */ ++ (void)enableRetry:(BOOL)enabled forHost:(nonnull NSString *)host; + +/** Set channel connection timeout and backoff parameters. All parameters are positive integers in + * milliseconds. Set a parameter to 0 to make gRPC use default value for that parameter. + * + * Refer to gRPC's doc at https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md for the + * details of each parameter. */ ++ (void)setMinConnectTimeout:(unsigned int)timeout + initialBackoff:(unsigned int)initialBackoff + maxBackoff:(unsigned int)maxBackoff + forHost:(nonnull NSString *)host; + @end diff --git a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m index 8f9c1b90ce..0e631fb3ad 100644 --- a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m +++ b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m @@ -64,4 +64,19 @@ hostConfig.keepaliveTimeout = timeout; } ++ (void)enableRetry:(BOOL)enabled forHost:(nonnull NSString *)host { + GRPCHost *hostConfig = [GRPCHost hostWithAddress:host]; + hostConfig.retryEnabled = enabled; +} + ++ (void)setMinConnectTimeout:(unsigned int)timeout + initialBackoff:(unsigned int)initialBackoff + maxBackoff:(unsigned int)maxBackoff + forHost:(nonnull NSString *)host { + GRPCHost *hostConfig = [GRPCHost hostWithAddress:host]; + hostConfig.minConnectTimeout = timeout; + hostConfig.initialConnectBackoff = initialBackoff; + hostConfig.maxConnectBackoff = maxBackoff; +} + @end diff --git a/src/objective-c/GRPCClient/private/GRPCHost.h b/src/objective-c/GRPCClient/private/GRPCHost.h index d9916d9303..291b07df37 100644 --- a/src/objective-c/GRPCClient/private/GRPCHost.h +++ b/src/objective-c/GRPCClient/private/GRPCHost.h @@ -38,6 +38,11 @@ struct grpc_channel_credentials; @property(nonatomic) int keepaliveInterval; @property(nonatomic) int keepaliveTimeout; @property(nonatomic) id logContext; +@property(nonatomic) BOOL retryEnabled; + +@property(nonatomic) unsigned int minConnectTimeout; +@property(nonatomic) unsigned int initialConnectBackoff; +@property(nonatomic) unsigned int maxConnectBackoff; /** The following properties should only be modified for testing: */ diff --git a/src/objective-c/GRPCClient/private/GRPCHost.m b/src/objective-c/GRPCClient/private/GRPCHost.m index 348989904a..2e9f9f243b 100644 --- a/src/objective-c/GRPCClient/private/GRPCHost.m +++ b/src/objective-c/GRPCClient/private/GRPCHost.m @@ -85,6 +85,7 @@ static NSMutableDictionary *kHostCache; _secure = YES; kHostCache[address] = self; _compressAlgorithm = GRPC_COMPRESS_NONE; + _retryEnabled = YES; } #ifndef GRPC_CFSTREAM [GRPCConnectivityMonitor registerObserver:self selector:@selector(connectivityChange:)]; @@ -240,6 +241,20 @@ static NSMutableDictionary *kHostCache; args[@GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER] = [NSNumber numberWithInt:1]; } + if (_retryEnabled == NO) { + args[@GRPC_ARG_ENABLE_RETRIES] = [NSNumber numberWithInt:0]; + } + + if (_minConnectTimeout > 0) { + args[@GRPC_ARG_MIN_RECONNECT_BACKOFF_MS] = [NSNumber numberWithInt:_minConnectTimeout]; + } + if (_initialConnectBackoff > 0) { + args[@GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS] = [NSNumber numberWithInt:_initialConnectBackoff]; + } + if (_maxConnectBackoff > 0) { + args[@GRPC_ARG_MAX_RECONNECT_BACKOFF_MS] = [NSNumber numberWithInt:_maxConnectBackoff]; + } + return args; } |