use a closure for the request state rather than dicts

This commit is contained in:
Chris Forbes
2011-01-04 20:44:47 +13:00
parent e02ed86088
commit f44ac769bf

View File

@@ -165,34 +165,19 @@ namespace OpenRA.Launcher
return ""; return "";
} }
struct Request
{
public NamedPipeClientStream Pipe;
public string CallbackName;
}
Dictionary<int, Request> requests = new Dictionary<int, Request>();
public void httpRequest(string url, string callbackName) public void httpRequest(string url, string callbackName)
{ {
string pipename = UtilityProgram.GetPipeName(); string pipename = UtilityProgram.GetPipeName();
var p = UtilityProgram.Call("--download-url", pipename, url); var p = UtilityProgram.Call("--download-url", pipename, url);
p.Exited += requestFinished;
var pipe = new NamedPipeClientStream(".", pipename, PipeDirection.In); var pipe = new NamedPipeClientStream(".", pipename, PipeDirection.In);
pipe.Connect(); p.Exited += (_, e) =>
requests.Add(p.Id, new Request(){ Pipe = pipe, CallbackName = callbackName }); {
} using (var reader = new StreamReader(pipe))
document.InvokeScript(callbackName, new object[] { reader.ReadToEnd() });
void requestFinished(object sender, EventArgs e) };
{
var p = sender as Process;
var request = requests[p.Id];
using (var reader = new StreamReader(request.Pipe)) pipe.Connect();
{
document.InvokeScript(request.CallbackName, new object[]{ reader.ReadToEnd() });
}
} }
} }
} }