Exemplo n.º 1
0
        /// <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;
        }
Exemplo n.º 2
0
 ///<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);
 }
Exemplo n.º 3
0
 ///<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));
 }
Exemplo n.º 4
0
        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;
        }