/
message.go
72 lines (59 loc) · 1.75 KB
/
message.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
package message
import (
"github.com/GoCollaborate/src/artifacts/card"
"github.com/GoCollaborate/src/artifacts/digest"
"github.com/GoCollaborate/src/artifacts/iremote"
"github.com/GoCollaborate/src/constants"
"time"
)
func NewCardMessage() *CardMessage {
cm := new(CardMessage)
cm.Digest = new(digest.Digest)
return cm
}
func NewCardMessageWithOptions(cluster string, from *card.Card, to *card.Card, cards map[string]*card.Card, timestamp int64, msgType CardMessage_Type) *CardMessage {
message := new(CardMessage)
message.Digest = new(digest.Digest)
message.SetCluster(cluster).SetFrom(from).SetTo(to).SetCards(cards).SetTimeStamp(timestamp).SetStatus(constants.GOSSIP_HEADER_UNKNOWN_ERROR).SetType(msgType)
return message
}
func (cm *CardMessage) SetCluster(cluster string) *CardMessage {
cm.Cluster = cluster
return cm
}
func (cm *CardMessage) SetFrom(from *card.Card) *CardMessage {
f := *from
cm.From = &f
return cm
}
func (cm *CardMessage) SetTo(to *card.Card) *CardMessage {
t := *to
cm.To = &t
return cm
}
func (cm *CardMessage) SetCards(cards map[string]*card.Card) *CardMessage {
cm.Digest.Cards = cards
return cm
}
func (cm *CardMessage) SetTimeStamp(timestamp int64) *CardMessage {
cm.Digest.Ts = timestamp
return cm
}
func (cm *CardMessage) SetStatus(status constants.Header) *CardMessage {
cm.Status = &Status{status.Key, status.Value}
return cm
}
func (cm *CardMessage) SetType(msgType CardMessage_Type) *CardMessage {
cm.Type = msgType
return cm
}
func (cm *CardMessage) DeleteDigestCard(key string) {
delete(cm.Digest.GetCards(), key)
}
func (cm *CardMessage) Update(dgst iremote.IDigest) {
cm.SetCards(dgst.GetCards())
cm.SetTimeStamp(dgst.GetTimeStamp())
}
func (cm *CardMessage) Stamp() {
cm.SetTimeStamp(time.Now().Unix())
}