zk-eventmachine 0.2.0.beta.3 → 0.9.0

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.
metadata CHANGED
@@ -1,127 +1,104 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: zk-eventmachine
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.0.beta.3
5
- prerelease: 6
3
+ version: !ruby/object:Gem::Version
4
+ hash: 59
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 9
9
+ - 0
10
+ version: 0.9.0
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Jonathan D. Simms
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-11-15 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2012-04-23 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: zk
16
- requirement: &2153417580 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: 0.8.5
22
- type: :runtime
23
22
  prerelease: false
24
- version_requirements: *2153417580
25
- - !ruby/object:Gem::Dependency
26
- name: slyphon-zookeeper
27
- requirement: &2153416980 !ruby/object:Gem::Requirement
23
+ requirement: &id001 !ruby/object:Gem::Requirement
28
24
  none: false
29
- requirements:
25
+ requirements:
30
26
  - - ~>
31
- - !ruby/object:Gem::Version
32
- version: 0.2.4
27
+ - !ruby/object:Gem::Version
28
+ hash: 59
29
+ segments:
30
+ - 0
31
+ - 9
32
+ - 0
33
+ version: 0.9.0
33
34
  type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: slyphon-zookeeper
34
38
  prerelease: false
35
- version_requirements: *2153416980
36
- - !ruby/object:Gem::Dependency
37
- name: eventmachine
38
- requirement: &2153416460 !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
39
40
  none: false
40
- requirements:
41
+ requirements:
41
42
  - - ~>
42
- - !ruby/object:Gem::Version
43
- version: 1.0.0.beta.3
43
+ - !ruby/object:Gem::Version
44
+ hash: 61
45
+ segments:
46
+ - 0
47
+ - 8
48
+ - 1
49
+ version: 0.8.1
44
50
  type: :runtime
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: eventmachine
45
54
  prerelease: false
46
- version_requirements: *2153416460
47
- - !ruby/object:Gem::Dependency
48
- name: em-synchrony
49
- requirement: &2153416000 !ruby/object:Gem::Requirement
55
+ requirement: &id003 !ruby/object:Gem::Requirement
50
56
  none: false
51
- requirements:
57
+ requirements:
52
58
  - - ~>
53
- - !ruby/object:Gem::Version
54
- version: 1.0.0
59
+ - !ruby/object:Gem::Version
60
+ hash: -1649268254
61
+ segments:
62
+ - 1
63
+ - 0
64
+ - 0
65
+ - beta
66
+ - 4
67
+ version: 1.0.0.beta.4
55
68
  type: :runtime
69
+ version_requirements: *id003
70
+ - !ruby/object:Gem::Dependency
71
+ name: deferred
56
72
  prerelease: false
57
- version_requirements: *2153416000
58
- - !ruby/object:Gem::Dependency
59
- name: rspec
60
- requirement: &2153415040 !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
63
- - - ~>
64
- - !ruby/object:Gem::Version
65
- version: 2.5.0
66
- type: :development
67
- prerelease: false
68
- version_requirements: *2153415040
69
- - !ruby/object:Gem::Dependency
70
- name: yard
71
- requirement: &2153414480 !ruby/object:Gem::Requirement
73
+ requirement: &id004 !ruby/object:Gem::Requirement
72
74
  none: false
73
- requirements:
75
+ requirements:
74
76
  - - ~>
75
- - !ruby/object:Gem::Version
76
- version: 0.7.0
77
- type: :development
78
- prerelease: false
79
- version_requirements: *2153414480
80
- - !ruby/object:Gem::Dependency
81
- name: autotest
82
- requirement: &2153413980 !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
87
- version: 4.4.0
88
- type: :development
89
- prerelease: false
90
- version_requirements: *2153413980
91
- - !ruby/object:Gem::Dependency
92
- name: flexmock
93
- requirement: &2153413520 !ruby/object:Gem::Requirement
94
- none: false
95
- requirements:
96
- - - ~>
97
- - !ruby/object:Gem::Version
98
- version: 0.8.10
99
- type: :development
100
- prerelease: false
101
- version_requirements: *2153413520
102
- - !ruby/object:Gem::Dependency
103
- name: evented-spec
104
- requirement: &2153409460 !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- version: 0.4.1
110
- type: :development
111
- prerelease: false
112
- version_requirements: *2153409460
113
- description: ''
114
- email:
77
+ - !ruby/object:Gem::Version
78
+ hash: 13
79
+ segments:
80
+ - 0
81
+ - 5
82
+ - 3
83
+ version: 0.5.3
84
+ type: :runtime
85
+ version_requirements: *id004
86
+ description: ""
87
+ email:
115
88
  - slyphon@hp.com
