deno.land / std@0.166.0 / node / _fs / _fs_writev.mjs

_fs_writev.mjs
نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.// Copyright Joyent, Inc. and Node.js contributors. All rights reserved. MIT license.import { Buffer } from "../buffer.ts";import { validateBufferArray } from "../internal/fs/utils.mjs";import { getValidatedFd } from "../internal/fs/utils.mjs";import { maybeCallback } from "./_fs_common.ts";
export function writev(fd, buffers, position, callback) { const innerWritev = async (fd, buffers, position) => { const chunks = []; const offset = 0; for (let i = 0; i < buffers.length; i++) { if (Buffer.isBuffer(buffers[i])) { chunks.push(buffers[i]); } else { chunks.push(Buffer.from(buffers[i])); } } if (typeof position === "number") { await Deno.seekSync(fd, position, Deno.SeekMode.Start); } const buffer = Buffer.concat(chunks); let currentOffset = 0; while (currentOffset < buffer.byteLength) { currentOffset += await Deno.writeSync(fd, buffer.subarray(currentOffset)); } return currentOffset - offset; };
fd = getValidatedFd(fd); validateBufferArray(buffers); callback = maybeCallback(callback || position);
if (buffers.length === 0) { process.nextTick(callback, null, 0, buffers); return; }
if (typeof position !== "number") position = null;
innerWritev(fd, buffers, position).then( (nwritten) => { callback(null, nwritten, buffers); }, (err) => callback(err), );}
export function writevSync(fd, buffers, position) { const innerWritev = (fd, buffers, position) => { const chunks = []; const offset = 0; for (let i = 0; i < buffers.length; i++) { if (Buffer.isBuffer(buffers[i])) { chunks.push(buffers[i]); } else { chunks.push(Buffer.from(buffers[i])); } } if (typeof position === "number") { Deno.seekSync(fd, position, Deno.SeekMode.Start); } const buffer = Buffer.concat(chunks); let currentOffset = 0; while (currentOffset < buffer.byteLength) { currentOffset += Deno.writeSync(fd, buffer.subarray(currentOffset)); } return currentOffset - offset; };
fd = getValidatedFd(fd); validateBufferArray(buffers);
if (buffers.length === 0) { return 0; }
if (typeof position !== "number") position = null;
return innerWritev(fd, buffers, position);}
std

Version Info

Tagged at
a year ago