]> Sergey Matveev's repositories - btrtrc.git/blob - peer_protocol/protocol.go
2086063f91102a5fc21997167de268e3ea76bd07
[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
27         // BEP 5
28         Port MessageType = 9
29
30         // BEP 6 - Fast extension
31         Suggest     MessageType = 0x0d // 13
32         HaveAll     MessageType = 0x0e // 14
33         HaveNone    MessageType = 0x0f // 15
34         Reject      MessageType = 0x10 // 16
35         AllowedFast MessageType = 0x11 // 17
36
37         // BEP 10
38         Extended MessageType = 20
39 )
40
41 const (
42         HandshakeExtendedID = 0
43
44         RequestMetadataExtensionMsgType ExtendedMetadataRequestMsgType = 0
45         DataMetadataExtensionMsgType                                   = 1
46         RejectMetadataExtensionMsgType                                 = 2
47 )