コード例 #1
0
        protected override async Task <object[]> ReadRecord(CancellationToken cancellationToken)
        {
            while (true)
            {
                object[] row;
                try
                {
                    row = await _fileHandler.GetRow(_baseRow);
                }
                catch (Exception ex)
                {
                    throw new ConnectionException("The flatfile reader failed with the following message: " + ex.Message, ex);
                }

                if (row == null)
                {
                    _fileHandler.Dispose();
                }

                return(row);
            }
        }
コード例 #2
0
        protected override async Task <object[]> ReadRecord(CancellationToken cancellationToken)
        {
            while (true)
            {
                object[] row;
                try
                {
                    row = await _fileHandler.GetRow(_baseRow);
                }
                catch (Exception ex)
                {
                    throw new ConnectionException("The flatfile reader failed with the following message: " + ex.Message, ex);
                }

                if (row == null)
                {
                    _fileHandler.Dispose();

                    // If we are managing files, then move the file after the read is finished.
                    // if this is preview mode, don't move files.
                    if (CacheFlatFile.AutoManageFiles && _previewMode == false)
                    {
                        try
                        {
                            await _fileConnection.MoveFile(CacheFlatFile, EFlatFilePath.Incoming, EFlatFilePath.Processed, _files.Current.FileName); //backup the completed file
                        }
                        catch (Exception ex)
                        {
                            throw new ConnectionException($"Failed to move the file {_files.Current.FileName} from the incoming to processed directory.  {ex.Message}", ex);
                        }
                    }

                    if (_files.MoveNext() == false)
                    {
                        _isOpen = false;
                    }
                    else
                    {
                        try
                        {
                            var fileStream = await _fileConnection.GetReadFileStream(CacheFlatFile, EFlatFilePath.Incoming, _files.Current.FileName);

                            if (_fileNameOrdinal >= 0)
                            {
                                _baseRow[_fileNameOrdinal] = _files.Current.FileName;
                            }
                            await _fileHandler.SetStream(fileStream, _selectQuery);
                        }
                        catch (Exception ex)
                        {
                            throw new ConnectionException($"Failed to read the file {_files.Current.FileName}.  {ex.Message}", ex);
                        }

                        try
                        {
                            row = await _fileHandler.GetRow(_baseRow);
                        }
                        catch (Exception ex)
                        {
                            throw new ConnectionException($"Flat file reader failed during the reading the file {_files.Current.FileName}.  {ex.Message}", ex);
                        }
                        if (row == null)
                        {
                            return(await ReadRecord(cancellationToken)); // this creates a recurive loop to cater for empty files.
                        }
                    }
                }

                return(row);
            }
        }