Exemplo n.º 1
0
        /// <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 <IStorageProvider> 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 properties = new Dictionary <string, string>();
                            properties["DataConnectionString"] = Storage.Storage.ConnectionString;
                            properties["AdoInvariant"]         = storageInvariant;

                            var config          = new ProviderConfiguration(properties, null);
                            var storageProvider = new AdoNetStorageProvider();
                            await storageProvider.Init(storageInvariant + "_StorageProvider", DefaultProviderRuntime, config);

                            StorageProviders[storageInvariant] = storageProvider;
                        }
                    }
                }
            }
            catch
            {
                StorageProviders.Add(storageInvariant, null);
            }

            return(StorageProviders[storageInvariant]);
        }
Exemplo n.º 2
0
 public StorageProvider GetStorageProvider()
 {
     if (_storageProvider == null)
     {
         _storageProvider = StorageProviders.Resolve(StorageProviderName);
         _storageProvider.Initialize();
     }
     return(_storageProvider);
 }
        internal SqlDbIndexesSchemaBuilder(ISqlStrings sqlStrings, StorageProviders providerType)
        {
            _sqlStrings = sqlStrings;
            _dataTypeTranslator = new SqlDbDataTypeTranslator();

            //TODO: IoC or Factory
            _columnGenerator = providerType == StorageProviders.Sql2008 ?
                (ISqlDbColumnGenerator)new SqlDbColumnGenerator() : new AzureDbColumnGenerator();
        }
Exemplo n.º 4
0
        protected SisoConnectionInfo(StorageProviders providerType, string connectionStringOrName)
        {
            Ensure.That(connectionStringOrName, "connectionStringOrName").IsNotNull();

            ProviderType = providerType;
            var connectionString = GetConnectionString(connectionStringOrName);

            ClientConnectionString = FormatDbConnectionString(connectionString);
            ServerConnectionString = FormatServerConnectionString(connectionString);
            DbName = ExtractDbName(ClientConnectionString);
        }
        protected SisoConnectionInfo(StorageProviders providerType, string connectionStringOrName)
        {
            Ensure.That(connectionStringOrName, "connectionStringOrName").IsNotNull();

            ProviderType = providerType;
            var connectionString = GetConnectionString(connectionStringOrName);

            ClientConnectionString = FormatDbConnectionString(connectionString);
            ServerConnectionString = FormatServerConnectionString(connectionString);
            DbName = ExtractDbName(ClientConnectionString);
        }
Exemplo n.º 6
0
 internal SqlStrings(StorageProviders storageProvider)
 {
     //switch (storageProvider)
     //{
     //    case StorageProviders.SqlAzure:
     //        _primary = AzureStrings;
     //        _secondary = Sql2008Strings;
     //        break;
     //    default:
     _primary = Sql2008Strings;
     _secondary = _primary;
     //        break;
     //}
 }
        protected SisoConnectionInfo(StorageProviders providerType, IConnectionString connectionString)
        {
            Ensure.That(connectionString, "connectionString").IsNotNull();

            ProviderType = providerType;
            EnsureCorrectProviderIfItExists(connectionString);

            ClientConnectionString = FormatConnectionString(connectionString);
            ServerConnectionString = FormatServerConnectionString(connectionString);
            BackgroundIndexing = ExtractBackgroundIndexing(ClientConnectionString);
            DbName = ExtractDbName(ClientConnectionString);

            if (BackgroundIndexing != BackgroundIndexing.Off)
                throw new SisoDbException(ExceptionMessages.ConnectionInfo_BackgroundIndexingNotSupported.Inject(ProviderType));
        }
 protected virtual void Dispose(bool disposing)
 {
     if (!disposed)
     {
         if (disposing)
         {
             foreach (IStorageProvider provider in StorageProviders)
             {
                 if (provider is IDisposable)
                 {
                     IDisposable disposableProvider = (IDisposable)provider;
                     disposableProvider.Dispose();
                 }
             }
             StorageProviders.Clear();        // Est-ce utile?
             enabledStorageProviders.Clear(); // Est-ce utile?
         }
         disposed = true;
     }
 }
Exemplo n.º 9
0
        /// <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]);
        }
 protected SqlServerProviderFactory(StorageProviders storageProvider, ISqlStatements sqlStatements)
 {
     ProviderType        = storageProvider;
     SqlStatements       = sqlStatements;
     ConnectionManagerFn = new Lazy <IConnectionManager>(CreateConnectionManager, LazyThreadSafetyMode.ExecutionAndPublication);
 }
 private void Initialize(IConnectionString connectionString)
 {
     ProviderType = (StorageProviders)Enum.Parse(typeof(StorageProviders), connectionString.Provider, true);
     ConnectionString = connectionString;
 }
 protected SqlServerConnectionInfo(StorageProviders providerType, string connectionStringOrName)
     : base(providerType, connectionStringOrName)
 {
 }
 protected SqlServerConnectionInfo(StorageProviders providerType, IConnectionString connectionString)
     : base(providerType, connectionString)
 {
     if (string.IsNullOrWhiteSpace(DbName))
         throw new SisoDbException(ExceptionMessages.ConnectionInfo_MissingName);
 }
 protected SqlServerConnectionInfo(StorageProviders providerType, string connectionStringOrName)
     : base(providerType, connectionStringOrName)
 {
 }