private EventArguments(SIO_Connection conn, long msgId, JSL.Array req) { this._conn=conn; this._msgId=msgId; this._request=req; this.Count=req.Count(); }
public static bool ParseEvent(SIO_Connection conn, string msg) { string sb; string tmpS; long msgId; int idx=msg.IndexOf('[', 2); if(idx<3 || !long.TryParse(msg.Substring(2, idx-2), out msgId)) { msgId=-1; } tmpS=msg.Substring(idx); sb=conn.ToString()+"\n REQ : "+tmpS; var jo=JSL.JSON.parse(tmpS, _JSON_Replacer) as JSL.Array; if(jo==null) { return false; } Action<EventArguments> f; lock(conn._events) { if(!conn._events.TryGetValue(JSL.JSON.stringify(jo[0], null, null), out f)) { f=null; } } if(f==null) { tmpS=string.Concat(msgId<0?string.Empty:msgId.ToString(), "[\"Not found\",", JSL.JSON.stringify(jo[0], null, null), "]"); conn.Send("44"+tmpS); X13.Log.Warning("{0}ERROR: {1}", sb, tmpS); return false; } EventArguments ea=new EventArguments(conn, msgId, jo); try { f(ea); if(ea._msgId >= 0 || (ea._error && ea._response != null)) { tmpS = ea._response == null ? "[]" : JSL.JSON.stringify(ea._response, null, null); conn.Send(string.Concat("4", ea._error ? "4" : "3", msgId < 0 ? string.Empty : msgId.ToString(), tmpS)); if(ea._error) { X13.Log.Warning("{0}\n ERROR: {1}", sb, tmpS); } else { X13.Log.Debug("{0}\n RESP : {1}", sb, tmpS); } } else { X13.Log.Debug("{0}", sb, tmpS); } } catch(Exception ex) { tmpS="[\"Internal error\"," + JSL.JSON.stringify(jo[0], null, null) + "]"; conn.Send(string.Concat("44", msgId<0?string.Empty:msgId.ToString(), tmpS)); X13.Log.Warning("{0}EXCEPTION: {1}", sb.ToString(), ex.ToString()); } return true; }