mirror of
https://github.com/electron/electron.git
synced 2026-02-01 10:45:01 -05:00
The process object is created under node context, and it will live through the reloading, so we are responsible for clearing the listeners to make sure resources are not leaked.
25 lines
693 B
CoffeeScript
25 lines
693 B
CoffeeScript
EventEmitter = require('events').EventEmitter
|
|
ipc = process.atomBinding('ipc')
|
|
|
|
class Ipc extends EventEmitter
|
|
constructor: ->
|
|
process.on 'ATOM_INTERNAL_MESSAGE', (args...) =>
|
|
@emit(args...)
|
|
|
|
window.addEventListener 'unload', (event) ->
|
|
process.removeAllListeners 'ATOM_INTERNAL_MESSAGE'
|
|
|
|
send: (args...) ->
|
|
ipc.send('ATOM_INTERNAL_MESSAGE', 'message', args...)
|
|
|
|
sendChannel: (args...) ->
|
|
ipc.send('ATOM_INTERNAL_MESSAGE', args...)
|
|
|
|
sendSync: (args...) ->
|
|
ipc.sendSync('ATOM_INTERNAL_MESSAGE_SYNC', 'sync-message', args...).result
|
|
|
|
sendChannelSync: (args...) ->
|
|
ipc.sendSync('ATOM_INTERNAL_MESSAGE_SYNC', args...).result
|
|
|
|
module.exports = new Ipc
|