]>
Commit | Line | Data |
---|---|---|
6988a057 JH |
1 | package hotline |
2 | ||
3 | import ( | |
4 | "bytes" | |
5 | "encoding/binary" | |
6 | "errors" | |
7 | ) | |
8 | ||
9 | type Transfer struct { | |
10 | Protocol [4]byte // "HTXF" 0x48545846 | |
11 | ReferenceNumber [4]byte // Unique ID generated for the transfer | |
12 | DataSize [4]byte // File size | |
13 | RSVD [4]byte // Not implemented in Hotline Protocol | |
14 | } | |
15 | ||
16 | func NewReadTransfer(b []byte) (Transfer, error) { | |
17 | r := bytes.NewReader(b) | |
18 | var transfer Transfer | |
19 | ||
20 | if err := binary.Read(r, binary.BigEndian, &transfer); err != nil { | |
21 | return transfer, err | |
22 | } | |
23 | ||
24 | // 0x48545846 (HTXF) is the only supported transfer protocol | |
25 | if transfer.Protocol != [4]byte{0x48, 0x54, 0x58, 0x46} { | |
26 | return transfer, errors.New("invalid protocol") | |
27 | } | |
28 | ||
29 | return transfer, nil | |
30 | } | |
31 | // | |
32 | //type FolderTransfer struct { | |
33 | // Protocol [4]byte // "HTXF" 0x48545846 | |
34 | // ReferenceNumber [4]byte // Unique ID generated for the transfer | |
35 | // DataSize [4]byte // File size | |
36 | // RSVD [4]byte // Not implemented in Hotline Protocol | |
37 | // Action [2]byte // Next file action | |
38 | //} | |
39 | // | |
40 | //func ReadFolderTransfer(b []byte) (FolderTransfer, error) { | |
41 | // r := bytes.NewReader(b) | |
42 | // var decodedEvent FolderTransfer | |
43 | // | |
44 | // if err := binary.Read(r, binary.BigEndian, &decodedEvent); err != nil { | |
45 | // return decodedEvent, err | |
46 | // } | |
47 | // | |
48 | // return decodedEvent, nil | |
49 | //} |