core/plugins/c9.ide.run.debug/debuggers/v8/lib/StandaloneV8DebuggerService.js

62 lines
1.6 KiB
JavaScript

define(function(require, exports, module) {
"use strict";
var oop = require("ace/lib/oop");
var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var StandaloneV8DebuggerService = module.exports = function(socket) {
this.$socket = socket;
this.$attached = false;
this.$pending = [];
this.$connected = false;
};
(function() {
oop.implement(this, EventEmitter);
this.attach = function(tabId, callback) {
if (this.$attached)
throw new Error("already attached!");
this.$socket.on("message", this.$onMessage.bind(this));
callback(null, null);
};
this.detach = function(tabId, callback) {
this.$socket.close();
this.$attached = false;
this.$connected = false;
callback && callback();
};
this.$onMessage = function(message) {
if (!message) {
this.$connected = true;
return;
}
for (var i = 0; i < this.$pending.length; i++) {
if (this.$pending[i][1].seq == message.request_seq) {
this.$pending.splice(i, 1);
break;
}
}
this._signal("debugger_command_0", { data: message });
};
this.debuggerCommand = function(tabId, v8Command, noPending) {
if (!noPending && v8Command.command != "scripts")
this.$pending.push([tabId, v8Command]);
this.$send(v8Command);
};
this.$send = function(msg) {
this.$socket.send(msg);
};
}).call(StandaloneV8DebuggerService.prototype);
});