private static void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { PropogationContext context; while (true) { while (queue.TryDequeue(out context)) { try { MDNSend generateMDN = new MDNSend(); generateMDN.ASyncMDNSend(context); } catch (Exception ex) { FormatServerResponse.AsyncDisplayErrorMessage(ex.Message); } } System.Threading.Thread.Sleep(2000); } }
public Stream POST(Stream as2Message) { try { IncomingWebRequestContext request = WebOperationContext.Current.IncomingRequest; WebHeaderCollection collection = request.Headers; if (collection["Subject"].Contains("Signed Message Disposition Notification")) { FormatServerResponse.AsyncDisplaySuccessMessage("Received Async MDN - " + MessageCounter.IncrementAsyncMessageRcv()); var mdn = new StreamReader(as2Message); string lookfor = "Original-Message-ID:"; string line = string.Empty; while (!mdn.EndOfStream) { if ((line = mdn.ReadLine()).StartsWith(lookfor)) { line = line.Substring(lookfor.Length).Trim(); FormatServerResponse.AsyncDisplaySuccessMessage(line); break; } } if (MessageCounter.collection.ContainsKey(line)) { var data = MessageCounter.collection[line]; data.EndTime = DateTime.Now; MessageCounter.collection.AddOrUpdate(line, data, (key, oldvalue) => data); } return(null); } FormatServerResponse.AsyncDisplayMessage("Received EDI message"); DateTime dt = DateTime.Now; try { byte[] buffer = new byte[16 * 1024]; using (MemoryStream ms = new MemoryStream()) { int read; while ((read = as2Message.Read(buffer, 0, buffer.Length)) > 0) { ms.Write(buffer, 0, read); } buffer = ms.ToArray(); } string content = DecryptMessage(buffer); StringReader stringReader = new StringReader(content); stringReader.ReadLine(); string divider = stringReader.ReadLine().Split('"')[2]; stringReader.ReadLine(); stringReader.ReadLine(); StringBuilder builder = new StringBuilder(); string line = string.Empty; builder.Append(line = stringReader.ReadLine()); while ((line = stringReader.ReadLine()) != null) { if (line.Contains("--" + divider)) { break; } else { builder.Append("\r\n" + line); } } string data = builder.ToString(); var response = WebOperationContext.Current.OutgoingResponse; PropogationContext context = new PropogationContext(); context.MIC = MDNSend.GenerateMIC(data); context.OrginalMessageID = collection["Message-ID"] as string; MDNSend generateMDN = new MDNSend(); if (collection.AllKeys.Contains("Receipt-Delivery-Option")) { context.URL = collection.Get("Receipt-Delivery-Option"); response.StatusDescription = "EDI Message was received"; SendAsyncMDN.AsyncSend(context); if (!Settings.IsAS2Default) { Helper.GetInboundLogger().LogEndTime(data, DateTime.Now); } return(null); } else { FormatServerResponse.AsyncDisplaySuccessMessage("Sending Sync MDN"); if (!Settings.IsAS2Default) { Helper.GetInboundLogger().LogEndTime(data, DateTime.Now); } return(generateMDN.SyncMDNSend(ref response, context)); } } catch (Exception ex) { FormatServerResponse.AsyncDisplayErrorMessage(ex.Message); } return(null); } catch (Exception ex) { FormatServerResponse.DisplayErrorMessage(ex.Message); return(null); } }