public putDatex2DataResponse GetDeliverVMSTrafficDataResponse(D2LogicalModel VMSTrafficData) { log.Info("Handling VMS Traffic Data"); // Validate the D2Logical Model if (!ExampleDataCheckOk(VMSTrafficData)) { throw new SoapException("Incoming request does not appear to be valid!", SoapException.ClientFaultCode); } VmsPublication payloadPublication = VMSTrafficData.payloadPublication as VmsPublication; if (payloadPublication != null) { VmsUnit vmsUnit = payloadPublication.vmsUnit[0]; if (vmsUnit != null) { log.Info(string.Format("Vmsunit GUID: {0}", vmsUnit.vmsUnitReference.id)); IList<_VmsUnitVmsIndexVms> vmsIndexList = vmsUnit.vms; if (vmsIndexList != null && vmsIndexList.Count > 0) { _VmsUnitVmsIndexVms vmsUnitVmsIndexVms = vmsIndexList[0]; IList<_VmsMessageIndexVmsMessage> vmsMessageList = vmsUnitVmsIndexVms.vms.vmsMessage; if (vmsMessageList.Count > 0) { VmsMessage vmsMessage = vmsMessageList[0].vmsMessage; IList<_TextPage> textPageList = vmsMessage.textPage; if (textPageList.Count > 0) { _TextPage textPage = textPageList[0]; VmsText vmsText = textPage.vmsText; IList<_VmsTextLineIndexVmsTextLine> vmsTextLineList = vmsText.vmsTextLine; if (vmsTextLineList.Count > 0) { _VmsTextLineIndexVmsTextLine vmsTextLineIndexVmsTextLine = vmsTextLineList[0]; log.Info(string.Format("vms text line {0}", vmsTextLineIndexVmsTextLine.vmsTextLine.vmsTextLine)); } } } } } } log.Info("VMSTraffic Data Request: Processing Completed Successfuly"); return new putDatex2DataResponse { d2LogicalModel = new D2LogicalModel() }; }
public override void processMessage(D2LogicalModel d2LogicalModel) { if (logWrapper.isInfo()) { logWrapper.Info("VMSAndMatrix Update"); } bool fullRefresh = false; string feedType = d2LogicalModel.payloadPublication.feedType; if (feedType.ToLower().Contains(FULL_REFRESH_TEXT)) { if (logWrapper.isInfo()) { logWrapper.Info("VMS Full Refresh received"); } fullRefresh = true; vMSDataStore.clearDataStore(); } VmsPublication payloadPublication = (VmsPublication)d2LogicalModel.payloadPublication; DateTime publicationTime = payloadPublication.publicationTime; if (payloadPublication != null) { VmsUnit[] vmsUnits = payloadPublication.vmsUnit; if (logWrapper.isInfo()) { logWrapper.Info("VMS Update(" + vmsUnits.Length + " objects)"); } for (int vmsUnitsPos = 0; vmsUnitsPos < vmsUnits.Length; vmsUnitsPos++) { VmsUnit vmsUnit = vmsUnits[vmsUnitsPos]; processVmsUnit(vmsUnit, publicationTime, fullRefresh); } } if (logWrapper.isInfo()) { logWrapper.Info("VMSAndMatrix Update Complete"); } }
public void Handle(D2LogicalModel VMSTrafficData) { log.Info("New VMSTrafficData received."); // Validate the D2Logical Model if (!ExampleDataCheckOk(VMSTrafficData)) { throw new SoapException("Incoming request does not appear to be valid!", SoapException.ClientFaultCode); } try { VmsPublication vmsPublication = (VmsPublication)VMSTrafficData.payloadPublication; if (vmsPublication != null) { VmsUnit[] vmsUnits = vmsPublication.vmsUnit; log.Info("Number of VMS/Matrix Units in payload: " + vmsUnits.Length); // The publication can contain status info for more than one // unit foreach (VmsUnit vmsUnit in vmsUnits) { extractStatusInformationFromUnitData(vmsUnit); } log.Info("VMSTrafficData: Processing Completed Successfuly"); } } catch (Exception e) { log.Error("Error while obtaining MeasuredDataPublication."); log.Error(e.Message); throw new SoapException("Error while obtaining MeasuredDataPublication.", SoapException.ServerFaultCode, e); } }