public NodeInfo FindSuccessor(BigInteger id) { if (TestKey(myData.ID, id, ((NodeInfo)successors[0]).ID)) { return((NodeInfo)successors[0]); } NodeInfo cpn = ClosestsPrecedingNode(id); if (cpn.Equals(myData)) { return(myData); } ChordNodeProxy obj = (ChordNodeProxy)Activator.GetObject(typeof(ChordNodeProxy), cpn.Address + ":" + cpn.Port + "/ChordServices"); if (obj != null) { try { return(obj.Findsuccessor(id)); } catch (IOException) { } catch (SocketException) { } } //Unable to find successor for node. Return null return(null); }
public NodeInfo Join(string knownChordNodeAddress, int knownChordNodePort) //Return successor { Predecessor = null; ChordNodeProxy obj = (ChordNodeProxy)Activator.GetObject(typeof(ChordNodeProxy), knownChordNodeAddress + ":" + knownChordNodePort + "/ChordServices"); if (obj != null) { try { return(obj.Findsuccessor(myData.ID)); } catch (IOException) { } catch (SocketException) { } } return(null); }