rgossip 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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