Пример #1
0
        /// <summary>
        /// возвращает список элементов для добавления в базу
        /// </summary>
        private List <CheckPointEntry> GetData()
        {
            var listPoint = new List <CheckPointEntry>();

            foreach (var reader in listReader)
            {
                reader.SendRequest();
            }
            Thread.Sleep(500);
            foreach (var reader in listReader)
            {
                string responsy = reader.GetResponsу();
                if (CheckData(responsy))
                {
                    var entryPoint = new CheckPointEntry
                    {
                        CardNumber   = responsy,
                        DeviceNumber = reader.DeviceNumber,
                        CheckDate    = DateTime.Now
                    };
                    listPoint.Add(entryPoint);
                }
                view.ShowText(responsy);
            }
            return(listPoint);
        }
Пример #2
0
        private LogCreator LogFile(params Entry[] entries)
        {
            return((logVersion, positions) =>
            {
                try
                {
                    AtomicLong lastTxId = new AtomicLong();
                    _logVersionRepository.CurrentLogVersion = logVersion;
                    LifeSupport logFileLife = new LifeSupport();
                    logFileLife.start();
                    logFileLife.add(_logFiles);
                    LogFile logFile = _logFiles.LogFile;
                    try
                    {
                        FlushablePositionAwareChannel writeChannel = logFile.Writer;
                        LogPositionMarker positionMarker = new LogPositionMarker();
                        LogEntryWriter writer = new LogEntryWriter(writeChannel);
                        foreach (Entry entry in entries)
                        {
                            LogPosition currentPosition = writeChannel.getCurrentPosition(positionMarker).newPosition();
                            positions.put(entry, currentPosition);
                            if (entry is StartEntry)
                            {
                                writer.writeStartEntry(0, 0, 0, 0, new sbyte[0]);
                            }
                            else if (entry is CommitEntry)
                            {
                                CommitEntry commitEntry = ( CommitEntry )entry;
                                writer.writeCommitEntry(commitEntry.TxId, 0);
                                lastTxId.set(commitEntry.TxId);
                            }
                            else if (entry is CheckPointEntry)
                            {
                                CheckPointEntry checkPointEntry = ( CheckPointEntry )entry;
                                Entry target = checkPointEntry.WithPositionOfEntry;
                                LogPosition logPosition = target != null?positions.get(target) : currentPosition;

                                Debug.Assert(logPosition != null, "No registered log position for " + target);
                                writer.writeCheckPointEntry(logPosition);
                            }
                            else if (entry is PositionEntry)
                            {
                                // Don't write anything, this entry is just for registering a position so that
                                // another CheckPointEntry can refer to it
                            }
                            else
                            {
                                throw new System.ArgumentException("Unknown entry " + entry);
                            }
                        }
                    }
                    finally
                    {
                        logFileLife.shutdown();
                    }
                }
                catch (IOException e)
                {
                    throw new UncheckedIOException(e);
                }
            });
        }