private ITableManager GetUpdatedTable(Lightstreamer.DotNet.Client.ServerUpdateEvent values) { lock (this.tables.SyncRoot) { return((ITableManager)this.tables[values.WinCode]); } }
public virtual void DoUpdate(Lightstreamer.DotNet.Client.ServerUpdateEvent values) { int itemCode = values.ItemCode; int itemIndex = itemCode - 1; this.ProcessUpdate(values, itemCode, itemIndex); }
public virtual void DoUpdate(Lightstreamer.DotNet.Client.ServerUpdateEvent values) { int itemCode = values.ItemCode; if ((itemCode <= 0) || (itemCode > this.table.items.Length)) { throw new PushServerException(2); } ProcessUpdate(values, itemCode - 1, this.table, this.listener); }
internal static void ProcessUpdate(Lightstreamer.DotNet.Client.ServerUpdateEvent values, int itemIndex, ExtendedTableInfo table, IExtendedTableListener listener) { string item = table.items[itemIndex]; if (values.EOS) { try { listener.OnSnapshotEnd(item); } catch (Exception) { } } else if (values.Overflow > 0) { if (!table.hasUnfilteredData()) { throw new PushServerException(7); } actionsLogger.Warn("Got notification of updates lost for item " + item); try { listener.OnRawUpdatesLost(item, values.Overflow); } catch (Exception) { } } else { if (values.Size != table.fields.Length) { throw new PushServerException(3); } IDictionary map = values.GetMap(table.fields); if (actionsLogger.IsDebugEnabled) { actionsLogger.Debug("Got event for item " + item + " with values " + CollectionsSupport.ToString(map)); } try { listener.OnUpdate(item, map); } catch (Exception) { } } }
private static void ProcessFastUpdate(Lightstreamer.DotNet.Client.ServerUpdateEvent values, int itemIndex, ExtendedTableInfo table, IFastItemsListener listener) { if (values.EOS) { try { listener.OnSnapshotEnd(itemIndex + 1); } catch (Exception) { } } else if (values.Overflow > 0) { if (!table.hasUnfilteredData()) { throw new PushServerException(7); } try { listener.OnRawUpdatesLost(itemIndex + 1, values.Overflow); } catch (Exception) { } } else { if (values.Size != table.fields.Length) { throw new PushServerException(3); } string[] array = values.Array; if (actionsLogger.IsDebugEnabled) { actionsLogger.Debug("Got event for item " + table.items[itemIndex] + " with values " + CollectionsSupport.ToString(array) + " for fields " + CollectionsSupport.ToString(table.fields)); } try { listener.OnUpdate(itemIndex + 1, array); } catch (Exception) { } } }
public virtual void DoUpdate(Lightstreamer.DotNet.Client.ServerUpdateEvent values) { int itemCode = values.ItemCode; if (values.EOS) { try { this.listener.OnSnapshotEnd(itemCode); } catch (Exception) { } } else if (values.Overflow > 0) { if (!this.table.hasUnfilteredData()) { throw new PushServerException(7); } try { this.listener.OnRawUpdatesLost(itemCode, values.Overflow); } catch (Exception) { } } else { string[] array = values.Array; if (actionsLogger.IsDebugEnabled) { actionsLogger.Debug(string.Concat(new object[] { "Got event for item n\x00b0", itemCode, " in group ", this.table.group, " with values ", CollectionsSupport.ToString(array) })); } try { this.listener.OnUpdate(itemCode, array); } catch (Exception) { } } }
public virtual void DoUpdate(Lightstreamer.DotNet.Client.ServerUpdateEvent values) { if (values.ItemCode != 1) { throw new PushServerException(2); } if (this.enclosingInstance.managerWithListener != null) { this.enclosingInstance.managerWithListener.ProcessUpdate(values, this.itemIndex + 1, this.itemIndex); } else if (this.enclosingInstance.extListener != null) { ExtendedTableManager.ProcessUpdate(values, this.itemIndex, this.enclosingInstance.table, this.enclosingInstance.extListener); } else { VirtualTableManager.ProcessFastUpdate(values, this.itemIndex, this.enclosingInstance.table, this.enclosingInstance.fastListener); } }
public virtual void OnUpdate(ITableManager table, Lightstreamer.DotNet.Client.ServerUpdateEvent values) { IConnectionListener activeListener = this.enclosingInstance.GetActiveListener(this.currPhase); if (activeListener != null) { try { table.DoUpdate(values); } catch (PushServerException exception) { LSClient.actionsLogger.Debug("Error in received values", exception); try { activeListener.OnDataError(exception); } catch (Exception) { } } } }
public virtual void DoUpdate(Lightstreamer.DotNet.Client.ServerUpdateEvent values) { throw new PushServerException(12); }
internal virtual Lightstreamer.DotNet.Client.ServerUpdateEvent ParsePushData(string pushData) { string str; int index = pushData.IndexOf('|'); string str2 = null; if (index == -1) { int num2 = pushData.LastIndexOf(','); if (num2 == -1) { throw new PushServerException(5, pushData); } str = pushData.Substring(0, num2); str2 = pushData.Substring(num2 + 1); } else { str = pushData.Substring(0, index); } int length = str.IndexOf(','); if (length == -1) { throw new PushServerException(5, pushData); } string winCode = str.Substring(0, length); str = str.Substring(length + 1); length = str.IndexOf(','); if (length == -1) { throw new PushServerException(5, pushData); } if (!str.Substring(0, length).Equals("1")) { throw new PushServerException(5, pushData); } str = str.Substring(length + 1); if (str2 == null) { Lightstreamer.DotNet.Client.ServerUpdateEvent event2 = new Lightstreamer.DotNet.Client.ServerUpdateEvent(winCode, str); while (index < pushData.Length) { int num5 = pushData.IndexOf('|', index + 1); if (num5 == -1) { num5 = pushData.Length; } if (num5 == (index + 1)) { event2.AddValue(Lightstreamer.DotNet.Client.ServerUpdateEvent.UNCHANGED); } else { string src = pushData.Substring(index + 1, num5 - (index + 1)); if ((src.Length == 1) && (src[0] == '$')) { event2.AddValue(""); } else if ((src.Length == 1) && (src[0] == '#')) { event2.AddValue(null); } else if ((src[0] == '$') || (src[0] == '#')) { event2.AddValue(DeUNIcode(src.Substring(1))); } else { event2.AddValue(DeUNIcode(src)); } } index = num5; } if (protLogger.IsDebugEnabled) { protLogger.Debug("Read " + event2); } return event2; } if (str2.Equals("EOS")) { return new Lightstreamer.DotNet.Client.ServerUpdateEvent(winCode, str, true); } if (str2.StartsWith("OV")) { try { return new Lightstreamer.DotNet.Client.ServerUpdateEvent(winCode, str, int.Parse(str2.Substring("OV".Length))); } catch (Exception) { throw new PushServerException(5, pushData); } } throw new PushServerException(5, pushData); }
internal virtual Lightstreamer.DotNet.Client.ServerUpdateEvent ParsePushData(string pushData) { Lightstreamer.DotNet.Client.ServerUpdateEvent evnt = null; int pos; if (!pushData.StartsWith("MSG")) { string itemCode; int start = pushData.IndexOf('|'); string infoCode = null; if (start == -1) { int infoSep = pushData.LastIndexOf(','); if (infoSep == -1) { throw new PushServerException(5, pushData); } itemCode = pushData.Substring(0, infoSep); infoCode = pushData.Substring(infoSep + 1); } else { itemCode = pushData.Substring(0, start); } int sep = itemCode.IndexOf(','); if (sep == -1) { throw new PushServerException(5, pushData); } string tableCode = itemCode.Substring(0, sep); itemCode = itemCode.Substring(sep + 1); if (infoCode != null) { if (infoCode.Equals("EOS")) { return new Lightstreamer.DotNet.Client.ServerUpdateEvent(tableCode, itemCode, true); } if (infoCode.StartsWith("OV")) { try { return new Lightstreamer.DotNet.Client.ServerUpdateEvent(tableCode, itemCode, int.Parse(infoCode.Substring("OV".Length))); } catch (Exception) { throw new PushServerException(5, pushData); } } throw new PushServerException(5, pushData); } evnt = new Lightstreamer.DotNet.Client.ServerUpdateEvent(tableCode, itemCode); while (start < pushData.Length) { pos = pushData.IndexOf('|', start + 1); if (pos == -1) { pos = pushData.Length; } if (pos == (start + 1)) { evnt.AddValue(Lightstreamer.DotNet.Client.ServerUpdateEvent.UNCHANGED); } else { string val = pushData.Substring(start + 1, pos - (start + 1)); if ((val.Length == 1) && (val[0] == '$')) { evnt.AddValue(""); } else if ((val.Length == 1) && (val[0] == '#')) { evnt.AddValue(null); } else if ((val[0] == '$') || (val[0] == '#')) { evnt.AddValue(DeUNIcode(val.Substring(1))); } else { evnt.AddValue(DeUNIcode(val)); } } start = pos; } } else { int offset = 0; string[] splitted = new string[5]; int pieces = 0; if ((pushData.Length > 3) && (pushData[3] == ',')) { pos = 4; pieces = 0; while (pieces < 5) { if (pieces == 4) { splitted[pieces] = pushData.Substring(pos); } else { int next = pushData.IndexOf(comma, pos); if (next > -1) { splitted[pieces] = pushData.Substring(pos, next - pos); pos = next + 1; } else { splitted[pieces] = pushData.Substring(pos); pieces++; break; } } pieces++; } } bool ok = false; try { if (((splitted != null) && (pieces == 3)) && splitted[offset + 2].Equals("DONE")) { evnt = new Lightstreamer.DotNet.Client.ServerUpdateEvent(splitted[offset], Convert.ToInt32(splitted[offset + 1])); ok = true; } else if (((splitted != null) && (pieces == 5)) && splitted[offset + 2].Equals("ERR")) { evnt = new Lightstreamer.DotNet.Client.ServerUpdateEvent(splitted[offset], Convert.ToInt32(splitted[offset + 1]), Convert.ToInt32(splitted[offset + 3]), splitted[offset + 4]); ok = true; } } catch (FormatException) { } catch (OverflowException) { } finally { if (!ok) { throw new PushServerException(5, pushData); } } } if (protLogger.IsDebugEnabled) { protLogger.Debug("Read " + evnt); } return evnt; }
internal void ProcessUpdate(Lightstreamer.DotNet.Client.ServerUpdateEvent values, int itemPos, int itemIndex) { string name = null; ItemInfo info; if (this.extInfo != null) { if ((itemIndex < 0) || (itemIndex >= this.extInfo.items.Length)) { throw new PushServerException(2); } name = this.extInfo.items[itemIndex]; } lock (this.itemInfos) { if (this.unsubscrDone) { return; } while (this.itemInfos.Count <= itemIndex) { this.itemInfos.Add(null); } info = (ItemInfo)this.itemInfos[itemIndex]; if (info == null) { if (this.isCommandLogic) { info = new CommandLogicItemInfo(this, itemPos, name); } else { info = new ItemInfo(this, itemPos, name); } this.itemInfos[itemIndex] = info; } } if (values.EOS) { info.snapshotPending = false; try { this.listener.OnSnapshotEnd(itemPos, name); } catch (Exception) { } } else if (values.Overflow > 0) { if (!this.baseInfo.hasUnfilteredData()) { throw new PushServerException(7); } actionsLogger.Warn("Got notification of updates lost for item " + info); try { this.listener.OnRawUpdatesLost(itemPos, name, values.Overflow); } catch (Exception) { } } else { if ((this.extInfo != null) && (values.Size != this.extInfo.fields.Length)) { throw new PushServerException(3); } string[] array = values.Array; if (actionsLogger.IsDebugEnabled) { actionsLogger.Debug(string.Concat(new object[] { "Got event for item ", info, " with values ", CollectionsSupport.ToString(array) })); } bool snapshotPending = info.snapshotPending; string[] prevState = info.Update(array); if (prevState != null) { UpdateInfo update = new UpdateInfo(info, prevState, array, snapshotPending); if (actionsLogger.IsDebugEnabled) { actionsLogger.Debug(string.Concat(new object[] { "Notifying event for item ", info, " with values ", update })); } try { this.listener.OnUpdate(itemPos, name, update); } catch (Exception) { } } } }
internal virtual Lightstreamer.DotNet.Client.ServerUpdateEvent ParsePushData(string pushData) { string str; int index = pushData.IndexOf('|'); string str2 = null; if (index == -1) { int num2 = pushData.LastIndexOf(','); if (num2 == -1) { throw new PushServerException(5, pushData); } str = pushData.Substring(0, num2); str2 = pushData.Substring(num2 + 1); } else { str = pushData.Substring(0, index); } int length = str.IndexOf(','); if (length == -1) { throw new PushServerException(5, pushData); } string winCode = str.Substring(0, length); str = str.Substring(length + 1); length = str.IndexOf(','); if (length == -1) { throw new PushServerException(5, pushData); } if (!str.Substring(0, length).Equals("1")) { throw new PushServerException(5, pushData); } str = str.Substring(length + 1); if (str2 == null) { Lightstreamer.DotNet.Client.ServerUpdateEvent event2 = new Lightstreamer.DotNet.Client.ServerUpdateEvent(winCode, str); while (index < pushData.Length) { int num5 = pushData.IndexOf('|', index + 1); if (num5 == -1) { num5 = pushData.Length; } if (num5 == (index + 1)) { event2.AddValue(Lightstreamer.DotNet.Client.ServerUpdateEvent.UNCHANGED); } else { string src = pushData.Substring(index + 1, num5 - (index + 1)); if ((src.Length == 1) && (src[0] == '$')) { event2.AddValue(""); } else if ((src.Length == 1) && (src[0] == '#')) { event2.AddValue(null); } else if ((src[0] == '$') || (src[0] == '#')) { event2.AddValue(DeUNIcode(src.Substring(1))); } else { event2.AddValue(DeUNIcode(src)); } } index = num5; } if (protLogger.IsDebugEnabled) { protLogger.Debug("Read " + event2); } return(event2); } if (str2.Equals("EOS")) { return(new Lightstreamer.DotNet.Client.ServerUpdateEvent(winCode, str, true)); } if (str2.StartsWith("OV")) { try { return(new Lightstreamer.DotNet.Client.ServerUpdateEvent(winCode, str, int.Parse(str2.Substring("OV".Length)))); } catch (Exception) { throw new PushServerException(5, pushData); } } throw new PushServerException(5, pushData); }