/// <summary>Static method that parses XML data into a request using the Singleton.</summary> /// <param name="xmlData"><c>StreamReader</c> containing an XML-RPC request.</param> /// <returns><c>XmlRpcRequest</c> object resulting from the parse.</returns> override public Object Deserialize(TextReader xmlData) { XmlTextReader reader = new XmlTextReader(xmlData); XmlRpcRequest request = new XmlRpcRequest(); bool done = false; lock (this) { Reset(); while (!done && reader.Read()) { DeserializeNode(reader); // Parent parse... switch (reader.NodeType) { case XmlNodeType.EndElement: switch (reader.Name) { case METHOD_NAME: request.MethodName = _text; break; case METHOD_CALL: done = true; break; case PARAM: request.Params.Add(_value); _text = null; break; } break; } } } return request; }
///<summary>Invoke a method described in a request.</summary> ///<param name="req"><c>XmlRpcRequest</c> containing a method descriptions.</param> /// <seealso cref="XmlRpcSystemObject.Invoke"/> /// <seealso cref="XmlRpcServer.Invoke(String,String,IList)"/> public Object Invoke(XmlRpcRequest req) { return Invoke(req.MethodNameObject, req.MethodNameMethod, req.Params); }
///<summary>Invoke a method described in a request.</summary> ///<param name="req"><c>XmlRpcRequest</c> containing a method descriptions.</param> /// <seealso cref="XmlRpcSystemObject.Invoke"/> /// <seealso cref="XmlRpcServer.Invoke(String,String,IList)"/> public Object Invoke(XmlRpcRequest req) { return(this.Invoke(req.MethodNameObject, req.MethodNameMethod, req.Params)); }
public IList multiCall(IList calls) { IList responses = new ArrayList(); XmlRpcResponse fault = new XmlRpcResponse(); foreach (IDictionary call in calls) { try { XmlRpcRequest req = new XmlRpcRequest((String)call[XmlRpcXmlTokens.METHOD_NAME], (ArrayList)call[XmlRpcXmlTokens.PARAMS]); Object results = _server.Invoke(req); IList response = new ArrayList(); response.Add(results); responses.Add(response); } catch (XmlRpcException e) { fault.SetFault(e.FaultCode, e.FaultString); responses.Add(fault.Value); } catch (Exception e2) { fault.SetFault(XmlRpcErrorCodes.APPLICATION_ERROR, XmlRpcErrorCodes.APPLICATION_ERROR_MSG + ": " + e2.Message); responses.Add(fault.Value); } } return responses; }