Beispiel #1
0
 public FileItem(FileInfo file, IStorageConfig configuration)
 {
     Configuration = configuration;
     URI           = new Uri(file.FullName);
     _file         = file;
     NativeObject  = _file;
 }
        private static IStorageContainer CreateCloudFileContainer(this Uri uri, IStorageConfig storageConfig = null)
        {
            IStorageContainer   result = null;
            IStorageConfig      scfg   = storageConfig ?? new StorageConfig();
            CloudStorageAccount sa     = scfg.GetStorageAccountByUri(uri);
            CloudFileDirectory  dir    = new CloudFileDirectory(uri, sa.Credentials);
            CloudFileShare      share  = dir.Share;

            share.CreateIfNotExistsAsync().GetAwaiter().GetResult();
            dir = share.GetRootDirectoryReference();

            var directories = uri.Segments.Select(seg => seg.TrimEnd('/')).Where(str => !string.IsNullOrEmpty(str)).ToList();

            directories.RemoveAt(0); // remove the share, and leave only dirs
            var n = 0;

            while (n < directories.Count)
            {
                dir = dir.GetDirectoryReference(directories[n]);
                dir.CreateIfNotExistsAsync().GetAwaiter().GetResult();
                n = n + 1;
            }
            result = new CloudFileItemDirectory(dir, scfg);
            return(result);
        }
Beispiel #3
0
 public FileItemDirectory(System.IO.DirectoryInfo dir, IStorageConfig configuration)
 {
     Configuration = configuration;
     URI           = new Uri(dir.FullName);
     _dir          = dir;
     NativeObject  = _dir;
 }
Beispiel #4
0
        protected IStorageItem CreateCloudFileItem(Uri uri, IStorageConfig storageConfig = null)
        {
            IStorageItem   result = null;
            IStorageConfig scfg   = storageConfig ?? new StorageConfig();

            result = new CloudFileItem(uri, scfg);
            return(result);
        }
        private static IStorageItem CreateCloudBlobItem(Uri uri, IStorageConfig storageConfig = null)
        {
            IStorageItem   result = null;
            IStorageConfig scfg   = storageConfig ?? new StorageConfig();

            result = new CloudBlobItem(uri, scfg);
            return(result);
        }
        public static IStorageItem CreateCloudFileItem(this Uri uri, IStorageConfig storageConfig = null)
        {
            IStorageItem   result = null;
            IStorageConfig scfg   = storageConfig ?? new StorageConfig();

            result = new CloudFileItem(uri, scfg);
            return(result);
        }
        private static IStorageItem CreateFileItem(Uri uri, IStorageConfig storageConfig = null)
        {
            IStorageItem result = null;

            //IStorageConfig scfg = storageConfig ?? new StorageConfig();
            result = new FileItem(uri.LocalPath);
            return(result);
        }
        public StorageService(
            IStorageConfig storageConfig
            )
        {
            var dbClient = new MongoClient(storageConfig.ConnectionString());
            var database = dbClient.GetDatabase(storageConfig.DatabaseName());

            _mongoCollection = database.GetCollection <T>(typeof(T).FullName);
        }
        /// <summary>
        /// Create stream processor
        /// </summary>
        /// <param name="config"></param>
        /// <param name="processor"></param>
        /// <param name="logger"></param>
        public BlobStreamProcessor(IStorageConfig config, IBlobProcessor processor,
                                   ILogger logger)
        {
            _logger    = logger ?? throw new ArgumentNullException(nameof(logger));
            _processor = processor ?? throw new ArgumentNullException(nameof(processor));
            var storageAccount = CloudStorageAccount.Parse(config.BlobStorageConnString);

            _client  = storageAccount.CreateCloudBlobClient();
            _options = new BlobRequestOptions();
        }
Beispiel #10
0
 public FileItem(Uri uri, IStorageConfig configuration)
 {
     Configuration = configuration;
     URI           = uri;
     if (IsCloudLocation)
     {
         throw new ArgumentException($"File cannot be instantiated for an invalid uri {uri}");
     }
     _file        = new FileInfo(URI.LocalPath);
     NativeObject = _file;
 }
Beispiel #11
0
        public CloudFileItem(CloudFile file, IStorageConfig configuration)
        {
            Configuration = configuration;
            CloudStorageAccount sa = new CloudStorageAccount(file.ServiceClient.Credentials, true);

            Configuration.AddOrUpdateAccount(sa);
            StorageAccount = sa;
            URI            = file.Uri;
            _file          = file;
            NativeObject   = _file;
        }
Beispiel #12
0
        public CloudBlobItem(CloudBlockBlob blob, IStorageConfig configuration)
        {
            Configuration = configuration;
            CloudStorageAccount sa = new CloudStorageAccount(blob.ServiceClient.Credentials, true);

            Configuration.AddOrUpdateAccount(sa);
            StorageAccount = sa;
            URI            = blob.Uri;
            _blob          = blob;
            NativeObject   = _blob;
        }
