A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
stupid old gcc. That's initialized.
[simgrid.git]
/
examples
/
lua
/
chord
/
chord.lua
diff --git
a/examples/lua/chord/chord.lua
b/examples/lua/chord/chord.lua
index
bb763bd
..
6e6df64
100644
(file)
--- a/
examples/lua/chord/chord.lua
+++ b/
examples/lua/chord/chord.lua
@@
-1,5
+1,11
@@
-- A SimGrid Lua implementation of the Chord DHT
-- A SimGrid Lua implementation of the Chord DHT
+-- Copyright (c) 2011-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.
+
require("simgrid")
nb_bits = 24
require("simgrid")
nb_bits = 24
@@
-13,7
+19,7
@@
fix_fingers_delay = 120
check_predecessor_delay = 120
lookup_delay = 10
check_predecessor_delay = 120
lookup_delay = 10
--- current node (don't worry, globals are duplicated in each process)
+-- current node (don't worry, globals are duplicated in each
simulated
process)
my_node = {
id = my_id,
next_finger_to_fix = 1,
my_node = {
id = my_id,
next_finger_to_fix = 1,
@@
-28,7
+34,7
@@
my_node = {
-- - the id of a guy I know in the system (except for the first node)
function node(...)
-- - the id of a guy I know in the system (except for the first node)
function node(...)
- -- TODO simplify the
parameters
+ -- TODO simplify the
deployment file
local known_id
local args = {...}
my_node.id = tonumber(args[1])
local known_id
local args = {...}
my_node.id = tonumber(args[1])
@@
-61,17
+67,17
@@
function node(...)
local next_check_predecessor_date = now + check_predecessor_delay
local next_lookup_date = now + lookup_delay
local next_check_predecessor_date = now + check_predecessor_delay
local next_lookup_date = now + lookup_delay
- local task,
success
+ local task,
err
while now < max_simulation_time do
while now < max_simulation_time do
- task,
success = simgrid.comm.test(my_node.comm_recv
)
+ task,
err = my_node.comm_recv:test(
)
if task then
-- I received a task: answer it
my_node.comm_recv = simgrid.task.irecv(my_node.id)
handle_task(task)
if task then
-- I received a task: answer it
my_node.comm_recv = simgrid.task.irecv(my_node.id)
handle_task(task)
- elseif
failed
then
+ elseif
err
then
-- the communication has failed: nevermind
my_node.comm_recv = simgrid.task.irecv(my_node.id)
else
-- the communication has failed: nevermind
my_node.comm_recv = simgrid.task.irecv(my_node.id)
else
@@
-87,6
+93,7
@@
function node(...)
elseif now >= next_check_predecessor_date then
check_predecessor()
next_check_predecessor_date = simgrid.get_clock() + check_predecessor_delay
elseif now >= next_check_predecessor_date then
check_predecessor()
next_check_predecessor_date = simgrid.get_clock() + check_predecessor_delay
+
elseif now >= next_lookup_date then
random_lookup()
next_lookup_date = simgrid.get_clock() + lookup_delay
elseif now >= next_lookup_date then
random_lookup()
next_lookup_date = simgrid.get_clock() + lookup_delay
@@
-129,28
+136,20
@@
function handle_task(task)
task.answer_to .. ": the successor of " .. task.request_id ..
" is " .. my_node.fingers[1])
task.answer_to .. ": the successor of " .. task.request_id ..
" is " .. my_node.fingers[1])
- local ans_task = simgrid.task.new("", comp_size, comm_size)
- ans_task.type = "find successor answer"
- ans_task.request_id = task.request_id
- ans_task.answer = my_node.fingers[1]
- ans_task:dsend(task.answer_to)
+ task.type = "find successor answer"
+ task.answer = my_node.fingers[1]
+ task:dsend(task.answer_to)
else
-- forward the request to the closest preceding finger in my table
simgrid.info("Forwarding the 'find successor' request to my closest preceding finger")
else
-- forward the request to the closest preceding finger in my table
simgrid.info("Forwarding the 'find successor' request to my closest preceding finger")
-
- local next_task = simgrid.task.new("", comp_size, comm_size)
- next_task.type = "find successor"
- next_task.request_id = task.request_id
- next_task.answer_to = task.answer_to
- next_task:dsend(closest_preceding_node(next_task.request_id))
+ task:dsend(closest_preceding_node(task.request_id))
end
elseif type == "get predecessor" then
end
elseif type == "get predecessor" then
- local ans_task = simgrid.task.new("", comp_size, comm_size)
- ans_task.type = "get predecessor answer"
- ans_task.answer = my_node.predecessor
- ans_task:dsend(task.answer_to)
+ task.type = "get predecessor answer"
+ task.answer = my_node.predecessor
+ task:dsend(task.answer_to)
elseif type == "notify" then
-- someone is telling me that he may be my new predecessor
elseif type == "notify" then
-- someone is telling me that he may be my new predecessor
@@
-278,7
+277,7
@@
function remote_find_successor(ask_to, id)
" for id " .. id .. ", waiting for the answer")
while true do
" for id " .. id .. ", waiting for the answer")
while true do
- task =
simgrid.comm.wait(my_node.comm_recv,
timeout)
+ task =
my_node.comm_recv:wait(
timeout)
my_node.comm_recv = simgrid.task.irecv(my_node.id)
if not task then
my_node.comm_recv = simgrid.task.irecv(my_node.id)
if not task then
@@
-319,7
+318,7
@@
function remote_get_predecessor(ask_to)
if task:send(ask_to, timeout) then
-- request successfully sent: wait for an answer
while true do
if task:send(ask_to, timeout) then
-- request successfully sent: wait for an answer
while true do
- task =
simgrid.comm.wait(my_node.comm_recv,
timeout)
+ task =
my_node.comm_recv:wait(
timeout)
my_node.comm_recv = simgrid.task.irecv(my_node.id)
if not task then
my_node.comm_recv = simgrid.task.irecv(my_node.id)
if not task then