reminder-client 0.0.2 → 0.0.3

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: 5e4b20dadedd3af348a6f852daa7d2259dcf7b16
4
- data.tar.gz: e6d69823fb71b2f49a59c03c941cfad7935376ad
3
+ metadata.gz: ee3395d42bb9f436bf81ceb00546fbbe40542256
4
+ data.tar.gz: d3e0ea6cb47b8aa257f35c5d5cb4bccba4ce980a
5
5
  SHA512:
6
- metadata.gz: a5716c61a67bd93fe1a5055f074491d04a0cc5c3a6066f850eb92544e4836f44d07793e78d5c5a0c3f2de0b8bfcad5adce4f597a1b863cc838521152393d3457
7
- data.tar.gz: 3d0be3d23fb5c46d64bb6bbf1b1c78542e7cb02efe89d68bd7923dad9072cba6ed442896012f2662b7f5f53d09395365e682f54d8f9302447281a69df5d2bad4
6
+ metadata.gz: 84810a7b27105dc01e95af166921c12e4e34c1e066c35f035b2620e9fde6adf42a8cba540b6631d6caf34bae5f0fd97d1111c5bbd5ff2ef55616fe3d25fc0593
7
+ data.tar.gz: e86d6ccc9f7a4e2c0424924d40450ffb91e969ffd2313847ed52b3241f390d43843d238921ac0dc12eb69ed642c67f2cab287675ed81cb14b84d8fb4740bab68
@@ -1,5 +1,8 @@
1
1
  require 'reminder-client'
2
2
  require 'reminder-client/configcenter'
3
+ require 'reminder-client/server_info'
4
+ require 'reminder-client/http_model'
5
+ require 'reminder-client/thrift_model'
3
6
 
4
7
  class ReminderClient < Zoo
5
8
  def initialize(options = {})
@@ -1,8 +1,8 @@
1
1
  #!/usr/math/bin/ruby
2
2
 
3
3
  require 'zookeeper'
4
- require 'eventmachine'
5
4
  require 'zk'
5
+ require 'yajl'
6
6
 
7
7
  # Public: Create a Zk instence and connect, the following
8
8
  # relaying on it, it will block until connected successfully.
@@ -17,132 +17,102 @@ require 'zk'
17
17
  #
18
18
  # Returns a Zoo instance.
19
19
  class Zoo
20
+
21
+ SERVER_FOUND_BASE_PATH = "services"
22
+ SERVER_TYPE_HTTP = "http"
23
+ SERVER_TYPE_THRIFT = "thrift"
24
+
25
+
20
26
  def initialize(options)
21
27
  p "start connect to #{options[:zk_address]}"
22
28
  @zk = ZK.new(options[:zk_address])
23
29
  # @config_center_backend = options[:config_center_backend]
24
-
25
- # @path = "/rbtest"
26
- # default paramters
27
- # @server_found_base_path = "/xserver"
28
- # @server_config_base_path = "/xconfig"
29
- # @server_config_sub_path= "/ctest"
30
- # paramters to set
31
- # @server_found_base_path = options[:zk_server_found_base_path]
32
- # @server_config_base_path = options[:zk_server_config_base_path]
33
- # @server_config_sub_path= options[:zk_server_config_sub_path]
34
- puts "init succ #{@zk}"
30
+ @parser = Yajl::Parser
31
+ @encoder = Yajl::Encoder
32
+ puts "zk successfully connected to #{options[:zk_address]}"
35
33
  end
36
-
37
-
34
+
35
+
38
36
  # Public: zk server found server part, and it will create a ephemeral path
39
37
  # with current server's service ip, address, or so on.
40
38
  #
41
39
  # option - The hash :ip_port -> service address .eg "192.168.3.1:2222".
42
40
  # child(option) - The sub-path name.
43
41
  #
