public void HandleEC(bool succ, Edge e, Exception x)
{
if (succ)
{
/*
* Got the underlying Edge, now do the path protocol
*/
Channel results = new Channel(1);
results.CloseEvent += delegate(object q, EventArgs args) {
try {
RpcResult res = (RpcResult)results.Dequeue();
object o = res.Result;
if (o is Exception)
{
Console.WriteLine(o);
throw (o as Exception);
}
//If we get here, everything looks good:
PathEdge pe = new PathEdge(e, LocalPath, RemotePath);
//Start sending e's packets into pe
pe.Subscribe();
ECB(true, pe, null);
}
catch (Exception cx) {
ECB(false, null, cx);
}
};
//Make sure we hear the packets on this edge:
e.Subscribe(_pel._pem, null);
//Now make the rpc call:
_pel._pem.Rpc.Invoke(e, results, "sys:pathing.create", LocalPath, RemotePath);
}
else
{
ECB(false, null, x);
}
}