Exemplo n.º 1
0
        /// <summary>
        /// Creates a response instance from the XML for a single response
        /// </summary>
        /// <param name="responseElement">The response element.</param>
        /// <returns>the response instance</returns>
        public IResponse ResponseXElementToIResponse(XElement responseElement)
        {
            PServerFactory factory = new PServerFactory();
             string className = responseElement.Element("ClassName").Value;
             IResponse response = factory.CreateResponse(className);
             IList<string> lines = new List<string>();
             XElement linesElement = responseElement.Descendants("Lines").First();

             foreach (XElement lineElement in linesElement.Elements())
             {
            lines.Add(lineElement.Value);
             }

             if (response is IMessageResponse)
            response.Lines = lines;
             else
            response.Initialize(lines);
             response.Process();
             if (response is IFileResponse)
             {
            IFileResponse fileResponse = (IFileResponse) response;
            XElement fileElement = responseElement.Descendants("File").First();
            long len = Convert.ToInt64(fileElement.Element("Length").Value);
            string byteString = fileElement.Element("Contents").Value;
            byte[] buffer = new byte[len];
            string[] bytes = byteString.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < bytes.Length; i++)
            {
               buffer[i] = Convert.ToByte(bytes[i]);
            }

            fileResponse.Length = len;
            fileResponse.Contents = buffer;
             }

             return response;
        }
Exemplo n.º 2
0
 /// <summary>
 /// Converts a single request represented by XML to a request instance
 /// </summary>
 /// <param name="requestElement">The request element.</param>
 /// <returns>the request instance</returns>
 public IRequest RequestXElementToIRequest(XElement requestElement)
 {
     string className = requestElement.Element("ClassName").Value;
      IEnumerable<XElement> linesElements = requestElement.Element("Lines").Elements();
      string[] lines = linesElements.Select(le => le.Value).ToArray();
      PServerFactory factory = new PServerFactory();
      IRequest request = factory.CreateRequest(className, lines);
      return request;
 }