You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

56 lines
2.1 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var AttachAddon = (function () {
function AttachAddon(socket, options) {
this._disposables = [];
this._socket = socket;
this._socket.binaryType = 'arraybuffer';
this._bidirectional = (options && options.bidirectional === false) ? false : true;
}
AttachAddon.prototype.activate = function (terminal) {
var _this = this;
this._disposables.push(addSocketListener(this._socket, 'message', function (ev) {
var data = ev.data;
terminal.write(typeof data === 'string' ? data : new Uint8Array(data));
}));
if (this._bidirectional) {
this._disposables.push(terminal.onData(function (data) { return _this._sendData(data); }));
this._disposables.push(terminal.onBinary(function (data) { return _this._sendBinary(data); }));
}
this._disposables.push(addSocketListener(this._socket, 'close', function () { return _this.dispose(); }));
this._disposables.push(addSocketListener(this._socket, 'error', function () { return _this.dispose(); }));
};
AttachAddon.prototype.dispose = function () {
this._disposables.forEach(function (d) { return d.dispose(); });
};
AttachAddon.prototype._sendData = function (data) {
if (this._socket.readyState !== 1) {
return;
}
this._socket.send(data);
};
AttachAddon.prototype._sendBinary = function (data) {
if (this._socket.readyState !== 1) {
return;
}
var buffer = new Uint8Array(data.length);
for (var i = 0; i < data.length; ++i) {
buffer[i] = data.charCodeAt(i) & 255;
}
this._socket.send(buffer);
};
return AttachAddon;
}());
exports.AttachAddon = AttachAddon;
function addSocketListener(socket, type, handler) {
socket.addEventListener(type, handler);
return {
dispose: function () {
if (!handler) {
return;
}
socket.removeEventListener(type, handler);
}
};
}
//# sourceMappingURL=AttachAddon.js.map