twitst4tz

twitter statistics web application
Log | Files | Refs | README | LICENSE

index.js (1043B)


      1 /*!
      2  * destroy
      3  * Copyright(c) 2014 Jonathan Ong
      4  * MIT Licensed
      5  */
      6 
      7 'use strict'
      8 
      9 /**
     10  * Module dependencies.
     11  * @private
     12  */
     13 
     14 var ReadStream = require('fs').ReadStream
     15 var Stream = require('stream')
     16 
     17 /**
     18  * Module exports.
     19  * @public
     20  */
     21 
     22 module.exports = destroy
     23 
     24 /**
     25  * Destroy a stream.
     26  *
     27  * @param {object} stream
     28  * @public
     29  */
     30 
     31 function destroy(stream) {
     32   if (stream instanceof ReadStream) {
     33     return destroyReadStream(stream)
     34   }
     35 
     36   if (!(stream instanceof Stream)) {
     37     return stream
     38   }
     39 
     40   if (typeof stream.destroy === 'function') {
     41     stream.destroy()
     42   }
     43 
     44   return stream
     45 }
     46 
     47 /**
     48  * Destroy a ReadStream.
     49  *
     50  * @param {object} stream
     51  * @private
     52  */
     53 
     54 function destroyReadStream(stream) {
     55   stream.destroy()
     56 
     57   if (typeof stream.close === 'function') {
     58     // node.js core bug work-around
     59     stream.on('open', onOpenClose)
     60   }
     61 
     62   return stream
     63 }
     64 
     65 /**
     66  * On open handler to close stream.
     67  * @private
     68  */
     69 
     70 function onOpenClose() {
     71   if (typeof this.fd === 'number') {
     72     // actually close down the fd
     73     this.close()
     74   }
     75 }