okuyama 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +22 -0
- data/VERSION +1 -1
- data/lib/okuyama/client.rb +51 -12
- data/lib/okuyama/fast_client.rb +21 -106
- data/lib/okuyama/protocol/version1.rb +104 -136
- data/okuyama.gemspec +3 -2
- data/spec/okuyama/client/search_spec.rb +0 -5
- metadata +5 -4
data/History.rdoc
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
=== Version 0.2.2 / 2012-03-27
|
2
|
+
|
3
|
+
This release adds send_* methods to Okuyama::Client.
|
4
|
+
|
5
|
+
* removes unnecessary method definition.
|
6
|
+
* define similar methods with eval
|
7
|
+
|
8
|
+
=== Version 0.2.1 / 2012-03-26
|
9
|
+
|
10
|
+
This release improves errors.
|
11
|
+
|
12
|
+
=== Version 0.2.0 / 2012-03-26
|
13
|
+
|
14
|
+
This release adds recv_* methods to Okuyama::Client.
|
15
|
+
|
16
|
+
=== Version 0.1.0 / 2012-03-25
|
17
|
+
|
18
|
+
This release adds implements all protocol messages.
|
19
|
+
|
20
|
+
=== Version 0.0.1 / 2012-03-24
|
21
|
+
|
22
|
+
This is the first preview release of okuyama client for Ruby.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/lib/okuyama/client.rb
CHANGED
@@ -7,7 +7,7 @@ module Okuyama
|
|
7
7
|
end
|
8
8
|
|
9
9
|
|
10
|
-
def
|
10
|
+
def send_set_value(key, val, *args)
|
11
11
|
tag_list = nil
|
12
12
|
options = nil
|
13
13
|
|
@@ -26,12 +26,12 @@ module Okuyama
|
|
26
26
|
tag_list = args
|
27
27
|
end
|
28
28
|
|
29
|
-
Okuyama.logger.debug "Okuyama::
|
29
|
+
Okuyama.logger.debug "Okuyama::Client.send_set_value(key=#{key.inspect},tag_list=#{tag_list.inspect},val=#{val.inspect})" if @debug
|
30
30
|
|
31
|
-
super(key,
|
31
|
+
super(key, tag_list, val)
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
34
|
+
def send_set_new_value(key, val, *args)
|
35
35
|
tag_list = nil
|
36
36
|
options = nil
|
37
37
|
|
@@ -50,12 +50,12 @@ module Okuyama
|
|
50
50
|
tag_list = args
|
51
51
|
end
|
52
52
|
|
53
|
-
Okuyama.logger.debug "Okuyama::
|
53
|
+
Okuyama.logger.debug "Okuyama::Client.send_set_value(key=#{key.inspect},tag_list=#{tag_list.inspect},val=#{val.inspect})" if @debug
|
54
54
|
|
55
|
-
return super(key,
|
55
|
+
return super(key, tag_list, val)
|
56
56
|
end
|
57
57
|
|
58
|
-
def
|
58
|
+
def send_set_value_version_check(key, val, version, *args)
|
59
59
|
tag_list = nil
|
60
60
|
options = nil
|
61
61
|
|
@@ -74,12 +74,10 @@ module Okuyama
|
|
74
74
|
tag_list = args
|
75
75
|
end
|
76
76
|
|
77
|
-
|
78
|
-
|
79
|
-
return super(key, val, version, tag_list)
|
77
|
+
return super(key, tag_list, val, version)
|
80
78
|
end
|
81
79
|
|
82
|
-
def
|
80
|
+
def send_get_tag_keys(tag, *args, &block)
|
83
81
|
flag = 'false'
|
84
82
|
options = nil
|
85
83
|
argc = args.length
|
@@ -88,8 +86,49 @@ module Okuyama
|
|
88
86
|
elsif 0 < argc then
|
89
87
|
flag = args[0]
|
90
88
|
end
|
91
|
-
return super(tag, flag)
|
89
|
+
return super(tag, flag, &block)
|
90
|
+
end
|
91
|
+
|
92
|
+
def send_incr_value(key, val)
|
93
|
+
super(key, val.to_s)
|
94
|
+
end
|
95
|
+
|
96
|
+
def send_decr_value(key, val)
|
97
|
+
super(key, val.to_s)
|
92
98
|
end
|
93
99
|
|
100
|
+
def send_set_value_and_create_index(key, val, options=nil)
|
101
|
+
if options then
|
102
|
+
tag_list = options[:tags]
|
103
|
+
group = options[:group]
|
104
|
+
min_n = options[:min_n]
|
105
|
+
max_n = options[:max_n]
|
106
|
+
min_n = min_n.to_s if min_n
|
107
|
+
max_n = max_n.to_s if max_n
|
108
|
+
end
|
109
|
+
|
110
|
+
super(key, val, tag_list, group, min_n, max_n)
|
111
|
+
end
|
112
|
+
|
113
|
+
def send_search_value(query_list, options=nil)
|
114
|
+
if ! query_list.is_a? Array then
|
115
|
+
query_list = [query_list.to_s]
|
116
|
+
end
|
117
|
+
|
118
|
+
if options then
|
119
|
+
condition = options[:condition]
|
120
|
+
group = options[:group]
|
121
|
+
nsize = options[:nsize]
|
122
|
+
nsize = nsize.to_s if nsize
|
123
|
+
case condition
|
124
|
+
when :and
|
125
|
+
condition = '1'
|
126
|
+
else :or
|
127
|
+
condition = '2'
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
super(query_list, condition, group, nsize)
|
132
|
+
end
|
94
133
|
end
|
95
134
|
end
|
data/lib/okuyama/fast_client.rb
CHANGED
@@ -2,15 +2,13 @@ module Okuyama
|
|
2
2
|
class FastClient
|
3
3
|
public
|
4
4
|
attr_reader :host, :port, :timeout, :retry_max, :protocol
|
5
|
-
attr_accessor :
|
5
|
+
attr_accessor :base64_encode_flag, :to_i_flag, :parse_flag
|
6
6
|
|
7
7
|
def initialize(options)
|
8
8
|
@host = options[:host] || 'localhost'
|
9
9
|
@port = options[:port] || 8888
|
10
10
|
@timeout = options[:timeout] || 10
|
11
11
|
@retry_max = options[:retry_max] || 3
|
12
|
-
@recv_flag = true
|
13
|
-
@recv_flag = options[:recv_flag] || @recv_flag
|
14
12
|
@to_i_flag = options[:to_i_flag]
|
15
13
|
@to_i_flag = true if @to_i_flag.nil?
|
16
14
|
@parse_flag = options[:parse_flag]
|
@@ -25,6 +23,11 @@ module Okuyama
|
|
25
23
|
end
|
26
24
|
end
|
27
25
|
|
26
|
+
def debug=(d)
|
27
|
+
@debug = d
|
28
|
+
@protocol.debug = d
|
29
|
+
end
|
30
|
+
|
28
31
|
def protocol_version
|
29
32
|
@protocol.version
|
30
33
|
end
|
@@ -43,7 +46,6 @@ module Okuyama
|
|
43
46
|
end
|
44
47
|
|
45
48
|
def recvs
|
46
|
-
return if ! @recv_flag
|
47
49
|
line = self.socket.gets
|
48
50
|
line.chomp!
|
49
51
|
# Disable debug message for better performance
|
@@ -61,125 +63,39 @@ module Okuyama
|
|
61
63
|
end
|
62
64
|
|
63
65
|
alias :recv_init_count :recvs
|
64
|
-
|
65
|
-
@protocol.init_count(self.socket)
|
66
|
-
return self.recv_init_count
|
67
|
-
end
|
68
|
-
|
69
|
-
alias :recv_set_value :recvs
|
70
|
-
def set_value(key, val, tag_list=nil)
|
71
|
-
@protocol.set_value(self.socket, key, val, tag_list)
|
72
|
-
return self.recv_set_value
|
73
|
-
end
|
74
|
-
|
66
|
+
alias :recv_set_value :recvs
|
75
67
|
alias :recv_get_value :recvs
|
76
|
-
def get_value(key)
|
77
|
-
@protocol.get_value(self.socket, key)
|
78
|
-
return self.recv_get_value
|
79
|
-
end
|
80
|
-
|
81
68
|
alias :recv_get_tag_keys :recvs
|
82
|
-
def get_tag_keys(tag, flag='false')
|
83
|
-
@protocol.get_tag_keys(self.socket, tag, flag)
|
84
|
-
return self.recv_get_tag_keys
|
85
|
-
end
|
86
|
-
|
87
69
|
alias :recv_remove_value :recvs
|
88
|
-
def remove_value(key)
|
89
|
-
@protocol.remove_value(self.socket, key)
|
90
|
-
return self.recv_remove_value
|
91
|
-
end
|
92
|
-
|
93
70
|
alias :recv_set_new_value :recvs
|
94
|
-
def set_new_value(key, val, tag_list=nil)
|
95
|
-
@protocol.set_new_value(self.socket, key, val, tag_list)
|
96
|
-
return self.recv_set_new_value
|
97
|
-
end
|
98
|
-
|
99
71
|
alias :recv_get_value_version_check :recvs
|
100
|
-
def get_value_version_check(key)
|
101
|
-
@protocol.get_value_version_check(self.socket, key)
|
102
|
-
return self.recv_get_value_version_check
|
103
|
-
end
|
104
|
-
|
105
72
|
alias :recv_set_value_version_check :recvs
|
106
|
-
def set_value_version_check(key, val, version, tag_list=nil)
|
107
|
-
@protocol.set_value_version_check(self.socket, key, val, version, tag_list)
|
108
|
-
return self.recv_set_value_version_check
|
109
|
-
end
|
110
|
-
|
111
73
|
alias :recv_incr_value :recvs
|
112
|
-
def incr_value(key, val)
|
113
|
-
@protocol.incr_value(self.socket, key, val.to_s)
|
114
|
-
return self.recv_incr_value
|
115
|
-
end
|
116
|
-
|
117
74
|
alias :recv_decr_value :recvs
|
118
|
-
def decr_value(key, val)
|
119
|
-
@protocol.decr_value(self.socket, key, val.to_s)
|
120
|
-
return self.recv_decr_value
|
121
|
-
end
|
122
|
-
|
123
75
|
alias :recv_get_multi_value :recv_lines
|
124
|
-
def get_multi_value(key_list, &block)
|
125
|
-
Okuyama.logger.debug "send: #{@protocol.message_of_get_multi_value(key_list).inspect}" if @debug
|
126
|
-
@protocol.get_multi_value(self.socket, key_list)
|
127
|
-
return self.recv_get_multi_value(&block)
|
128
|
-
end
|
129
|
-
|
130
76
|
alias :recv_get_tag_values :recv_lines
|
131
|
-
def get_tag_values(tag, &block)
|
132
|
-
@protocol.get_tag_values(self.socket, tag)
|
133
|
-
return self.recv_get_tag_values(&block)
|
134
|
-
end
|
135
|
-
|
136
77
|
alias :recv_remove_tag_from_key :recvs
|
137
|
-
def remove_tag_from_key(tag, key)
|
138
|
-
@protocol.remove_tag_from_key(self.socket, tag, key)
|
139
|
-
return self.recv_remove_tag_from_key
|
140
|
-
end
|
141
|
-
|
142
78
|
alias :recv_set_value_and_create_index :recvs
|
143
|
-
def set_value_and_create_index(key, val, options=nil)
|
144
|
-
if options then
|
145
|
-
tag_list = options[:tags]
|
146
|
-
group = options[:group]
|
147
|
-
min_n = options[:min_n]
|
148
|
-
max_n = options[:max_n]
|
149
|
-
min_n = min_n.to_s if min_n
|
150
|
-
max_n = max_n.to_s if max_n
|
151
|
-
end
|
152
|
-
|
153
|
-
@protocol.set_value_and_create_index(self.socket, key, val, tag_list, group, min_n, max_n)
|
154
|
-
return self.recv_set_value_and_create_index
|
155
|
-
end
|
156
|
-
|
157
79
|
alias :recv_search_value :recvs
|
158
|
-
def search_value(query_list, options=nil)
|
159
|
-
if ! query_list.is_a? Array then
|
160
|
-
query_list = [query_list.to_s]
|
161
|
-
end
|
162
|
-
|
163
|
-
if options then
|
164
|
-
condition = options[:condition]
|
165
|
-
group = options[:group]
|
166
|
-
nsize = options[:nsize]
|
167
|
-
nsize = nsize.to_s if nsize
|
168
|
-
case condition
|
169
|
-
when :and
|
170
|
-
condition = '1'
|
171
|
-
else :or
|
172
|
-
condition = '2'
|
173
|
-
end
|
174
|
-
end
|
175
80
|
|
176
|
-
|
177
|
-
|
81
|
+
[ :init_count, :set_value, :get_value, :get_tag_keys,
|
82
|
+
:remove_value, :set_new_value, :get_value_version_check, :set_value_version_check,
|
83
|
+
:incr_value, :decr_value, :get_multi_value, :get_tag_values, :remove_tag_from_key,
|
84
|
+
:set_value_and_create_index, :search_value].each do |name|
|
85
|
+
eval <<-EOF
|
86
|
+
def send_#{name}(*args)
|
87
|
+
@protocol.#{name}(self.socket, *args)
|
88
|
+
end
|
89
|
+
def #{name}(*args, &block)
|
90
|
+
self.send_#{name}(*args)
|
91
|
+
self.recv_#{name}(&block)
|
92
|
+
end
|
93
|
+
EOF
|
178
94
|
end
|
95
|
+
|
179
96
|
|
180
97
|
protected
|
181
98
|
def each(&block)
|
182
|
-
return if ! @recv_flag
|
183
99
|
while result = socket.gets do
|
184
100
|
result.chomp!
|
185
101
|
if result == "END" then
|
@@ -192,7 +108,6 @@ module Okuyama
|
|
192
108
|
end
|
193
109
|
|
194
110
|
def readlines
|
195
|
-
return if ! @recv_flag
|
196
111
|
ret = []
|
197
112
|
while result = socket.gets do
|
198
113
|
result.chomp!
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Okuyama
|
2
2
|
module Protocol
|
3
3
|
class Version1 < AbstractProtocol
|
4
|
+
attr_accessor :debug
|
4
5
|
def initialize(options=nil)
|
5
6
|
if options then
|
6
7
|
@base64_encode_flag = options[:base64_encode_flag]
|
@@ -22,66 +23,21 @@ module Okuyama
|
|
22
23
|
return Base64.decode64(text)
|
23
24
|
end
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
def remove_value(socket, key)
|
42
|
-
return self.send_key_dlock_message(socket, '5', key, '0')
|
43
|
-
end
|
44
|
-
|
45
|
-
def set_new_value(socket, key, val, tag_list=nil)
|
46
|
-
return self.send_key_tags_value_message(socket, '6', key, tag_list, val)
|
47
|
-
end
|
48
|
-
|
49
|
-
def get_value_version_check(socket, key)
|
50
|
-
return self.send_key_message(socket, '15', key)
|
51
|
-
end
|
52
|
-
|
53
|
-
def set_value_version_check(socket, key, val, version, tag_list=nil)
|
54
|
-
return self.send_key_tags_value_message(socket, '16', key, tag_list, val, version)
|
55
|
-
end
|
56
|
-
|
57
|
-
def incr_value(socket, key, val)
|
58
|
-
return self.send_key_value_message(socket, '13', key, val)
|
59
|
-
end
|
60
|
-
|
61
|
-
def decr_value(socket, key, val)
|
62
|
-
return self.send_key_value_message(socket, '14', key, val)
|
63
|
-
end
|
64
|
-
|
65
|
-
def get_multi_value(socket, key_list)
|
66
|
-
return self.send_keys_message(socket, '22', key_list)
|
67
|
-
end
|
68
|
-
|
69
|
-
def get_tag_values(socket, tag)
|
70
|
-
return self.send_tag_message(socket, '23', tag)
|
71
|
-
end
|
72
|
-
|
73
|
-
def remove_tag_from_key(socket, tag, key)
|
74
|
-
return self.send_tag_key_message(socket, '40', tag, key)
|
75
|
-
end
|
76
|
-
|
77
|
-
def set_value_and_create_index(socket, key, val, tag_list=nil, group=nil, min_index_n='1', max_index_n='3')
|
78
|
-
return self.send_key_tags_value_group_index_message(socket, '42', key, tag_list, val, group, min_index_n, max_index_n)
|
79
|
-
end
|
80
|
-
|
81
|
-
def search_value(socket, query_list, condition='1', group=nil, nsize='3')
|
82
|
-
return self.send_query_condition_group_index_message(socket, '43', query_list, condition, group, nsize)
|
26
|
+
[
|
27
|
+
[:init_count, 0], [:set_value, 1], [:get_value, 2], [:get_tag_keys, 3],
|
28
|
+
[:remove_value, '5'], [:set_new_value, '6'], [:get_value_version_check, '15'], [:set_value_version_check, '16'],
|
29
|
+
[:incr_value, 13], [:decr_value, 14], [:get_multi_value, 22], [:get_tag_values, 23], [:remove_tag_from_key, 40],
|
30
|
+
[:set_value_and_create_index, 42], [:search_value, 43]
|
31
|
+
].each do |pair|
|
32
|
+
name = pair[0]
|
33
|
+
opcode = pair[1]
|
34
|
+
eval <<-EOF
|
35
|
+
def #{name}(socket, *args)
|
36
|
+
Okuyama.logger.debug "send: #{"#"}{self.message_of_send_#{name}("#{opcode}", *args).inspect}" if @debug
|
37
|
+
self.send_#{name}(socket, "#{opcode}", *args)
|
38
|
+
end
|
39
|
+
EOF
|
83
40
|
end
|
84
|
-
|
85
41
|
def parse_line_result(result, to_i_flag=nil)
|
86
42
|
record = result.split(/,/)
|
87
43
|
|
@@ -147,109 +103,86 @@ module Okuyama
|
|
147
103
|
end
|
148
104
|
|
149
105
|
protected
|
150
|
-
def
|
106
|
+
def send_init_count(socket, opcode)
|
107
|
+
socket.puts opcode
|
108
|
+
end
|
109
|
+
def send_set_value(socket, opcode, key, tag_list, val, version=nil)
|
151
110
|
key_base64 = self.encode(key)
|
111
|
+
val_base64 = self.encode(val)
|
112
|
+
dlock = '0'
|
152
113
|
socket.print opcode
|
153
114
|
socket.print ","
|
154
115
|
socket.print key_base64
|
116
|
+
socket.print ","
|
117
|
+
self.print_tag_list socket, tag_list
|
118
|
+
socket.print ","
|
119
|
+
socket.print dlock
|
120
|
+
socket.print ","
|
121
|
+
socket.print val_base64
|
122
|
+
|
123
|
+
if version then
|
124
|
+
socket.print ","
|
125
|
+
socket.print version
|
126
|
+
end
|
155
127
|
socket.puts
|
156
128
|
end
|
157
|
-
|
158
|
-
def
|
129
|
+
|
130
|
+
def send_get_value(socket, opcode, key)
|
159
131
|
key_base64 = self.encode(key)
|
160
132
|
socket.print opcode
|
161
133
|
socket.print ","
|
162
134
|
socket.print key_base64
|
163
|
-
socket.print ","
|
164
|
-
socket.print dlock
|
165
135
|
socket.puts
|
166
136
|
end
|
167
|
-
|
168
|
-
def
|
169
|
-
keys_base64 = key_list.map{|key|self.encode(key)}.join(',')
|
137
|
+
|
138
|
+
def send_get_tag_keys(socket, opcode, tag, flag)
|
170
139
|
socket.print opcode
|
171
140
|
socket.print ","
|
172
|
-
socket.print
|
141
|
+
socket.print self.encode(tag)
|
142
|
+
socket.print ","
|
143
|
+
socket.print flag
|
173
144
|
socket.puts
|
174
|
-
|
145
|
+
end
|
175
146
|
|
176
|
-
def
|
147
|
+
def send_remove_value(socket, opcode, key, dlock='0')
|
177
148
|
key_base64 = self.encode(key)
|
178
|
-
val_base64 = self.encode(val)
|
179
|
-
dlock = '0'
|
180
149
|
socket.print opcode
|
181
150
|
socket.print ","
|
182
151
|
socket.print key_base64
|
183
152
|
socket.print ","
|
184
153
|
socket.print dlock
|
185
|
-
socket.print ","
|
186
|
-
socket.print val_base64
|
187
154
|
socket.puts
|
188
155
|
end
|
189
|
-
|
190
|
-
|
156
|
+
|
157
|
+
alias :send_set_new_value :send_set_value
|
158
|
+
alias :send_get_value_version_check :send_get_value
|
159
|
+
alias :send_set_value_version_check :send_set_value
|
160
|
+
|
161
|
+
def send_incr_value(socket, opcode, key, val)
|
191
162
|
key_base64 = self.encode(key)
|
192
163
|
val_base64 = self.encode(val)
|
193
|
-
tags = nil
|
194
|
-
if tag_list then
|
195
|
-
tags = tag_list.map{|t|self.encode(t)}.join(':')
|
196
|
-
end
|
197
|
-
tags ||= "(B)"
|
198
164
|
dlock = '0'
|
199
165
|
socket.print opcode
|
200
166
|
socket.print ","
|
201
167
|
socket.print key_base64
|
202
168
|
socket.print ","
|
203
|
-
socket.print tags
|
204
|
-
socket.print ","
|
205
169
|
socket.print dlock
|
206
170
|
socket.print ","
|
207
171
|
socket.print val_base64
|
208
|
-
|
209
|
-
if version then
|
210
|
-
socket.print ","
|
211
|
-
socket.print version
|
212
|
-
end
|
213
172
|
socket.puts
|
214
173
|
end
|
215
174
|
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
tags = nil
|
221
|
-
if tag_list then
|
222
|
-
tags = tag_list.map{|t|self.encode(t)}.join(':')
|
223
|
-
end
|
224
|
-
tags ||= "(B)"
|
225
|
-
|
226
|
-
dlock = '0'
|
227
|
-
|
228
|
-
group_base64 = nil
|
229
|
-
if group then
|
230
|
-
group_base64 = self.encode(group)
|
231
|
-
end
|
232
|
-
group_base64 ||= "(B)"
|
233
|
-
|
175
|
+
alias :send_decr_value :send_incr_value
|
176
|
+
|
177
|
+
def send_get_multi_value(socket, opcode, key_list)
|
178
|
+
keys_base64 = key_list.map{|key|self.encode(key)}.join(',')
|
234
179
|
socket.print opcode
|
235
180
|
socket.print ","
|
236
|
-
socket.print
|
237
|
-
socket.print ","
|
238
|
-
socket.print tags
|
239
|
-
socket.print ","
|
240
|
-
socket.print dlock
|
241
|
-
socket.print ","
|
242
|
-
socket.print val_base64
|
243
|
-
socket.print ","
|
244
|
-
socket.print group_base64
|
245
|
-
socket.print ","
|
246
|
-
socket.print min_index_n
|
247
|
-
socket.print ","
|
248
|
-
socket.print max_index_n
|
181
|
+
socket.print keys_base64
|
249
182
|
socket.puts
|
250
183
|
end
|
251
184
|
|
252
|
-
def
|
185
|
+
def send_get_tag_values(socket, opcode, tag)
|
253
186
|
tag_base64 = self.encode(tag)
|
254
187
|
socket.print opcode
|
255
188
|
socket.print ","
|
@@ -257,49 +190,84 @@ module Okuyama
|
|
257
190
|
socket.puts
|
258
191
|
end
|
259
192
|
|
260
|
-
def
|
193
|
+
def send_remove_tag_from_key(socket, opcode, tag, key)
|
261
194
|
tag_base64 = self.encode(tag)
|
195
|
+
key_base64 = self.encode(key)
|
196
|
+
dlock = '0'
|
262
197
|
socket.print opcode
|
263
198
|
socket.print ","
|
264
199
|
socket.print tag_base64
|
265
200
|
socket.print ","
|
266
|
-
socket.print
|
201
|
+
socket.print key_base64
|
202
|
+
socket.print ","
|
203
|
+
socket.print dlock
|
267
204
|
socket.puts
|
268
205
|
end
|
269
206
|
|
270
|
-
def
|
271
|
-
tag_base64 = self.encode(tag)
|
207
|
+
def send_set_value_and_create_index(socket, opcode, key, val, tag_list=nil, group=nil, min_index_n='1', max_index_n='3')
|
272
208
|
key_base64 = self.encode(key)
|
209
|
+
val_base64 = self.encode(val)
|
210
|
+
|
273
211
|
dlock = '0'
|
212
|
+
|
274
213
|
socket.print opcode
|
275
214
|
socket.print ","
|
276
|
-
socket.print tag_base64
|
277
|
-
socket.print ","
|
278
215
|
socket.print key_base64
|
279
216
|
socket.print ","
|
217
|
+
self.print_tag_list socket, tag_list
|
218
|
+
socket.print ","
|
280
219
|
socket.print dlock
|
220
|
+
socket.print ","
|
221
|
+
socket.print val_base64
|
222
|
+
socket.print ","
|
223
|
+
self.print_group socket, group
|
224
|
+
socket.print ","
|
225
|
+
socket.print min_index_n
|
226
|
+
socket.print ","
|
227
|
+
socket.print max_index_n
|
281
228
|
socket.puts
|
282
229
|
end
|
283
230
|
|
284
|
-
def
|
285
|
-
queries = query_list.map{|q|self.encode(q)}.join(':')
|
231
|
+
def send_search_value(socket, opcode, query_list, condition='1', group=nil, nsize='3')
|
286
232
|
|
287
|
-
group_base64 = nil
|
288
|
-
if group then
|
289
|
-
group_base64 = self.encode(group)
|
290
|
-
end
|
291
|
-
group_base64 ||= "(B)"
|
292
233
|
socket.print opcode
|
293
234
|
socket.print ","
|
294
|
-
socket
|
235
|
+
self.print_query_list(socket, query_list)
|
295
236
|
socket.print ","
|
296
|
-
socket.print
|
237
|
+
socket.print condition
|
297
238
|
socket.print ","
|
298
|
-
socket
|
239
|
+
self.print_group socket, group
|
299
240
|
socket.print ","
|
300
241
|
socket.print nsize
|
301
242
|
socket.puts
|
302
243
|
end
|
244
|
+
|
245
|
+
def print_group(socket, group)
|
246
|
+
if group then
|
247
|
+
socket.print self.encode(group)
|
248
|
+
else
|
249
|
+
socket.print "(B)"
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
def print_tag_list(socket, tag_list)
|
254
|
+
if tag_list then
|
255
|
+
self.print_key_list(socket, tag_list)
|
256
|
+
else
|
257
|
+
socket.print "(B)"
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
def print_key_list(socket, key_list)
|
262
|
+
lsize = key_list.size
|
263
|
+
k = key_list[0]
|
264
|
+
socket.print self.encode(k) if k
|
265
|
+
(lsize-1).times do |i|
|
266
|
+
socket.print ':'
|
267
|
+
socket.print self.encode(key_list[i+1])
|
268
|
+
end
|
269
|
+
end
|
270
|
+
alias :print_query_list :print_key_list
|
303
271
|
|
304
272
|
end
|
305
273
|
end
|
data/okuyama.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "okuyama"
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kenji Hara"]
|
12
|
-
s.date = "2012-03-
|
12
|
+
s.date = "2012-03-27"
|
13
13
|
s.description = "okuyama client for Ruby"
|
14
14
|
s.email = "haracane@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
".rspec",
|
22
22
|
"Gemfile",
|
23
23
|
"Gemfile.lock",
|
24
|
+
"History.rdoc",
|
24
25
|
"LICENSE.txt",
|
25
26
|
"README.rdoc",
|
26
27
|
"Rakefile",
|
@@ -65,14 +65,12 @@ describe Okuyama::Client do
|
|
65
65
|
describe "set_value_and_create_index(key, val, :tags=>tags, :group=>group, :min_n=>min_n, :max_n=>max_n)" do
|
66
66
|
describe "when key exists," do
|
67
67
|
it "should success" do
|
68
|
-
Okuyama.logger.debug("send: #{@client.protocol.message_of_set_value_and_create_index(@testkey1, @testval1, @testtag, @testgroup, '1', '3').inspect}")
|
69
68
|
result = @client.set_value_and_create_index(@testkey1, @testval1, :tags=>[@testtag], :group=>@testgroup, :min_n=>1, :max_n=>3)
|
70
69
|
result.should be_true
|
71
70
|
end
|
72
71
|
end
|
73
72
|
describe "when key does not exist," do
|
74
73
|
it "should success" do
|
75
|
-
Okuyama.logger.debug("send: #{@client.protocol.message_of_set_value_and_create_index(@testnewkey, @testnewval, @testnewtag, @testnewgroup, '1', '3').inspect}")
|
76
74
|
result = @client.set_value_and_create_index(@testnewkey, @testnewval, :tags=>[@testnewtag], :group=>@testnewgroup, :min_n=>1, :max_n=>3)
|
77
75
|
result.should be_true
|
78
76
|
end
|
@@ -82,7 +80,6 @@ describe Okuyama::Client do
|
|
82
80
|
describe "search_value(query)" do
|
83
81
|
describe "when key exists," do
|
84
82
|
it "should return keys" do
|
85
|
-
Okuyama.logger.debug("send: #{@client.protocol.message_of_search_value([@testquery1]).inspect}")
|
86
83
|
result = @client.search_value(@testquery1)
|
87
84
|
result.sort!
|
88
85
|
result.should == [@testkey1]
|
@@ -100,7 +97,6 @@ describe Okuyama::Client do
|
|
100
97
|
if false then
|
101
98
|
describe "when key exists," do
|
102
99
|
it "should return keys" do
|
103
|
-
Okuyama.logger.debug("send: #{@client.protocol.message_of_search_value([@testquery1, @testquery2], '1', @testgroup, '3').inspect}")
|
104
100
|
result = @client.search_value([@testquery1, @testquery2], :condition=>:and, :group=>@testgroup, :nsize=>3)
|
105
101
|
result.sort!
|
106
102
|
result.should == ['testkey1']
|
@@ -119,7 +115,6 @@ describe Okuyama::Client do
|
|
119
115
|
if false then
|
120
116
|
describe "when key exists," do
|
121
117
|
it "should return keys" do
|
122
|
-
Okuyama.logger.debug("send: #{@client.protocol.message_of_search_value([@testquery1, @testquery2], '2', @testgroup, '3').inspect}")
|
123
118
|
result = @client.search_value([@testquery1, @testquery2], :condition=>:or, :group=>@testgroup, :nsize=>3)
|
124
119
|
result.sort!
|
125
120
|
result.should == ['testkey1']
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: okuyama
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 2
|
10
|
+
version: 0.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kenji Hara
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-03-
|
18
|
+
date: 2012-03-27 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
type: :development
|
@@ -108,6 +108,7 @@ files:
|
|
108
108
|
- .rspec
|
109
109
|
- Gemfile
|
110
110
|
- Gemfile.lock
|
111
|
+
- History.rdoc
|
111
112
|
- LICENSE.txt
|
112
113
|
- README.rdoc
|
113
114
|
- Rakefile
|