44
- # Examples
45
- #
46
- # server_found_server({ server_found_base_path = "/stat-server" })
47
- # server_found_server({ server_found_base_path = "/stat-server" }, "child")
48
- # # => nil
49
- #
50
- # Returns nil.
51
- def server_found_server(option, child = 'default')
52
- #fork do
53
- # @zk.reopen()
54
- re = @zk.create(option[:server_found_base_path] + "/" + child, option[:ip_port], :ephemeral => true, :sequence => true)
55
- puts "create ephemeral path #{re} with data #{option} succ !!!"
42
+ def server_found_server(option, member_path = 'default')
43
+ # todo reise problem if some key params is nil
44
+ #raise "error" if
45
+ server_info = ServerInfo.new(option)
46
+
47
+ p "input params is #{option}"
48
+ p server_info
49
+ server_json = @encoder.encode(server_info.getHash)
50
+ create_path = get_combined_path([SERVER_FOUND_BASE_PATH, server_info.serviceType, server_info.groupPath, server_info.memberName])
51
+ # create parent path if not exists
52
+ create_parentPath([SERVER_FOUND_BASE_PATH, server_info.serviceType, server_info.groupPath])
53
+ puts server_json
54
+ re = @zk.create(create_path, server_json.to_s, :ephemeral => true, :sequence => true)
55
+ # re = @zk.create(option[:server_found_base_path] + "/" + child, option[:ip_port], :ephemeral => true, :sequence => true)
56
+ puts "create ephemeral path #{re} with data #{server_json} succ !!!"
56
57
  #end
57
58
  end
58
-
59
+
59
60
 
60
61
  # Public: server found client part.
61
62
  #
62
- # server_path - The String (zk's path) to be watched.
63
+ # service_type -
64
+ # group_path - The String (zk's path) to be watched.
63
65
  # block - The callback to be call when the server_path to be watched changed.
64
66
  #
65
- # Examples
66
- #
67
- # server_found_client('/stat-service'){ | iplist, load_balance |
68
- # puts iplist
69
- # puts load_balance
70
- # }
71
- # # => nil
72
- #
73
- def server_found_client(server_path, &block)
74
- puts "zk server_found start watching on #{server_path}"
75
- relist = @zk.children(server_path, :watch => true)
67
+ def server_found_client(service_type, group_path, &block)
68
+ watch_path = get_combined_path([SERVER_FOUND_BASE_PATH, service_type, group_path])
69
+ puts "zk server_found start watching on #{watch_path}"
70
+ relist = @zk.children(watch_path, :watch => true)
76
71
  # relist = @zk.children(server_path)
77
- load_balance = @zk.get(server_path, :watch => true)[0]
78
-
72
+ load_balance = @zk.get(watch_path, :watch => true)[0]
73
+
79
74
  puts "get children #{relist} and get load_balance #{load_balance} for the first time"
80
-
75
+
81
76
  #context[:serverlist => relist]
82
- block.call(get_ip_from_server(server_path, relist),load_balance)
77
+ #block.call(get_ip_from_server(server_path, relist), load_balance)
78
+ run_block(service_type, group_path, relist, load_balance, &block)
83
79
 
84
- node_subscription = @zk.register(server_path) do |event|
80
+ node_subscription = @zk.register(watch_path) do |event|
85
81
  puts "server found event is #{event}"
86
- # get children and re-set watch
87
- relist = @zk.children(server_path, :watch => true)
88
- # relist = @zk.children(server_path)
89
- load_balance = @zk.get(server_path, :watch => true)[0]
90
82
  if event.node_child? || event.node_changed?
83
+ # get children and re-set watch
84
+ relist = @zk.children(watch_path, :watch => true)
85
+ # relist = @zk.children(server_path)
86
+ load_balance = @zk.get(watch_path, :watch => true)[0]
91
87
  #puts relist
92
- block.call(get_ip_from_server(server_path, relist), load_balance)
88
+ # check if server_type == thrift or http
89
+ # block.call()
90
+ # block.call(get_ip_from_server(server_path, relist), load_balance)
91
+ run_block(service_type, group_path, relist, load_balance, &block)
93
92
  end
94
93
  end
95
94
  end
96
-
97
- # Private: Internal function, get each sub path's data.
98
- #
99
- # server_path - The String to be duplicated.
100
- # relist - The Integer number of times to duplicate the text.
101
- #
102
- # Examples
103
- #
104
- # get_ip_from_server('/server-stat', ['default0000001', 'default0000002'
105
- # , 'default0000003'])
106
- # # => ['192.168.2.220:2222', '192.168.2.220:3333', '192.168.2.222:4444']
107
- #
108
- # Returns the ip list.
109
- def get_ip_from_server(server_path, relist)
110
- list = []
111
- relist.each { |child|
112
- #puts "get child #{child}"
113
- str = @zk.get(server_path + "/" + child)[0]
114
- p str
115
- list << str if str and !str.empty?
116
- #p "lalalala -> #{@zk.get(server_path + "/" + child)}"
117
- }
118
- list.uniq
119
- end
120
95
 
