45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
+
-
+
+
+
+
+
+
+
+
|
buffer = buffer[:copy(buffer, buffer[count:])]
return 0, err
}
// Delegate to the writer if the size is right
if len(buffer) == 0 && len(input) >= size {
reduced := (len(input) / size) * size
return writer.Write(input)
count, err = writer.Write(input[:reduced])
if count < reduced || err != nil {
return count, err
}
// Stage any remaining data in the buffer
buffer = append(buffer, input[count:]...)
return len(input), nil
}
// Append data to the buffer
count = copy(buffer[len(buffer):size], input)
buffer = buffer[:len(buffer)+count]
// Return if we don't have enough bytes to write
|