ProjectArcade

Форк
0
/
DokanInstanceBuilder.cs 
64 строки · 2.1 Кб
1
using System;
2
using System.Collections.Generic;
3
using System.Diagnostics.CodeAnalysis;
4
using System.Linq;
5
using System.Text;
6
using System.Threading.Tasks;
7
using DokanNet.Logging;
8
using DokanNet.Native;
9

10
namespace DokanNet
11
{
12
    public class DokanInstanceBuilder
13
    {
14
        public delegate void OptionsConfigurationDelegate(DOKAN_OPTIONS options);
15
        /// <summary>
16
        /// The Dokan version that DokanNet is compatible with.
17
        /// </summary>
18
        /// <see cref="DOKAN_OPTIONS.Version"/>
19
        public const ushort DOKAN_VERSION = 200;
20
        private readonly DOKAN_OPTIONS _options;
21
        [SuppressMessage("CodeQuality", "IDE0052:Remove unread private members", Justification = "Dokan instance isn't really needed, a reference is kept to enforce a workflow")]
22
        private readonly Dokan _dokan;
23
        private ILogger _logger;
24

25
        public DokanInstanceBuilder(Dokan dokan)
26
        {
27
            _logger = new NullLogger();
28
            _options = new DOKAN_OPTIONS
29
            {
30
                Version = DOKAN_VERSION,
31
                MountPoint = "",
32
                UNCName = String.Empty,
33
                SingleThread = false,
34
                Options = DokanOptions.FixedDrive,
35
                TimeOut = TimeSpan.FromSeconds(20),
36
                AllocationUnitSize = 512u,
37
                SectorSize = 512u,
38
                VolumeSecurityDescriptorLength = 0,
39

40
            };
41
            _dokan = dokan;
42
        }
43
        public DokanInstanceBuilder ConfigureLogger(Func<ILogger> IlogegrFactory)
44
        {
45
            _logger = IlogegrFactory();
46
            return this;
47
        }
48
        public DokanInstanceBuilder ConfigureOptions(OptionsConfigurationDelegate optionsConfigurationDelegate)
49
        {
50
            optionsConfigurationDelegate(_options);
51
            return this;
52
        }
53
        public DokanInstanceBuilder Validate()
54
        {
55
            // throw on errors
56
            return this;
57
        }
58
        public DokanInstance Build(IDokanOperations operations)
59
        {
60
            return new DokanInstance(_logger, _options, operations);
61
        }
62

63
    }
64
}
65

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.