Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }