DataUnpacker with fallback

openid
Marcin Kulik 12 years ago
parent 87f42d7874
commit 1f260e95aa

@ -1,10 +1,12 @@
//= require vendor/rAF
//= require vendor/base64.min
//= require vendor/bzip2
//= require extensions
//= require namespace
//= require player/views/renderers/base
//= require_tree ./player/views/renderers
//= require player/views/hud_view
//= require player/data_unpacker
//= require player/views/player_view
//= require player/workers/worker_object_proxy
//= require player/workers/worker_proxy

@ -0,0 +1,11 @@
class AsciiIo.DataUnpacker
unpack: (base64BzippedData, callback) ->
bzippedData = atob base64BzippedData
if window.Worker
worker = new Worker(window.unpackWorkerPath)
worker.onmessage = (event) => callback event.data
worker.postMessage bzippedData
else
data = ArchUtils.bz2.decode bzippedData
callback data

@ -27,14 +27,13 @@ class AsciiIo.PlayerView extends Backbone.View
@model.fetch success: => @onModelFetched()
onModelFetched: ->
data = atob @model.get('escaped_stdout_data')
worker = new Worker(window.unpackWorkerPath)
data = @model.get('escaped_stdout_data')
unpacker = new AsciiIo.DataUnpacker
unpacker.unpack data, @onDataUnpacked
worker.onmessage = (event) =>
@model.set stdout_data: event.data
@onModelReady()
worker.postMessage data
onDataUnpacked: (data) =>
@model.set stdout_data: data
@onModelReady()
onModelReady: ->
@hideLoadingIndicator()

Loading…
Cancel
Save