Example #1
0
        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);
                }
            }
        }
Example #2
0
        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;
                }
            }
        }
Example #3
0
        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();
            }
        }