]> Sergey Matveev's repositories - btrtrc.git/blobdiff - misc.go
Factor out connection.onReadRequest
[btrtrc.git] / misc.go
diff --git a/misc.go b/misc.go
index 6ff4777562b3518eaa8655aec3395572565385cb..cfedcbf104a32d268d7b728d15bfb925c541abbd 100644 (file)
--- a/misc.go
+++ b/misc.go
@@ -21,6 +21,17 @@ func newRequest(index, begin, length pp.Integer) request {
        return request{index, chunkSpec{begin, length}}
 }
 
+func newRequestFromMessage(msg *pp.Message) request {
+       switch msg.Type {
+       case pp.Request:
+               return newRequest(msg.Index, msg.Begin, msg.Length)
+       case pp.Piece:
+               return newRequest(msg.Index, msg.Begin, pp.Integer(len(msg.Piece)))
+       default:
+               panic(msg.Type)
+       }
+}
+
 // The size in bytes of a metadata extension piece.
 func metadataPieceSize(totalSize int, piece int) int {
        ret := totalSize - piece*(1<<14)