datapumps
Version:
Node.js ETL (Extract, Transform, Load) toolkit for easy data import, export or transfer between systems.
66 lines (53 loc) • 1.38 kB
text/coffeescript
EventEmitter = require('events').EventEmitter
Promise = require('bluebird')
class Buffer extends EventEmitter
constructor: (options) ->
= options?.content || []
= options?.size || 10
= false
isEmpty: ->
.length == 0
isFull: ->
.length >=
getContent: ->
write: (data) ->
throw new Error('Cannot write sealed buffer') if == true
throw new Error('Buffer is full') if
.push data
'write'
'full' if
@
writeAsync: (data) ->
if !
Promise.resolve()
else
new Promise (resolve, reject) =>
'release', =>
resolve()
read: ->
throw new Error('Buffer is empty') if
result = .shift()
'release'
if
'empty'
'end' if == true
result
readAsync: ->
if !
Promise.resolve()
else
new Promise (resolve, reject) =>
'write', =>
resolve()
seal: ->
throw new Error('Buffer already sealed') if == true
= true
'sealed'
'end' if
isSealed: ->
== true
isEnded: ->
&&
module.exports = Buffer