-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprocessor.go
More file actions
39 lines (31 loc) · 782 Bytes
/
Copy pathprocessor.go
File metadata and controls
39 lines (31 loc) · 782 Bytes
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
package main
import "log"
type MessageProcessor struct {
ctx *Context
}
func NewMessageProcessor(ctx *Context) MessageProcessor {
return MessageProcessor{ctx}
}
func (self *MessageProcessor) MessageProcessorRun() {
for {
msg := <-self.ctx.MessageService.Channel()
switch {
case msg.Kind == TYPE_ANNOUNCE:
self.processAnnounce(msg)
}
}
}
func (self *MessageProcessor) processAnnounce(msg Message) {
detail := msg.Detail.(AnnounceDetail)
if detail.Respond {
self.ctx.MessageService.Send(NewAnnounceMessage(self.ctx.Config.NodeInfo, false), msg.Source)
}
exists, err := self.ctx.NodeService.NodeExists(detail.Id)
if err != nil {
log.Println(err)
return
}
if !exists {
self.ctx.NodeService.AddNode(NewNode(detail.Id, detail.Name, msg.Source))
}
}