public static void TryUpdateReceivedDirectoryPoll(BackgroundWorker bWorker) { try { bWorker.ReportProgress(5, "Starting"); ReceivedDirectoryPoll.UpdateReceivedDirectoryPoll(); bWorker.ReportProgress(5, "Directory Poll Updated"); } catch (Exception ex) { bWorker.ReportProgress(5, "Error"); } }
public static void TryMonitorArchiveFolder(BackgroundWorker bWorker) { try { bWorker.ReportProgress(2, "Starting"); var range = ReceivedDirectoryPoll.GetPendingDateRange(); var rcvdDir = new XmlDocument(); using (var session = new Session()) { // Connect bWorker.ReportProgress(2, "Connecting..."); session.Open(SessionOptions); bWorker.ReportProgress(2, "Connected"); // FTP Directory. var directory = session.ListDirectory(Settings.Default.iExchangeWebArchiveFolder); bWorker.ReportProgress(2, "Dir. Received"); // XML var root = rcvdDir.CreateElement("Root"); var localDT = rcvdDir.CreateAttribute("LocalDT"); localDT.Value = DateTime.Now.ToString(); root.Attributes.Append(localDT); rcvdDir.AppendChild(root); var rangeElement = rcvdDir.CreateElement("Range"); var fromDT = rcvdDir.CreateAttribute("FromDT"); fromDT.Value = range[0].ToString(); var toDT = rcvdDir.CreateAttribute("ToDT"); toDT.Value = range[1].ToString(); rangeElement.Attributes.Append(fromDT); rangeElement.Attributes.Append(toDT); root.AppendChild(rangeElement); foreach ( var fileInfo in directory.Files.Where( fi => !fi.IsDirectory && fi.LastWriteTime > range[0] && fi.LastWriteTime <= range[1])) { var file = rcvdDir.CreateElement("File"); var fileName = rcvdDir.CreateAttribute("FileName"); fileName.Value = fileInfo.Name; file.Attributes.Append(fileName); var sourceFileDT = rcvdDir.CreateAttribute("SourceFileDT"); sourceFileDT.Value = fileInfo.LastWriteTime.ToString(); file.Attributes.Append(sourceFileDT); var sourceFileLen = rcvdDir.CreateAttribute("SourceFileLen"); sourceFileLen.Value = fileInfo.Length.ToString(); file.Attributes.Append(sourceFileLen); var sourceCRC32 = rcvdDir.CreateAttribute("SourceCRC32"); try { sourceCRC32.Value = BitConverter.ToString(session.CalculateFileChecksum("crc32", fileInfo.FullName)) .Replace("-", "") .ToUpper(); } catch (Exception ex) { sourceCRC32.Value = ex.Message.Split('-')[1].Trim().ToUpper(); } bWorker.ReportProgress(2, "Checksum Retrieved"); file.Attributes.Append(sourceCRC32); root.AppendChild(file); } } bWorker.ReportProgress(2, "Updating Logs"); ReceivedDirectoryPoll.RecordReceiveFileLog(rcvdDir.InnerXml); bWorker.ReportProgress(2, "Logs Updated"); } catch (Exception ex) { bWorker.ReportProgress(2, "Error"); } }