forked from pboyd04/MotoGo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DataPacket.go
59 lines (50 loc) · 1.35 KB
/
DataPacket.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
package xnl
// DataPacket a request to initialize a XNL connection
type DataPacket struct {
Header Header
Payload Payload
}
// Payload an Xnl Packet Payload
type Payload interface {
ToArray() []byte
}
// NewDataPacket create data packet from params
func NewDataPacket(dest Address, src Address, proto Protocol, payload Payload) DataPacket {
var pkt DataPacket
pkt.Header.OpCode = DataMessage
pkt.Header.Protocol = proto
pkt.Header.Flags = 0x00
pkt.Header.Dest = dest
pkt.Header.Src = src
pkt.Payload = payload
return pkt
}
// NewDataPacketByArray create an data packet from data array
func NewDataPacketByArray(data []byte) DataPacket {
var p DataPacket
p.Header.FromArray(data)
var g GenericPayload
g.Payload = data[14:]
p.Payload = g
return p
}
// GetHeader returns the header for the packet
func (p DataPacket) GetHeader() Header {
return p.Header
}
// SetHeader returns the header for the packet
func (p DataPacket) SetHeader(h Header) {
p.Header = h
}
// ToArray converts a packet to a byte array
func (p DataPacket) ToArray() []byte {
return p.Header.ToArray(p.Payload.ToArray())
}
// GenericPayload a generic payload struct
type GenericPayload struct {
Payload []byte
}
// ToArray converts a generic payload to an array
func (g GenericPayload) ToArray() []byte {
return g.Payload
}