public void CreateAndSendAggregatedStatusRequestMessage(cRoadSideObject RoadSideObject) { RSMP_Messages.AggregatedStatusRequest AggregatedStatusRequest; string sSendBuffer; try { AggregatedStatusRequest = new RSMP_Messages.AggregatedStatusRequest(); AggregatedStatusRequest.mType = "rSMsg"; AggregatedStatusRequest.type = "AggregatedStatusRequest"; AggregatedStatusRequest.mId = System.Guid.NewGuid().ToString(); AggregatedStatusRequest.ntsOId = RoadSideObject.sNTSObjectId; AggregatedStatusRequest.xNId = RoadSideObject.sExternalNTSId; AggregatedStatusRequest.cId = RoadSideObject.sComponentId; sSendBuffer = JSonSerializer.SerializeObject(AggregatedStatusRequest); RSMPGS.JSon.SendJSonPacket(AggregatedStatusRequest.type, AggregatedStatusRequest.mId, sSendBuffer, true); if (RSMPGS.MainForm.checkBox_ViewOnlyFailedPackets.Checked == false) { RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Info, "Sent AggregatedStatusRequest message, ntsOId: " + RoadSideObject.sNTSObjectId + ", cId: " + RoadSideObject.sComponentId + ", MsgId: " + AggregatedStatusRequest.mId); } } catch (Exception e) { RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Error, "Failed to create AggregatedStatusRequest message: {0}", e.Message); } }
private bool DecodeAndParseAggregatedStatusRequestMessage(RSMP_Messages.Header packetHeader, string sJSon, bool bUseStrictProtocolAnalysis, bool bUseCaseSensitiveIds, ref bool bHasSentAckOrNack, ref string sError) { bool bPacketWasProperlyHandled = false; StringComparison sc = bUseCaseSensitiveIds ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase; try { RSMP_Messages.AggregatedStatusRequest AggregatedStatusRequest = JSonSerializer.Deserialize <RSMP_Messages.AggregatedStatusRequest>(sJSon); cRoadSideObject RoadSideObject = cHelper.FindRoadSideObject(AggregatedStatusRequest.ntsOId, AggregatedStatusRequest.cId, bUseStrictProtocolAnalysis); if (RoadSideObject != null) { if (cHelper.IsSettingChecked("AllowRequestsOfAlarmsAndAggStatus")) { RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Info, "Request of aggregated status, ntsOId: {0}, cId: {1}", AggregatedStatusRequest.ntsOId, AggregatedStatusRequest.cId); bHasSentAckOrNack = SendPacketAck(true, packetHeader.mId, ""); CreateAndSendAggregatedStatusMessage(RoadSideObject); } else { RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Warning, "Request of aggregated status, ntsOId: {0}, cId: {1}. RSMP settings prevent us from answering.", AggregatedStatusRequest.ntsOId, AggregatedStatusRequest.cId); bHasSentAckOrNack = SendPacketAck(false, packetHeader.mId, "Invalid packet type: " + packetHeader.type); } bPacketWasProperlyHandled = true; } else { sError = "Failed to handle AggregatedStatusRequest message, ntsOId: " + AggregatedStatusRequest.ntsOId + "/ cId: " + AggregatedStatusRequest.cId + " could not be found)"; RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Error, "{0}", sError); } } catch (Exception e) { RSMPGS.SysLog.SysLog(cSysLogAndDebug.Severity.Error, "Failed to deserialize packet: {0}", e.Message); } return(bPacketWasProperlyHandled); }