Refactor moved message functionality from filter to message (#1951)
When documenting the `filter.go` file I found that there was a lot of functionality that belongs in the `message.go` file, so I've moved it.
This commit is contained in:
parent
cc8d57752f
commit
a98e31c20f
|
@ -28,47 +28,6 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MessageStore defines interface for temporary message store.
|
|
||||||
type MessageStore interface {
|
|
||||||
Add(*ReceivedMessage) error
|
|
||||||
Pop() ([]*ReceivedMessage, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewMemoryMessageStore returns pointer to an instance of the MemoryMessageStore.
|
|
||||||
func NewMemoryMessageStore() *MemoryMessageStore {
|
|
||||||
return &MemoryMessageStore{
|
|
||||||
messages: map[common.Hash]*ReceivedMessage{},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// MemoryMessageStore stores massages in memory hash table.
|
|
||||||
type MemoryMessageStore struct {
|
|
||||||
mu sync.Mutex
|
|
||||||
messages map[common.Hash]*ReceivedMessage
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add adds message to store.
|
|
||||||
func (store *MemoryMessageStore) Add(msg *ReceivedMessage) error {
|
|
||||||
store.mu.Lock()
|
|
||||||
defer store.mu.Unlock()
|
|
||||||
if _, exist := store.messages[msg.EnvelopeHash]; !exist {
|
|
||||||
store.messages[msg.EnvelopeHash] = msg
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pop returns all available messages and cleans the store.
|
|
||||||
func (store *MemoryMessageStore) Pop() ([]*ReceivedMessage, error) {
|
|
||||||
store.mu.Lock()
|
|
||||||
defer store.mu.Unlock()
|
|
||||||
all := make([]*ReceivedMessage, 0, len(store.messages))
|
|
||||||
for hash, msg := range store.messages {
|
|
||||||
delete(store.messages, hash)
|
|
||||||
all = append(all, msg)
|
|
||||||
}
|
|
||||||
return all, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Filter represents a Waku message filter
|
// Filter represents a Waku message filter
|
||||||
type Filter struct {
|
type Filter struct {
|
||||||
Src *ecdsa.PublicKey // Sender of the message
|
Src *ecdsa.PublicKey // Sender of the message
|
||||||
|
|
|
@ -28,6 +28,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
mrand "math/rand"
|
mrand "math/rand"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
@ -445,3 +446,44 @@ func (msg *ReceivedMessage) hash() []byte {
|
||||||
}
|
}
|
||||||
return crypto.Keccak256(msg.Raw)
|
return crypto.Keccak256(msg.Raw)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MessageStore defines interface for temporary message store.
|
||||||
|
type MessageStore interface {
|
||||||
|
Add(*ReceivedMessage) error
|
||||||
|
Pop() ([]*ReceivedMessage, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewMemoryMessageStore returns pointer to an instance of the MemoryMessageStore.
|
||||||
|
func NewMemoryMessageStore() *MemoryMessageStore {
|
||||||
|
return &MemoryMessageStore{
|
||||||
|
messages: map[common.Hash]*ReceivedMessage{},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MemoryMessageStore stores massages in memory hash table.
|
||||||
|
type MemoryMessageStore struct {
|
||||||
|
mu sync.Mutex
|
||||||
|
messages map[common.Hash]*ReceivedMessage
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add adds message to store.
|
||||||
|
func (store *MemoryMessageStore) Add(msg *ReceivedMessage) error {
|
||||||
|
store.mu.Lock()
|
||||||
|
defer store.mu.Unlock()
|
||||||
|
if _, exist := store.messages[msg.EnvelopeHash]; !exist {
|
||||||
|
store.messages[msg.EnvelopeHash] = msg
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pop returns all available messages and cleans the store.
|
||||||
|
func (store *MemoryMessageStore) Pop() ([]*ReceivedMessage, error) {
|
||||||
|
store.mu.Lock()
|
||||||
|
defer store.mu.Unlock()
|
||||||
|
all := make([]*ReceivedMessage, 0, len(store.messages))
|
||||||
|
for hash, msg := range store.messages {
|
||||||
|
delete(store.messages, hash)
|
||||||
|
all = append(all, msg)
|
||||||
|
}
|
||||||
|
return all, nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue