public static GbxParam Instantiate(string eventName, object[] oParams) { var gbx = new GbxParam(); gbx.Parameters = oParams; gbx.EventName = eventName; StringBuilder xml = new StringBuilder("<?xml version=\"1.0\" ?><methodCall><methodName>" + eventName + "</methodName><params>"); foreach (var obj in gbx.Parameters) { if (obj == null) { continue; } xml.Append("<param>" + ParseObject(obj) + "</param>\n"); } xml.Append("</params></methodCall>"); gbx.Result = xml.ToString(); return(gbx); }
internal static GbxParam ParseResponse(int handle, byte[] data) { GbxParam gbx = new GbxParam(); gbx.Type = MessageType.None; gbx.Handle = handle; gbx.Result = Encoding.UTF8.GetString(data); gbx.ErrorCode = 0; gbx.ErrorString = ""; var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(gbx.Result); XmlElement methodParams = null; // message is of type request ... if (xmlDoc["methodCall"] != null) { // check message type ... if (handle > 0) { gbx.Type = MessageType.Callback; } else { gbx.Type = MessageType.Request; } // try to get the method name ... if (xmlDoc["methodCall"]["methodName"] != null) { gbx.EventName = xmlDoc["methodCall"]["methodName"].InnerText; } else { gbx.isError = true; } // try to get the mehtod's parameters ... if (xmlDoc["methodCall"]["params"] != null) { gbx.isError = false; methodParams = xmlDoc["methodCall"]["params"]; } else { gbx.isError = true; } } else if (xmlDoc["methodResponse"] != null) // message is of type response ... { // check message type ... gbx.Type = MessageType.Response; if (xmlDoc["methodResponse"]["fault"] != null) { var errStruct = (Dictionary <string, object>)ParseXml(xmlDoc["methodResponse"]["fault"]); gbx.ErrorCode = (int)errStruct["faultCode"]; gbx.ErrorString = (string)errStruct["faultString"]; gbx.isError = true; } else if (xmlDoc["methodResponse"]["params"] != null) { gbx.isError = false; methodParams = xmlDoc["methodResponse"]["params"]; } else { gbx.isError = true; } } else { gbx.isError = true; } // parse each parameter of the message, if there are any ... List <object> parameters = new List <object>(); if (methodParams != null) { foreach (XmlElement param in methodParams) { parameters.Add(GbxParam.ParseXml(param)); } } gbx.Parameters = parameters.ToArray(); return(gbx); }