use a closure for the request state rather than dicts
This commit is contained in:
@@ -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() });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user