UNPKG

2.31 kBJavaScriptView Raw
1var EventEmitter = require('events').EventEmitter,
2 inherits = require('util').inherits,
3 DebuggerClient = require('./DebuggerClient').DebuggerClient,
4 ScriptManager = require('./ScriptManager').ScriptManager,
5 FrontendClient = require('./FrontendClient').FrontendClient,
6 FrontendCommandHandler = require('./FrontendCommandHandler').FrontendCommandHandler,
7 BreakEventHandler = require('./BreakEventHandler').BreakEventHandler,
8 ConsoleClient = require('./ConsoleClient').ConsoleClient,
9 HeapProfilerClient = require('./HeapProfilerClient').HeapProfilerClient,
10 InjectorClient = require('./InjectorClient').InjectorClient;
11
12function Session(config, debuggerHost, debuggerPort, wsConnection) {
13 this.debuggerClient = new DebuggerClient(debuggerHost, debuggerPort);
14 this.frontendClient = new FrontendClient(wsConnection);
15 this.injectorClient = new InjectorClient(config, this);
16 this.consoleClient = new ConsoleClient(config, this);
17 this.heapProfilerClient = new HeapProfilerClient(config, this);
18 this.scriptManager = new ScriptManager(config, this);
19 this.breakEventHandler = new BreakEventHandler(config, this);
20 this.frontendCommandHandler = new FrontendCommandHandler(config, this);
21
22 this.resourceTreeResolved = false;
23 this.once('resource-tree-resolved', function() {
24 this.resourceTreeResolved = true;
25 }.bind(this));
26
27 this.frontendClient.on('close', this.close.bind(this));
28 this.debuggerClient.on('close', this._onDebuggerClientClose.bind(this));
29 this.debuggerClient.on('error', this._onDebuggerClientError.bind(this));
30
31 this._pingInterval = setInterval(function() {
32 wsConnection.ping(null, null, true);
33 }.bind(this), 1000);
34}
35
36inherits(Session, EventEmitter);
37
38Session.prototype.close = function() {
39 clearInterval(this._pingInterval);
40 if (this.debuggerClient.isConnected)
41 this.debuggerClient.close();
42 else
43 this.emit('close');
44};
45
46Session.prototype._onDebuggerClientClose = function(reason) {
47 if (this.frontendClient.isConnected)
48 this.frontendClient.sendInspectorDetached(reason);
49 this.close();
50};
51
52Session.prototype._onDebuggerClientError = function(e) {
53 var err = e.toString();
54 if (e.helpString) {
55 err += '\n' + e.helpString;
56 }
57 this.frontendClient.sendLogToConsole('error', err);
58};
59
60module.exports = Session;