コード例 #1
0
 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);
 }
コード例 #2
0
 public CompatibilityDirectorManager(IServiceProvider serviceProvider, CompatibilityStrategy defaultCompatibilityStrategy)
 {
     this.serviceProvider        = serviceProvider;
     this.strategyFromConfig     = defaultCompatibilityStrategy;
     this.compatibilityDirectors = new Dictionary <int, ICompatibilityDirector>();
     Default = ResolveVersionDirector(serviceProvider, defaultCompatibilityStrategy);
 }
コード例 #3
0
 public IReadOnlyList <ushort> GetSuitableVersion(ushort requestedVersion, IReadOnlyList <ushort> availableVersions, ICompatibilityDirector compatibilityDirector)
 {
     return(new[]
     {
         availableVersions.Where(v => compatibilityDirector.IsCompatible(requestedVersion, v)).Max()
     });
 }
コード例 #4
0
        public void SetStrategy(CompatibilityStrategy strategy)
        {
            var director = ResolveVersionDirector(this.serviceProvider, strategy ?? this.strategyFromConfig);

            Default = director;
        }
コード例 #5
0
        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 });
        }
コード例 #6
0
 public ushort[] GetSuitableVersion(ushort requestedVersion, ushort[] availableVersions, ICompatibilityDirector compatibilityDirector)
 {
     return(new[]
     {
         availableVersions.Where(v => compatibilityDirector.IsCompatible(requestedVersion, v)).Min()
     });
 }
コード例 #7
0
 public CompatibilityDirectorManager(IServiceProvider serviceProvider, CompatibilityStrategy defaultCompatibilityStrategy)
 {
     this.serviceProvider = serviceProvider;
     Default = ResolveVersionDirector(serviceProvider, defaultCompatibilityStrategy);
 }