Add ProcessTask.

This commit is contained in:
Cheng Zhao
2013-03-22 18:43:33 +08:00
parent 67c2a1473c
commit 0d7f642675
2 changed files with 98 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
global.window = {}
global.attachEvent = ->
console =
warn: -> callTaskMethod 'warn', arguments...
log: -> callTaskMethod 'log', arguments...
error: -> callTaskMethod 'error', arguments...
global.__defineGetter__ 'console', -> console
window.document =
createElement: ->
setAttribute: ->
getElementsByTagName: -> []
appendChild: ->
documentElement:
insertBefore: ->
removeChild: ->
getElementById: -> {}
createComment: -> {}
createDocumentFragment: -> {}
global.document = window.document
# `callTaskMethod` can be used to invoke method's on the parent `Task` object
# back in the window thread.
global.callTaskMethod = (method, args...) ->
process.send(method: method, args: args)
# The worker's initial handler replaces itglobal when `start` is invoked
global.handler =
start: ({globals, handlerPath}) ->
for key, value of globals
global[key] = value
window[key] = value
global.handler = require(handlerPath)
callTaskMethod 'started'
process.on 'message', (data) ->
handler[data.method]?(data.args...) if data.method