Beispiel #13
0
 public FileItemDirectory(Uri uri, IStorageConfig configuration)
 {
     Configuration = configuration;
     URI           = uri;
     if (IsCloudLocation)
     {
         throw new ArgumentException($"Directory cannot be instantiated for an invalid uri {uri}");
     }
     _dir         = new System.IO.DirectoryInfo(URI.LocalPath);
     NativeObject = _dir;
 }
Beispiel #14
0
        public CloudBlobItemContainer(CloudBlobContainer blobContainer, IStorageConfig configuration)
        {
            Configuration = configuration;
            CloudStorageAccount sa = new CloudStorageAccount(blobContainer.ServiceClient.Credentials, true);

            Configuration.AddOrUpdateAccount(sa);
            StorageAccount = sa;
            _dir           = blobContainer.GetDirectoryReference("notvaliddir").Parent;
            URI            = blobContainer.Uri;
            NativeObject   = _dir;
        }
Beispiel #15
0
        public CloudFileItemDirectory(CloudFileDirectory dir, IStorageConfig configuration)
        {
            Configuration = configuration;
            CloudStorageAccount sa = new CloudStorageAccount(dir.ServiceClient.Credentials, true);

            Configuration.AddOrUpdateAccount(sa);
            StorageAccount = sa;
            URI            = dir.Uri;
            _dir           = dir;
            NativeObject   = _dir;
        }
 public static IStorageContainer CreateContainer(this string location, IStorageConfig storageConfig)
 {
     try
     {
         return(CreateContainer(new Uri(location), new BaseUriResolver(), storageConfig));
     }
     catch (Exception ex)
     {
         return(CreateContainer(new Uri("file://" + System.IO.Path.GetFullPath(location)), new BaseUriResolver(), storageConfig));
     }
 }
Beispiel #17
0
 public CloudBlobItem(Uri uri, IStorageConfig configuration)
 {
     Configuration  = configuration;
     StorageAccount = configuration.GetStorageAccountByUri(uri);
     URI            = uri;
     if (!IsBlob)
     {
         throw new ArgumentException($"CloudBlob cannot be instantiated for an invalid uri {uri}");
     }
     _blob        = new CloudBlockBlob(URI, StorageAccount.Credentials);
     NativeObject = _blob;
 }
 public static IStorageItem CreateItem(this Uri uri, IStorageConfig storageConfig)
 {
     if (Regex.IsMatch(uri?.DnsSafeHost ?? "", StorageConfig.CloudFilePattern, RegexOptions.Compiled | RegexOptions.IgnoreCase))
     {
         return(CreateCloudFileItem(uri, storageConfig));
     }
     if (Regex.IsMatch(uri?.DnsSafeHost ?? "", StorageConfig.CloudBlobPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase))
     {
         return(CreateCloudBlobItem(uri, storageConfig));
     }
     return(CreateFileItem(uri));
 }
Beispiel #19
0
 public CloudFileItemDirectory(Uri uri, IStorageConfig configuration)
 {
     Configuration  = configuration;
     StorageAccount = configuration.GetStorageAccountByUri(uri);
     URI            = uri;
     if (!IsCloudFileDirectory)
     {
         throw new ArgumentException($"CloudDirectory cannot be instantiated for an invalid uri {uri}");
     }
     _dir         = new CloudFileDirectory(URI, StorageAccount.Credentials);
     NativeObject = _dir;
 }
Beispiel #20
0
 public virtual IStorageContainer CreateContainer(Uri uri, IStorageConfig storageConfig = null)
 {
     if (Regex.IsMatch(uri?.DnsSafeHost ?? "", StorageConfig.CloudFilePattern, RegexOptions.Compiled | RegexOptions.IgnoreCase))
     {
         return(CreateCloudFileContainer(uri, storageConfig));
     }
     if (Regex.IsMatch(uri?.DnsSafeHost ?? "", StorageConfig.CloudBlobPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase))
     {
         return(CreateCloudBlobContainer(uri, storageConfig));
     }
     return(CreateFileItemDirectory(uri));
 }
        private static IStorageContainer CreateCloudBlobContainer(Uri uri, IStorageConfig storageConfig = null)
        {
            IStorageContainer   result        = null;
            IStorageConfig      scfg          = storageConfig ?? new StorageConfig();
            CloudStorageAccount sa            = scfg.GetStorageAccountByUri(uri);
            CloudBlob           blob          = new CloudBlob(uri, sa.Credentials);
            CloudBlobContainer  blobContainer = blob.Container;

            blobContainer.CreateIfNotExistsAsync().GetAwaiter().GetResult();

            result = new CloudBlobItemContainer(blobContainer, scfg);
            return(result);
        }
Beispiel #22
0
        public CloudBlobItemContainer(Uri uri, IStorageConfig configuration)
        {
            Configuration  = configuration;
            StorageAccount = configuration.GetStorageAccountByUri(uri);
            URI            = uri;
            if (!IsBlobContainer)
            {
                throw new ArgumentException($"CloudDirectory cannot be instantiated for an invalid uri {uri}");
            }
            CloudBlob blob = new CloudBlob(new Uri(URI.AbsoluteUri.TrimEnd('/') + "/notvaliddir"), StorageAccount.Credentials);

            _dir         = blob.Parent;
            NativeObject = _dir;
        }