116
89
  executables: []
90
+
117
91
  extensions: []
92
+
118
93
  extra_rdoc_files: []
119
- files:
94
+
95
+ files:
120
96
  - .dev_extras/README
121
97
  - .dev_extras/rspec
122
98
  - .dev_extras/rvmrc
123
99
  - .dev_extras/slyphon-project.vimrc
124
100
  - .gitignore
101
+ - .yardopts
125
102
  - Gemfile
126
103
  - LICENSE
127
104
  - README.markdown
@@ -129,9 +106,8 @@ files:
129
106
  - lib/z_k/z_k_event_machine.rb
130
107
  - lib/z_k/z_k_event_machine/callback.rb
131
108
  - lib/z_k/z_k_event_machine/client.rb
132
- - lib/z_k/z_k_event_machine/deferred.rb
133
109
  - lib/z_k/z_k_event_machine/event_handler_e_m.rb
134
- - lib/z_k/z_k_event_machine/synchrony_client.rb
110
+ - lib/z_k/z_k_event_machine/iterator.rb
135
111
  - lib/z_k/z_k_event_machine/unixisms.rb
136
112
  - lib/z_k/z_k_event_machine/version.rb
137
113
  - lib/zk-eventmachine.rb
@@ -139,44 +115,52 @@ files:
139
115
  - spec/support/extensions.rb
140
116
  - spec/support/logging.rb
141
117
  - spec/support/logging_progress_bar_formatter.rb
118
+ - spec/support/wait_watchers.rb
142
119
  - spec/z_k/z_k_event_machine/callback_spec.rb
143
120
  - spec/z_k/z_k_event_machine/client_spec.rb
144
121
  - spec/z_k/z_k_event_machine/event_handler_e_m_spec.rb
145
- - spec/z_k/z_k_event_machine/synchrony_client_spec.rb
146
122
  - spec/z_k/z_k_event_machine/unixisms_spec.rb
147
123
  - zk-eventmachine.gemspec
148
124
  homepage: https://github.com/slyphon/zk-eventmachine
149
125
  licenses: []
126
+
150
127
  post_install_message:
151
128
  rdoc_options: []
152
- require_paths:
129
+
130
+ require_paths:
153
131
  - lib
154
- required_ruby_version: !ruby/object:Gem::Requirement
132
+ required_ruby_version: !ruby/object:Gem::Requirement
155
133
  none: false
156
- requirements:
157
- - - ! '>='
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ hash: 3
138
+ segments:
139
+ - 0
140
+ version: "0"
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
161
142
  none: false
162
- requirements:
163
- - - ! '>'
164
- - !ruby/object:Gem::Version
165
- version: 1.3.1
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ hash: 3
147
+ segments:
148
+ - 0
149
+ version: "0"
166
150
  requirements: []
151
+
167
152
  rubyforge_project:
168
- rubygems_version: 1.8.10
153
+ rubygems_version: 1.8.15
169
154
  signing_key:
170
155
  specification_version: 3
171
156
  summary: ZK client for EventMachine-based (async) applications
172
- test_files:
157
+ test_files:
173
158
  - spec/spec_helper.rb
174
159
  - spec/support/extensions.rb
175
160
  - spec/support/logging.rb
176
161
  - spec/support/logging_progress_bar_formatter.rb
162
+ - spec/support/wait_watchers.rb
177
163
  - spec/z_k/z_k_event_machine/callback_spec.rb
178
164
  - spec/z_k/z_k_event_machine/client_spec.rb
179
165
  - spec/z_k/z_k_event_machine/event_handler_e_m_spec.rb
180
- - spec/z_k/z_k_event_machine/synchrony_client_spec.rb
181
166
  - spec/z_k/z_k_event_machine/unixisms_spec.rb
