using System; using System.Collections.Generic; using System.Linq; using System.Text; using ScheduleWork; using NshowAdClient.Services; using NshowAdClient.Helper; using NewTempo.Ftp; using NshowAdClient.AdExceptions; using System.Net; namespace NshowAdClient.AdScheduleWork { public abstract class FtpScheduleWork : ScheduleWorkBase { /// <summary> /// Ftp上的文件路径 /// </summary> public string FtpFile { get; private set; } /// <summary> /// 操作FTP的实例对象 /// </summary> public MyFtp MyFtp { get; private set; } public FtpScheduleWork(string ftpFile, MyFtp myftp) { this.FtpFile = ftpFile; this.MyFtp = myftp; } protected override object RunWorking() { FtpMethodHandle(); return null; } public override void Rollback() { base.Rollback(); // 完成没有失败的情况下回滚 if (IsCompleted && !IsFailed) { try { FtpMethodRoolback(); } catch (Exception ex) { Logger.Instance.Debug(ex.Message); } } } protected abstract void FtpMethodHandle(); protected virtual void FtpMethodRoolback() { } } public class FtpUploadScheduleWork : FtpScheduleWork { /// <summary> /// 本地文件路径 /// </summary> public string LocalFile { get; private set; } public int Percent { get; set; } /// <param name="ftp">Ftp上的文件路径</param> /// <param name="local">本地文件路径</param> public FtpUploadScheduleWork(string ftpFile, string local, MyFtp myFtp) : base(ftpFile, myFtp) { this.LocalFile = local; } protected override void FtpMethodHandle() { FtpHelpService.CreateDir(FtpFile, MyFtp); //修改上传方式 bool ulRet = MyFtp.Upload(FtpFile, LocalFile); if (ulRet == false) { throw new FtpUploadException(FtpFile, LocalFile); } } protected override void FtpMethodRoolback() { this.MyFtp.Delete(this.FtpFile); } } public class FtpDeleteScheduleWork : FtpScheduleWork { public FtpDeleteScheduleWork(string ftpFile, MyFtp myFtp) : base(ftpFile, myFtp) { } protected override void FtpMethodHandle() { MyFtp.Delete(FtpFile); } } public class FtpDownloadScheduleWork : FtpScheduleWork { /// <summary> /// 本地文件路径 /// </summary> public string LocalFile { get; private set; } public FtpDownloadScheduleWork(string ftpFile, string localFile, MyFtp myFtp) : base(ftpFile, myFtp) { this.LocalFile = localFile; } protected override void FtpMethodHandle() { bool dlRet = MyFtp.Download(this.FtpFile, this.LocalFile); if (dlRet == false) throw new FtpDownloadException(this.FtpFile, this.LocalFile); } } }