diff --git a/src/vs/base/parts/ipc/node/ipc.net.ts b/src/vs/base/parts/ipc/node/ipc.net.ts index fdc6a869a530b7fdba16b25da8411982689081b3..251d5a7a0c5f8c6cb7a81d2c3ac831758a774575 100644 --- a/src/vs/base/parts/ipc/node/ipc.net.ts +++ b/src/vs/base/parts/ipc/node/ipc.net.ts @@ -10,6 +10,18 @@ import { TPromise } from 'vs/base/common/winjs.base'; import Event, { Emitter, once, mapEvent } from 'vs/base/common/event'; import { fromEventEmitter } from 'vs/base/node/event'; import { IMessagePassingProtocol, ClientConnectionEvent, IPCServer, IPCClient } from 'vs/base/parts/ipc/common/ipc'; +import { join } from 'path'; +import { tmpdir } from 'os'; + +export function generateRandomPipeName(): string { + let randomName = 'vscode-' + Math.floor(Math.random() * 10000).toString(16); + if (process.platform === 'win32') { + return '\\\\.\\pipe\\' + randomName + '-sock'; + } else { + // Mac/Unix: use socket file + return join(tmpdir(), randomName + '.sock'); + } +} function bufferIndexOf(buffer: Buffer, value: number, start = 0) { while (start < buffer.length && buffer[start] !== value) { @@ -136,4 +148,4 @@ export function connect(hook: any, clientId: string): TPromise { socket.once('error', e); }); -} \ No newline at end of file +}