Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. ------------------------------ MODULE tlrouter ------------------------------
  2. EXTENDS TLC, Sequences, Integers
  3. (* --algorithm tlrouter
  4. variables
  5. input_stream = << [dest |-> "a", id |-> 1], [id |-> 1]>>,
  6. routing_table = <<>>,
  7.  
  8. output_streams = <<>>,
  9. dead_messages = {},
  10. msg;
  11. begin
  12.  
  13. while input_stream /= <<>> do
  14. \* consume the next msg
  15. msg := Head(input_stream);
  16.  
  17. input_stream := Tail(input_stream);
  18.  
  19. \* try to learn an output channel
  20. if "dest" \in DOMAIN msg then
  21. routing_table[msg.id] := routing_table[msg.id] \union {msg.dest};
  22. else
  23. skip;
  24. end if;
  25.  
  26. \* have we learned an output channel? otherwise its dead
  27. if msg.id \in DOMAIN routing_table then
  28. output_streams[msg.id] := output_streams[msg.id] \union {msg}
  29. else
  30. dead_messages := dead_messages \union {msg}
  31. end if;
  32. end while;
  33. assert dead_messages = {};
  34. end algorithm *)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement