This repository has been archived by the owner on Aug 27, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 27
/
msgfilter.go
74 lines (70 loc) · 1.93 KB
/
msgfilter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package synch
import (
"context"
"fmt"
"github.com/Qitmeer/qitmeer/core/types"
"github.com/Qitmeer/qitmeer/p2p/common"
pb "github.com/Qitmeer/qitmeer/p2p/proto/v1"
libp2pcore "github.com/libp2p/go-libp2p-core"
)
func (s *Sync) HandlerFilterMsgAdd(ctx context.Context, msg interface{}, stream libp2pcore.Stream) *common.Error {
ctx, cancel := context.WithTimeout(ctx, HandleTimeout)
var err error
defer func() {
cancel()
}()
pe := s.peers.Get(stream.Conn().RemotePeer())
if pe == nil {
return ErrPeerUnknown
}
m, ok := msg.(*pb.FilterAddRequest)
if !ok {
err = fmt.Errorf("message is not type *MsgFilterAdd")
return ErrMessage(err)
}
s.peerSync.msgChan <- &OnFilterAddMsg{pe: pe, data: &types.MsgFilterAdd{
Data: m.Data,
}}
return nil
}
func (s *Sync) HandlerFilterMsgClear(ctx context.Context, msg interface{}, stream libp2pcore.Stream) *common.Error {
ctx, cancel := context.WithTimeout(ctx, HandleTimeout)
var err error
defer func() {
cancel()
}()
pe := s.peers.Get(stream.Conn().RemotePeer())
if pe == nil {
return ErrPeerUnknown
}
_, ok := msg.(*pb.FilterClearRequest)
if !ok {
err = fmt.Errorf("message is not type *MsgFilterClear")
return ErrMessage(err)
}
s.peerSync.msgChan <- &OnFilterClearMsg{pe: pe, data: &types.MsgFilterClear{}}
return nil
}
func (s *Sync) HandlerFilterMsgLoad(ctx context.Context, msg interface{}, stream libp2pcore.Stream) *common.Error {
ctx, cancel := context.WithTimeout(ctx, HandleTimeout)
var err error
defer func() {
cancel()
}()
pe := s.peers.Get(stream.Conn().RemotePeer())
if pe == nil {
return ErrPeerUnknown
}
m, ok := msg.(*pb.FilterLoadRequest)
if !ok {
err = fmt.Errorf("message is not type *MsgFilterLoad")
return ErrMessage(err)
}
s.peerSync.msgChan <- &OnFilterLoadMsg{pe: pe, data: &types.MsgFilterLoad{
Filter: m.Filter,
HashFuncs: uint32(m.HashFuncs),
Tweak: uint32(m.Tweak),
Flags: types.BloomUpdateType(m.Flags),
}}
return nil
}