182
- has_rdoc:
@@ -1,39 +0,0 @@
1
- module ZK
2
- module ZKEventMachine
3
- module Deferred
4
- include EM::Deferrable
5
-
6
- # slight modification to EM::Deferrable,
7
- #
8
- # @returns [self] to allow for chaining
9
- #
10
- def callback(&block)
11
- super(&block)
12
- self
13
- end
14
-
15
- # @see #callback
16
- def errback(&block)
17
- super(&block)
18
- self
19
- end
20
-
21
- # adds the block to both the callback and errback chains
22
- def ensure_that(&block)
23
- callback(&block)
24
- errback(&block)
25
- end
26
-
27
- def chain_to(other_dfr, opts={})
28
- other_dfr.callback { |*a| self.succeed(*a) }
29
- other_dfr.errback { |*a| self.fail(*a) } unless opts[:ignore_errors]
30
- self
31
- end
32
-
33
- class Default
34
- include ZK::ZKEventMachine::Deferred
35
- end
36
- end
37
- end
38
- end
39
-
@@ -1,135 +0,0 @@
1
- module ZK
2
- module ZKEventMachine
3
- class SynchronyEventHandlerWrapper
4
- include ZK::Logging
5
-
6
- def initialize(event_handler)
7
- @event_handler = event_handler
8
- end
9
-
10
- # registers a block to be called back within a fiber context
11
- def register(path, &block)
12
- new_block = proc do |*a|
13
- Fiber.new { block.call(*a) }.resume
14
- end
15
-
16
- @event_handler.register(path, &new_block)
17
- end
18
-
19
- private
20
- def method_missing(meth, *a, &b)
21
- @event_handler.__send__(meth, *a, &b)
22
- end
23
- end
24
-
25
- # This class is an EM::Synchrony wrapper around a ZK::ZKEventMachine::Client
26
- #
27
- # It should behave exactly like a ZK::Client instance (when called in a
28
- # synchronous fashion), and one should look there for documentation about
29
- # the various methods
30
- #
31
- # @note this class is implemented as a wrapper instead of a subclass of Client
32
- # so that it can support the unixisms like rm_rf and mkdir_p. The
33
- # synchrony pattern of aliasing the base class methods and specializing for
34
- # synchrony didn't work in this case.
35
- #
36
- class SynchronyClient
37
- include ZK::Logging
38
-
39
- attr_reader :event_handler, :client
40
-
41
- # @overload new(client_instance)
42
- # Wrap an existing ZK::ZKEventMachine::Client instance in an
43
- # EM::Synchrony compatible way
44
- # @param [ZK::ZKEventMachine::Client] client_instance an instance of Client to wrap
45
- # @overload new(host, opts={})
46
- # Creates a new ZK::ZKEventMachine::Client instance to manage
47
- # takes the same arguments as ZK::Client::Base
48
- def initialize(host, opts={})
49
- case host
50
- when Client
51
- @client = host
52
- when String
53
- @client = Client.new(host, opts)
54
- else
55
- raise ArgumentError, "argument must be either a ZK::ZKEventMachine::Client instance or a hostname:port string"
56
- end
57
-
58
- @client.synchrony_client = self
59
-
60
- @event_handler = SynchronyEventHandlerWrapper.new(@client.event_handler)
61
- end
62
-
63
- %w[connect get set create stat delete children get_acl set_acl mkdir_p rm_rf].each do |meth|
64
- class_eval(<<-EOMETH, __FILE__, __LINE__ + 1)
65
- def #{meth}(*args,&blk)
66
- sync!(@client.#{meth}(*args, &blk))
67
- end
68
- EOMETH
69
- end
70
-
71
- # it is *crucially* important that close and close! be wrapped in a fiber.
72
- # it's possible under very odd corner cases with the 1.9.3 GC to cause a
73
- # '[BUG] cfp consistency error - send'
74
- #
75
- %w[close close!].each do |meth|
76
- class_eval(<<-EOMETH, __FILE__, __LINE__ + 1)
77
- def #{meth}(*args,&blk)
78
- Fiber.new { sync!(@client.#{meth}(*args, &blk)) }.resume
79
- end
80
- EOMETH
81
- end
82
-
83
- # @deprecated for backwards compatibility only
84
- def watcher
85
- event_handler
86
- end
87
-
88
- def exists?(path, opts={})
89
- stat(path, opts={}).exists?
90
- end
91
-
92
- # returns self
93
- def to_synchrony
94
- self
95
- end
96
-
97
- # returns the wrapped async client
98
- def to_async
99
- @client
100
- end
101
-
102
- protected
103
- # a modification of EM::Synchrony.sync to handle multiple callback arguments properly
104
- def sync(df)
105
- f = Fiber.current
106
-
107
- xback = proc do |*args|
108
- if f == Fiber.current
109
- return *args
110
- else
111
- f.resume(*args)
112
- end
113
- end
114
-
115
- df.callback(&xback)
116
- df.errback(&xback)
117
-
118
- Fiber.yield
119
- end
120
-
121
- # like sync, but if the deferred returns an exception instance, re-raises
122
- def sync!(deferred)
123
- rval = sync(deferred)
124
- raise rval if rval.kind_of?(Exception)
125
- rval
126
- end
127
-
128
- private
129
- def method_missing(meth, *a, &b)
130
- @client.__send__(meth, *a, &b)
131
- end
132
- end
133
- end
134
- end
135
-