Skip to content

Commit ec7650f

Browse files
committed
Merge pull request #388 from uProxy/trevj-arraybuffers-converters
move to latest Buffer typings, update ArrayBuffer <-> Buffer converters
2 parents aa1161c + 29ceead commit ec7650f

4 files changed

Lines changed: 17 additions & 21 deletions

File tree

src/arraybuffers/arraybuffers.ts

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -121,24 +121,16 @@ export function stringToUtf8EncodedArrayBuffer(str:string) :ArrayBuffer {
121121
return ab.buffer;
122122
}
123123

124-
// Converts a node.js Buffer to an ArrayBuffer
125-
export function bufferToArrayBuffer(buffer:Buffer) :ArrayBuffer {
126-
var ab = new ArrayBuffer(buffer.length);
127-
var bytes = new Uint8Array(ab);
128-
for (var i = 0; i < buffer.length; ++i) {
129-
bytes[i] = buffer[i];
130-
}
131-
return bytes.buffer;
124+
// Returns an ArrayBuffer backed by the same memory as the supplied
125+
// Node.js Buffer.
126+
export function bufferToArrayBuffer(buffer: Buffer): ArrayBuffer {
127+
return buffer.buffer;
132128
}
133129

134-
// Converts an ArrayBuffer to a node.js Buffer
135-
export function arrayBufferToBuffer(ab:ArrayBuffer) :Buffer {
136-
var buffer = new Buffer(ab.byteLength);
137-
var bytes = new Uint8Array(ab);
138-
for (var i = 0; i < buffer.length; ++i) {
139-
buffer[i] = bytes[i];
140-
}
141-
return buffer;
130+
// Returns a Node.js Buffer backed by the same memory as the supplied
131+
// ArrayBuffer.
132+
export function arrayBufferToBuffer(ab: ArrayBuffer): Buffer {
133+
return new Buffer(ab);
142134
}
143135

144136
// Splits an ArrayBuffer into two at a given offset

src/cloud/install/installer.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,11 @@ class CloudInstaller {
113113
message: 'invitation URL not found'
114114
});
115115
}).on('data', (data: Buffer) => {
116-
stdoutRaw.handle(arraybuffers.bufferToArrayBuffer(data));
116+
// Make a copy before passing to the async queue.
117+
stdoutRaw.handle(arraybuffers.bufferToArrayBuffer(new Buffer(data)));
117118
}).stderr.on('data', (data: Buffer) => {
118-
stderrRaw.handle(arraybuffers.bufferToArrayBuffer(data));
119+
// Make a copy before passing to the async queue.
120+
stderrRaw.handle(arraybuffers.bufferToArrayBuffer(new Buffer(data)));
119121
});
120122
});
121123
}).on('error', (e: Error) => {

src/cloud/social/provider.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,8 @@ class Connection {
524524

525525
this.tunnel_ = tunnel;
526526
tunnel.on('data', (buffer: Buffer) => {
527-
bufferQueue.handle(arraybuffers.bufferToArrayBuffer(buffer));
527+
// Make a copy before passing to the async queue.
528+
bufferQueue.handle(arraybuffers.bufferToArrayBuffer(new Buffer(buffer)));
528529
}).on('end', () => {
529530
log.debug('%1: tunnel end', this.name_);
530531
}).on('close', (hadError: boolean) => {
@@ -603,7 +604,8 @@ class Connection {
603604
});
604605

605606
stream.on('data', (data: Buffer) => {
606-
stdoutRaw.handle(arraybuffers.bufferToArrayBuffer(data));
607+
// Make a copy before passing to the async queue.
608+
stdoutRaw.handle(arraybuffers.bufferToArrayBuffer(new Buffer(data)));
607609
}).stderr.on('data', (data: Buffer) => {
608610
R({
609611
message: 'output received on STDERR: ' + data.toString()

third_party/typings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"es6-promise": "registry:dt/es6-promise#0.0.0+20160317120654",
88
"freedom": "registry:dt/freedom#0.6.26+20160317120654",
99
"jasmine": "registry:dt/jasmine#2.2.0+20160317120654",
10-
"node": "registry:dt/node#4.0.0+20160330064709",
10+
"node": "registry:dt/node#4.0.0+20160412142033",
1111
"ssh2": "registry:dt/ssh2#0.0.0+20160316155526"
1212
}
1313
}

0 commit comments

Comments
 (0)