///<summary>When the edge is finally wrapped, this is called to finalize ///the adding of the edge to the edgelistner.</summary> protected void Finalize(WrapperEdge wedge) { EdgeCreationWrapper ecw = null; lock(_sync) { if(_edge_to_ecw.ContainsKey(wedge.WrappedEdge)) { ecw = _edge_to_ecw[wedge.WrappedEdge]; _edge_to_ecw.Remove(wedge.WrappedEdge); _edge_to_wrapper_edge[wedge.WrappedEdge] = wedge; } else { throw new Exception("No record of edge"); } } // if ecw is null, that means someone else failed before we announced // furthermore, we now have a wedge that needs to be manually closed! if(ecw != null) { ecw.CreationCallback(true, wedge, null); } else { wedge.Close(); } }
///<summary>This method is usd to wrap the edge.</summary> protected virtual void WrapEdge(Edge edge) { WrapperEdge wedge = new WrapperEdge(edge); Finalize(wedge); }