96
+
121
97
  # Public: The serverConfig client part
122
98
  #
123
99
  # config_path - The config_path of zk tobe watched.
124
100
  # group - The group of the service
125
101
  # block - The callback to be call when the config_path to be watched changed.
126
102
  #
127
- #
128
- # Examples
129
- #
130
- # server_config_client('/config/server-stat', 'stat-service', 1){ |configdata|
131
- # puts configdata
132
- # }
133
- # # => nil
103
+ # under development
134
104
  #
135
105
  # Returns nil.
136
106
  def server_config_client(config_path, group, &block)
137
107
  puts "zk server_config start watching on #{config_path}"
138
-
108
+
139
109
  # get server config for the first time
140
110
  version = @zk.get(config_path, :watch => true)[0]
141
111
  version = -1 if version.empty?
142
112
  version = version.to_i
143
113
 
144
114
  # call hessian to get the config data
145
- configdata = REMINDER_BACKEND_SERVICE.getMapdata(version, service, group)
115
+ configdata = REMINDER_BACKEND_SERVICE.getMapdata(version, config_path, group)
146
116
  puts "get version for the first time configdata is #{configdata}"
147
117
  block.call(configdata)
148
118
 
@@ -155,11 +125,102 @@ class Zoo
155
125
  version = -1 if version.empty?
156
126
  version = version.to_i
157
127
  puts "server config version is #{version}"
158
-
128
+
159
129
  # get the config data by version and service through hessian
160
- configdata = REMINDER_BACKEND_SERVICE.getMapdata(version, service, group)
130
+ configdata = REMINDER_BACKEND_SERVICE.getMapdata(version, config_path, group)
161
131
  block.call(configdata)
162
132
  end
163
133
  end
164
134
  end
