///<summary>A new underlying edge has been created, this is used to add the ///edge to the EdgeListener for handling and to wrap the edge.</summary> public void AddEdge(EdgeCreationWrapper ecw) { Edge e = ecw.Edge; lock(_sync) { _edge_to_ecw[e] = ecw; } try { e.CloseEvent += EdgeClose; } catch { EdgeClose(e, null); } if(!e.IsClosed) { WrapEdge(ecw.Edge); } }
///<summary>A new edge has been created! This comes from the underlying ///EL's SendEdgeEvent.</summary> protected void HandleEdgeEvent(object edge, EventArgs ea) { Edge e = edge as Edge; if(e == null) { throw new Exception("Not an Edge!"); } EdgeCreationWrapper ecw = new EdgeCreationWrapper(null, SendEdgeEventHelper, e, this); AddEdge(ecw); }
///<summary>This wraps the underlying CreateEdgeTo using EdgeCreationWrappers</summary> public override void CreateEdgeTo(TransportAddress ta, EdgeCreationCallback ecb) { EdgeCreationWrapper ecw = new EdgeCreationWrapper(ta, ecb, null, this); _el.CreateEdgeTo(ta, ecw.Callback); }