okuyama 0.2.1 → 0.2.2
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.
- 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
|