private void RemoveBufferedMessages(cBufferedMessage.eMessageType MessageType) { Cursor.Current = Cursors.WaitCursor; Application.DoEvents(); ListView_BufferedMessages.StopSorting(); ListView_BufferedMessages.BeginUpdate(); for (int iIndex = ListView_BufferedMessages.Items.Count - 1; iIndex >= 0; iIndex--) { cBufferedMessage BufferedMessage = (cBufferedMessage)ListView_BufferedMessages.Items[iIndex].Tag; if (BufferedMessage.MessageType == MessageType) { ListView_BufferedMessages.Items.RemoveAt(iIndex); } } RSMPGS.ProcessImage.BufferedMessages.RemoveAll(bbuf => bbuf.MessageType == MessageType); /* * * List<cBufferedMessage> BufferedMessagesToSend = * foreach (cBufferedMessage BufferedMessage in BufferedMessagesToSend) * { * ListView_BufferedMessages.Items.Remove(BufferedMessage.lvItem); * } * RSMPGS.ProcessImage.BufferedMessages.RemoveAll(bbuf => bbuf.MessageType == MessageType); */ ListView_BufferedMessages.EndUpdate(); ListView_BufferedMessages.ResumeSorting(); textBox_BufferedMessages.Text = RSMPGS.ProcessImage.BufferedMessages.Count.ToString(); Cursor.Current = Cursors.Default; }
public RSMP_Messages.AggregatedStatus CreateAndSendAggregatedStatusMessage(cRoadSideObject RoadSideObject, bool bCreateMessageOnly, out string sSendBuffer) { sSendBuffer = ""; RSMP_Messages.AggregatedStatus AggregatedStatusMessage = new RSMP_Messages.AggregatedStatus(); AggregatedStatusMessage.mType = "rSMsg"; AggregatedStatusMessage.type = "AggregatedStatus"; AggregatedStatusMessage.mId = System.Guid.NewGuid().ToString(); AggregatedStatusMessage.ntsOId = RoadSideObject.sNTSObjectId; AggregatedStatusMessage.xNId = RoadSideObject.sExternalNTSId; AggregatedStatusMessage.cId = RoadSideObject.sComponentId; if (RoadSideObject.dtLastChangedAggregatedStatus == DateTime.MinValue) { RoadSideObject.dtLastChangedAggregatedStatus = DateTime.Now; } AggregatedStatusMessage.aSTS = CreateISO8601UTCTimeStamp(RoadSideObject.dtLastChangedAggregatedStatus); AggregatedStatusMessage.fP = RoadSideObject.sFunctionalPosition.Length > 0 ? RoadSideObject.sFunctionalPosition : null; AggregatedStatusMessage.fS = RoadSideObject.sFunctionalState.Length > 0 ? RoadSideObject.sFunctionalState : null; AggregatedStatusMessage.se = (bool[])RoadSideObject.bBitStatus.Clone(); for (int iIndex = 0; iIndex < RoadSideObject.bBitStatus.GetLength(0); iIndex++) { AggregatedStatusMessage.se[iIndex] = RoadSideObject.bBitStatus[iIndex]; } sSendBuffer = JSonSerializer.SerializeObject(AggregatedStatusMessage); if (bCreateMessageOnly) { return(AggregatedStatusMessage); } if (RSMPGS.JSon.SendJSonPacket(AggregatedStatusMessage.type, AggregatedStatusMessage.mId, sSendBuffer, true)) { if (RSMPGS.MainForm.checkBox_ViewOnlyFailedPackets.Checked == false) { RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Info, "Sent aggregated status message, ntsOId: " + AggregatedStatusMessage.ntsOId + ", Type: " + AggregatedStatusMessage.type + ", MsgId: " + AggregatedStatusMessage.mId); } } else { if (cHelper.IsSettingChecked("BufferAndSendAggregatedStatusWhenConnect")) { cBufferedMessage BufferedMessage = new cBufferedMessage(cBufferedMessage.eMessageType.AggregatedStatus, AggregatedStatusMessage.type, AggregatedStatusMessage.mId, sSendBuffer); RSMPGS.MainForm.AddBufferedMessageToListAndListView(BufferedMessage); RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Warning, "Buffered aggregated status message, ntsOId: " + AggregatedStatusMessage.ntsOId + ", Type: " + AggregatedStatusMessage.type + ", MsgId: " + AggregatedStatusMessage.mId); } } return(AggregatedStatusMessage); }
public void AddBufferedMessageToListAndListView(cBufferedMessage BufferedMessage) { ListViewItem lvItem = new ListViewItem(BufferedMessage.MessageType.ToString()); lvItem.SubItems.Add(BufferedMessage.sMessageId); lvItem.SubItems.Add(BufferedMessage.sSendString); lvItem.Tag = BufferedMessage; ListView_BufferedMessages.Items.Add(lvItem); BufferedMessage.lvItem = lvItem; RSMPGS.ProcessImage.BufferedMessages.Add(BufferedMessage); textBox_BufferedMessages.Text = RSMPGS.ProcessImage.BufferedMessages.Count.ToString(); }
public RSMP_Messages.StatusUpdate CreateAndSendStatusUpdateMessage(cRoadSideObject RoadSideObject, List <RSMP_Messages.Status_VTQ> sS, bool bCreateMessageOnly, out string sSendBuffer) { sSendBuffer = ""; RSMP_Messages.StatusUpdate StatusUpdateMessage = new RSMP_Messages.StatusUpdate(); StatusUpdateMessage.mType = "rSMsg"; StatusUpdateMessage.type = "StatusUpdate"; StatusUpdateMessage.mId = System.Guid.NewGuid().ToString(); StatusUpdateMessage.ntsOId = RoadSideObject.sNTSObjectId; StatusUpdateMessage.xNId = RoadSideObject.sExternalNTSId; StatusUpdateMessage.cId = RoadSideObject.sComponentId; StatusUpdateMessage.sTs = CreateISO8601UTCTimeStamp(); StatusUpdateMessage.sS = sS; sSendBuffer = JSonSerializer.SerializeObject(StatusUpdateMessage); if (bCreateMessageOnly) { return(StatusUpdateMessage); } if (RSMPGS.JSon.SendJSonPacket(StatusUpdateMessage.type, StatusUpdateMessage.mId, sSendBuffer, true)) { if (RSMPGS.MainForm.checkBox_ViewOnlyFailedPackets.Checked == false) { RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Info, "Sent Status Update message, Type: " + StatusUpdateMessage.type + ", MsgId: " + StatusUpdateMessage.mId); } } else { if (cHelper.IsSettingChecked("BufferAndSendStatusUpdatesWhenConnect")) { cBufferedMessage BufferedMessage = new cBufferedMessage(cBufferedMessage.eMessageType.Status, StatusUpdateMessage.type, StatusUpdateMessage.mId, sSendBuffer); RSMPGS.MainForm.AddBufferedMessageToListAndListView(BufferedMessage); RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Warning, "Buffered Status Update message, Type: " + StatusUpdateMessage.type + ", MsgId: " + StatusUpdateMessage.mId); } } return(StatusUpdateMessage); }
public RSMP_Messages.AlarmHeaderAndBody CreateAndSendAlarmMessage(cAlarmObject AlarmObject, AlarmSpecialisation alarmSpecialisation, bool bCreateMessageOnly, out string sSendBuffer, out cAlarmEvent AlarmEvent) { sSendBuffer = ""; RSMP_Messages.AlarmHeaderAndBody AlarmHeaderAndBody; // RSMP_Messages.AlarmHeader AlarmHeader; AlarmHeaderAndBody = new RSMP_Messages.AlarmHeaderAndBody(); AlarmEvent = new cAlarmEvent(); try { AlarmHeaderAndBody.mType = "rSMsg"; AlarmHeaderAndBody.type = "Alarm"; AlarmHeaderAndBody.mId = System.Guid.NewGuid().ToString(); AlarmHeaderAndBody.ntsOId = AlarmObject.RoadSideObject.sNTSObjectId; AlarmHeaderAndBody.xNId = AlarmObject.RoadSideObject.sExternalNTSId; AlarmHeaderAndBody.cId = AlarmObject.RoadSideObject.sComponentId; AlarmHeaderAndBody.aCId = AlarmObject.sAlarmCodeId; AlarmHeaderAndBody.xACId = AlarmObject.sExternalAlarmCodeId; AlarmHeaderAndBody.xNACId = AlarmObject.sExternalNTSAlarmCodeId; AlarmHeaderAndBody.rvs = new List <RSMP_Messages.AlarmReturnValue>(); AlarmEvent.AlarmObject = AlarmObject; AlarmHeaderAndBody.ack = AlarmObject.bAcknowledged ? "Acknowledged" : "notAcknowledged"; AlarmHeaderAndBody.aS = AlarmObject.bActive ? "Active" : "inActive"; AlarmHeaderAndBody.sS = AlarmObject.bSuspended ? "Suspended" : "notSuspended"; switch (alarmSpecialisation) { case AlarmSpecialisation.Issue: AlarmHeaderAndBody.aSp = "Issue"; AlarmEvent.sEvent = AlarmHeaderAndBody.aSp + " / " + AlarmHeaderAndBody.aS; break; case AlarmSpecialisation.Acknowledge: AlarmHeaderAndBody.aSp = "Acknowledge"; AlarmEvent.sEvent = AlarmHeaderAndBody.aSp + " / " + AlarmHeaderAndBody.ack; break; case AlarmSpecialisation.Suspend: AlarmHeaderAndBody.aSp = "Suspend"; AlarmEvent.sEvent = AlarmHeaderAndBody.aSp + " / " + AlarmHeaderAndBody.sS; break; } if (AlarmObject.bActive == false && AlarmObject.bAcknowledged) { AlarmObject.AlarmCount = 0; } if (AlarmObject.dtLastChangedAlarmStatus == DateTime.MinValue) { AlarmObject.dtLastChangedAlarmStatus = DateTime.Now; } AlarmHeaderAndBody.aTs = CreateISO8601UTCTimeStamp(AlarmObject.dtLastChangedAlarmStatus); AlarmHeaderAndBody.cat = AlarmObject.sCategory; AlarmHeaderAndBody.pri = AlarmObject.sPriority; AlarmEvent.sAlarmCodeId = AlarmObject.sAlarmCodeId; AlarmEvent.sDirection = "Sent"; AlarmEvent.sTimeStamp = UnpackISO8601UTCTimeStamp(AlarmHeaderAndBody.aTs); // String.Format("{0:yyyy-MM-dd}T{0:HH:mm:ss.fff}", UnpackISO8601UTCTimeStamp(AlarmHeaderAndBody.aTs)); AlarmEvent.sMessageId = AlarmHeaderAndBody.mId; foreach (cAlarmReturnValue AlarmReturnValue in AlarmObject.AlarmReturnValues) { RSMP_Messages.AlarmReturnValue rv = new RSMP_Messages.AlarmReturnValue(); rv.n = AlarmReturnValue.sName; rv.v = AlarmReturnValue.Value.GetValue(); AlarmHeaderAndBody.rvs.Add(rv); AlarmEvent.AlarmEventReturnValues.Add(new nsRSMPGS.cAlarmEventReturnValue(rv.n, rv.v)); } sSendBuffer = JSonSerializer.SerializeObject(AlarmHeaderAndBody); if (bCreateMessageOnly) { return(AlarmHeaderAndBody); } if (RSMPGS.JSon.SendJSonPacket(AlarmHeaderAndBody.type, AlarmHeaderAndBody.mId, sSendBuffer, true)) { if (RSMPGS.MainForm.checkBox_ViewOnlyFailedPackets.Checked == false) { RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Info, "Sent alarm message, AlarmCode: " + AlarmObject.sAlarmCodeId + ", Type: " + AlarmHeaderAndBody.type + "/" + AlarmHeaderAndBody.aSp + "/" + AlarmHeaderAndBody.aS + ", MsgId: " + AlarmHeaderAndBody.mId);//, SequenceNumber: " + AlarmHeaderAndBody.sNr); } } else { if (cHelper.IsSettingChecked("BufferAndSendAlarmsWhenConnect")) { cBufferedMessage BufferedMessage = new cBufferedMessage(cBufferedMessage.eMessageType.Alarm, AlarmHeaderAndBody.type, AlarmHeaderAndBody.mId, sSendBuffer); RSMPGS.MainForm.AddBufferedMessageToListAndListView(BufferedMessage); RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Warning, "Buffered alarm message, AlarmCode: " + AlarmObject.sAlarmCodeId + ", Type: " + AlarmHeaderAndBody.type + "/" + AlarmHeaderAndBody.aSp + "/" + AlarmHeaderAndBody.aS + ", MsgId: " + AlarmHeaderAndBody.mId);// + ", SequenceNumber: " + AlarmHeaderAndBody.sNr); } } // RSMPGS.ProcessImage.SequenceNumber_Alarm++; } catch (Exception e) { RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Error, "Failed to create alarm message: {0}", e.Message); AlarmEvent = null; } return(AlarmHeaderAndBody); }
private void button_BufferedMessages_CreateRandom_Click(object sender, EventArgs e) { if (comboBox_BufferedMessages_CreateRandom_Type.SelectedIndex < 0) { return; } int iMessageCount; if (Int32.TryParse(textBox_CreateRandomMessages_Count.Text, out iMessageCount) == false || iMessageCount > 30000) { MessageBox.Show("Invalid number or too many messages (>30000)", "Create buffered messages", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (iMessageCount <= 0) { return; } Cursor.Current = Cursors.WaitCursor; Application.DoEvents(); List <cAlarmObject> AlarmObjects = new List <cAlarmObject>(); List <cStatusReturnValue> StatusReturnValues = new List <cStatusReturnValue>(); List <cStatusReturnValue> ValidStatusReturnValues = new List <cStatusReturnValue>(); List <cRoadSideObject> AggregatedStatusRoadSideObjects = new List <nsRSMPGS.cRoadSideObject>(); foreach (cRoadSideObject RoadSideObject in RSMPGS.ProcessImage.RoadSideObjects.Values) { AlarmObjects.AddRange(RoadSideObject.AlarmObjects); foreach (cStatusObject StatusObject in RoadSideObject.StatusObjects) { StatusReturnValues.AddRange(StatusObject.StatusReturnValues); ValidStatusReturnValues.AddRange(StatusObject.StatusReturnValues.FindAll(srv => srv.Value.Quality == cValue.eQuality.recent)); } if (RoadSideObject.bIsComponentGroup) { AggregatedStatusRoadSideObjects.Add(RoadSideObject); } } Random rnd = new Random(); ListView_BufferedMessages.StopSorting(); ListView_BufferedMessages.BeginUpdate(); // RSMPGS.ProcessImage.AggregatedStatusObjects string sSendBuffer; for (int iIndex = 0; iIndex < iMessageCount; iIndex++) { switch (comboBox_BufferedMessages_CreateRandom_Type.SelectedIndex) { case 0: if (AlarmObjects.Count > 0) { cAlarmObject AlarmObject = AlarmObjects[rnd.Next(0, AlarmObjects.Count - 1)]; cJSon.AlarmSpecialisation alarmSpecialisation = new cJSon.AlarmSpecialisation[] { cJSon.AlarmSpecialisation.Acknowledge, cJSon.AlarmSpecialisation.Issue, cJSon.AlarmSpecialisation.Suspend }[rnd.Next(0, 2)]; RSMP_Messages.AlarmHeaderAndBody alarmHeaderAndBody = RSMPGS.JSon.CreateAndSendAlarmMessage(AlarmObject, alarmSpecialisation, true, out sSendBuffer); cBufferedMessage BufferedMessage = new cBufferedMessage(cBufferedMessage.eMessageType.Alarm, alarmHeaderAndBody.type, alarmHeaderAndBody.mId, sSendBuffer); AddBufferedMessageToListAndListView(BufferedMessage); } break; case 1: if (AggregatedStatusRoadSideObjects.Count > 0) { cRoadSideObject RoadSideObject = AggregatedStatusRoadSideObjects[rnd.Next(0, AggregatedStatusRoadSideObjects.Count - 1)]; RSMP_Messages.AggregatedStatus aggregatedStatus = RSMPGS.JSon.CreateAndSendAggregatedStatusMessage(RoadSideObject, true, out sSendBuffer); cBufferedMessage BufferedMessage = new cBufferedMessage(cBufferedMessage.eMessageType.AggregatedStatus, aggregatedStatus.type, aggregatedStatus.mId, sSendBuffer); AddBufferedMessageToListAndListView(BufferedMessage); } break; case 2: if (StatusReturnValues.Count > 0) { cStatusReturnValue StatusReturnValue = StatusReturnValues[rnd.Next(0, StatusReturnValues.Count - 1)]; List <RSMP_Messages.Status_VTQ> sS = new List <RSMP_Messages.Status_VTQ>(); RSMP_Messages.Status_VTQ s = new RSMP_Messages.Status_VTQ(); s.sCI = StatusReturnValue.StatusObject.sStatusCodeId; s.n = StatusReturnValue.sName; s.q = StatusReturnValue.Value.Quality.ToString(); s.s = StatusReturnValue.Value.Quality == cValue.eQuality.unknown ? null : StatusReturnValue.Value.GetValue(); sS.Add(s); RSMP_Messages.StatusUpdate statusUpdate = RSMPGS.JSon.CreateAndSendStatusUpdateMessage(StatusReturnValue.StatusObject.RoadSideObject, sS, true, out sSendBuffer); cBufferedMessage BufferedMessage = new cBufferedMessage(cBufferedMessage.eMessageType.Status, statusUpdate.type, statusUpdate.mId, sSendBuffer); AddBufferedMessageToListAndListView(BufferedMessage); } break; case 3: if (ValidStatusReturnValues.Count > 0) { cStatusReturnValue StatusReturnValue = ValidStatusReturnValues[rnd.Next(0, ValidStatusReturnValues.Count - 1)]; List <RSMP_Messages.Status_VTQ> sS = new List <RSMP_Messages.Status_VTQ>(); RSMP_Messages.Status_VTQ s = new RSMP_Messages.Status_VTQ(); s.sCI = StatusReturnValue.StatusObject.sStatusCodeId; s.n = StatusReturnValue.sName; s.q = StatusReturnValue.Value.Quality.ToString(); s.s = StatusReturnValue.Value.Quality == cValue.eQuality.unknown ? null : StatusReturnValue.Value.GetValue(); sS.Add(s); RSMP_Messages.StatusUpdate statusUpdate = RSMPGS.JSon.CreateAndSendStatusUpdateMessage(StatusReturnValue.StatusObject.RoadSideObject, sS, true, out sSendBuffer); cBufferedMessage BufferedMessage = new cBufferedMessage(cBufferedMessage.eMessageType.Status, statusUpdate.type, statusUpdate.mId, sSendBuffer); AddBufferedMessageToListAndListView(BufferedMessage); } break; } //cBufferedMessage //AddBufferedMessageToListAndListView(cBufferedMessage BufferedMessage) } ListView_BufferedMessages.EndUpdate(); ListView_BufferedMessages.ResumeSorting(); Cursor.Current = Cursors.Default; }