private static int HandleFileSort(FileSortOptions options) { try { _logger.Info($"Starting to sort file '{options.InputFileName}'..."); var fileBufferSize = (int)MemorySize.Parse(options.FileBuffer); var streamBufferSize = (int)MemorySize.Parse(options.StreamBuffer); var memoryBufferSize = MemorySize.Parse(options.MemoryBuffer); var sortMethodFactory = CreateSortMethodFactory(options); var fileSort = new FileSort( fileBufferSize, streamBufferSize, memoryBufferSize, sortMethodFactory); fileSort.Sort(options.InputFileName, options.OutputFileName); _logger.Info($"File '{options.InputFileName}' has been successfully sorted."); return(0); } catch (Exception ex) { _logger.Error($"Failed to sort file '{options.InputFileName}'.", ex); return(1); } }
private static ISortMethodFactory CreateSortMethodFactory(FileSortOptions options) { if (options.SortMethod != null) { return(new SortMethodFactory( options.SortMethod.Value, options.ChannelCapacity, options.SortConcurrency, options.MergeConcurrency, options.OnlyMemoryMerge, options.QuickSortSize)); } return(new SmartSortMethodFactory( new FileInfo(options.InputFileName).Length, options.ChannelCapacity, options.SortConcurrency, options.MergeConcurrency, options.OnlyMemoryMerge, options.QuickSortSize)); }