Inheritance: RecordParser, IRecordParser
Ejemplo n.º 1
0
        public CsvRepositoryTest()
        {
            // Определение пути тестовой директории
            _testDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "ExpertSystem");
            // Создание тестовой директории
            Directory.CreateDirectory(_testDir);
            // Определение имени тестового CSV файла
            _testCsvFileName = Path.Combine(_testDir, "csvTest.csv");
            // Определение имени тестового WAL файла
            _testWalFileName = Path.Combine(_testDir, "walTest.txt");
            // Обновление тестовых CSV данных
            UpdateTestCsvData();
            // Создание мока репозитория
            var serializer = new CustomSocketSerializer();
            var parser     = new CsvRecordParser <CustomSocket>(serializer);
            var options    = new CsvRepositoryOptions
            {
                CsvFileName    = _testCsvFileName,
                WalFileName    = _testWalFileName,
                IdPropertyName = "SocketName"
            };

            _repositoryMock = new CsvRepository <CustomSocket>(serializer, parser, options);
            // Синхронизируем репозиторий
            UpdateTestWalData();
            _repositoryMock.Sync();
        }
Ejemplo n.º 2
0
        /// <summary>Конструктор репозитория</summary>
        /// <param name="options">Опции репозитория</param>
        /// <param name="serializer">Расширение данного типа</param>
        /// <param name="parser">Парсер данного типа</param>
        public CsvRepository(ICsvRecordSerializer <T> serializer, CsvRecordParser <T> parser,
                             CsvRepositoryOptions options)
        {
            _recordSerializer = serializer;
            _walSerializer    = new WalEntrySerializer <T>(serializer);
            _walWriter        = new WalWriter(options.WalFileName);
            _parser           = parser;
            _options          = options;

            // Проверка существования CSV файла
            if (!File.Exists(_options.CsvFileName))
            {
                throw new FileNotFoundException($"Файл {_options.CsvFileName} не найден");
            }

            // Запустить записыватель
            _walWriter.Run();
        }
Ejemplo n.º 3
0
        private Program(ServerProgramOptions options) : base(options)
        {
            var dataPath = Path.Combine(GetThisFileDirectory(), "..", "..", "data", "csvdb");

            var socketSerializer = new CustomSocketSerializer();
            var socketParser     = new CsvRecordParser <CustomSocket>(socketSerializer);
            var socketOptions    = new CsvRepositoryOptions
            {
                IdPropertyName = "SocketName",
                CsvFileName    = Path.Combine(dataPath, "socket.csv"),
                WalFileName    = Path.Combine(dataPath, "wal_socket.txt")
            };
            var socketsRepository =
                new CsvRepository <CustomSocket>(socketSerializer, socketParser, socketOptions).Sync();
            var socketService = new SocketService(socketsRepository);

            var socketGroupSerializer = new SocketGroupSerializer();
            var socketGroupParser     = new CsvRecordParser <SocketGroup>(socketGroupSerializer);
            var socketGroupOptions    = new CsvRepositoryOptions
            {
                IdPropertyName = "GroupName",
                CsvFileName    = Path.Combine(dataPath, "socketGroup.csv"),
                WalFileName    = Path.Combine(dataPath, "wal_socketGroup.txt")
            };
            var socketGroupRepository =
                new CsvRepository <SocketGroup>(socketGroupSerializer, socketGroupParser, socketGroupOptions).Sync();
            var socketGroupService = new GroupService(socketGroupRepository);

            var socketExchangeOptions = new SocketExchangeOptions {
                Version = Options.Version, Debug = options.Debug
            };
            var socketExchange = new SocketExchangeImpl(socketService, socketGroupService, socketExchangeOptions);

            Server = new Grpc.Core.Server
            {
                Services = { SocketExchange.BindService(socketExchange) },
                Ports    = { new ServerPort("localhost", Options.Port, ServerCredentials.Insecure) }
            };
        }
Ejemplo n.º 4
0
        private async Task LoadSockets(string fileName)
        {
            try
            {
                var sockets      = new List <CustomSocket>();
                var socketParser = new CsvRecordParser <CustomSocket>(new CustomSocketSerializer());
                using (var csvReader = new StreamReader(File.OpenRead(fileName)))
                {
                    foreach (var record in socketParser.ParseRecords(csvReader))
                    {
                        sockets.Add(record);
                    }
                }

                var upsertSockets  = sockets.Select(p => Client.UpsertSocketAsync(p).ResponseAsync);
                var createdSockets = await Task.WhenAll(upsertSockets);

                Console.WriteLine($"Загрузка разъемов ({createdSockets.Length}) из CSV-файла завершена успешно");
            }
            catch (Exception e)
            {
                WritePaddedTop(e.Message);
            }
        }
 public CsvRecordParserTest()
 {
     _socketParser      = new CsvRecordParser <CustomSocket>(new CustomSocketSerializer());
     _socketGroupParser = new CsvRecordParser <SocketGroup>(new SocketGroupSerializer());
 }