Debugger can now connect. AngularJS: I have no idea what I'm doing.
This commit is contained in:
122
debugger/src/datasources.js
Normal file
122
debugger/src/datasources.js
Normal file
@@ -0,0 +1,122 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2013 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var module = angular.module('xe.datasources', []);
|
||||
|
||||
|
||||
var DataSource = function(source) {
|
||||
this.source = source;
|
||||
this.online = false;
|
||||
this.status = 'disconnected';
|
||||
};
|
||||
DataSource.prototype.open = function() {};
|
||||
DataSource.prototype.dispose = function() {};
|
||||
|
||||
|
||||
module.service('RemoteDataSource', function($q) {
|
||||
var RemoteDataSource = function(url) {
|
||||
DataSource.call(this, url);
|
||||
this.url = url;
|
||||
this.socket = null;
|
||||
};
|
||||
inherits(RemoteDataSource, DataSource);
|
||||
|
||||
RemoteDataSource.prototype.open = function() {
|
||||
var url = this.url;
|
||||
|
||||
this.online = false;
|
||||
this.status = 'connecting';
|
||||
|
||||
var d = $q.defer();
|
||||
|
||||
this.socket = new WebSocket(url, []);
|
||||
this.socket.onopen = (function() {
|
||||
// TODO(benvanik): handshake
|
||||
|
||||
this.online = true;
|
||||
this.status = 'connected';
|
||||
d.resolve();
|
||||
}).bind(this);
|
||||
|
||||
this.socket.onclose = (function(e) {
|
||||
this.online = false;
|
||||
if (this.status == 'connecting') {
|
||||
this.status = 'disconnected';
|
||||
d.reject(e.code + ' ' + e.reason);
|
||||
} else {
|
||||
this.status = 'disconnected';
|
||||
}
|
||||
}).bind(this);
|
||||
|
||||
this.socket.onerror = (function(e) {
|
||||
// ?
|
||||
}).bind(this);
|
||||
|
||||
this.socket.onmessage = (function(e) {
|
||||
console.log('message', e.data);
|
||||
}).bind(this);
|
||||
|
||||
return d.promise;
|
||||
};
|
||||
|
||||
RemoteDataSource.prototype.dispose = function() {
|
||||
this.online = false;
|
||||
this.status = 'disconnected';
|
||||
if (this.socket) {
|
||||
this.socket.close();
|
||||
this.socket = null;
|
||||
}
|
||||
DataSource.prototype.dispose.call(this);
|
||||
};
|
||||
|
||||
return RemoteDataSource;
|
||||
});
|
||||
|
||||
|
||||
module.service('FileDataSource', function($q) {
|
||||
var FileDataSource = function(file) {
|
||||
DataSource.call(this, file.name);
|
||||
this.file = file;
|
||||
};
|
||||
inherits(FileDataSource, DataSource);
|
||||
|
||||
FileDataSource.prototype.open = function() {
|
||||
this.status = 'connecting';
|
||||
|
||||
var d = $q.defer();
|
||||
|
||||
var self = this;
|
||||
window.setTimeout(function() {
|
||||
$scope.$apply((function() {
|
||||
// TODO(benvanik): scan/load trace
|
||||
|
||||
this.online = true;
|
||||
this.status = 'connected';
|
||||
d.resolve();
|
||||
}).bind(self));
|
||||
});
|
||||
|
||||
return d.promise;
|
||||
};
|
||||
|
||||
FileDataSource.prototype.dispose = function() {
|
||||
this.online = false;
|
||||
if (this.file) {
|
||||
if (this.file.close) {
|
||||
this.file.close();
|
||||
}
|
||||
this.file = null;
|
||||
}
|
||||
DataSource.prototype.dispose.call(this);
|
||||
};
|
||||
|
||||
return FileDataSource;
|
||||
});
|
||||
Reference in New Issue
Block a user