Beispiel #23
0
 public virtual IStorageItem CreateItem(string location, IStorageConfig storageConfig = null)
 {
     try
     {
         return(CreateItem(new Uri(location)));
     }
     catch (Exception ex)
     {
         if (!System.IO.Path.IsPathRooted(location))
         {
             return(CreateItem(new Uri(System.IO.Path.GetFullPath(location))));
         }
         throw ex;
     }
 }
Beispiel #24
0
        public async ValueTask <IStorageConfig> GetConfig(IServiceProvider serviceProvider, PrimaryKey primaryKey)
        {
            if (parameter.Singleton)
            {
                if (config == default)
                {
                    await seamphore.WaitAsync();

                    try
                    {
                        if (config == default)
                        {
                            config           = generator(serviceProvider, primaryKey, parameter);
                            config.Singleton = parameter.Singleton;
                            var initTask = config.Init();
                            if (!initTask.IsCompletedSuccessfully)
                            {
                                await initTask;
                            }
                        }
                    }
                    finally
                    {
                        seamphore.Release();
                    }
                }
                return(config);
            }
            else
            {
                var newConfig = generator(serviceProvider, primaryKey, parameter);
                newConfig.Singleton = parameter.Singleton;
                var initTask = newConfig.Init();
                if (!initTask.IsCompletedSuccessfully)
                {
                    await initTask;
                }
                return(newConfig);
            }
        }
        public static IStorageItem CreateItem(this string location, IUriResolver resolver = null, IStorageConfig storageConfig = null)
        {
            var r = resolver ?? new BaseUriResolver();

            try
            {
                return(r.CreateItem(new Uri(location), storageConfig));
            }
            catch (Exception ex)
            {
                return(r.CreateItem(new Uri("file://" + System.IO.Path.GetFullPath(location)), storageConfig));
            }
        }
 public static IStorageItem CreateItem(this string location, IStorageConfig storageConfig)
 {
     return(CreateItem(location, new BaseUriResolver(), storageConfig));
 }
Beispiel #27
0
 public ValueTask <IEventStorage <PrimaryKey> > CreateEventStorage <PrimaryKey>(IStorageConfig config, PrimaryKey grainId)
 {
     if (config.Singleton)
     {
         var storage = eventStorageDict.GetOrAdd(config, key =>
         {
             return(new EventStorage <PrimaryKey>(serviceProvider, config as StorageConfig));
         });
         return(new ValueTask <IEventStorage <PrimaryKey> >(storage as EventStorage <PrimaryKey>));
     }
     else
     {
         return(new ValueTask <IEventStorage <PrimaryKey> >(new EventStorage <PrimaryKey>(serviceProvider, config as StorageConfig)));
     }
 }
 /// <summary>
 /// 构造函数。
 /// </summary>
 /// <param name="config"></param>
 public FileDataStorage(IStorageConfig config)
 {
     this.connection = new SqlConnection(config.StorageSource);
 }
        public static IStorageItem CreateItem(this Uri uri, IUriResolver resolver = null, IStorageConfig storageConfig = null)
        {
            var r = resolver ?? new BaseUriResolver();

            return(r.CreateItem(uri, storageConfig));
        }
Beispiel #30
0
 public ValueTask <IArchiveStorage <PrimaryKey, State> > CreateArchiveStorage <PrimaryKey, State>(IStorageConfig config, PrimaryKey grainId)
     where State : class, new()
 {
     if (config.Singleton)
     {
         var storage = ArchiveStorageDict.GetOrAdd(config, key =>
         {
             return(new ArchiveStorage <PrimaryKey, State>(serializer, config as StorageConfig));
         });
         return(new ValueTask <IArchiveStorage <PrimaryKey, State> >(storage as IArchiveStorage <PrimaryKey, State>));
     }
     else
     {
         return(new ValueTask <IArchiveStorage <PrimaryKey, State> >(new ArchiveStorage <PrimaryKey, State>(serializer, config as StorageConfig)));
     }
 }
 /// <summary>
 /// 构造函数。
 /// </summary>
 public FileStorageFactory()
 {
     this.config = new StorageModuleConfiguration();
 }
Beispiel #32
0
 public ValueTask <IFollowSnapshotStorage <PrimaryKey> > CreateFollowSnapshotStorage <PrimaryKey>(IStorageConfig config, PrimaryKey grainId)
 {
     if (config.Singleton)
     {
         var storage = FollowSnapshotStorageDict.GetOrAdd(config, key =>
         {
             return(new FollowSnapshotStorage <PrimaryKey>(config as StorageConfig));
         });
         return(new ValueTask <IFollowSnapshotStorage <PrimaryKey> >(storage as IFollowSnapshotStorage <PrimaryKey>));
     }
     else
     {
         return(new ValueTask <IFollowSnapshotStorage <PrimaryKey> >(new FollowSnapshotStorage <PrimaryKey>(config as StorageConfig)));
     }
 }