/// <summary> /// Serializes an XML-RPC request to a <see cref="System.Xml.XmlWriter"/>. /// </summary> /// <param name="writer">the <see cref="System.Xml.XmlWriter"/> to write</param> /// <param name="request">the <see cref="LX.EasyWeb.XmlRpc.IXmlRpcRequest"/> to serialize</param> /// <param name="config">the context configuration</param> /// <param name="typeSerializerFactory">the <see cref="LX.EasyWeb.XmlRpc.Serializer.ITypeSerializerFactory"/> to get type serializers</param> /// <exception cref="System.Xml.XmlException">failed writing the request XML</exception> public void WriteRequest(XmlWriter writer, IXmlRpcRequest request, IXmlRpcStreamConfig config, ITypeSerializerFactory typeSerializerFactory) { writer.WriteStartDocument(); writer.WriteStartElement(XmlRpcSpec.METHOD_CALL_TAG); writer.WriteElementString(XmlRpcSpec.METHOD_NAME_TAG, request.MethodName); RecursiveTypeSerializer.WriteParams(writer, config, typeSerializerFactory, request.Parameters); writer.WriteEndElement(); writer.WriteEndDocument(); }
/// <summary> /// Serializes an XML-RPC response to a <see cref="System.Xml.XmlWriter"/>. /// </summary> /// <param name="writer">the <see cref="System.Xml.XmlWriter"/> to write</param> /// <param name="response">the <see cref="LX.EasyWeb.XmlRpc.IXmlRpcResponse"/> to serialize</param> /// <param name="config">the context configuration</param> /// <param name="typeSerializerFactory">the <see cref="LX.EasyWeb.XmlRpc.Serializer.ITypeSerializerFactory"/> to get type serializers</param> /// <exception cref="System.Xml.XmlException">failed writing the response XML</exception> public void WriteResponse(XmlWriter writer, IXmlRpcResponse response, IXmlRpcStreamRequestConfig config, ITypeSerializerFactory typeSerializerFactory) { writer.WriteStartDocument(); writer.WriteStartElement(XmlRpcSpec.METHOD_RESPONSE_TAG); if (response.Fault == null) { RecursiveTypeSerializer.WriteParams(writer, config, typeSerializerFactory, response.Result); } else { WriteFaultResponse(writer, response.Fault, config, typeSerializerFactory); } writer.WriteEndElement(); writer.WriteEndDocument(); }