Advertisement
Guest User

Untitled

a guest
Oct 12th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. loop {
  2. match *self {
  3. Machine::Counting {
  4. len,
  5. first_id,
  6. deadline,
  7. seen_blocked,
  8. } => if first_id == case_id {
  9. *self = Machine::Initialized {
  10. pos: 0,
  11. state: if seen_blocked {
  12. State::TryOnce { disconn_count: 0 }
  13. } else {
  14. State::SpinTry { disconn_count: 0 }
  15. },
  16. len,
  17. start: gen_random(len),
  18. deadline,
  19. };
  20. } else {
  21. *self = Machine::Counting {
  22. len: len + 1,
  23. first_id: if first_id == CaseId::none() {
  24. case_id
  25. } else {
  26. first_id
  27. },
  28. deadline,
  29. seen_blocked,
  30. };
  31. return None;
  32. },
  33. Machine::Initialized {
  34. pos,
  35. mut state,
  36. len,
  37. start,
  38. deadline,
  39. } => if pos >= 2 * len {
  40. state.transition(len, deadline);
  41. *self = Machine::Initialized {
  42. pos: 0,
  43. state,
  44. len,
  45. start,
  46. deadline,
  47. };
  48. } else {
  49. *self = Machine::Initialized {
  50. pos: pos + 1,
  51. state,
  52. len,
  53. start,
  54. deadline,
  55. };
  56. if let Machine::Initialized { ref mut state, .. } = *self {
  57. if start <= pos && pos < start + len {
  58. return Some(state);
  59. } else {
  60. return None;
  61. }
  62. }
  63. },
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement