public CompatibilityDirectorManager(IServiceProvider serviceProvider, IOptions <GrainVersioningOptions> options) { this.serviceProvider = serviceProvider; this.strategyFromConfig = serviceProvider.GetRequiredServiceByName <CompatibilityStrategy>(options.Value.DefaultCompatibilityStrategy); this.compatibilityDirectors = new Dictionary <GrainInterfaceType, ICompatibilityDirector>(); Default = ResolveVersionDirector(serviceProvider, this.strategyFromConfig); }
public CompatibilityDirectorManager(IServiceProvider serviceProvider, CompatibilityStrategy defaultCompatibilityStrategy) { this.serviceProvider = serviceProvider; this.strategyFromConfig = defaultCompatibilityStrategy; this.compatibilityDirectors = new Dictionary <int, ICompatibilityDirector>(); Default = ResolveVersionDirector(serviceProvider, defaultCompatibilityStrategy); }
public IReadOnlyList <ushort> GetSuitableVersion(ushort requestedVersion, IReadOnlyList <ushort> availableVersions, ICompatibilityDirector compatibilityDirector) { return(new[] { availableVersions.Where(v => compatibilityDirector.IsCompatible(requestedVersion, v)).Max() }); }
public void SetStrategy(CompatibilityStrategy strategy) { var director = ResolveVersionDirector(this.serviceProvider, strategy ?? this.strategyFromConfig); Default = director; }
public IReadOnlyList <ushort> GetSuitableVersion(ushort requestedVersion, IReadOnlyList <ushort> availableVersions, ICompatibilityDirector compatibilityDirector) { var max = int.MinValue; foreach (var version in availableVersions) { if (compatibilityDirector.IsCompatible(requestedVersion, version) && version > max) { max = version; } } if (max < 0) { return(Array.Empty <ushort>()); } return(new[] { (ushort)max }); }
public ushort[] GetSuitableVersion(ushort requestedVersion, ushort[] availableVersions, ICompatibilityDirector compatibilityDirector) { return(new[] { availableVersions.Where(v => compatibilityDirector.IsCompatible(requestedVersion, v)).Min() }); }
public CompatibilityDirectorManager(IServiceProvider serviceProvider, CompatibilityStrategy defaultCompatibilityStrategy) { this.serviceProvider = serviceProvider; Default = ResolveVersionDirector(serviceProvider, defaultCompatibilityStrategy); }