Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[Lua] Removed lua simulation support
[simgrid.git] / examples / lua / kademlia / routing_table.lua
diff --git a/examples/lua/kademlia/routing_table.lua b/examples/lua/kademlia/routing_table.lua
deleted file mode 100644 (file)
index 089cc89..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
--- Copyright (c) 2012, 2014. The SimGrid Team.
--- All rights reserved.
-
--- This program is free software; you can redistribute it and/or modify it
--- under the terms of the license (GNU LGPL) which comes with this package.
-
--- Routing table data
-routing_table = {
-buckets = {},
-}
--- Initialize the routing table
-function routing_table_init(id) 
-       routing_table.id = id
-       -- Bucket initialization
-       for i = 0,common.IDENTIFIER_SIZE do
-               routing_table.buckets[i] = {id = i, set = {}, list = {}}
-       end
-end
--- Returns an identifier which is in a specific bucket of a routing table
-function get_id_in_prefix(id, prefix)
-       if id == 0 then
-               return 0
-       end
-       local identifier = 1
-       identifier = math.pow(identifier,prefix - 1)
-       identifier = bxor(identifier,id)
-       return identifier
-end
--- Returns the corresponding node prefix for a given id
-function get_node_prefix(id)
-       for i = 0,32 do
-               if is_integer(id / math.pow(2,i)) and (id / math.pow(2,i)) % 2 == 1 then
-                       return 31 - i
-               end
-       end 
-       return 0
-end
--- Finds the corresponding bucket in a routing table for a given identifier
-function find_bucket(id)
-       local xor_number = bxor(id,routing_table.id)
-       local prefix = get_node_prefix(xor_number)
-       --simgrid.info("Prefix:" .. prefix .. " number:" .. xor_number)
-       return routing_table.buckets[prefix]
-end
--- Updates the routing table with a new value.
-function routing_table_update(id)
-       if id == routing_table.id then
-               return
-       end
-       local bucket = find_bucket(id)
-       if bucket.set[id] ~= nil then
-               simgrid.debug("Updating " .. id .. " in my routing table")
-               -- If the element is already in the bucket, we update it.
-               table.remove(bucket.list,index_of(bucket.list,id))
-               table.insert(bucket.list,id)
-       else    
-               simgrid.debug("Insert " .. id .. " in my routing table in bucket " .. bucket.id)
-               table.insert(bucket.list,id)
-               bucket.set[id] = true
-       end
-end
--- Returns the closest notes we know to a given id 
-function find_closest(destination_id)
-       local answer = {destination = destination_id, nodes = {}}
-       
-       local bucket = find_bucket(destination_id)
-       for i,v in pairs(bucket.list) do
-               table.insert(answer.nodes,{id = v, distance = bxor(v,destination_id)})
-       end
-       
-       local i = 1
-       
-       while #answer.nodes < common.BUCKET_SIZE and ((bucket.id - i) >= 0 or (bucket.id + i) <= common.IDENTIFIER_SIZE) do
-               -- Check the previous buckets
-               if bucket.id - i >= 0 then
-                       local bucket_p = routing_table.buckets[bucket.id - i]
-                       for i,v in pairs(bucket_p.list) do
-                               table.insert(answer.nodes,{id = v, distance = bxor(v,destination_id)})
-                       end
-               end                     
-               -- Check the next buckets
-               if bucket.id + i <= common.IDENTIFIER_SIZE then
-                       local bucket_n = routing_table.buckets[bucket.id + i]
-                       for i,v in pairs(bucket_n.list) do
-                               table.insert(answer.nodes,{id = v, distance = bxor(v,destination_id)})
-                       end                     
-               end
-               i = i + 1
-       end
-       -- Sort the list
-       table.sort(answer.nodes, function(a,b) return a.distance < b.distance end)
-       -- Trim the list
-       while #answer.nodes > common.BUCKET_SIZE do
-               table.remove(answer.nodes)
-       end
-       
-       return answer
-end