提交 66669f4b 编写于 作者: A Alex Dima

Introduce ProtocolMessageType.Disconnect

上级 652bf59b
......@@ -126,7 +126,8 @@ const enum ProtocolMessageType {
Regular = 1,
Control = 2,
Ack = 3,
KeepAlive = 4
KeepAlive = 4,
Disconnect = 5
}
export const enum ProtocolConstants {
......@@ -373,6 +374,10 @@ export class Protocol extends Disposable implements IMessagePassingProtocol {
return this._socket;
}
sendDisconnect(): void {
// Nothing to do...
}
send(buffer: VSBuffer): void {
this._socketWriter.write(new ProtocolMessage(ProtocolMessageType.Regular, 0, 0, buffer));
}
......@@ -393,6 +398,7 @@ export class Client<TContext = string> extends IPCClient<TContext> {
dispose(): void {
super.dispose();
const socket = this.protocol.getSocket();
this.protocol.sendDisconnect();
this.protocol.dispose();
socket.end();
}
......@@ -572,7 +578,6 @@ export class PersistentProtocol {
this._socketDisposables.push(this._socketReader);
this._socketDisposables.push(this._socketReader.onMessage(msg => this._receiveMessage(msg)));
this._socketDisposables.push(this._socket.onClose(() => this._onSocketClose.fire()));
this._socketDisposables.push(this._socket.onEnd(() => this._onClose.fire()));
if (initialChunk) {
this._socketReader.acceptChunk(initialChunk);
}
......@@ -601,6 +606,12 @@ export class PersistentProtocol {
this._socketDisposables = dispose(this._socketDisposables);
}
sendDisconnect(): void {
const msg = new ProtocolMessage(ProtocolMessageType.Disconnect, 0, 0, getEmptyBuffer());
this._socketWriter.write(msg);
this._socketWriter.flush();
}
private _sendKeepAliveCheck(): void {
if (this._outgoingKeepAliveTimeout) {
// there will be a check in the near future
......@@ -659,7 +670,6 @@ export class PersistentProtocol {
this._socketDisposables.push(this._socketReader);
this._socketDisposables.push(this._socketReader.onMessage(msg => this._receiveMessage(msg)));
this._socketDisposables.push(this._socket.onClose(() => this._onSocketClose.fire()));
this._socketDisposables.push(this._socket.onEnd(() => this._onClose.fire()));
this._socketReader.acceptChunk(initialDataChunk);
}
......@@ -703,6 +713,8 @@ export class PersistentProtocol {
}
} else if (msg.type === ProtocolMessageType.Control) {
this._onControlMessage.fire(msg.data);
} else if (msg.type === ProtocolMessageType.Disconnect) {
this._onClose.fire();
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册