]> Sergey Matveev's repositories - btrtrc.git/blob - peer_protocol/protocol.go
Add a test that short pieces are decoded correctly
[btrtrc.git] / peer_protocol / protocol.go
1 package peer_protocol
2
3 const (
4         Protocol = "\x13BitTorrent protocol"
5 )
6
7 type MessageType byte
8
9 //go:generate stringer -type=MessageType
10
11 func (mt MessageType) FastExtension() bool {
12         return mt >= Suggest && mt <= AllowedFast
13 }
14
15 const (
16         // BEP 3
17         Choke         MessageType = 0
18         Unchoke       MessageType = 1
19         Interested    MessageType = 2
20         NotInterested MessageType = 3
21         Have          MessageType = 4
22         Bitfield      MessageType = 5
23         Request       MessageType = 6
24         Piece         MessageType = 7
25         Cancel        MessageType = 8
26         Port          MessageType = 9
27
28         // BEP 6 - Fast extension
29         Suggest     MessageType = 0x0d // 13
30         HaveAll     MessageType = 0x0e // 14
31         HaveNone    MessageType = 0x0f // 15
32         Reject      MessageType = 0x10 // 16
33         AllowedFast MessageType = 0x11 // 17
34
35         // BEP 10
36         Extended MessageType = 20
37 )
38
39 const (
40         HandshakeExtendedID = 0
41
42         RequestMetadataExtensionMsgType = 0
43         DataMetadataExtensionMsgType    = 1
44         RejectMetadataExtensionMsgType  = 2
45 )