From 9ed0a8dbad121b64ca8baca78f28ca58602c47ca Mon Sep 17 00:00:00 2001
From: MW
Date: Wed, 25 Apr 2007 18:12:06 +0000
Subject: updated to use lastest version of libsl but is currently broke when
using SL viewer 1.15.02, due to big changes in the message templates.
---
XmlRpcCS/XmlRpcResponseDeserializer.cs | 65 ++++++++++++++++++++++++++++++++++
1 file changed, 65 insertions(+)
create mode 100644 XmlRpcCS/XmlRpcResponseDeserializer.cs
(limited to 'XmlRpcCS/XmlRpcResponseDeserializer.cs')
diff --git a/XmlRpcCS/XmlRpcResponseDeserializer.cs b/XmlRpcCS/XmlRpcResponseDeserializer.cs
new file mode 100644
index 0000000..032d8a3
--- /dev/null
+++ b/XmlRpcCS/XmlRpcResponseDeserializer.cs
@@ -0,0 +1,65 @@
+namespace Nwc.XmlRpc
+{
+ using System;
+ using System.Collections;
+ using System.IO;
+ using System.Xml;
+
+ /// Class to deserialize XML data representing a response.
+ public class XmlRpcResponseDeserializer : XmlRpcDeserializer
+ {
+ static private XmlRpcResponseDeserializer _singleton;
+ /// A static singleton instance of this deserializer.
+ [Obsolete("This object is now thread safe, just use an instance.", false)]
+ static public XmlRpcResponseDeserializer Singleton
+ {
+ get
+ {
+ if (_singleton == null)
+ _singleton = new XmlRpcResponseDeserializer();
+
+ return _singleton;
+ }
+ }
+
+ /// Static method that parses XML data into a response using the Singleton.
+ /// StreamReader containing an XML-RPC response.
+ /// XmlRpcResponse object resulting from the parse.
+ override public Object Deserialize(TextReader xmlData)
+ {
+ XmlTextReader reader = new XmlTextReader(xmlData);
+ XmlRpcResponse response = new XmlRpcResponse();
+ bool done = false;
+
+ lock (this)
+ {
+ Reset();
+
+ while (!done && reader.Read())
+ {
+ DeserializeNode(reader); // Parent parse...
+ switch (reader.NodeType)
+ {
+ case XmlNodeType.EndElement:
+ switch (reader.Name)
+ {
+ case FAULT:
+ response.Value = _value;
+ response.IsFault = true;
+ break;
+ case PARAM:
+ response.Value = _value;
+ _value = null;
+ _text = null;
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ return response;
+ }
+ }
+}
--
cgit v1.1