12 ActionConnect Action = iota
17 ConnectRequestConnectionId = 0x41727101980
20 optionTypeEndOfOptions = 0
25 type TransactionId = int32
27 type ConnectionId = int64
29 type ConnectionRequest struct {
30 ConnectionId ConnectionId
32 TransactionId TransactionId
35 type ConnectionResponse struct {
36 ConnectionId ConnectionId
39 type ResponseHeader struct {
41 TransactionId TransactionId
44 type RequestHeader struct {
45 ConnectionId ConnectionId
47 TransactionId TransactionId
50 type AnnounceResponseHeader struct {
56 type InfoHash = [20]byte
58 func marshal(data interface{}) (b []byte, err error) {
60 err = binary.Write(&buf, binary.BigEndian, data)
65 func mustMarshal(data interface{}) []byte {
66 b, err := marshal(data)
73 func Write(w io.Writer, data interface{}) error {
74 return binary.Write(w, binary.BigEndian, data)
77 func Read(r io.Reader, data interface{}) error {
78 return binary.Read(r, binary.BigEndian, data)