create binding to idweakmap

This commit is contained in:
Robo 2015-10-29 16:27:30 +05:30
parent eae7c840b7
commit ac4df34ecd
8 changed files with 135 additions and 40 deletions

View file

@ -2,9 +2,10 @@ ipc = require 'ipc'
path = require 'path'
objectsRegistry = require './objects-registry.js'
v8Util = process.atomBinding 'v8_util'
WeakMap = process.atomBinding('weak_map').WeakMap
# weak refereence to callback with their registry ID.
rendererCallbacks = v8Util.createWeakMap()
# Weak reference to callback with their registry ID.
rendererCallbacks = new WeakMap()
# Convert a real value into meta data.
valueToMeta = (sender, value, optimizeSimpleObject=false) ->
@ -73,13 +74,13 @@ unwrapArgs = (sender, args) ->
returnValue = metaToValue meta.value
-> returnValue
when 'function'
if rendererCallbacks.has(meta.id)
return rendererCallbacks.get(meta.id)
rendererReleased = false
objectsRegistry.once "clear-#{sender.getId()}", ->
rendererReleased = true
if rendererCallbacks.has(meta.id)
return rendererCallbacks.get(meta.id)
ret = ->
if rendererReleased
throw new Error("Attempting to call a function in a renderer window