/// <summary> /// Processes a message. /// </summary> /// <param name="action">The action to use.</param> /// <param name="message">The request message in an XML format.</param> /// <returns>The response message in an XML format.</returns> public override string ProcessMessage(string action, string message) { Response response = new Response(); try { // Find the type of message var messageXml = new XmlDocument(); messageXml.LoadXml(message); var messageType = XmlConversionUtil.FindMessageType(messageXml.DocumentElement.Name); if (messageType == null) { response.Result = ResponseResult.Failure; response.ErrorMessages.Add( new ErrorMessage( string.Format( CultureInfo.CurrentCulture, "Unable to translate message: '{0}' is unknown", messageXml.DocumentElement.Name))); } // Convert the message and invoke the action var request = XmlConversionUtil.ConvertXmlToObject(messageType, message); response = connection.SendMessage(action, request as ServerRequest); } catch (Exception error) { response.Result = ResponseResult.Failure; response.ErrorMessages.Add( new ErrorMessage("Unable to process error: " + error.Message)); } return(response.ToString()); }
/// <summary> /// Converts a message string into a request. /// </summary> /// <param name="message">The XML of the message.</param> /// <returns>The converted <see cref="ServerRequest"/>.</returns> public static ServerRequest ConvertXmlToRequest(string message) { var messageXml = new XmlDocument(); messageXml.LoadXml(message); var messageType = XmlConversionUtil.FindMessageType(messageXml.DocumentElement.Name); if (messageType == null) { throw new CommunicationsException("Unknown message type"); } var request = ConvertXmlToObject(messageType, message) as ServerRequest; return(request); }