private ICollection <IStorageSerializer> ConfigureSerializers(AdoNetGrainStorageOptions options, IProviderRuntime providerRuntime) { var serializers = new List <IStorageSerializer>(); if (options.UseJsonFormat) { var typeResolver = providerRuntime.ServiceProvider.GetRequiredService <ITypeResolver>(); var jsonSettings = OrleansJsonSerializer.UpdateSerializerSettings(OrleansJsonSerializer.GetDefaultSerializerSettings(typeResolver, providerRuntime.GrainFactory), options.UseFullAssemblyNames, options.IndentJson, options.TypeNameHandling); options.ConfigureJsonSerializerSettings?.Invoke(jsonSettings); serializers.Add(new OrleansStorageDefaultJsonSerializer(jsonSettings, JsonFormatSerializerTag)); } if (options.UseXmlFormat) { serializers.Add(new OrleansStorageDefaultXmlSerializer(XmlFormatSerializerTag)); } //if none are set true, configure binary format serializer by default if (!options.UseXmlFormat && !options.UseJsonFormat) { serializers.Add(new OrleansStorageDefaultBinarySerializer(this.serializationManager, BinaryFormatSerializerTag)); } return(serializers); }
public AdoNetGrainStorage(ILogger <AdoNetGrainStorage> logger, IProviderRuntime providerRuntime, IOptions <AdoNetGrainStorageOptions> options, IOptions <SiloOptions> siloOptions, string name) { this.options = options.Value; this.providerRuntime = providerRuntime; this.name = name; this.logger = logger; this.serviceId = siloOptions.Value.ServiceId.ToString(); }
public AdoNetGrainStorage( ILogger <AdoNetGrainStorage> logger, IProviderRuntime providerRuntime, IOptions <AdoNetGrainStorageOptions> options, IOptions <ClusterOptions> clusterOptions, string name) { this.options = options.Value; this.providerRuntime = providerRuntime; this.name = name; this.logger = logger; this.serviceId = clusterOptions.Value.ServiceId; }
/// <summary> /// Returns a correct implementation of the persistence provider according to environment variables. /// </summary> /// <remarks>If the environment invariants have failed to hold upon creation of the storage provider, /// a <em>null</em> value will be provided.</remarks> public async Task <IGrainStorage> GetStorageProvider(string storageInvariant) { //Make sure the environment invariants hold before trying to give a functioning SUT instantiation. //This is done instead of the constructor to have more granularity on how the environment should be initialized. try { using (await StorageLock.LockAsync()) { if (AdoNetInvariants.Invariants.Contains(storageInvariant)) { if (!StorageProviders.ContainsKey(storageInvariant)) { Storage = Invariants.EnsureStorageForTesting(Invariants.ActiveSettings.ConnectionStrings.First(i => i.StorageInvariant == storageInvariant)); var options = new AdoNetGrainStorageOptions() { ConnectionString = Storage.Storage.ConnectionString, Invariant = storageInvariant }; var clusterOptions = new ClusterOptions() { ServiceId = Guid.NewGuid().ToString() }; var storageProvider = new AdoNetGrainStorage(DefaultProviderRuntime.ServiceProvider.GetService <ILogger <AdoNetGrainStorage> >(), DefaultProviderRuntime, Options.Create(options), Options.Create(clusterOptions), storageInvariant + "_StorageProvider"); ISiloLifecycleSubject siloLifeCycle = new SiloLifecycleSubject(NullLoggerFactory.Instance.CreateLogger <SiloLifecycleSubject>()); storageProvider.Participate(siloLifeCycle); await siloLifeCycle.OnStart(CancellationToken.None); StorageProviders[storageInvariant] = storageProvider; } } } } catch { StorageProviders.Add(storageInvariant, null); } return(StorageProviders[storageInvariant]); }
private ICollection <IStorageDeserializer> ConfigureDeserializers(AdoNetGrainStorageOptions options, IProviderRuntime providerRuntime) { var deserializers = new List <IStorageDeserializer>(); if (options.UseJsonFormat) { var jsonSettings = OrleansJsonSerializer.UpdateSerializerSettings(OrleansJsonSerializer.GetDefaultSerializerSettings(providerRuntime.ServiceProvider), options.UseFullAssemblyNames, options.IndentJson, options.TypeNameHandling); options.ConfigureJsonSerializerSettings?.Invoke(jsonSettings); deserializers.Add(new OrleansStorageDefaultJsonDeserializer(jsonSettings, JsonFormatSerializerTag)); } if (options.UseXmlFormat) { deserializers.Add(new OrleansStorageDefaultXmlDeserializer(XmlFormatSerializerTag)); } //if none are set true, configure binary format serializer by default if (!options.UseXmlFormat && !options.UseJsonFormat) { deserializers.Add(new OrleansStorageDefaultBinaryDeserializer(this.serializer, BinaryFormatSerializerTag)); } return(deserializers); }
private static void ConvertToAdoNetGrainStorageOptions <T>(Action <T> configureOptions, AdoNetGrainStorageOptions options) where T : AdoNetGrainStorageOptions, new() { var t = new T(); configureOptions(t); options.Invariant = t.Invariant; options.ConnectionString = t.ConnectionString; options.ConfigureJsonSerializerSettings = t.ConfigureJsonSerializerSettings; options.IndentJson = t.IndentJson; options.InitStage = t.InitStage; options.TypeNameHandling = t.TypeNameHandling; options.UseFullAssemblyNames = t.UseFullAssemblyNames; options.UseJsonFormat = t.UseJsonFormat; options.UseXmlFormat = t.UseXmlFormat; }