public static bool HandleReportingMessage(System.Messaging.Message msg) { string ReportGuid = string.Empty; string parameterXML = string.Empty; string filterXML = string.Empty; string outputFilterXML = string.Empty; string UserDSN = string.Empty; Constants.ReportOutputType ReportFormat = Constants.ReportOutputType.NotSet; int groupFilterID = 0; Constants.GroupFilterType groupFilterType = Constants.GroupFilterType.NotSet; DateTime startDate = DateTime.MinValue; DateTime endDate = DateTime.MaxValue; int startDay = 0; int endDay = 0; Constants.ScopeType scopeFilterID = Constants.ScopeType.NotSet; ReportingMessage x = new ReportingMessage(); XmlMessageFormatter xformat = new XmlMessageFormatter(new Type[] { x.GetType() }); msg.Formatter = xformat; try { // Cast the incoming message to get its data ReportingMessage mmm = (ReportingMessage)msg.Body; // Extract the Guid ReportGuid = mmm.ReportGuid; // And the filter and Params used filterXML = mmm.filterXML; outputFilterXML = mmm.OutputFilterXML; parameterXML = mmm.parameterXML; // and the DSN to use UserDSN = mmm.DSN; //and the output format ReportFormat = mmm.Format; //and the group filter groupFilterID = mmm.GroupFilterID; //and the group filter type groupFilterType = mmm.GroupFilterType; //and the start date startDate = mmm.StartDate; //and the end date endDate = mmm.EndDate; //and the scope filter ID scopeFilterID = mmm.ScopeFilterID; //and the start day startDay = mmm.StartDay; //and the end day endDay = mmm.EndDay; SqlParameter[] parms = new SqlParameter[2]; parms[0] = new SqlParameter("@report_guid", ReportGuid); parms[1] = new SqlParameter("@file_extension", SqlDbType.NVarChar, 3); switch (ReportFormat) { case Constants.ReportOutputType.CSV: parms[1].Value = "csv"; break; case Constants.ReportOutputType.Excel: parms[1].Value = "xls"; break; case Constants.ReportOutputType.Html: parms[1].Value = "mht"; break; case Constants.ReportOutputType.Pdf: parms[1].Value = "pdf"; break; case Constants.ReportOutputType.RTF: parms[1].Value = "rtf"; break; } string ReportFilePath = DbManager.ExecuteScalar(UserDSN, "sc_report_started", parms).ToString(); System.IO.MemoryStream rptOutput = Report.RunReport(UserDSN, parameterXML, filterXML, outputFilterXML, ReportFormat, groupFilterID, groupFilterType, startDate, endDate, startDay, endDay, scopeFilterID); if (rptOutput != null) { System.IO.FileStream file = new System.IO.FileStream(ReportFilePath, System.IO.FileMode.CreateNew); WriteStreamToStream(rptOutput, file); rptOutput.Close(); file.Close(); DbManager.ExecuteNonQuery(UserDSN, "sc_report_finished", new SqlParameter[] { new SqlParameter("@report_guid", ReportGuid) }); } else { DbManager.ExecuteNonQuery(UserDSN, "sc_report_no_data", new SqlParameter[] { new SqlParameter("@report_guid", ReportGuid) }); } return(true); } catch (SqlException sqlex) { ExceptionManager.Publish(sqlex); DbManager.ExecuteNonQuery(UserDSN, "sc_report_error", new SqlParameter[] { new SqlParameter("@report_guid", ReportGuid) }); return(false); } catch (Exception nonsqlex) { ExceptionManager.Publish(nonsqlex); DbManager.ExecuteNonQuery(UserDSN, "sc_report_error", new SqlParameter[] { new SqlParameter("@report_guid", ReportGuid) }); return(false); } }
/// <summary> /// Initializes a new instance of the <see cref="XmlMessageConverter"/> class. /// </summary> public XmlMessageConverter() { messageFormatter = new XmlMessageFormatter(); }
/// <summary> /// Initializes a new instance of the <see cref="XmlMessageConverter"/> class. /// </summary> /// <param name="messageFormatter">The message formatter.</param> public XmlMessageConverter(XmlMessageFormatter messageFormatter) { this.messageFormatter = messageFormatter; }
public void StartRecievingMsgs() { // MessageQueue m_msgSenderQueue = new MessageQueue(string.Format(@"{0}\private$\{1}", SystemConfigurations.GetAppSetting("ResponseQueueIP"), SystemConfigurations.GetAppSetting("ResponseQueueName"))); MessageQueue m_msgSenderQueue = new MessageQueue(string.Format(@"Formatname:DIRECT=TCP:{0}\private$\{1}", SystemConfigurations.GetAppSetting("ResponseQueueIP"), SystemConfigurations.GetAppSetting("ResponseQueueName"))); //List<Type> types = System.Reflection.Assembly.Load("Beltone.Services.Fix.Contract").GetTypes().Where(x=>x.IsClass).ToList(); //types.Add(typeof(Dictionary<string, object>)); //XmlMessageFormatter formatter = new XmlMessageFormatter(types.ToArray()); XmlMessageFormatter formatter = new XmlMessageFormatter (new Type[] { typeof(Fix_OrderReplaceRefusedByService), typeof(FixAdminMsg), typeof(FixAdmin_TestRequest), typeof(Fix_OrderAcceptedResponse), typeof(Fix_OrderRejectionResponse), typeof(Fix_ExecutionReport), typeof(LogOutResponse), typeof(LogOutResponse), typeof(Fix_BusinessMessageReject), typeof(Fix_OrderReplaceCancelReject), typeof(Fix_OrderReplacedResponse), typeof(Fix_PendingReplaceResponse), typeof(Fix_OrderRefusedByService), typeof(Fix_PendingNewResponse), typeof(Fix_PendingCancelResponse), typeof(Fix_OrderCanceledResponse) }); //if (!m_msgSenderQueue.CanRead) //{ // // warning //} while (true) { try { //MessageQueueTransaction mqt = new MessageQueueTransaction(); //mqt.Begin(); System.Messaging.Message msg = (System.Messaging.Message)m_msgSenderQueue.Receive(); if (msg == null) { continue; } object recievedMsg = formatter.Read(msg); this.BeginInvoke(new Action(() => SetReport(string.Format("Recieved {0}", recievedMsg.GetType().ToString()), Color.DarkGray))); if (recievedMsg.GetType() == typeof(FixAdmin_TestRequest)) { try { IToAdminMsg msgTo = new FixAdmin_TestResponse() { TestKey = ((FixAdmin_TestRequest)recievedMsg).TestKey }; _client.HandleMsg(msgTo); //_client.HandleRequest(new FixAdmin_TestResponse() { TestKey = "" }); } catch (Exception ex) { this.BeginInvoke(new Action(() => MessageBox.Show(ex.Message))); } this.BeginInvoke(new Action(() => SetReport("sent FixAdmin_TestResponse", Color.DarkGray))); } if (recievedMsg.GetType() == typeof(Fix_OrderAcceptedResponse)) { Fix_OrderAcceptedResponse resp = (Fix_OrderAcceptedResponse)recievedMsg; this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} accepted", resp.ReqOrdID), Color.Green))); } else if (recievedMsg.GetType() == typeof(Fix_ExecutionReport)) { Fix_ExecutionReport resp = (Fix_ExecutionReport)recievedMsg; this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} TotalExecuted: {1}, TradeExecuted: {2}, Remaining {3}, Status : {4}", resp.RequesterOrderID, resp.TotalExecutedQuantity, resp.TradeExecutedQuantity, resp.RemainingQuantity, resp.OrderStatus), Color.Blue))); } else if (recievedMsg.GetType() == typeof(Fix_OrderSuspensionResponse)) { Fix_OrderSuspensionResponse resp = (Fix_OrderSuspensionResponse)recievedMsg; this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} suspended : {1}", resp.RequesterOrderID, resp.Message), Color.Red))); } else if (recievedMsg.GetType() == typeof(Fix_OrderRejectionResponse)) { Fix_OrderRejectionResponse resp = (Fix_OrderRejectionResponse)recievedMsg; this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} rejected : {1}", resp.RequesterOrderID, resp.RejectionReason), Color.Red))); } else if (recievedMsg.GetType() == typeof(Fix_OrderReplacedResponse)) { Fix_OrderReplacedResponse replace = (Fix_OrderReplacedResponse)recievedMsg; this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} replaced : Quantity {1} price {2}", replace.ReqOrdID, replace.Qty, replace.Prc), Color.DarkGreen))); } else if (recievedMsg.GetType() == typeof(Fix_OrderRefusedByService)) { Fix_OrderRefusedByService refuseMsg = (Fix_OrderRefusedByService)recievedMsg; this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} refused by service : msessage : {1} ", refuseMsg.RequesterOrderID, refuseMsg.RefuseMessage), Color.DarkOrange))); } else if (recievedMsg.GetType() == typeof(Fix_OrderCanceledResponse)) { Fix_OrderCanceledResponse msgCanceled = (Fix_OrderCanceledResponse)recievedMsg; this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} canceld successfully ! ", msgCanceled.RequesterOrderID), Color.DarkOrange))); } else if (recievedMsg.GetType() == typeof(Fix_PendingNewResponse) || recievedMsg.GetType() == typeof(Fix_PendingReplaceResponse) || recievedMsg.GetType() == typeof(Fix_PendingCancelResponse)) { this.BeginInvoke(new Action(() => SetReport(string.Format("order pending"), Color.DarkOrange))); } } catch (Exception ex) { this.BeginInvoke(new Action(() => SetReport(string.Format("Error : {0}", ex.Message), Color.Red))); Thread.Sleep(2000); } } }