public DATEXIIProcessService getDATEXIIProcessService(DATA_SERVICE_TYPE feedType) { DATEXIIProcessService datexiiProcessService = null; switch (feedType) { case DATA_SERVICE_TYPE.VMS: datexiiProcessService = datexIIVMSProcessService; break; case DATA_SERVICE_TYPE.ANPR: datexiiProcessService = datexIIANPRProcessService; break; case DATA_SERVICE_TYPE.MIDAS: datexiiProcessService = datexIIMIDASProcessService; break; case DATA_SERVICE_TYPE.TMU: datexiiProcessService = datexIITMUProcessService; break; case DATA_SERVICE_TYPE.FUSED_SENSOR_ONLY: datexiiProcessService = datexIIFusedSensorOnlyProcessService; break; case DATA_SERVICE_TYPE.FUSED_FVD_AND_SENSOR_PTD: datexiiProcessService = datexIIFusedFVDAndSensorProcessService; break; case DATA_SERVICE_TYPE.NTIS_MODEL_UPDATE_NOTIFICATION: datexiiProcessService = datexIIModelUpdateNotificationProcessService; break; case DATA_SERVICE_TYPE.NWK_MODEL_UPDATE: datexiiProcessService = datexIINetworkModelUpdateService; break; case DATA_SERVICE_TYPE.EVENT: datexiiProcessService = datexIIEventProcessService; break; case DATA_SERVICE_TYPE.NTIS_MODEL_VMS_TABLES: datexiiProcessService = datexIINTISModelVMSProcessService; break; case DATA_SERVICE_TYPE.NTIS_MODEL_MEASUREMENT_SITES: datexiiProcessService = datexIINTISModelMeasurementSitesProcessService; break; case DATA_SERVICE_TYPE.NTIS_MODEL_PREDEFINED_LOCATIONS: datexiiProcessService = datexIINTISModelPredefinedLocationProcessService; break; default: logWrapper.Error("Unknown Feed Type Received"); break; } return(datexiiProcessService); }
public static void processDATEXIIUpdateXML(object source, ElapsedEventArgs e) { working++; if (logWrapper.isDebug() == true) { logWrapper.Debug("Polling for messages"); } UpdateMessage xml = null; lock (messageQueue){ if (messageQueue.Count() > QUEUE_EMPTY) { xml = messageQueue.Dequeue(); } } while (xml != null) { try { XmlSerializer myDIISerializer = new XmlSerializer(typeof(D2LogicalModel)); XmlReader xmlReader = XmlReader.Create(new StringReader(Encoding.ASCII.GetString(xml.Buffer))); Boolean soap = true; try { xmlReader.ReadStartElement("Envelope", "http://schemas.xmlsoap.org/soap/envelope/"); xmlReader.ReadStartElement("Body", "http://schemas.xmlsoap.org/soap/envelope/"); } catch (XmlException ex) { soap = false; } D2LogicalModel d2lm = (D2LogicalModel)myDIISerializer.Deserialize(xmlReader); if (soap) { xmlReader.ReadEndElement(); xmlReader.ReadEndElement(); } string feedType = FeedType.getFeedType(d2lm.payloadPublication.feedType); DATEXIIProcessService datexiiProcessService = datexiiProcessServiceFactory.getServiceType(feedType); if (datexiiProcessService != null) { datexiiProcessService.processMessage(d2lm); } } catch (Exception ex) { logWrapper.Error(ex.ToString()); } lock (messageQueue){ if (messageQueue.Count() > QUEUE_EMPTY) { xml = messageQueue.Dequeue(); } else { xml = null; } } } working--; }