2016-07-27 6 views
0

node.jsシステムをベンチマークします。したがって、私はファイルを暗号化して圧縮することができる(私はCPUを強くするアプリをしたい)小さなprogrammを作成しました。私は暗号化プロセスを何度も繰り返すことができると思った。しかし、プログラムを終了する前にストリームを動的にパイプしたいときはいつでも終了します。ストリームが終了するのを待つ方法はありますか?Node.jsはパイプストリームを動的に拡張します

私のコードは次のようになります。

  var readStream = fstream.Reader(sourcePath); 
      var writeStream = fs.createWriteStream(sourcePath + '.tar.gz'); 

      var stream = readStream.on('error', function (e) { 
        handleError(e, errorMessageReadFile); 
       }) 
       .pipe(tar.Pack()).on('error', function (e) { 
        handleError(e, errorMessageTarPack); 
       }); 

      for (i = 0; i < algorithmCount; i++) { 
       stream = stream.pipe(encryptStream).on('error', function (e) { 
        handleError(e, errorMessageEncrypt); 
       }); 
       console.log("enc"); 
      } 

      stream.pipe(gzip).on('error', function (e) { 
        handleError(e, errorMessageCompress); 
       }) 
       .pipe(writeStream).on('error', function (e) { 
        handleError(e, errorMessageWriteFile); 
       }) 
       .on('finish', function() { 
        console.log('done'); 
       }); 

答えて

3

これはおそらく問題です:

for (i = 0; i < algorithmCount; i++) { 
    stream = stream.pipe(encryptStream); 
} 

.pipereturns the stream you're piping intoことを覚えておいてください。つまり、stream.pipe(encryptStream)encryptStreamを返します。最初の反復はうまくいきます:streamは最初にtar.Pack()ストリームなので、パイプされてencryptStreamになります。しかし、第2の反復はencryptStreamに今度はと等しいstreamをパイプします。

新しい反復ごとに新しい中間暗号化ストリームを作成したいと思うかもしれません。何かのように:私はそれについて考えていませんでした:)

for (i = 0; i < algorithmCount; i++) { 
    stream = stream.pipe(createEncryptStream()); 
} 
+0

感謝 – warch

関連する問題