Skip to content

Commit

Permalink
attempt to download
Browse files Browse the repository at this point in the history
  • Loading branch information
baarayy committed May 16, 2024
1 parent 71f44cb commit c83bf18
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions p2p/p2p.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"magnetflow/client"
"magnetflow/message"
"magnetflow/peers"
"time"
)

const MaxBloackSize = 1 << 14
Expand Down Expand Up @@ -69,3 +70,37 @@ func (state *pieceProgress) readMessage() error {
}
return nil
}

func attemptDownloadPiece(c *client.Client, pw *pieceWork) ([]byte, error) {
state := pieceProgress{
index: pw.index,
client: c,
buf: make([]byte, pw.length),
}

c.Conn.SetDeadline(time.Now().Add(30 * time.Second))
defer c.Conn.SetDeadline(time.Time{})

for state.downloaded < pw.length {
if !state.client.Choked {
for state.backlog < MaxBackLog && state.requested < pw.length {
blockSize := MaxBloackSize

if pw.length-state.requested < blockSize {
blockSize = pw.length - state.requested
}
err := c.SendRequest(pw.index, state.requested, blockSize)
if err != nil {
return nil, err
}
state.backlog++
state.requested += blockSize
}
}
err := state.readMessage()
if err != nil {
return nil, err
}
}
return state.buf, nil
}

0 comments on commit c83bf18

Please sign in to comment.