zk-eventmachine 0.1.8 → 0.1.9

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.
@@ -6,8 +6,6 @@ module ZK
6
6
 
7
7
  DEFAULT_TIMEOUT = 10
8
8
 
9
- attr_reader :client
10
-
11
9
  # Takes same options as ZK::Client::Base
12
10
  def initialize(host, opts={})
13
11
  @host = host
@@ -26,7 +24,10 @@ module ZK
26
24
  # ready for use
27
25
  def connect(&blk)
28
26
  # XXX: maybe move this into initialize, need to figure out how to schedule it properly
29
- @cnx ||= ZookeeperEM::Client.new(@host, DEFAULT_TIMEOUT, event_handler.get_default_watcher_block)
27
+ @cnx ||= (
28
+ event_handler.register_state_handler(Zookeeper::ZOO_EXPIRED_SESSION_STATE, &method(:handle_expired_session_state_event!))
29
+ ZookeeperEM::Client.new(@host, DEFAULT_TIMEOUT, event_handler.get_default_watcher_block)
30
+ )
30
31
  @cnx.on_attached(&blk)
31
32
  end
32
33
 
@@ -137,6 +138,12 @@ module ZK
137
138
  end
138
139
 
139
140
  protected
141
+ def handle_expired_session_state_event!(event)
142
+ exc = ZK::Exceptions::ConnectionLoss.new("Received EXPIRED_SESSION_STATE event: #{event.inspect}")
143
+ exc.set_backtrace(caller)
144
+ connection_lost_hook(exc)
145
+ end
146
+
140
147
  def connection_lost_hook(exc)
141
148
  if exc and exc.kind_of?(ZK::Exceptions::ConnectionLoss)
142
149
  dfr, @connection_lost_deferred = @connection_lost_deferred, Deferred::Default.new
@@ -1,5 +1,5 @@
1
1
  module ZK
2
2
  module ZKEventMachine
3
- VERSION = "0.1.8"
3
+ VERSION = "0.1.9"
4
4
  end
5
5
  end
@@ -81,6 +81,27 @@ module ZK::ZKEventMachine
81
81
  end
82
82
  end
83
83
  end
84
+
85
+ it %[should be called if we get a session expired event] do
86
+ @zkem.on_connection_lost do |exc|
87
+ logger.debug { "WIN!" }
88
+ exc.should be_kind_of(ZK::Exceptions::ConnectionLoss)
89
+ @zkem.close! { done }
90
+ end
91
+
92
+ em do
93
+ @zkem.connect do
94
+ event = flexmock(:event).tap do |ev|
95
+ ev.should_receive(:node_event?).and_return(false)
96
+ ev.should_receive(:state_event?).and_return(true)
97
+ ev.should_receive(:zk=).with_any_args
98
+ ev.should_receive(:state).and_return(Zookeeper::ZOO_EXPIRED_SESSION_STATE)
99
+ end
100
+
101
+ EM.next_tick { @zkem.event_handler.process(event) }
102
+ end
103
+ end
104
+ end
84
105
  end
85
106
 
86
107
  describe 'get' do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zk-eventmachine
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 8
10
- version: 0.1.8
9
+ - 9
10
+ version: 0.1.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jonathan D. Simms
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-26 00:00:00 Z
18
+ date: 2012-01-25 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: zk
@@ -213,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
213
  requirements: []
214
214
 
215
215
  rubyforge_project:
216
- rubygems_version: 1.8.6
216
+ rubygems_version: 1.8.10
217
217
  signing_key:
218
218
  specification_version: 3
219
219
  summary: ZK client for EventMachine-based (async) applications