protocol.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package peer_protocol
  2. const (
  3. Protocol = "\x13BitTorrent protocol"
  4. )
  5. type MessageType byte
  6. // golang.org/x/tools/cmd/stringer
  7. //go:generate stringer -type=MessageType
  8. func (mt MessageType) FastExtension() bool {
  9. return mt >= Suggest && mt <= AllowedFast
  10. }
  11. func (mt *MessageType) UnmarshalBinary(b []byte) error {
  12. *mt = MessageType(b[0])
  13. return nil
  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. // BEP 5
  27. Port MessageType = 9
  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. // BEP 10
  35. Extended MessageType = 20
  36. // BEP 52
  37. HashRequest MessageType = 21
  38. Hashes MessageType = 22
  39. HashReject MessageType = 23
  40. )
  41. const (
  42. HandshakeExtendedID = 0
  43. RequestMetadataExtensionMsgType ExtendedMetadataRequestMsgType = 0
  44. DataMetadataExtensionMsgType ExtendedMetadataRequestMsgType = 1
  45. RejectMetadataExtensionMsgType ExtendedMetadataRequestMsgType = 2
  46. )