-
Notifications
You must be signed in to change notification settings - Fork 1
/
packet.go
72 lines (58 loc) · 1.16 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
package fdp
import (
"fmt"
"strings"
)
type packet interface {
Marshal() []byte
Unmarshal([]byte) error
fmt.Stringer
}
const (
idEnd = 16
lastIDEnd = idEnd + 16
dataLenEnd = lastIDEnd + 16
dataPacketHeaderLen = dataLenEnd
)
type dataPacket struct {
ID []byte
LastID []byte
DataLen uint16
Data []byte
}
func newDataPacket() *dataPacket {
return &dataPacket{}
}
func (p *dataPacket) Marshal() []byte {
return nil
}
func (p *dataPacket) Unmarshal([]byte) error {
return nil
}
func (p *dataPacket) String() string {
return fmt.Sprintf("dataPacket: ID = %s, LastID = %s, DataLen = %d, Data: %v", string(p.ID), string(p.LastID), p.DataLen, p.Data)
}
const (
numEnd = 16
idLen = 16
)
type ackPacket struct {
Num uint16
IDS [][]byte
}
func newAckPacket() *ackPacket {
return &ackPacket{}
}
func (p *ackPacket) Marshal() []byte {
return nil
}
func (p *ackPacket) Unmarshal([]byte) error {
return nil
}
func (p *ackPacket) String() string {
ids := make([]string, len(p.IDS))
for i, v := range p.IDS {
ids[i] = string(v)
}
return fmt.Sprintf("ackPacket: Num = %d, IDS = [ %s ]", p.Num, strings.Join(ids, " "))
}