4 "github.com/anacrolix/torrent/bencode"
8 // http://bittorrent.org/beps/bep_0009.html. Note that there's an
9 // LT_metadata, but I've never implemented it.
10 ExtensionNameMetadata = "ut_metadata"
14 ExtendedMetadataRequestMsg struct {
15 Piece int `bencode:"piece"`
16 TotalSize int `bencode:"total_size"`
17 Type ExtendedMetadataRequestMsgType `bencode:"msg_type"`
20 ExtendedMetadataRequestMsgType int
23 func MetadataExtensionRequestMsg(peerMetadataExtensionId ExtensionNumber, piece int) Message {
26 ExtendedID: peerMetadataExtensionId,
27 ExtendedPayload: bencode.MustMarshal(ExtendedMetadataRequestMsg{
29 Type: RequestMetadataExtensionMsgType,
34 // Returns the expected piece size for this request message. This is needed to determine the offset
35 // into an extension message payload that the request metadata piece data starts.
36 func (me ExtendedMetadataRequestMsg) PieceSize() int {
37 ret := me.TotalSize - me.Piece*(1<<14)