165
- end
135
+
136
+ private
137
+ def run_block(server_type, group_path, children, load_balance, &block)
138
+ parent_path = get_combined_path([SERVER_FOUND_BASE_PATH, server_type, group_path])
139
+ list = []
140
+ children.each { |child|
141
+ #puts "get child #{child}"
142
+ json_data = @zk.get(get_combined_path([parent_path, child]))[0]
143
+ puts json_data
144
+ list << json_data if json_data and !json_data.empty?
145
+ #p "lalalala -> #{@zk.get(server_path + "/" + child)}"
146
+ }
147
+ if server_type == SERVER_TYPE_HTTP
148
+ block.call(http_models_generator(list.uniq), load_balance)
149
+ elsif server_type == SERVER_TYPE_THRIFT
150
+ block.call(thrift_models_generator(list.uniq), load_balance)
151
+ end
152
+ end
153
+
154
+ def http_models_generator(jsons)
155
+ relist = []
156
+ jsons.each do |json|
157
+ hash = @parser.parse(json)
158
+ relist << server_info_hash_to_http_model(hash)
159
+ end
160
+ relist
161
+ end
162
+
163
+ def thrift_models_generator(jsons)
164
+ relist = []
165
+ jsons.each do |json|
166
+ hash = @parser.parse(json)
167
+ relist << server_info_hash_to_thrift_model(hash)
168
+ end
169
+ relist
170
+ end
171
+
172
+ def server_info_hash_to_http_model(hash)
173
+ HttpModel.new({ ip: hash["ip"], port: hash["port"],
174
+ serviceType: hash["serviceType"], serviceName: hash["serviceName"]})
175
+ end
176
+
177
+ def server_info_hash_to_thrift_model(hash)
178
+ ThriftModel.new({ ip: hash["ip"], port: hash["port"],
179
+ serviceType: hash["serviceType"], serviceName: hash["serviceName"],
180
+ workerSize: hash["workerSize"], selectorSize: hash["selectorSize"] })
181
+ end
182
+
183
+ def create_parentPath(paths)
184
+ create_path = ""
185
+ paths.each do |path|
186
+ create_path << "/"
187
+ create_path << path
188
+ # create path if not exists
189
+ re = @zk.create(create_path, '', :ephemeral => false, :sequence => false) if !@zk.exists?(create_path)
190
+ puts "create parent path #{re}" if !re.nil?
191
+ end
192
+ end
193
+
194
+ def get_combined_path(paths)
195
+ repath = ""
196
+ paths.each do |path|
197
+ repath << "/" if !path.start_with?("/")
198
+ repath << path
199
+ end
200
+ repath
201
+ end
202
+ end
203
+
204
+ # Private: Internal function, get each sub path's data.
205
+ #
206
+ # server_path - The String to be duplicated.
207
+ # relist - The Integer number of times to duplicate the text.
208
+ #
209
+ # Examples
210
+ #
211
+ # get_ip_from_server('/server-stat', ['default0000001', 'default0000002'
212
+ # , 'default0000003'])
213
+ # # => ['192.168.2.220:2222', '192.168.2.220:3333', '192.168.2.222:4444']
214
+ #
215
+ # Returns the ip list.
216
+ # def get_ip_from_server(server_path, relist)
217
+ # list = []
218
+ # relist.each { |child|
219
+ # #puts "get child #{child}"
220
+ # str = @zk.get(server_path + "/" + child)[0]
221
+ # p str
222
+ # list << str if str and !str.empty?
223
+ # #p "lalalala -> #{@zk.get(server_path + "/" + child)}"
224
+ # }
225
+ # list.uniq
226
+ # end
@@ -0,0 +1,30 @@
1
+ class HttpModel
2
+ attr_accessor :ip, :port, :serviceType, :serviceName
3
+
4
+ DEFAULT_OPTIONS = {
5
+ :groupPath => nil,
6
+ :memberName => "default",
7
+ :ip => nil,
8
+ :port => nil,
9
+ :serviceType => nil,
10
+ :serviceName => nil,
11
+ }
12
+
13
+ def initialize(options)
14
+ raise "initialize HttpModel error, options can not be nil." if options == nil
15
+ #@options = DEFAULT_OPTIONS.merge(options)
16
+ @ip = options[:ip]
17
+ @port = options[:port]
18
+ @serviceType = options[:serviceType]
19
+ @serviceName = options[:serviceName]
20
+ end
21
+
22
+ def to_hash
23
+ {
24
+ :ip => @ip,
25
+ :port => @port,
26
+ :serviceType => @serviceType,
27
+ :serviceName => @serviceName,
28
+ }
29
+ end
30
+ end
@@ -0,0 +1,45 @@
1
+ class ServerInfo
2
+ attr_accessor :groupPath, :memberName, :ip, :port, :serviceType, :serviceName, :workerSize, :selectorSize
3
+
4
+ DEFAULT_OPTIONS = {
5
+ :groupPath => nil,
6
+ :memberName => "default",
7
+ :ip => nil,
8
+ :port => nil,
9
+ :serviceType => nil,
10
+ :serviceName => nil,
11
+ :workerSize => nil,
12
+ :selectorSize => nil
13
+ }
14
+
15
+ def initialize(options)
16
+ raise "initialize ServerInfo error, options can not be nil." if options == nil
17
+ #@options = DEFAULT_OPTIONS.merge(options)
18
+ @groupPath = options[:groupPath]
19
+ if options[:memberName].nil?
20
+ @memberName = "default"
21
+ else
22
+ @memberName = options[:memberName]
23
+ end
24
+ @ip = options[:ip]
25
+ @port = options[:port]
26
+ @serviceType = options[:serviceType]
27
+ @serviceName = options[:serviceName]
28
+ @workerSize = options[:workerSize]
29
+ @selectorSize = options[:selectorSize]
30
+ end
31
+
32
+ def getHash
33
+ {
34
+ :groupPath => @groupPath,
35
+ :memberName => @memberName,
36
+ :ip => @ip,
37
+ :port => @port,
38
+ :serviceType => @serviceType,
39
+ :serviceName => @serviceName,
40
+ :workerSize => @workerSize,
41
+ :selectorSize => @selectorSize
42
+ }
43
+ end
44
+
45
+ end
@@ -0,0 +1,34 @@
1
+ class ThriftModel
2
+ attr_accessor :ip, :port, :serviceType, :serviceName, :workerSize, :selectorSize
3
+
4
+ DEFAULT_OPTIONS = {
5
+ :ip => nil,
6
+ :port => nil,
7
+ :serviceType => nil,
8
+ :serviceName => nil,
9
+ :workerSize => nil,
10
+ :selectorSize => nil
11
+ }
12
+
13
+ def initialize(options)
14
+ raise "initialize ThriftModel error, options can not be nil." if options == nil
15
+ #@options = DEFAULT_OPTIONS.merge(options)
16
+ @ip = options[:ip]
17
+ @port = options[:port]
18
+ @serviceType = options[:serviceType]
19
+ @serviceName = options[:serviceName]
20
+ @workerSize = options[:workerSize]
21
+ @selectorSize = options[:selectorSize]
22
+ end
23
+
24
+ def to_hash
25
+ {
26
+ :ip => @ip,
27
+ :port => @port,
28
+ :serviceType => @serviceType,
29
+ :serviceName => @serviceName,
30
+ :workerSize => @workerSize,
31
+ :selectorSize => @selectorSize
32
+ }
33
+ end
34
+ end
@@ -14,8 +14,13 @@ class HelloApp < Sinatra::Base
14
14
  #end
