private void DeleteIndex(Block block) { if (block.Transactions == null) { return; } if (block.Header.Index == 0) //genesis block { OwnerIndex.DeleteIndex(); } foreach (var record in block.Transactions) { if (record is TransactionToken) { TokenIndex.DeleteIndex(record as TransactionToken); } else if (record is TransactionTransfer) { BalanceIndex.DeleteIndex(record as TransactionTransfer); } else if (record is TransactionOrderLimit) { OrderIndex.DeleteIndex(record as TransactionOrderLimit); } } }
public void UpdateIndex(Block block) { if (block.Transactions == null) { return; } if (block.Header.Index == 0) //genesis block { //Create owner index string ownerAddress = null; foreach (var record in block.Transactions) { if (record is TransactionTransfer) { ownerAddress = ((TransactionTransfer)record).ToAddress; break; } } OwnerIndex.AddToIndex(ownerAddress); } foreach (var record in block.Transactions) { if (record is TransactionToken) { TokenIndex.AddToIndex(record as TransactionToken); } else if (record is TransactionTransfer) { BalanceIndex.AddToIndex(record as TransactionTransfer); } else if (record is TransactionOrderLimit) { OrderIndex.AddToIndex(record as TransactionOrderLimit); } else if (record is TransactionOrderMatch) { OrderIndex.UpdateIndexForMatchedOrder(record as TransactionOrderMatch); } else if (record is TransactionOrderCancel) { OrderIndex.DeleteSingleTransaction((record as TransactionOrderCancel).OrderTransactionId); } else if (record is TransactionBlockFee) { BalanceIndex.AddToFeeIndex(record as TransactionBlockFee); } } //Delete expired orders from index OrderIndex.DeleteExpiredOrders(block.Header.Index); }