public virtual void ProcessMail() { QueueMessages(ConnectInfo.PathInfo.QueueDirectory); Log(string.Format("\r\nConnecting to {0}:{1} as {2}.", ConnectInfo.Host, ConnectInfo.TcpPort, ConnectInfo.Username)); IMailboxWorker mailboxWorker = Activator.CreateInstance <Tpop>(); mailboxWorker.ConnectInfo = ConnectInfo; mailboxWorker.MessageCountReceived += new MessageInfoHandler(MailboxWorkerMessageCountReceived); mailboxWorker.MessageRecieved += new MessageInfoHandler(MailboxWorkerMessageRecieved); mailboxWorker.ServerError += new MessageInfoHandler(MailboxWorkerServerError); mailboxWorker.MessagePreviouslyDownloaded += new MessageInfoHandler(MailboxWorkerPreviouslyDownloaded); mailboxWorker.MessageRequested += new MessageInfoHandler(MailboxWorkerMessageRequested); mailboxWorker.DownloadMessages(); WorkPool.WaitFor(); }
protected virtual void MailboxWorkerMessageRecieved(object sender, MessageInfoEventArgs e) { lock ( synclock ) { Total++; IMimeFileWorker worker = Activator.CreateInstance <Tmime>(); worker.BeginProcessing += new MessageInfoHandler(MimeFileWorkerBeginProcessing); worker.DoneProcessing += new MessageInfoHandler(MimeFileWorkerDoneProcessing); worker.ProcessingError += new MessageInfoHandler(MimeFileWorkerProcessingError); worker.ProcessingWarning += new MessageInfoHandler(MimeFileWorkerProcessingWarning); WorkPool.QueueWorkItem <string>(x => worker.Process(ConnectInfo.PathInfo, x), e.Info); } string message = string.Format("Message {0} received. ", Path.GetFileName(e.Info)); Log(message); }
private void QueueMessages(string directory) { string[] files = Directory.GetFiles(directory); if (files.Length > 0) { Log("Found one or more existing messages queued on disk.\r\nAdding them to work set.", ConsoleColor.DarkYellow, ConsoleColor.Black); foreach (string file in files) { IMimeFileWorker worker = Activator.CreateInstance <Tmime>(); worker.BeginProcessing += new MessageInfoHandler(MimeFileWorkerBeginProcessing); worker.DoneProcessing += new MessageInfoHandler(MimeFileWorkerDoneProcessing); worker.ProcessingError += new MessageInfoHandler(MimeFileWorkerProcessingError); worker.ProcessingWarning += new MessageInfoHandler(MimeFileWorkerProcessingWarning); WorkPool.QueueWorkItem <string>(x => worker.Process(ConnectInfo.PathInfo, x), file); } } }
public MailSupervisor(PopConnectInfo c) { ConnectInfo = c; WorkPool = new WorkPool(); Total = 0; }