node-inspector/lib/session.js

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;
};