blob: 0b20e3827a0004fcbe848758518806c786c91b1a [file] [log] [blame]
var tcpUI = tcpUI || {};
var tcpServer;
var commandWindow;
tcpUI.create = function() {
if (commandWindow && !commandWindow.contentWindow.closed) {
commandWindow.focus();
} else {
chrome.app.window.create('index.html',
{id: "mainwin", innerBounds: {width: 500, height: 309, left: 0}},
function(w) { commandWindow = w; });
}
}
/**
* Listens for the app launching then creates the window
*
* @see https://developer.chrome.com/apps/app_runtime
* @see https://developer.chrome.com/apps/app_window
*/
chrome.app.runtime.onLaunched.addListener(tcpUI.create);
// event logger
var log = (function(){
var logLines = [];
var logListener = null;
var output=function(str) {
if (str.length>0 && str.charAt(str.length-1)!='\n') {
str+='\n'
}
logLines.push(str);
if (logListener) {
logListener(str);
}
};
var addListener=function(listener) {
logListener=listener;
// let's call the new listener with all the old log lines
for (var i=0; i<logLines.length; i++) {
logListener(logLines[i]);
}
};
return {output: output, addListener: addListener};
})();
function onAcceptCallback(tcpConnection, socketInfo) {
var info="["+socketInfo.peerAddress+":"+socketInfo.peerPort+"] Connection accepted!";
log.output(info);
console.log(socketInfo);
tcpConnection.addDataReceivedListener(function(data) {
var lines = data.split(/[\n\r]+/);
for (var i=0; i<lines.length; i++) {
var line=lines[i];
if (line.length>0) {
var info="["+socketInfo.peerAddress+":"+socketInfo.peerPort+"] "+line;
log.output(info);
var cmd=line.split(/\s+/);
try {
tcpConnection.sendMessage(Commands.run(cmd[0], cmd.slice(1)));
} catch (ex) {
tcpConnection.sendMessage(ex);
}
}
}
});
};
function startServer(addr, port) {
if (tcpServer) {
tcpServer.disconnect();
}
tcpServer = new TcpServer(addr, port);
tcpServer.listen(onAcceptCallback);
}
function stopServer() {
if (tcpServer) {
tcpServer.disconnect();
tcpServer=null;
}
}
function getServerState() {
if (tcpServer) {
return {isConnected: tcpServer.isConnected(),
addr: tcpServer.addr,
port: tcpServer.port};
} else {
return {isConnected: false};
}
}
tcpUI.startServer = function(addr, port) {
startServer(addr, port);
}
tcpUI.stopServer = function() {
stopServer();
}