-
Notifications
You must be signed in to change notification settings - Fork 0
/
packet.go
89 lines (76 loc) · 1.6 KB
/
packet.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package fleet
import (
"encoding/gob"
"time"
)
func init() {
gob.Register(&PacketHandshake{})
gob.Register(&PacketAnnounce{})
gob.Register(&PacketSeed{})
gob.Register(&PacketRpc{})
gob.Register(&PacketRpcResponse{})
gob.Register(&PacketDbRecord{})
gob.Register(DbStamp{})
gob.Register(&PacketDbVersions{})
gob.Register(&PacketDbVersionsEntry{})
gob.Register(&PacketDbRequest{})
}
type Packet interface{}
type PacketHandshake struct {
Id string
Name string
Division string
Now time.Time
Git string
Build string
}
type PacketAnnounce struct {
Id string
Now time.Time
Idx uint64
NumG uint32 // number of goroutines
AZ string
Meta map[string]interface{}
}
type PacketSeed struct {
Seed []byte
Time time.Time
}
type PacketRpc struct {
TargetId string
SourceId string
Endpoint string
R uintptr
Data interface{}
}
type PacketRpcResponse struct {
TargetId string
SourceId string
R uintptr
Data interface{}
Error string
HasError bool
}
type PacketDbRecord struct {
TargetId string
SourceId string
Stamp DbStamp
Bucket []byte // typically "app"
Key, Val []byte
}
// PacketDbVersions signals what records are available in a peer, typically sent on connection established
type PacketDbVersions struct {
Info []*PacketDbVersionsEntry
}
type PacketDbVersionsEntry struct {
Stamp DbStamp
Bucket []byte // typically "app"
Key []byte
}
// PacketDbRequest requests a specific record, response will be a PacketDbRecord
type PacketDbRequest struct {
TargetId string
SourceId string
Bucket []byte // typically "app"
Key []byte
}