2013-09-29 06:11:24 +08:00
|
|
|
package peer_protocol
|
|
|
|
|
2018-02-02 18:29:57 +08:00
|
|
|
const (
|
|
|
|
Protocol = "\x13BitTorrent protocol"
|
2013-09-30 19:51:08 +08:00
|
|
|
)
|
|
|
|
|
2018-02-05 12:30:35 +08:00
|
|
|
type MessageType byte
|
2013-09-29 14:45:17 +08:00
|
|
|
|
2018-02-05 12:30:35 +08:00
|
|
|
//go:generate stringer -type=MessageType
|
2018-02-02 18:52:57 +08:00
|
|
|
|
2018-02-04 21:18:38 +08:00
|
|
|
func (mt MessageType) FastExtension() bool {
|
|
|
|
return mt >= Suggest && mt <= AllowedFast
|
|
|
|
}
|
|
|
|
|
2021-09-30 07:01:10 +08:00
|
|
|
func (mt *MessageType) UnmarshalBinary(b []byte) error {
|
|
|
|
*mt = MessageType(b[0])
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2013-09-29 06:11:24 +08:00
|
|
|
const (
|
2018-02-05 15:00:47 +08:00
|
|
|
// BEP 3
|
|
|
|
Choke MessageType = 0
|
|
|
|
Unchoke MessageType = 1
|
|
|
|
Interested MessageType = 2
|
|
|
|
NotInterested MessageType = 3
|
|
|
|
Have MessageType = 4
|
|
|
|
Bitfield MessageType = 5
|
|
|
|
Request MessageType = 6
|
|
|
|
Piece MessageType = 7
|
|
|
|
Cancel MessageType = 8
|
2021-01-27 14:06:31 +08:00
|
|
|
|
|
|
|
// BEP 5
|
|
|
|
Port MessageType = 9
|
2015-03-12 17:06:23 +08:00
|
|
|
|
2018-07-12 07:42:00 +08:00
|
|
|
// BEP 6 - Fast extension
|
2018-02-05 15:00:47 +08:00
|
|
|
Suggest MessageType = 0x0d // 13
|
|
|
|
HaveAll MessageType = 0x0e // 14
|
|
|
|
HaveNone MessageType = 0x0f // 15
|
|
|
|
Reject MessageType = 0x10 // 16
|
|
|
|
AllowedFast MessageType = 0x11 // 17
|
|
|
|
|
|
|
|
// BEP 10
|
|
|
|
Extended MessageType = 20
|
|
|
|
)
|
2014-06-26 22:57:07 +08:00
|
|
|
|
2018-02-05 15:00:47 +08:00
|
|
|
const (
|
2014-06-26 22:57:07 +08:00
|
|
|
HandshakeExtendedID = 0
|
2014-06-28 17:38:31 +08:00
|
|
|
|
2021-06-18 13:04:07 +08:00
|
|
|
RequestMetadataExtensionMsgType ExtendedMetadataRequestMsgType = 0
|
2021-08-16 09:11:31 +08:00
|
|
|
DataMetadataExtensionMsgType ExtendedMetadataRequestMsgType = 1
|
|
|
|
RejectMetadataExtensionMsgType ExtendedMetadataRequestMsgType = 2
|
2013-09-29 06:11:24 +08:00
|
|
|
)
|