Skip to content

Commit dbcb1ff

Browse files
committed
Update notebook2
1 parent afec0fe commit dbcb1ff

File tree

1 file changed

+33
-30
lines changed

1 file changed

+33
-30
lines changed

src/notebook.ts

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -38,40 +38,43 @@ class RKernel {
3838
const env = Object.create(process.env);
3939
env.LANG = 'en_US.UTF-8';
4040

41-
const server = net.createServer(socket => {
42-
console.log('socket started');
43-
this.socket = socket;
44-
socket.on('data', (chunk: Buffer) => {
45-
const str = chunk.toString();
46-
console.log(`socket (${socket.localAddress}:${socket.localPort}): ${str}`);
41+
return new Promise((resolve, reject) => {
42+
const server = net.createServer(socket => {
43+
console.log('socket connected');
44+
this.socket = socket;
45+
resolve(undefined);
46+
47+
socket.on('data', (chunk: Buffer) => {
48+
const str = chunk.toString();
49+
console.log(`socket (${socket.localAddress}:${socket.localPort}): ${str}`);
50+
});
51+
socket.on('end', () => {
52+
console.log('socket disconnected');
53+
this.socket = undefined;
54+
reject(undefined);
55+
});
56+
server.close();
4757
});
48-
socket.on('end', () => {
49-
console.log('socket disconnected');
50-
this.socket = undefined;
51-
});
52-
server.close();
53-
});
5458

55-
server.listen(0, '127.0.0.1', () => {
56-
this.port = (server.address() as net.AddressInfo).port;
57-
const childProcess = spawn('R', ['--quiet', '--slave', '-f', this.kernelScript, '--args', `port=${this.port}`],
58-
{ cwd: this.cwd, env: env });
59-
childProcess.stderr.on('data', (chunk: Buffer) => {
60-
const str = chunk.toString();
61-
console.log(`R stderr (${childProcess.pid}): ${str}`);
62-
});
63-
childProcess.stdout.on('data', (chunk: Buffer) => {
64-
const str = chunk.toString();
65-
console.log(`R stdout (${childProcess.pid}): ${str}`);
59+
server.listen(0, '127.0.0.1', () => {
60+
this.port = (server.address() as net.AddressInfo).port;
61+
const childProcess = spawn('R', ['--quiet', '--slave', '-f', this.kernelScript, '--args', `port=${this.port}`],
62+
{ cwd: this.cwd, env: env });
63+
childProcess.stderr.on('data', (chunk: Buffer) => {
64+
const str = chunk.toString();
65+
console.log(`R stderr (${childProcess.pid}): ${str}`);
66+
});
67+
childProcess.stdout.on('data', (chunk: Buffer) => {
68+
const str = chunk.toString();
69+
console.log(`R stdout (${childProcess.pid}): ${str}`);
70+
});
71+
childProcess.on('exit', (code, signal) => {
72+
console.log(`R exited with code ${code}`);
73+
});
74+
this.process = childProcess;
75+
return childProcess;
6676
});
67-
childProcess.on('exit', (code, signal) => {
68-
console.log(`R exited with code ${code}`);
69-
});
70-
this.process = childProcess;
71-
return childProcess;
7277
});
73-
74-
return new Promise((resolve) => setTimeout(resolve, 500));
7578
}
7679

7780
public stop() {

0 commit comments

Comments
 (0)