rgossip 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -101,10 +101,16 @@ module RGossip
101
101
  address = name2addr(address)
102
102
 
103
103
  @node_list.synchronize {
104
- raise 'node is exist' if @node_list.any? {|i| i.address == address }
105
- node = Node.new(@node_list, @dead_list, address, nil, nil, self.method(:perform_callback))
106
- @node_list << node
107
- node.start_timer if @running
104
+ @dead_list.synchronize {
105
+ raise 'node is exist' if @node_list.any? {|i| i.address == address }
106
+ node = Node.new(@node_list, @dead_list, address, nil, nil, self.method(:perform_callback))
107
+ @node_list << node
108
+ node.start_timer if @running
109
+
110
+ @dead_list.reject! do |i|
111
+ i.address == address
112
+ end
113
+ }
108
114
  }
109
115
  end
110
116
 
@@ -113,7 +119,10 @@ module RGossip
113
119
 
114
120
  @node_list.synchronize {
115
121
  @node_list.reject! do |i|
116
- i.address == address
122
+ if i.address == address
123
+ i.stop_timer
124
+ true
125
+ end
117
126
  end
118
127
  }
119
128
  end
data/lib/rgossip/node.rb CHANGED
@@ -27,6 +27,10 @@ module RGossip
27
27
  }
28
28
 
29
29
  @dead_list.synchronize {
30
+ @dead_list.reject! do |i|
31
+ i.address == @address
32
+ end
33
+
30
34
  @dead_list << self
31
35
  }
32
36
 
@@ -54,5 +58,11 @@ module RGossip
54
58
 
55
59
  @timer.reset
56
60
  end
61
+
62
+ def stop_timer
63
+ RGossip.log("Stop Timer: address=#{@address} lifetime=#{@@lifetime}")
64
+
65
+ @timer.stop
66
+ end
57
67
  end # Node
58
68
  end # RGossip
data/lib/rgossip/timer.rb CHANGED
@@ -42,6 +42,15 @@ module RGossip
42
42
  rescue ThreadError
43
43
  end
44
44
 
45
+ def stop
46
+ @mutex.synchronize {
47
+ if_is_thread_alive? do
48
+ @thread.kill
49
+ end
50
+ }
51
+ rescue ThreadError
52
+ end
53
+
45
54
  private
46
55
  def if_is_thread_alive?
47
56
  if @thread and @thread.alive?
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rgossip
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 7
10
- version: 0.1.7
9
+ - 8
10
+ version: 0.1.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - winebarrel