Esempio n. 1
0
 def lookup_subscribe(self, id, source):
     first_node = source
     if betweenE(id, int(self.predecessor.get_id()), int(self.id)):
         self.subscribe_owner(id, source, first_node)
         return self.proxy
     n = self.proxy
     
     while not betweenE(id, int(n.get_id()), int(n.successor().get_id())):
         n = n.closest_preceding_fingerE(id)    
         if int(n.get_id()) == id:
             n.subscribe_owner(id, source, first_node)
             return n           
         #Call to introduce some functionality in each forwarder ;) 
         if n != None:  
             source = n.subscribe(id, source)
     
     n.successor().subscribe_owner(id, source, first_node)
     return n.successor()
Esempio n. 2
0
 def lookup_subscribe(self, msg):
     if betweenE(msg.id, int(self.predecessor.get_id()), int(self.id)):
         return self.proxy
     n = self.proxy
     
     while not betweenE(msg.id, int(n.get_id()), int(n.successor().get_id())):
         n = n.closest_preceding_fingerE(msg)   
         
         if not n.is_alive():
             return None 
         
         if int(n.get_id()) == msg.id:
             n.deliver(msg)
             return n           
         #Call to introduce some functionality in each forwarder ;) 
         if n != None:  
             n.subscribe(msg)
     if n.successor().is_alive():
         n.successor().deliver(msg)
         return n.successor()
     
     n.successor().leave()
     return None
Esempio n. 3
0
 def closest_preceding_fingerE(self, msg):
     for i in range(k-1,-1,-1):
         if betweenE(int(self.finger[i].get_id()), int(self.id), msg.id):
             return self.finger[i]
     return self.proxy