79 строки
2.1 KiB
JavaScript
79 строки
2.1 KiB
JavaScript
var events = require('events'),
|
|
convert = require('./convert.js'),
|
|
DebuggerClient = require('./DebuggerClient').DebuggerClient,
|
|
ScriptManager = require('./ScriptManager').ScriptManager,
|
|
FrontendClient = require('./FrontendClient').FrontendClient,
|
|
FrontendCommandHandler = require('./FrontendCommandHandler').FrontendCommandHandler,
|
|
BreakEventHandler = require('./BreakEventHandler').BreakEventHandler;
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// exports
|
|
|
|
exports.create = function(debuggerPort, config) {
|
|
var sessionInstance,
|
|
scriptManager,
|
|
frontendCommandHandler,
|
|
frontendClient,
|
|
debuggerClient,
|
|
breakEventHandler;
|
|
|
|
function onDebuggerClientClose(reason) {
|
|
if (frontendClient.isConnected)
|
|
frontendClient.sendInspectorDetached(reason);
|
|
sessionInstance.close();
|
|
}
|
|
|
|
function onDebuggerClientError(e) {
|
|
var err = e.toString();
|
|
if (e.helpString) {
|
|
err += '\n' + e.helpString;
|
|
}
|
|
frontendClient.sendLogToConsole('error', err);
|
|
}
|
|
|
|
sessionInstance = Object.create(events.EventEmitter.prototype, {
|
|
close: {
|
|
value: function()
|
|
{
|
|
debuggerClient.close();
|
|
this.emit('close');
|
|
}
|
|
},
|
|
|
|
join: {
|
|
value: function(wsConnection) {
|
|
frontendClient = new FrontendClient(wsConnection);
|
|
debuggerClient = new DebuggerClient(debuggerPort);
|
|
|
|
scriptManager = new ScriptManager(
|
|
config.isScriptHidden,
|
|
frontendClient,
|
|
debuggerClient
|
|
);
|
|
|
|
breakEventHandler = new BreakEventHandler(
|
|
config,
|
|
frontendClient,
|
|
debuggerClient,
|
|
scriptManager
|
|
);
|
|
|
|
frontendCommandHandler = new FrontendCommandHandler(
|
|
config,
|
|
frontendClient,
|
|
debuggerClient,
|
|
breakEventHandler,
|
|
scriptManager);
|
|
|
|
frontendClient.on('close', this.close.bind(this));
|
|
|
|
debuggerClient.on('close', onDebuggerClientClose);
|
|
debuggerClient.on('error', onDebuggerClientError);
|
|
}
|
|
}
|
|
});
|
|
|
|
return sessionInstance;
|
|
};
|