GuacLite
view release on metacpan or search on metacpan
share/public/guaclite.js view on Meta::CPAN
// Otherwise, mimetype must be unsupported
else
guac_client.sendAck(stream_index, "BAD TYPE", 0x030F);
}
};
tunnel.oninstruction = function(opcode, parameters) {
var handler = instructionHandlers[opcode];
if (handler)
handler(parameters);
};
/**
* Sends a disconnect instruction to the server and closes the tunnel.
*/
this.disconnect = function() {
// Only attempt disconnection not disconnected.
if (currentState != STATE_DISCONNECTED
&& currentState != STATE_DISCONNECTING) {
setState(STATE_DISCONNECTING);
// Stop ping
if (pingInterval)
window.clearInterval(pingInterval);
// Send disconnect message and disconnect
tunnel.sendMessage("disconnect");
tunnel.disconnect();
setState(STATE_DISCONNECTED);
}
};
/**
* Connects the underlying tunnel of this Guacamole.Client, passing the
* given arbitrary data to the tunnel during the connection process.
*
* @param data Arbitrary connection data to be sent to the underlying
* tunnel during the connection process.
* @throws {Guacamole.Status} If an error occurs during connection.
*/
this.connect = function(data) {
setState(STATE_CONNECTING);
try {
tunnel.connect(data);
}
catch (status) {
setState(STATE_IDLE);
throw status;
}
// Ping every 5 seconds (ensure connection alive)
pingInterval = window.setInterval(function() {
tunnel.sendMessage("nop");
}, 5000);
setState(STATE_WAITING);
};
};
/**
* Map of all Guacamole binary raster operations to transfer functions.
* @private
*/
Guacamole.Client.DefaultTransferFunction = {
/* BLACK */
0x0: function (src, dst) {
dst.red = dst.green = dst.blue = 0x00;
},
/* WHITE */
0xF: function (src, dst) {
dst.red = dst.green = dst.blue = 0xFF;
},
/* SRC */
0x3: function (src, dst) {
dst.red = src.red;
dst.green = src.green;
dst.blue = src.blue;
dst.alpha = src.alpha;
},
/* DEST (no-op) */
0x5: function (src, dst) {
// Do nothing
},
/* Invert SRC */
0xC: function (src, dst) {
dst.red = 0xFF & ~src.red;
dst.green = 0xFF & ~src.green;
dst.blue = 0xFF & ~src.blue;
dst.alpha = src.alpha;
},
/* Invert DEST */
0xA: function (src, dst) {
dst.red = 0xFF & ~dst.red;
dst.green = 0xFF & ~dst.green;
dst.blue = 0xFF & ~dst.blue;
},
/* AND */
0x1: function (src, dst) {
dst.red = ( src.red & dst.red);
dst.green = ( src.green & dst.green);
dst.blue = ( src.blue & dst.blue);
},
( run in 0.417 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )