Fleshing out debugger types.

This commit is contained in:
Ben Vanik
2015-05-24 13:43:15 -07:00
parent da655d15b3
commit e55be7d2c9
103 changed files with 4008 additions and 2025 deletions

View File

@@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using xe.debug.proto;
using Xenia.Debug.Utilities;
namespace Xenia.Debug {
@@ -15,6 +16,32 @@ namespace Xenia.Debug {
this.debugger = debugger;
}
public async Task Invalidate() {
var fbb = debugger.BeginRequest();
ListModulesRequest.StartListModulesRequest(fbb);
int requestDataOffset = ListModulesRequest.EndListModulesRequest(fbb);
var response = await debugger.CommitRequest(
fbb, RequestData.ListModulesRequest, requestDataOffset);
ListModulesResponse responseData = new ListModulesResponse();
response.GetResponseData(responseData);
var pendingTasks = new List<Task>();
for (int i = 0; i < responseData.ModuleIdsLength; ++i) {
uint moduleHandle = responseData.GetModuleIds(i);
var module = modules.Find((m) => m.Handle == moduleHandle);
if (module == null) {
// Module not found.
module = new Module(debugger, moduleHandle);
pendingTasks.Add(module.Invalidate());
} else {
// Module already present.
// Modules are immutable, so ignore?
}
}
await Task.WhenAll(pendingTasks);
}
public int Count {
get {
return modules.Count;