aboutsummaryrefslogtreecommitdiffstats
path: root/whisper
diff options
context:
space:
mode:
Diffstat (limited to 'whisper')
-rw-r--r--whisper/envelope.go23
-rw-r--r--whisper/sort.go8
-rw-r--r--whisper/sort_test.go16
-rw-r--r--whisper/whisper.go28
4 files changed, 34 insertions, 41 deletions
diff --git a/whisper/envelope.go b/whisper/envelope.go
index 15a974a2c..20e3e6d39 100644
--- a/whisper/envelope.go
+++ b/whisper/envelope.go
@@ -18,26 +18,31 @@ const (
type Envelope struct {
Expiry uint32 // Whisper protocol specifies int32, really should be int64
- Ttl uint32 // ^^^^^^
+ TTL uint32 // ^^^^^^
Topics [][]byte
Data []byte
Nonce uint32
- hash Hash
+ hash common.Hash
}
-func (self *Envelope) Hash() Hash {
- if self.hash == EmptyHash {
+func (self *Envelope) Hash() common.Hash {
+ if (self.hash == common.Hash{}) {
enc, _ := rlp.EncodeToBytes(self)
- self.hash = H(crypto.Sha3(enc))
+ self.hash = crypto.Sha3Hash(enc)
}
return self.hash
}
func NewEnvelope(ttl time.Duration, topics [][]byte, data *Message) *Envelope {
exp := time.Now().Add(ttl)
-
- return &Envelope{uint32(exp.Unix()), uint32(ttl.Seconds()), topics, data.Bytes(), 0, Hash{}}
+ return &Envelope{
+ Expiry: uint32(exp.Unix()),
+ TTL: uint32(ttl.Seconds()),
+ Topics: topics,
+ Data: data.Bytes(),
+ Nonce: 0,
+ }
}
func (self *Envelope) Seal(pow time.Duration) {
@@ -104,7 +109,7 @@ func (self *Envelope) valid() bool {
}
func (self *Envelope) withoutNonce() interface{} {
- return []interface{}{self.Expiry, self.Ttl, self.Topics, self.Data}
+ return []interface{}{self.Expiry, self.TTL, self.Topics, self.Data}
}
// rlpenv is an Envelope but is not an rlp.Decoder.
@@ -119,6 +124,6 @@ func (self *Envelope) DecodeRLP(s *rlp.Stream) error {
if err := rlp.DecodeBytes(raw, (*rlpenv)(self)); err != nil {
return err
}
- self.hash = H(crypto.Sha3(raw))
+ self.hash = crypto.Sha3Hash(raw)
return nil
}
diff --git a/whisper/sort.go b/whisper/sort.go
index 8c5b46e9e..313ba5ac0 100644
--- a/whisper/sort.go
+++ b/whisper/sort.go
@@ -1,6 +1,10 @@
package whisper
-import "sort"
+import (
+ "sort"
+
+ "github.com/ethereum/go-ethereum/common"
+)
type sortedKeys struct {
k []int32
@@ -10,7 +14,7 @@ func (self *sortedKeys) Len() int { return len(self.k) }
func (self *sortedKeys) Less(i, j int) bool { return self.k[i] < self.k[j] }
func (self *sortedKeys) Swap(i, j int) { self.k[i], self.k[j] = self.k[j], self.k[i] }
-func sortKeys(m map[int32]Hash) []int32 {
+func sortKeys(m map[int32]common.Hash) []int32 {
sorted := new(sortedKeys)
sorted.k = make([]int32, len(m))
i := 0
diff --git a/whisper/sort_test.go b/whisper/sort_test.go
index 5d8177d41..a61fde4c2 100644
--- a/whisper/sort_test.go
+++ b/whisper/sort_test.go
@@ -1,13 +1,17 @@
package whisper
-import "testing"
+import (
+ "testing"
+
+ "github.com/ethereum/go-ethereum/common"
+)
func TestSorting(t *testing.T) {
- m := map[int32]Hash{
- 1: HS("1"),
- 3: HS("3"),
- 2: HS("2"),
- 5: HS("5"),
+ m := map[int32]common.Hash{
+ 1: {1},
+ 3: {3},
+ 2: {2},
+ 5: {5},
}
exp := []int32{1, 2, 3, 5}
res := sortKeys(m)
diff --git a/whisper/whisper.go b/whisper/whisper.go
index 908df973c..dbd4fc85f 100644
--- a/whisper/whisper.go
+++ b/whisper/whisper.go
@@ -1,12 +1,12 @@
package whisper
import (
- "bytes"
"crypto/ecdsa"
"errors"
"sync"
"time"
+ "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/crypto/ecies"
"github.com/ethereum/go-ethereum/event/filter"
@@ -15,26 +15,6 @@ import (
"gopkg.in/fatih/set.v0"
)
-// MOVE ME
-type Hash struct {
- hash string
-}
-
-var EmptyHash Hash
-
-func H(hash []byte) Hash {
- return Hash{string(hash)}
-}
-func HS(hash string) Hash {
- return Hash{hash}
-}
-
-func (self Hash) Compare(other Hash) int {
- return bytes.Compare([]byte(self.hash), []byte(other.hash))
-}
-
-// MOVE ME END
-
const (
statusMsg = 0x0
envelopesMsg = 0x01
@@ -55,7 +35,7 @@ type Whisper struct {
filters *filter.Filters
mmu sync.RWMutex
- messages map[Hash]*Envelope
+ messages map[common.Hash]*Envelope
expiry map[uint32]*set.SetNonTS
quit chan struct{}
@@ -65,7 +45,7 @@ type Whisper struct {
func New() *Whisper {
whisper := &Whisper{
- messages: make(map[Hash]*Envelope),
+ messages: make(map[common.Hash]*Envelope),
filters: filter.New(),
expiry: make(map[uint32]*set.SetNonTS),
quit: make(chan struct{}),
@@ -239,7 +219,7 @@ func (self *Whisper) expire() {
}
hashSet.Each(func(v interface{}) bool {
- delete(self.messages, v.(Hash))
+ delete(self.messages, v.(common.Hash))
return true
})
self.expiry[then].Clear()