Esempio n. 1
0
 public StorageNop(string name, StorageBackendOptions options, ILogger <StorageNop> logger) : base(name, options, logger)
 {
     if (logger.IsEnabled(LogLevel.Trace))
     {
         logger.LogTrace($"constructor({name}, ...)");
     }
 }
Esempio n. 2
0
 protected StorageBackend(string name, StorageBackendOptions options, ILogger <StorageBackend> logger)
 {
     Name    = name;
     Options = options;
     Logger  = logger;
     if (Logger.IsEnabled(LogLevel.Trace))
     {
         Logger.LogTrace($"constructor({name},{{ type:{options.Type} }})");
     }
 }
Esempio n. 3
0
        public static StorageBackend GetStorage(string?name,
                                                [DisallowNull] StorageBackendOptions options,
                                                [DisallowNull] ILoggerFactory loggerFactory)
        {
            var logger = loggerFactory.CreateLogger <StorageBackend>();

            if (logger.IsEnabled(LogLevel.Trace))
            {
                logger.LogTrace($"name: {name}, options: {JsonConvert.SerializeObject(options)}");
            }
            if (string.IsNullOrEmpty(name))
            {
                if (options.Type != StorageBackendType.Nop)
                {
                    throw new ArgumentException("storage have to be `nop` with a un-named storage");
                }
                name = "nop";
            }
            switch (options.Type)
            {
            case StorageBackendType.File:
                return(new StorageFile(name, (StorageFileOptions)options, loggerFactory.CreateLogger <StorageFile>()));

            case StorageBackendType.Nop:
                return(new StorageNop(name, (StorageNopOptions)options, loggerFactory.CreateLogger <StorageNop>()));

            case StorageBackendType.S3:
                return(new StorageS3(name, (StorageS3Options)options, loggerFactory.CreateLogger <StorageS3>()));

            case StorageBackendType.Obs:
                return(new StorageObs(name, (StorageObsOptions)options, loggerFactory.CreateLogger <StorageObs>()));

            default:
                throw new InvalidOperationException($"backend unknown: {options.Type}");
            }
        }