public override WebServiceResponse Unmarshall(XmlUnmarshallerContext context) { System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(context.ResponseStream); BatchReceiveMessageResponse batchReceiveMessageResponse = new BatchReceiveMessageResponse(); Message message = null; while (reader.Read()) { switch (reader.NodeType) { case System.Xml.XmlNodeType.Element: switch (reader.LocalName) { case MNSConstants.XML_ROOT_MESSAGE: message = new Message(); break; case MNSConstants.XML_ELEMENT_MESSAGE_ID: message.Id = reader.ReadElementContentAsString(); break; case MNSConstants.XML_ELEMENT_RECEIPT_HANDLE: message.ReceiptHandle = reader.ReadElementContentAsString(); break; case MNSConstants.XML_ELEMENT_MESSAGE_BODY_MD5: message.BodyMD5 = reader.ReadElementContentAsString(); break; case MNSConstants.XML_ELEMENT_MESSAGE_BODY: message.Body = reader.ReadElementContentAsString(); break; case MNSConstants.XML_ELEMENT_ENQUEUE_TIME: message.EnqueueTime = AliyunSDKUtils.ConvertFromUnixEpochSeconds(reader.ReadElementContentAsLong()); break; case MNSConstants.XML_ELEMENT_NEXT_VISIBLE_TIME: message.NextVisibleTime = AliyunSDKUtils.ConvertFromUnixEpochSeconds(reader.ReadElementContentAsLong()); break; case MNSConstants.XML_ELEMENT_FIRST_DEQUEUE_TIME: message.FirstDequeueTime = AliyunSDKUtils.ConvertFromUnixEpochSeconds(reader.ReadElementContentAsLong()); break; case MNSConstants.XML_ELEMENT_DEQUEUE_COUNT: message.DequeueCount = (uint)reader.ReadElementContentAsInt(); break; case MNSConstants.XML_ELEMENT_PRIORITY: message.Priority = (uint)reader.ReadElementContentAsInt(); break; } break; case System.Xml.XmlNodeType.EndElement: if (reader.LocalName == MNSConstants.XML_ROOT_MESSAGE) { batchReceiveMessageResponse.Messages.Add(message); } break; } } reader.Close(); return batchReceiveMessageResponse; }
/// <summary> /// Reads the MSTS.xml file to determine the acquisition length and the number of scans /// </summary> /// <param name="directoryPath"></param> /// <param name="datasetFileInfo"></param> /// <param name="totalAcqTimeMinutes"></param> /// <returns></returns> /// <remarks></remarks> private bool ProcessTimeSegmentFile(string directoryPath, DatasetFileInfo datasetFileInfo, out double totalAcqTimeMinutes) { var success = false; double startTime = 0; double endTime = 0; totalAcqTimeMinutes = 0; try { datasetFileInfo.ScanCount = 0; // Open the Contents.xml file var filePath = Path.Combine(directoryPath, AGILENT_TIME_SEGMENT_FILE); using (var reader = new System.Xml.XmlTextReader(new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))) { while (!reader.EOF) { reader.Read(); switch (reader.NodeType) { case System.Xml.XmlNodeType.Element: switch (reader.Name) { case "TimeSegment": startTime = 0; endTime = 0; break; case "StartTime": startTime = reader.ReadElementContentAsDouble(); break; case "EndTime": endTime = reader.ReadElementContentAsDouble(); break; case "NumOfScans": datasetFileInfo.ScanCount += reader.ReadElementContentAsInt(); success = true; break; default: // Ignore it break; } break; case System.Xml.XmlNodeType.EndElement: if (reader.Name == "TimeSegment") { // Store the acqtime for this time segment if (endTime > startTime) { success = true; totalAcqTimeMinutes += endTime - startTime; } } break; } } } } catch (Exception ex) { // Exception reading file OnErrorEvent("Exception reading " + AGILENT_TIME_SEGMENT_FILE + ": " + ex.Message, ex); success = false; } return(success); }
/// <summary> /// Reads the MSTS.xml file to determine the acquisition length and the number of scans /// </summary> /// <param name="strFolderPath"></param> /// <param name="datasetFileInfo"></param> /// <param name="dblTotalAcqTimeMinutes"></param> /// <returns></returns> /// <remarks></remarks> private bool ProcessTimeSegmentFile(string strFolderPath, clsDatasetFileInfo datasetFileInfo, out double dblTotalAcqTimeMinutes) { var blnSuccess = false; double dblStartTime = 0; double dblEndTime = 0; dblTotalAcqTimeMinutes = 0; try { datasetFileInfo.ScanCount = 0; // Open the Contents.xml file var strFilePath = Path.Combine(strFolderPath, AGILENT_TIME_SEGMENT_FILE); using (var srReader = new System.Xml.XmlTextReader(new FileStream(strFilePath, FileMode.Open, FileAccess.Read, FileShare.Read))) { while (!srReader.EOF) { srReader.Read(); switch (srReader.NodeType) { case System.Xml.XmlNodeType.Element: switch (srReader.Name) { case "TimeSegment": dblStartTime = 0; dblEndTime = 0; break; case "StartTime": dblStartTime = srReader.ReadElementContentAsDouble(); break; case "EndTime": dblEndTime = srReader.ReadElementContentAsDouble(); break; case "NumOfScans": datasetFileInfo.ScanCount += srReader.ReadElementContentAsInt(); blnSuccess = true; break; default: break; // Ignore it } break; case System.Xml.XmlNodeType.EndElement: if (srReader.Name == "TimeSegment") { // Store the acqtime for this time segment if (dblEndTime > dblStartTime) { blnSuccess = true; dblTotalAcqTimeMinutes += (dblEndTime - dblStartTime); } } break; } } } } catch (Exception ex) { // Exception reading file OnErrorEvent("Exception reading " + AGILENT_TIME_SEGMENT_FILE + ": " + ex.Message, ex); blnSuccess = false; } return(blnSuccess); }