forked from cerc-io/plugeth
whisper: refactoring
This commit is contained in:
parent
b677a07d36
commit
6919c36432
@ -60,32 +60,9 @@ func NewPublicWhisperAPI(w *Whisper) *PublicWhisperAPI {
|
||||
w: w,
|
||||
lastUsed: make(map[string]time.Time),
|
||||
}
|
||||
|
||||
go api.run()
|
||||
return api
|
||||
}
|
||||
|
||||
// run the api event loop.
|
||||
// this loop deletes filter that have not been used within filterTimeout
|
||||
func (api *PublicWhisperAPI) run() {
|
||||
timeout := time.NewTicker(2 * time.Minute)
|
||||
for {
|
||||
<-timeout.C
|
||||
|
||||
api.mu.Lock()
|
||||
for id, lastUsed := range api.lastUsed {
|
||||
if time.Since(lastUsed).Seconds() >= filterTimeout {
|
||||
delete(api.lastUsed, id)
|
||||
if err := api.w.Unsubscribe(id); err != nil {
|
||||
log.Error("could not unsubscribe whisper filter", "error", err)
|
||||
}
|
||||
log.Debug("delete whisper filter (timeout)", "id", id)
|
||||
}
|
||||
}
|
||||
api.mu.Unlock()
|
||||
}
|
||||
}
|
||||
|
||||
// Version returns the Whisper sub-protocol version.
|
||||
func (api *PublicWhisperAPI) Version(ctx context.Context) string {
|
||||
return ProtocolVersionStr
|
||||
|
@ -61,32 +61,9 @@ func NewPublicWhisperAPI(w *Whisper) *PublicWhisperAPI {
|
||||
w: w,
|
||||
lastUsed: make(map[string]time.Time),
|
||||
}
|
||||
|
||||
go api.run()
|
||||
return api
|
||||
}
|
||||
|
||||
// run the api event loop.
|
||||
// this loop deletes filter that have not been used within filterTimeout
|
||||
func (api *PublicWhisperAPI) run() {
|
||||
timeout := time.NewTicker(2 * time.Minute)
|
||||
for {
|
||||
<-timeout.C
|
||||
|
||||
api.mu.Lock()
|
||||
for id, lastUsed := range api.lastUsed {
|
||||
if time.Since(lastUsed).Seconds() >= filterTimeout {
|
||||
delete(api.lastUsed, id)
|
||||
if err := api.w.Unsubscribe(id); err != nil {
|
||||
log.Error("could not unsubscribe whisper filter", "error", err)
|
||||
}
|
||||
log.Debug("delete whisper filter (timeout)", "id", id)
|
||||
}
|
||||
}
|
||||
api.mu.Unlock()
|
||||
}
|
||||
}
|
||||
|
||||
// Version returns the Whisper sub-protocol version.
|
||||
func (api *PublicWhisperAPI) Version(ctx context.Context) string {
|
||||
return ProtocolVersionStr
|
||||
@ -219,7 +196,8 @@ func (api *PublicWhisperAPI) DeleteSymKey(ctx context.Context, id string) bool {
|
||||
return api.w.DeleteSymKey(id)
|
||||
}
|
||||
|
||||
// MakeLightClient turns the node into light client, which does not forward any incoming messages.
|
||||
// MakeLightClient turns the node into light client, which does not forward
|
||||
// any incoming messages, and sends only messages originated in this node.
|
||||
func (api *PublicWhisperAPI) MakeLightClient(ctx context.Context) bool {
|
||||
api.w.lightClient = true
|
||||
return api.w.lightClient
|
||||
|
@ -590,10 +590,7 @@ func (whisper *Whisper) Unsubscribe(id string) error {
|
||||
// network in the coming cycles.
|
||||
func (whisper *Whisper) Send(envelope *Envelope) error {
|
||||
ok, err := whisper.add(envelope, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !ok {
|
||||
if err == nil && !ok {
|
||||
return fmt.Errorf("failed to add envelope")
|
||||
}
|
||||
return err
|
||||
|
Loading…
Reference in New Issue
Block a user