c9-core/plugins/c9.ide.run.debug.xdebug/netproxy.js

137 wiersze
2.8 KiB
JavaScript

var net = require("net");
var fs = require("fs");
var debug = function() {};
// var debug = console.error.bind(console);
var socketPath = process.env.HOME + "/.c9/xdebug.sock";
if (process.platform == "win32")
socketPath = "\\\\.\\pipe\\" + socketPath.replace(/\//g, "\\");
var host = "{HOST}" || "127.0.0.1";
var port = parseInt("{PORT}", 10) || 9000;
var browserBuffer = [];
var debugBuffer = [];
var browserClient;
var debugClient;
var log = console.log;
console.warn = console.log = function() {
return console.error.apply(console, arguments);
};
function send() {
log.apply(console, arguments);
}
/*** --- ***/
var browserServer = net.createServer(function(client) {
debug("browserClient::connect");
if (browserClient)
browserClient.end();
browserClient = client;
debugBuffer = [];
browserClient.on("end", function() {
debug("browserClient::end");
process.exit(0);
browserClient = null;
});
browserClient.on("data", function(data) {
debug("browserClient::data:", data.toString("utf8"));
if (debugClient) {
debugClient.write(data);
} else {
debugBuffer.push(data);
}
});
if (browserBuffer.length) {
browserBuffer.forEach(function(data) {
browserClient.write(data);
});
browserBuffer = [];
}
});
if (process.platform !== "win32") {
try {
fs.unlinkSync(socketPath);
} catch (e) {
if (e.code != "ENOENT")
console.log(e);
}
}
browserServer.listen(socketPath, function() {
debug("netproxy listening for " + socketPath);
start();
});
browserServer.on("error", function(err) {
console.log(err);
process.exit(0);
});
browserServer.on("close", function(err) {
console.log(err);
process.exit(0);
});
/*** --- ***/
var debugServer = net.createServer(function(client) {
debug("debugClient::connect");
if (debugClient)
debugClient.end();
debugClient = client;
debugBuffer = [];
browserBuffer = [];
debugClient.on("end", function() {
debug("debugClient::end");
process.exit(0);
});
debugClient.on("data", function(data) {
debug("debugClient::data:", data.toString("utf8"));
if (browserClient) {
browserClient.write(data);
} else {
browserBuffer.push(data);
}
});
if (debugBuffer.length) {
debugBuffer.forEach(function(data) {
debugClient.write(data);
});
debugBuffer = [];
}
});
debugServer.listen(port, host, function() {
debug("netproxy listening for debugger on port " + port);
start();
});
debugServer.on("error", function(err) {
console.log(err);
process.exit(0);
});
/*** --- ***/
var I = 0;
function start() {
if (++I == 2)
send("ß");
}