private static void FTPFilesThreadProc() { while (bFTPingFiles) { while (FTPFilePackets.Count > 0) { FTPFilePacket Packet = null; try { Packet = FTPFilePackets.Dequeue(); DetailLog(" ... FTPing: " + Packet.SourceFile.FullName, ConsoleColor.DarkYellow); EnsureRemoteFolderExists(Path.GetDirectoryName(Packet.DestinationFile).Replace("\\", "/")); UploadFile(Packet.SourceFile, Packet.DestinationFile); } catch (Exception Ex) { Warning("Failed to FTP: " + Packet.SourceFile.FullName + " (" + Ex.Message + ") -- trying again!"); Packet.SourceFile.Refresh(); FTPFilePackets.Enqueue(Packet); } } } }
/// <summary> /// /// </summary> /// <param name="TableOfContents"></param> public static void FTPFiles( TOC TableOfContents ) { if( Options.FTPSite.Length > 0 && Options.FTPUser.Length > 0 ) { int TotalFilesUploaded = TableOfContents.Entries.Count; TotalBytesUploaded = 0; bCopyingFiles = true; Thread FTPFilesThread = new Thread( FTPFilesThreadProc ); FTPFilesThread.Start(); foreach( TOCEntry Entry in TableOfContents.Entries ) { // Handle file copies FileInfo SourceFile = Entry.Info; string DestFile = Path.Combine( Options.FTPFolder, Entry.Name ).Replace( "\\", "/" ); // Create copy packet and add to queue FTPFilePacket Packet = new FTPFilePacket( SourceFile, DestFile ); FTPFilePackets.Enqueue( Packet ); } while( FTPFilePackets.Count > 0 ) { if( !Options.bLog ) { ProgressLog( " ... waiting for " + FTPFilePackets.Count + " FTPs (" + TotalBytesUploaded + " uploaded) ", ConsoleColor.Cyan ); } Thread.Sleep( 100 ); } if( !Options.bLog ) { ProgressLog( " ... waiting for " + FTPFilePackets.Count + " FTPs (" + TotalBytesUploaded + " bytes uploaded) ", ConsoleColor.Cyan ); } bFTPingFiles = false; Log( "", ConsoleColor.Green ); Log( "Completed FTPing " + TotalFilesUploaded + " files, totaling " + TotalBytesUploaded + " bytes", ConsoleColor.Green ); } }
/// <summary> /// /// </summary> /// <param name="TableOfContents"></param> public static void FTPFiles(TOC TableOfContents) { if (Options.FTPSite.Length > 0 && Options.FTPUser.Length > 0) { int TotalFilesUploaded = TableOfContents.Entries.Count; TotalBytesUploaded = 0; bCopyingFiles = true; Thread FTPFilesThread = new Thread(FTPFilesThreadProc); FTPFilesThread.Start(); foreach (TOCEntry Entry in TableOfContents.Entries) { // Handle file copies FileInfo SourceFile = Entry.Info; string DestFile = Path.Combine(Options.FTPFolder, Entry.Name).Replace("\\", "/"); // Create copy packet and add to queue FTPFilePacket Packet = new FTPFilePacket(SourceFile, DestFile); FTPFilePackets.Enqueue(Packet); } while (FTPFilePackets.Count > 0) { if (!Options.bLog) { ProgressLog(" ... waiting for " + FTPFilePackets.Count + " FTPs (" + TotalBytesUploaded + " uploaded) ", ConsoleColor.Cyan); } Thread.Sleep(100); } if (!Options.bLog) { ProgressLog(" ... waiting for " + FTPFilePackets.Count + " FTPs (" + TotalBytesUploaded + " bytes uploaded) ", ConsoleColor.Cyan); } bFTPingFiles = false; Log("", ConsoleColor.Green); Log("Completed FTPing " + TotalFilesUploaded + " files, totaling " + TotalBytesUploaded + " bytes", ConsoleColor.Green); } }