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);
        }
Ejemplo n.º 3
0
        /// <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);
        }