From 7bf2ae0b116fff0fede5b1455c5fda20caf98252 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Thu, 15 May 2014 14:05:15 +0200
Subject: Removed old tx pool notification system. Fixes #19

---
 ethchain/block_chain.go      |  3 ++-
 ethchain/transaction_pool.go | 19 +++----------------
 ethminer/miner.go            |  4 ++--
 ethutil/reactor.go           |  3 ++-
 4 files changed, 9 insertions(+), 20 deletions(-)

diff --git a/ethchain/block_chain.go b/ethchain/block_chain.go
index 2be4cd92b..11fbc7795 100644
--- a/ethchain/block_chain.go
+++ b/ethchain/block_chain.go
@@ -260,7 +260,7 @@ func AddTestNetFunds(block *Block) {
 		"e6716f9544a56c530d868e4bfbacb172315bdead", // Jeffrey
 		"1e12515ce3e0f817a4ddef9ca55788a1d66bd2df", // Vit
 		"1a26338f0d905e295fccb71fa9ea849ffa12aaf4", // Alex
-		"2ef47100e0787b915105fd5e3f4ff6752079d5cb", // Maran
+		//"2ef47100e0787b915105fd5e3f4ff6752079d5cb", // Maran
 	} {
 		//log.Println("2^200 Wei to", addr)
 		codedAddr := ethutil.FromHex(addr)
@@ -268,6 +268,7 @@ func AddTestNetFunds(block *Block) {
 		account.Amount = ethutil.BigPow(2, 200)
 		block.state.UpdateStateObject(account)
 	}
+	log.Printf("%x\n", block.RlpEncode())
 }
 
 func (bc *BlockChain) setLastBlock() {
diff --git a/ethchain/transaction_pool.go b/ethchain/transaction_pool.go
index 6c0282dc6..21ce8cdc1 100644
--- a/ethchain/transaction_pool.go
+++ b/ethchain/transaction_pool.go
@@ -133,7 +133,8 @@ func (pool *TxPool) ProcessTransaction(tx *Transaction, block *Block, toContract
 
 	log.Printf("[TXPL] Processed Tx %x\n", tx.Hash())
 
-	pool.notifySubscribers(TxPost, tx)
+	// Notify all subscribers
+	pool.Ethereum.Reactor().Post("newTx:post", tx)
 
 	return
 }
@@ -188,10 +189,7 @@ out:
 				pool.addTransaction(tx)
 
 				// Notify the subscribers
-				pool.Ethereum.Reactor().Post("newTx", tx)
-
-				// Notify the subscribers
-				pool.notifySubscribers(TxPre, tx)
+				pool.Ethereum.Reactor().Post("newTx:pre", tx)
 			}
 		case <-pool.quit:
 			break out
@@ -252,14 +250,3 @@ func (pool *TxPool) Stop() {
 
 	log.Println("[TXP] Stopped")
 }
-
-func (pool *TxPool) Subscribe(channel chan TxMsg) {
-	pool.subscribers = append(pool.subscribers, channel)
-}
-
-func (pool *TxPool) notifySubscribers(ty TxMsgTy, tx *Transaction) {
-	msg := TxMsg{Type: ty, Tx: tx}
-	for _, subscriber := range pool.subscribers {
-		subscriber <- msg
-	}
-}
diff --git a/ethminer/miner.go b/ethminer/miner.go
index 3796c873e..f1d0caae9 100644
--- a/ethminer/miner.go
+++ b/ethminer/miner.go
@@ -26,7 +26,7 @@ func NewDefaultMiner(coinbase []byte, ethereum ethchain.EthManager) Miner {
 	quitChan := make(chan ethutil.React, 1)  // This is the channel that can exit the miner thread
 
 	ethereum.Reactor().Subscribe("newBlock", reactChan)
-	ethereum.Reactor().Subscribe("newTx", reactChan)
+	ethereum.Reactor().Subscribe("newTx:post", reactChan)
 
 	// We need the quit chan to be a Reactor event.
 	// The POW search method is actually blocking and if we don't
@@ -34,7 +34,7 @@ func NewDefaultMiner(coinbase []byte, ethereum ethchain.EthManager) Miner {
 	// The miner overseer will never get the reactor events themselves
 	// Only after the miner will find the sha
 	ethereum.Reactor().Subscribe("newBlock", quitChan)
-	ethereum.Reactor().Subscribe("newTx", quitChan)
+	ethereum.Reactor().Subscribe("newTx:post", quitChan)
 
 	miner := Miner{
 		pow:       &ethchain.EasyPow{},
diff --git a/ethutil/reactor.go b/ethutil/reactor.go
index f8084986c..7cf145245 100644
--- a/ethutil/reactor.go
+++ b/ethutil/reactor.go
@@ -46,6 +46,7 @@ func (e *ReactorEvent) Remove(ch chan React) {
 // Basic reactor resource
 type React struct {
 	Resource interface{}
+	Event    string
 }
 
 // The reactor basic engine. Acts as bridge
@@ -81,6 +82,6 @@ func (reactor *ReactorEngine) Unsubscribe(event string, ch chan React) {
 func (reactor *ReactorEngine) Post(event string, resource interface{}) {
 	ev := reactor.patterns[event]
 	if ev != nil {
-		ev.Post(React{Resource: resource})
+		ev.Post(React{Resource: resource, Event: event})
 	}
 }
-- 
cgit v1.2.3