15
15
 
16
16
  get '/' do
17
- "server_list -> #{$global_server_list}
18
- <br>
17
+ "mobile_list -> #{$global_server_list[:mobile].join('<br>')}
18
+ <br><br>
19
+
20
+ xserver_list -> #{$global_server_list[:xserver].join('<br>')}
21
+ <br><br>
22
+ server-stat_list -> #{$global_server_list["server-stat"].join('<br>')}
23
+ <br><br>
19
24
  <br>
20
25
  config -> #{$global_idservice_thrift_config}
21
26
  "
@@ -25,7 +25,7 @@ class Zoo
25
25
  1000.times do
26
26
  re = @zk.create(@server_found_base_path + "/" + child, "192.168.2.2:#{rand(9999)}", :ephemeral => true, :sequence => true)
27
27
  puts "create ephemeral path #{re} "
28
- sleep(rand(5))
28
+ sleep(rand(10))
29
29
  end
30
30
  }
31
31
  Thread.new{
@@ -33,7 +33,7 @@ class Zoo
33
33
  relist = @zk.children(@server_found_base_path)
34
34
  re = @zk.delete(@server_found_base_path+"/"+relist.pop) if !relist.empty?
35
35
  puts "delete ephemeral path #{re}"
36
- sleep(rand(10))
36
+ sleep(rand(9))
37
37
  end
38
38
  }
39
39
  end
@@ -1,10 +1,86 @@
1
1
 
2
+ require 'bundler'
3
+ Bundler.require
4
+
5
+ require 'zk'
6
+ require 'yajl'
7
+
8
+ $:.unshift File.expand_path("../../lib", __FILE__)
9
+ require "reminder-client"
10
+ require "reminder-client/server_info"
11
+ require "reminder-client/http_model"
12
+
13
+ #zk = ZK.new('localhost:2181')
14
+ #p zk.stat('/path').exists?
15
+ #p zk.stat('/services').exists?
16
+
17
+
18
+
19
+ serverinfo = ServerInfo.new({ groupPath:"mobile", ip:"192.23.33.123", port:"2121", serviceType:"http", serviceName:"mobile" })
20
+
21
+ #p serverinfo
22
+
23
+ server_json = Yajl::Encoder.encode(serverinfo.getHash)
24
+ p server_json
25
+ hhash = Yajl::Parser.parse(server_json)
26
+ p hhash
27
+ # p HttpModel.new(hhash)
28
+
2
29
  list = ["22","22",nil,""]
3
30
  list1 = []
4
31
  list.each{|x|
5
32
  list1 << x if x and !x.empty?
6
33
  #p x if x
7
34
  }
