/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { VSBuffer } from 'vs/base/common/buffer'; export const enum ExtensionHostExitCode { // nodejs uses codes 1-13 and exit codes >128 are signal exits VersionMismatch = 55, UnexpectedError = 81, } export interface IExtHostReadyMessage { type: 'VSCODE_EXTHOST_IPC_READY'; } export interface IExtHostSocketMessage { type: 'VSCODE_EXTHOST_IPC_SOCKET'; initialDataChunk: string; skipWebSocketFrames: boolean; permessageDeflate: boolean; inflateBytes: string; } export interface IExtHostReduceGraceTimeMessage { type: 'VSCODE_EXTHOST_IPC_REDUCE_GRACE_TIME'; } export const enum MessageType { Initialized, Ready, Terminate } export function createMessageOfType(type: MessageType): VSBuffer { const result = VSBuffer.alloc(1); switch (type) { case MessageType.Initialized: result.writeUInt8(1, 0); break; case MessageType.Ready: result.writeUInt8(2, 0); break; case MessageType.Terminate: result.writeUInt8(3, 0); break; } return result; } export function isMessageOfType(message: VSBuffer, type: MessageType): boolean { if (message.byteLength !== 1) { return false; } switch (message.readUInt8(0)) { case 1: return type === MessageType.Initialized; case 2: return type === MessageType.Ready; case 3: return type === MessageType.Terminate; default: return false; } }