zk_client 0.3.0 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0bb8f67e1af45d0e4103397b040d03a4371bf218
4
- data.tar.gz: d8a482167b23216b111a7194411fdfee43709887
3
+ metadata.gz: c1c859b8f21362947850809c2db753179ef70c24
4
+ data.tar.gz: 217071637b49b2242ec9e532c5e6ac5cb136d8f7
5
5
  SHA512:
6
- metadata.gz: de2849cf61ca99bc3a97fbe15a33b61df2ca6cb947bdce16c851c8d9e69562fc38914eea3c8a13a74695752e69dbf35dd8d849d793dfd05ef2d0385cadd585d1
7
- data.tar.gz: dd0f60af97af715dffdc32cdbfd6c6102b8fced957e302e1148312a808ac97ae99e741e151ca7005a9280d6a7c8ab522fc68154f68546cd867b5b1f2b783b328
6
+ metadata.gz: bc68da86514f25705dbe51dcbb1a72d6cb0d745f8369d60550cee97b3dd7a28c7b1e66ed60e1451f7775f7051436ff6878aef5e837598248cc14d0a306bde895
7
+ data.tar.gz: 223b748065bcdc6b10e51e843d6c9a568a090935afed1a7359aa1a5d2ddd271154556e4161d64274dbe99f6deb3ef3218bf8be5174425a6c4245644702fe0d53
data/README.md CHANGED
@@ -144,6 +144,24 @@ ZkClient.read_node('/mynode')
144
144
  #=> {:req_id=>9, :rc=>-101, :data=>nil, :stat=>#<Zookeeper::Stat:0x00000002803f70 @exists=false>}
145
145
  ```
146
146
 
147
+ ##### Getting a node's children
148
+
149
+ ```ruby
150
+ require 'zk_client'
151
+
152
+ # If the root node has children:
153
+ ZkClient.children('/')
154
+ #=> ['firstchild', 'secondchild']
155
+
156
+ # If the root node has no children:
157
+ ZkClient.children('/')
158
+ #=> []
159
+
160
+ # If the node you call children on doesn't exist:
161
+ ZkClient.children('/doesnotexist')
162
+ #=> nil
163
+ ```
164
+
147
165
  ##### Close connection to ZK
148
166
 
149
167
  ```ruby
@@ -158,6 +176,20 @@ ZkClient.client.connected?
158
176
 
159
177
  ```
160
178
 
179
+ ##### Reopen a closed connection or close the existing connection and create a new connection
180
+
181
+ ```ruby
182
+ require 'zk_client'
183
+
184
+ ZkClient.close
185
+ #=> nil
186
+ ZkClient.reopen
187
+ #=> #<Zookeeper::Client: .....
188
+ ZkClient.client.connected?
189
+ #=> true
190
+
191
+ ```
192
+
161
193
  ##### Access the underlying Zookeeper.new instance
162
194
  ```ruby
163
195
  require 'zk_client'
data/lib/zk_client.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "zk_client/version"
2
2
  require "zk_client/zk_client"
3
+ require "zk_client/zk_cache"
3
4
 
4
5
  module ZkClient
5
6
  end
@@ -1,3 +1,3 @@
1
1
  module ZkClient
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -0,0 +1,62 @@
1
+ require 'json'
2
+
3
+ module ZkCache
4
+
5
+ class << self
6
+
7
+ def cache(key, value)
8
+ _cache[key] = value
9
+ end
10
+
11
+ def read(key)
12
+ path = _process_path(key)
13
+ _cache[path]
14
+ end
15
+
16
+ def load_cache
17
+ _load_cache(ZkClient.root_path)
18
+ self.to_s
19
+ end
20
+
21
+ def destroy_cache
22
+ @@cache = {}
23
+ end
24
+
25
+ def to_s
26
+ _cache.to_json
27
+ end
28
+
29
+ def root_path
30
+ ZkClient.root_path
31
+ end
32
+
33
+ private
34
+
35
+ def _cache
36
+ @@cache ||= {}
37
+ end
38
+
39
+ def _process_path(path)
40
+ path = "/#{path}" unless path.start_with?('/') # We want leading slash
41
+ path = path[0...-1] if path[-1] == '/' # Remove trailing slash
42
+ path = "#{root_path}#{path}" unless path.start_with?(root_path)
43
+
44
+ path
45
+ end
46
+
47
+ def _load_cache(path)
48
+ val = ZkClient.read(path)
49
+ cache(path, val)
50
+
51
+ children = ZkClient.children(path)
52
+ if children && children.any?
53
+ children.each do |child|
54
+ _load_cache("#{path}/#{child}")
55
+ end
56
+ end
57
+ end
58
+
59
+ end
60
+
61
+ end
62
+
@@ -89,7 +89,7 @@ module ZkClient
89
89
  end
90
90
 
91
91
  def uri=(uri)
92
- parsed_uri = URI(uri)
92
+ parsed_uri = URI(schemeify(uri))
93
93
 
94
94
  @@host = parsed_uri.host
95
95
  @@port = parsed_uri.port
@@ -118,5 +118,13 @@ module ZkClient
118
118
  path
119
119
  end
120
120
 
121
+ def schemeify(uri)
122
+ if (uri =~ /^http(s)?:\/\/(.)+/) == 0
123
+ uri
124
+ else
125
+ "http://#{uri}"
126
+ end
127
+ end
128
+
121
129
  end # End class methods
122
130
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zk_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Thomas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-12 00:00:00.000000000 Z
11
+ date: 2016-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zookeeper
@@ -98,6 +98,7 @@ files:
98
98
  - bin/setup
99
99
  - lib/zk_client.rb
100
100
  - lib/zk_client/version.rb
101
+ - lib/zk_client/zk_cache.rb
101
102
  - lib/zk_client/zk_client.rb
102
103
  - zk_client.gemspec
103
104
  homepage: https://git.autodesk.com/EIS-EA-MOJO/zk_client