private void OnBlockChainMessage(BlockChainMessage m) { var deltas = new List <TxDelta>(); using (var dbTx = _DBContext.GetTransactionContext()) { if (m is TxMessage) { var newTxStateMessage = m as TxMessage; HandleTx(dbTx, newTxStateMessage.TxHash, newTxStateMessage.Ptx, deltas, newTxStateMessage.State); dbTx.Commit(); } else if (m is BlockMessage) { foreach (var item in (m as BlockMessage).PointedTransactions) { HandleTx(dbTx, item.Key, item.Value, deltas, TxStateEnum.Confirmed); } dbTx.Commit(); } } if (deltas.Count > 0) { TxDeltaList.AddRange(deltas); if (OnItems != null) { OnItems(deltas); } } }
void OnBlockChainMessage(BlockChainMessage m) { if (m is TxMessage) { var txMessage = (TxMessage)m; _TxStates[txMessage.TxHash] = ((TxMessage)m).State; if (_TxStateEvents.ContainsKey(txMessage.TxHash)) { var expectedTxState = _TxStateEvents[txMessage.TxHash].Item2; if (((TxMessage)m).State == expectedTxState) { _TxStateEvents[txMessage.TxHash].Item1.Set(); } } } else if (m is BlockMessage) { foreach (var item in ((BlockMessage)m).PointedTransactions) { _TxStates[item.Key] = TxStateEnum.Confirmed; } } }
void OnBlockChainMessage(BlockChainMessage m) { _Hasher.Pause("BlockChain message"); if (m is TxMessage) { MinerTrace.Information($"Got tx ({((TxMessage)m).State})"); if (((TxMessage)m).State == TxStateEnum.Unconfirmed) { _TransactionQueue.Push(((TxMessage)m).Ptx); } RecalculateHeader(); } else if (m is BlockMessage) { MinerTrace.Information("Got bk"); Reset(); } }