File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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 ) => {
Original file line number Diff line number Diff 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 ( )
Original file line number Diff line number Diff line change 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}
You can’t perform that action at this time.
0 commit comments