| ... | ... | @@ -55,6 +55,11 @@ pub const AllocatingWriter = struct { |
| 55 | 55 | return self.allocatedSlice()[self.items.len..]; |
| 56 | 56 | } |
| 57 | 57 | |
| 58 | fn appendAssumeCapacity(self: *AllocatingWriter, bytes: []const u8) void { |
| 59 | @memcpy(self.unusedSlice()[0..bytes.len], bytes); |
| 60 | self.items.len += bytes.len; |
| 61 | } |
| 62 | |
| 58 | 63 | const W = nio.Writable(@This(), ._var); |
| 59 | 64 | pub const writeAll = W.writeAll; |
| 60 | 65 | pub const writevAll = W.writevAll; |
| ... | ... | @@ -69,15 +74,14 @@ pub const AllocatingWriter = struct { |
| 69 | 74 | |
| 70 | 75 | pub fn write(self: *AllocatingWriter, bytes: []const u8) WriteError!usize { |
| 71 | 76 | try self.ensureUnusedCapacity(bytes.len); |
| 72 | | @memcpy(self.unusedSlice()[0..bytes.len], bytes); |
| 73 | | self.items.len += bytes.len; |
| 77 | self.appendAssumeCapacity(bytes); |
| 74 | 78 | return bytes.len; |
| 75 | 79 | } |
| 76 | 80 | pub fn writev(self: *AllocatingWriter, iovec: []const sys.struct_iovec) WriteError!usize { |
| 77 | 81 | var len: usize = 0; |
| 78 | 82 | for (iovec) |vec| len += vec.len; |
| 79 | 83 | try self.ensureUnusedCapacity(len); |
| 80 | | for (iovec) |vec| _ = self.write(vec.base[0..vec.len]) catch unreachable; |
| 84 | for (iovec) |vec| self.appendAssumeCapacity(vec.base[0..vec.len]); |
| 81 | 85 | return len; |
| 82 | 86 | } |
| 83 | 87 | }; |