aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-12-15 19:01:55 +0800
committerobscuren <geffobscura@gmail.com>2014-12-15 19:01:55 +0800
commitafc8b887abfbfeaec5040a39f0f20d3071902abe (patch)
treef8f6566590cc306ff8498a270bd5bcdfc650f7c0
parentf111fc060884d69fbe46066b9ccae4c9aa5da890 (diff)
downloaddexon-afc8b887abfbfeaec5040a39f0f20d3071902abe.tar.gz
dexon-afc8b887abfbfeaec5040a39f0f20d3071902abe.tar.zst
dexon-afc8b887abfbfeaec5040a39f0f20d3071902abe.zip
added whisper
-rw-r--r--eth/backend.go37
-rw-r--r--whisper/whisper.go26
2 files changed, 35 insertions, 28 deletions
diff --git a/eth/backend.go b/eth/backend.go
index bdd5956a3..0bdeeea2a 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -14,6 +14,7 @@ import (
"github.com/ethereum/go-ethereum/pow/ezp"
"github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum/go-ethereum/state"
+ "github.com/ethereum/go-ethereum/whisper"
)
const (
@@ -28,26 +29,23 @@ type Ethereum struct {
quit chan bool
// DB interface
- db ethutil.Database
+ db ethutil.Database
+ blacklist p2p.Blacklist
+
+ //*** SERVICES ***
// State manager for processing new blocks and managing the over all states
blockManager *core.BlockManager
- // The transaction pool. Transaction can be pushed on this pool
- // for later including in the blocks
- txPool *core.TxPool
- // The canonical chain
+ txPool *core.TxPool
chainManager *core.ChainManager
- // The block pool
- blockPool *BlockPool
- // Event
- eventMux *event.TypeMux
+ blockPool *BlockPool
+ whisper *whisper.Whisper
- blacklist p2p.Blacklist
- server *p2p.Server
- txSub event.Subscription
- blockSub event.Subscription
-
- RpcServer *rpc.JsonRpcServer
+ server *p2p.Server
+ eventMux *event.TypeMux
+ txSub event.Subscription
+ blockSub event.Subscription
+ RpcServer *rpc.JsonRpcServer
keyManager *crypto.KeyManager
clientIdentity p2p.ClientIdentity
@@ -73,7 +71,7 @@ func New(db ethutil.Database, identity p2p.ClientIdentity, keyManager *crypto.Ke
db: db,
keyManager: keyManager,
clientIdentity: identity,
- blacklist: p2p.NewBlocklist(),
+ blacklist: p2p.NewBlacklist(),
eventMux: &event.TypeMux{},
filters: make(map[int]*core.Filter),
}
@@ -82,12 +80,13 @@ func New(db ethutil.Database, identity p2p.ClientIdentity, keyManager *crypto.Ke
eth.chainManager = core.NewChainManager(eth.EventMux())
eth.blockManager = core.NewBlockManager(eth)
eth.chainManager.SetProcessor(eth.blockManager)
+ eth.whisper = whisper.New()
hasBlock := eth.chainManager.HasBlock
insertChain := eth.chainManager.InsertChain
eth.blockPool = NewBlockPool(hasBlock, insertChain, ezp.Verify)
- // Start the tx pool
+ // Start services
eth.txPool.Start()
ethProto := EthProtocol(eth.txPool, eth.chainManager, eth.blockPool)
@@ -98,7 +97,7 @@ func New(db ethutil.Database, identity p2p.ClientIdentity, keyManager *crypto.Ke
MaxPeers: maxPeers,
Protocols: protocols,
ListenAddr: ":" + port,
- Blacklist: blacklist,
+ Blacklist: eth.blacklist,
NAT: nat,
}
@@ -162,6 +161,7 @@ func (s *Ethereum) Start(seed bool) error {
return err
}
s.blockPool.Start()
+ s.whisper.Start()
go s.filterLoop()
@@ -211,6 +211,7 @@ func (s *Ethereum) Stop() {
s.txPool.Stop()
s.eventMux.Stop()
s.blockPool.Stop()
+ s.whisper.Stop()
logger.Infoln("Server stopped")
close(s.shutdownChan)
diff --git a/whisper/whisper.go b/whisper/whisper.go
index 356debd1c..1b3f54b67 100644
--- a/whisper/whisper.go
+++ b/whisper/whisper.go
@@ -4,12 +4,12 @@ import (
"bytes"
"crypto/ecdsa"
"errors"
- "fmt"
"sync"
"time"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/event/filter"
+ "github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/p2p"
"gopkg.in/fatih/set.v0"
)
@@ -47,6 +47,8 @@ type MessageEvent struct {
const DefaultTtl = 50 * time.Second
+var wlogger = logger.NewLogger("SHH")
+
type Whisper struct {
protocol p2p.Protocol
filters *filter.Filters
@@ -68,16 +70,15 @@ func New() *Whisper {
quit: make(chan struct{}),
}
whisper.filters.Start()
- go whisper.update()
// XXX TODO REMOVE TESTING CODE
- msg := NewMessage([]byte(fmt.Sprintf("Hello world. This is whisper-go. Incase you're wondering; the time is %v", time.Now())))
- envelope, _ := msg.Seal(DefaultPow, Opts{
- Ttl: DefaultTtl,
- })
- if err := whisper.Send(envelope); err != nil {
- fmt.Println(err)
- }
+ //msg := NewMessage([]byte(fmt.Sprintf("Hello world. This is whisper-go. Incase you're wondering; the time is %v", time.Now())))
+ //envelope, _ := msg.Seal(DefaultPow, Opts{
+ // Ttl: DefaultTtl,
+ //})
+ //if err := whisper.Send(envelope); err != nil {
+ // fmt.Println(err)
+ //}
// XXX TODO REMOVE TESTING CODE
// p2p whisper sub protocol handler
@@ -91,6 +92,11 @@ func New() *Whisper {
return whisper
}
+func (self *Whisper) Start() {
+ wlogger.Infoln("Whisper started")
+ go self.update()
+}
+
func (self *Whisper) Stop() {
close(self.quit)
}
@@ -236,7 +242,7 @@ func (self *Whisper) postEvent(envelope *Envelope) {
Str1: string(crypto.FromECDSA(key)), Str2: string(crypto.FromECDSAPub(message.Recover())),
}, message)
} else {
- fmt.Println(err)
+ wlogger.Infoln(err)
}
}
}