35
+
36
+ a = nil
37
+ a = "ddd"
38
+ member = "default" if a.nil?
39
+ p " ----- > #{member}"
40
+
41
+ zoo = Zoo.new(:zk_address => "127.0.0.1:2181")
42
+
43
+ zoo.server_found_server( { groupPath:"mobile", ip:"192.23.33.123", port:"2121", serviceType:"http", serviceName:"mobile" })
44
+
45
+
46
+ # puts Zoo::SERVER_TYPE_HTTP
47
+ zoo.server_found_client(Zoo::SERVER_TYPE_HTTP, "mobile"){ |context, _load_balance|
48
+ puts "http list is -#{context}-, load_balance is -#{_load_balance}-"
49
+ }
50
+
51
+ zoo.server_found_server({ groupPath:"mobile", ip:"192.23.33.123", port:"2121", serviceType:"http", serviceName:"mobile" })
52
+
53
+ sleep(10)
54
+
55
+
56
+ def server_info_hash_to_http_model(hash)
57
+ HttpModel.new({ ip: hash["ip"], port: hash["port"],
58
+ serviceType: hash["serviceType"], serviceName: hash["serviceName"]})
59
+ end
60
+
61
+ def server_info_hash_to_thrift_model(hash)
62
+ ThriftModel.new({ ip: hash["ip"], port: hash["port"],
63
+ serviceType: hash["serviceType"], serviceName: hash["serviceName"],
64
+ workerSize: hash["workerSize"], selectorSize: hash["selectorSize"] })
65
+ end
66
+
67
+ p "-------- ----- ---- ----------"
68
+ p server_info_hash_to_http_model(hhash)
69
+
70
+ def create_parentPath(paths)
71
+ create_path = ""
72
+ paths.each do|path|
73
+ create_path << "/"
74
+ create_path << path
75
+ # do somethings
76
+ p create_path
77
+ end
78
+ create_path
79
+ end
80
+
81
+ #p get_combined_path(["/","aaa","bbb","ccc"])
82
+ #p create_parentPath(["aaa",'bbb','cc'])
83
+
8
84
  #p list1.uniq
9
85
  #p list1
10
86
 
@@ -89,7 +165,11 @@ p '---------------'
89
165
  # html = open("www.baidu.com").read
90
166
  # p html
91
167
 
92
- require 'hessian2'
93
- Z_SERVICE = Hessian2::Client.new("http://192.168.5.100:8080/reminder-backend/hessian/requestconfigdataservice")
168
+ #require 'hessian2'
169
+ #Z_SERVICE = Hessian2::Client.new("http://192.168.5.100:8080/reminder-backend/hessian/requestconfigdataservice")
170
+ #Z_SERVICE = Hessian2::Client.new("http://localhost:8080/reminder-backend/hessian/requestconfigdataservice")
171
+
172
+ #p Z_SERVICE.getMapdata(1, "xservice", "0")
173
+
174
+ #semaphore = Mutex.new
94
175
 
95
- p Z_SERVICE.getMapdata(1, "xservice", "0")
@@ -0,0 +1,21 @@
1
+ #require 'bundler'
2
+ #Bundler.require
3
+
4
+ require File.expand_path("../application",__FILE__)
5
+ $:.unshift File.expand_path("../../lib", __FILE__)
6
+ $:.unshift File.expand_path("../../test", __FILE__)
7
+
8
+ #require '../../lib/server_info'
9
+
10
+ require "reminder-client"
11
+
12
+ p ServerInfo.new({ groupPath: "groupxx", ip: "192.214.22.22" })
13
+
14
+ Thread.new{
15
+ while true
16
+ p 1
17
+ sleep(1)
18
+ end
19
+ }
20
+
21
+ sleep(100)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reminder-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - caorong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-12 00:00:00.000000000 Z
11
+ date: 2014-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zk
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.9.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: yajl-ruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.2.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.2.0
27
41
  description: reminder client
28
42
  email: caorong@ximalaya.com
29
43
  executables: []
@@ -32,11 +46,15 @@ extra_rdoc_files: []
32
46
  files:
33
47
  - lib/reminder-client.rb
34
48
  - lib/reminder-client/configcenter.rb
49
+ - lib/reminder-client/http_model.rb
50
+ - lib/reminder-client/server_info.rb
51
+ - lib/reminder-client/thrift_model.rb
35
52
  - test/application.rb
36
53
  - test/application1.rb
37
54
  - test/application2.rb
38
55
  - test/servertest.rb
39
56
  - test/test.rb
57
+ - test/test1.rb
40
58
  homepage: http://www.ximalaya.com
41
59
  licenses:
42
60
  - MIT2.0
@@ -62,6 +80,7 @@ signing_key:
62
80
  specification_version: 4
63
81
  summary: A zookeeper client wrapper provide serverfound and serverconfig.
64
82
  test_files:
83
+ - test/test1.rb
65
84
  - test/application1.rb
66
85
  - test/test.rb
67
86
  - test/servertest.rb