private void CopyOneDirStock(Direction dir, ref CSharedStocks source, int precision) { for (int i = 0; i < this[dir][precision].Length; i++) { this[dir][precision][i].Price = source[dir][precision][i].Price; this[dir][precision][i].Volume = source[dir][precision][i].Volume; } }
public bool CopyStocksFull(ref CSharedStocks source) { //2018-06-26 removed //if (source.Count != this.Count) //return false; bool bWasCopied = false; lock (source.Lck) { lock (this.Lck) { try { CopyOneDirStockFull(Direction.Up, ref source); CopyOneDirStockFull(Direction.Down, ref source); UpdateBidAsk(); LstStockConf = new List <CStockConf>(source.LstStockConf); //return true; bWasCopied = true; foreach (var kvp in source.QueueCmdStockExch) { Direction dir = kvp.Key; foreach (var kvp2 in kvp.Value) { int prec = kvp2.Key; foreach (var cmdStockCh in kvp2.Value) { _queueCmdStockExch[dir][prec].Add(cmdStockCh); } kvp2.Value.Clear(); } } } catch (Exception e) { //return false; bWasCopied = false; } } } return(bWasCopied); }
public bool IsStocksDifferent(CSharedStocks stkToCompare) { lock (this.Lck) { lock (stkToCompare.Lck) { return(OneDirStockIsDifferent(Direction.Up, stkToCompare) || OneDirStockIsDifferent(Direction.Down, stkToCompare)); } } //return false; }
private void CopyOneDirStockFull(Direction dir, ref CSharedStocks source) { foreach (var el in this[dir]) { int prec = el.Key; //2018-06-26 was "till source.Count;" //now "till this[dir][prec].Length", source could have more length, //so truncate stock (edge elements far from stock - not important) for (int i = 0; i < this[dir][prec].Length; i++) { this[dir][prec][i].Price = source[dir][prec][i].Price; this[dir][prec][i].Volume = source[dir][prec][i].Volume; } } }
public bool CopyStocksBothDir(ref CSharedStocks source, int precision) { //2018-06-26 removed //if (source.Count != this.Count) //return false; bool bWasCopied = false; lock (source.Lck) { lock (this.Lck) { try { CopyOneDirStock(Direction.Up, ref source, precision); CopyOneDirStock(Direction.Down, ref source, precision); UpdateBidAsk(); LstStockConf = new List <CStockConf>(source.LstStockConf); //return true; bWasCopied = true; if (source.InpCmdStockChange[Direction.Up][precision] != null) { _queueCmdStockExch[Direction.Up][precision].Add(source.InpCmdStockChange[Direction.Up][precision]); } if (source.InpCmdStockChange[Direction.Down][precision] != null) { _queueCmdStockExch[Direction.Down][precision].Add(source.InpCmdStockChange[Direction.Down][precision]); } } catch (Exception e) { //return false; bWasCopied = false; } } } return(bWasCopied); }
private bool OneDirStockIsDifferent(Direction dir, CSharedStocks stkToCompare) { foreach (var el in this[dir]) { int prec = el.Key; for (int i = 0; i < stkToCompare.GetStockDepth(prec); i++) { if (this[dir][prec][i].Price != stkToCompare[dir][prec][i].Price || this[dir][prec][i].Volume != stkToCompare[dir][prec][i].Volume) { return(true); } } } return(false); }