Browse Source

return correct number of bytes written

Darien Raymond 9 năm trước cách đây
mục cha
commit
1169476e69
1 tập tin đã thay đổi với 5 bổ sung2 xóa
  1. 5 2
      common/io/chain_writer.go

+ 5 - 2
common/io/chain_writer.go

@@ -25,6 +25,7 @@ func (this *ChainWriter) Write(payload []byte) (int, error) {
 		return 0, io.ErrClosedPipe
 	}
 
+	bytesWritten := 0
 	size := len(payload)
 	for size > 0 {
 		buffer := alloc.NewBuffer().Clear()
@@ -32,17 +33,19 @@ func (this *ChainWriter) Write(payload []byte) (int, error) {
 			buffer.Append(payload[:alloc.BufferSize])
 			size -= alloc.BufferSize
 			payload = payload[alloc.BufferSize:]
+			bytesWritten += alloc.BufferSize
 		} else {
 			buffer.Append(payload)
+			bytesWritten += size
 			size = 0
 		}
 		err := this.writer.Write(buffer)
 		if err != nil {
-			return 0, err
+			return bytesWritten, err
 		}
 	}
 
-	return size, nil
+	return bytesWritten, nil
 }
 
 func (this *ChainWriter) Release() {