-
Notifications
You must be signed in to change notification settings - Fork 0
/
messageProcessor.go
56 lines (42 loc) · 1.21 KB
/
messageProcessor.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
package peerDisconnecting
import (
"sync"
"github.com/bhagyaraj1208117/andes-abc-1/core"
"github.com/bhagyaraj1208117/andes-communication-go/p2p"
)
type messageProcessor struct {
mutMessages sync.Mutex
messages map[core.PeerID][]p2p.MessageP2P
}
func newMessageProcessor() *messageProcessor {
return &messageProcessor{
messages: make(map[core.PeerID][]p2p.MessageP2P),
}
}
// ProcessReceivedMessage -
func (mp *messageProcessor) ProcessReceivedMessage(message p2p.MessageP2P, fromConnectedPeer core.PeerID, _ p2p.MessageHandler) error {
mp.mutMessages.Lock()
defer mp.mutMessages.Unlock()
mp.messages[fromConnectedPeer] = append(mp.messages[fromConnectedPeer], message)
return nil
}
// Messages -
func (mp *messageProcessor) Messages(pid core.PeerID) []p2p.MessageP2P {
mp.mutMessages.Lock()
defer mp.mutMessages.Unlock()
return mp.messages[pid]
}
// AllMessages -
func (mp *messageProcessor) AllMessages() []p2p.MessageP2P {
result := make([]p2p.MessageP2P, 0)
mp.mutMessages.Lock()
defer mp.mutMessages.Unlock()
for _, messages := range mp.messages {
result = append(result, messages...)
}
return result
}
// IsInterfaceNil -
func (mp *messageProcessor) IsInterfaceNil() bool {
return mp == nil
}