-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathindex.js
More file actions
82 lines (66 loc) · 1.69 KB
/
Copy pathindex.js
File metadata and controls
82 lines (66 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
* node-shell: [wrapper] index.js
*
* Copyright (c) 2014, Stanislas Polu. All rights reserved.
*
* @author: spolu
*
* @log:
* - 2014-07-18 spolu Creation
*/
"use strict"
var common = require('./lib/common.js');
var async = require('async');
var path = require('path');
var dnode = require('dnode');
var net = require('net');
/* atom-shell API */
var app = require('app');
var Menu = require('menu');
var MenuItem = require('menu-item');
var BrowserWindow = require('browser-window');
var atom_sock = process.argv[1];
var node_sock = process.argv[2];
var registry = {};
var salt = Date.now().toString();
var count = 0;
var next_id = function() {
return salt + '-' + (++count);
};
var server = net.createServer(function(c) {
var rpc_srv = dnode({
create: function(type, args, cb_) {
if(type === 'BrowserWindow') {
var object_id = next_id();
registry[object_id] = {
type: type,
object: new BrowserWindow(args[0])
};
return cb_(null, object_id);
}
},
call: function(object_id, method, args, cb_) {
if(registry[object_id]) {
registry[object_id].object[method].apply(registry[object_id].object, args);
return cb_();
}
}
}, { weak: false });
c.pipe(rpc_srv).pipe(c);
});
server.listen(atom_sock);
app.on('ready', function() {
var d = dnode({}, { weak: false });
d.on('remote', function (remote) {
common.log.out('node-shell > wrapper [' + process.pid + ']');
remote.handshake();
/*
remote.loopback('foo', function(err, s) {
common.log.out('loopback replied : ' + s);
//d.end();
});
*/
});
var c = net.connect(node_sock);
c.pipe(d).pipe(c);
});