Sha256: d8017aa9d42d98b6b2870e28ec443f5211b8a9c5ca96c0293e75c4b91ddaa8c4
Contents?: true
Size: 1.36 KB
Versions: 2
Compression:
Stored size: 1.36 KB
Contents
class Chunk constructor: (@raw) -> rawText: -> @raw text: -> @_text ||= AnsiStream.strip(@raw) rawLines: -> @_rawLines ||= @raw.split(/\r?\n/) lines: -> @_lines ||= @text().split(/\r?\n/) class Stream INTERVAL = 1000 MAX_RETRIES = 15 constructor: -> @url = null @eventListeners = {} @retries = 0 @status = 'running' init: ({url, text, status}) -> @status = status @broadcastChunk(text) @start(url) poll: => jQuery.ajax @url, success: @success error: @error success: (response) => @retries = 0 @broadcastChunks(response.chunks) @broadcastStatus(response.task) @start(response.url || false) broadcastStatus: (task) -> if task.status != @status @status = task.status for handler in @listeners('status') handler(task) broadcastChunk: (raw) -> chunk = new Chunk(raw) for handler in @listeners('chunk') handler(chunk) broadcastChunks: (chunks) -> @broadcastChunk((c.text for c in chunks).join('')) error: (response) => @start() if 600 > response.status >= 500 && (@retries += 1) < MAX_RETRIES start: (url = @url) -> if @url = url setTimeout(@poll, INTERVAL) addEventListener: (type, handler) -> @listeners(type).push(handler) listeners: (type) -> @eventListeners[type] ||= [] @OutputStream = new Stream
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
shipit-engine-0.1.0 | app/assets/javascripts/task/output_stream.js.coffee |
shipit-engine-0.0.1.pre | app/assets/javascripts/task/output_stream.js.coffee |