/// <summary> /// Returns a new <see cref="CallSettings"/> with the specified expiration, /// merged with the (optional) original settings specified by <paramref name="settings"/>. /// </summary> /// <param name="settings">Original settings. May be null, in which case the returned settings /// will only contain the expiration.</param> /// <param name="expiration">Expiration to use in the returned settings, possibly as part of a retry. May be null, /// in which case any expiration in <paramref name="settings"/> is not present in the new call settings. If /// both this and <paramref name="settings"/> are null, the return value is null.</param> /// <returns>A new set of call settings with the specified expiration, or null of both parameters are null.</returns> public static CallSettings WithExpiration( this CallSettings settings, Expiration expiration) => settings == null ? CallSettings.FromExpiration(expiration) : new CallSettings(settings.CancellationToken, expiration, settings.Retry, settings.HeaderMutation, settings.WriteOptions, settings.PropagationToken, settings.ResponseMetadataHandler, settings.TrailingMetadataHandler);
/// <summary> /// Returns a new <see cref="CallSettings"/> with the specified expiration, /// merged with the (optional) original settings specified by <paramref name="settings"/>. /// </summary> /// <param name="settings">Original settings. May be null, in which case the returned settings /// will only contain the expiration.</param> /// <param name="expiration">Expiration to use in the returned settings, possibly as part of a retry. May be null, /// in which case any expiration in <paramref name="settings"/> is not present in the new call settings. If /// both this and <paramref name="settings"/> are null, the return value is null.</param> /// <returns>A new set of call settings with the specified expiration, or null of both parameters are null.</returns> public static CallSettings WithExpiration( this CallSettings settings, Expiration expiration) => settings == null ? CallSettings.FromExpiration(expiration) #pragma warning disable CS0618 // Type or member is obsolete // But as long as user code can specify credentials we should continue to respect that. : new CallSettings(settings.CancellationToken, settings.Credentials, expiration, settings.Retry, settings.HeaderMutation, settings.WriteOptions, settings.PropagationToken, settings.ResponseMetadataHandler, settings.TrailingMetadataHandler);