public static JobFileContentExt ConvertJobFileContentToExt(JobFileContent content)
        {
            JobFileContentExt convert = new JobFileContentExt()
            {
                Content             = content.Content,
                RelativePath        = content.RelativePath,
                Offset              = content.Offset,
                FileType            = ConvertSynchronizableFilesToExt(content.FileType),
                SubmittedTaskInfoId = content.SubmittedTaskInfoId
            };

            return(convert);
        }
        public ICollection <JobFileContent> SynchronizeFiles()
        {
            ConnectionInfo connection = ConnectionPool.GetConnectionForUser(_credentials);

            try
            {
                var    client     = new SftpClientAdapter((ExtendedSftpClient)connection.Connection);
                string sourcePath = FileSystemUtils.ConcatenatePaths(SyncFileInfo.SourceDirectory, SyncFileInfo.RelativePath);

                if (client.Exists(sourcePath))
                {
                    using Stream sourceStream = client.OpenRead(sourcePath);
                    string synchronizedContent = FileSystemUtils.ReadStreamContentFromSpecifiedOffset(sourceStream, Offset);
                    if (!string.IsNullOrEmpty(SyncFileInfo.DestinationDirectory))
                    {
                        string destinationPath = Path.Combine(SyncFileInfo.DestinationDirectory, SyncFileInfo.RelativePath);
                        if (Offset == 0)
                        {
                            File.Delete(destinationPath);
                        }
                        FileSystemUtils.WriteStringToLocalFile(synchronizedContent, destinationPath);
                    }

                    JobFileContent[] result = new JobFileContent[1]
                    {
                        new JobFileContent {
                            RelativePath = SyncFileInfo.RelativePath,
                            Content      = synchronizedContent,
                            Offset       = Offset
                        }
                    };

                    if (SyncFileInfo.SynchronizationType == FileSynchronizationType.IncrementalAppend)
                    {
                        Offset = sourceStream.Position;
                    }
                    return(result);
                }
            }
            finally
            {
                ConnectionPool.ReturnConnection(connection);
            }
            return(default);