ls4 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.
- data/AUTHORS +1 -0
- data/COPYING +661 -0
- data/ChangeLog +9 -0
- data/NOTICE +8 -0
- data/README.rdoc +61 -0
- data/bin/ls4-cs +3 -0
- data/bin/ls4-ds +3 -0
- data/bin/ls4-gw +3 -0
- data/bin/ls4-standalone +3 -0
- data/bin/ls4cmd +3 -0
- data/bin/ls4ctl +3 -0
- data/bin/ls4rpc +3 -0
- data/bin/ls4stat +3 -0
- data/bin/ls4top +3 -0
- data/lib/ls4/command/cmd.rb +241 -0
- data/lib/ls4/command/cs.rb +190 -0
- data/lib/ls4/command/ctl.rb +278 -0
- data/lib/ls4/command/ds.rb +335 -0
- data/lib/ls4/command/gw.rb +256 -0
- data/lib/ls4/command/rpc.rb +172 -0
- data/lib/ls4/command/standalone.rb +318 -0
- data/lib/ls4/command/stat.rb +244 -0
- data/lib/ls4/command/top.rb +291 -0
- data/lib/ls4/default.rb +26 -0
- data/lib/ls4/lib/cclog.rb +220 -0
- data/lib/ls4/lib/ebus.rb +553 -0
- data/lib/ls4/lib/vbcode.rb +228 -0
- data/lib/ls4/logic/fault_detector.rb +212 -0
- data/lib/ls4/logic/membership.rb +253 -0
- data/lib/ls4/logic/node.rb +66 -0
- data/lib/ls4/logic/okey.rb +45 -0
- data/lib/ls4/logic/tsv_data.rb +81 -0
- data/lib/ls4/logic/weight.rb +166 -0
- data/lib/ls4/service/balance.rb +62 -0
- data/lib/ls4/service/base.rb +29 -0
- data/lib/ls4/service/bus.rb +37 -0
- data/lib/ls4/service/config.rb +63 -0
- data/lib/ls4/service/config_cs.rb +33 -0
- data/lib/ls4/service/config_ds.rb +56 -0
- data/lib/ls4/service/config_gw.rb +42 -0
- data/lib/ls4/service/data_client.rb +122 -0
- data/lib/ls4/service/data_server.rb +168 -0
- data/lib/ls4/service/data_server_url.rb +83 -0
- data/lib/ls4/service/gateway.rb +375 -0
- data/lib/ls4/service/gateway_ro.rb +91 -0
- data/lib/ls4/service/gw_http.rb +821 -0
- data/lib/ls4/service/heartbeat.rb +182 -0
- data/lib/ls4/service/log.rb +81 -0
- data/lib/ls4/service/master_select.rb +148 -0
- data/lib/ls4/service/mds.rb +292 -0
- data/lib/ls4/service/mds_cache.rb +294 -0
- data/lib/ls4/service/mds_cache_mem.rb +63 -0
- data/lib/ls4/service/mds_cache_memcached.rb +65 -0
- data/lib/ls4/service/mds_ha.rb +176 -0
- data/lib/ls4/service/mds_memcache.rb +209 -0
- data/lib/ls4/service/mds_tc.rb +508 -0
- data/lib/ls4/service/mds_tt.rb +472 -0
- data/lib/ls4/service/membership.rb +331 -0
- data/lib/ls4/service/process.rb +90 -0
- data/lib/ls4/service/rpc.rb +50 -0
- data/lib/ls4/service/rpc_cs.rb +101 -0
- data/lib/ls4/service/rpc_ds.rb +96 -0
- data/lib/ls4/service/rpc_gw.rb +255 -0
- data/lib/ls4/service/rts.rb +94 -0
- data/lib/ls4/service/rts_file.rb +76 -0
- data/lib/ls4/service/rts_memory.rb +55 -0
- data/lib/ls4/service/slave.rb +132 -0
- data/lib/ls4/service/stat.rb +91 -0
- data/lib/ls4/service/stat_cs.rb +25 -0
- data/lib/ls4/service/stat_ds.rb +40 -0
- data/lib/ls4/service/stat_gw.rb +25 -0
- data/lib/ls4/service/storage.rb +116 -0
- data/lib/ls4/service/storage_dir.rb +201 -0
- data/lib/ls4/service/sync.rb +206 -0
- data/lib/ls4/service/time_check.rb +80 -0
- data/lib/ls4/service/ulog.rb +159 -0
- data/lib/ls4/service/ulog_file.rb +398 -0
- data/lib/ls4/service/ulog_memory.rb +53 -0
- data/lib/ls4/service/weight.rb +134 -0
- data/lib/ls4/version.rb +5 -0
- data/test/01_add_get_remove.rt +84 -0
- data/test/02_read.rt +61 -0
- data/test/03_getd_readd.rt +69 -0
- data/test/04_version_time.rt +170 -0
- data/test/05_version_name.rt +161 -0
- data/test/06_http_get_set_remove_1.rt +119 -0
- data/test/07_http_get_set_remove_2.rt +116 -0
- data/test/08_read_only_time.rt +177 -0
- data/test/09_read_only_name.rt +173 -0
- data/test/10_http_get_set_remove_3.rt +73 -0
- data/test/11_mds_cache_memcached.rt +88 -0
- data/test/12_mds_cache_local_memory.rt +86 -0
- data/test/13_memcache_mds.rt +84 -0
- data/test/14_delete.rt +63 -0
- data/test/15_standalone.rt +71 -0
- data/test/chukan.rb +516 -0
- data/test/common.rb +250 -0
- data/test/load_test.rb +79 -0
- data/test/load_test_offload.rb +86 -0
- metadata +295 -0
@@ -0,0 +1,83 @@
|
|
1
|
+
#
|
2
|
+
# LS4
|
3
|
+
# Copyright (C) 2010-2011 FURUHASHI Sadayuki
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Affero General Public License as
|
7
|
+
# published by the Free Software Foundation, either version 3 of the
|
8
|
+
# License, or (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Affero General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
#
|
18
|
+
module LS4
|
19
|
+
|
20
|
+
|
21
|
+
class DataServerURLService < Service
|
22
|
+
# %p path encoded key
|
23
|
+
# %k url encoded key
|
24
|
+
# %v vtime
|
25
|
+
# %r rsid
|
26
|
+
def initialize
|
27
|
+
host = ConfigBus.self_address.host
|
28
|
+
if redirect_http_port = ConfigBus.http_redirect_port
|
29
|
+
if redirect_http_path_format = ConfigBus.http_redirect_path_format
|
30
|
+
@format = "http://#{host}:#{redirect_http_port}/#{redirect_http_path_format}"
|
31
|
+
@format << '%p' unless @format.include?('%')
|
32
|
+
else
|
33
|
+
@format = "http://#{host}:#{redirect_http_port}/%p"
|
34
|
+
end
|
35
|
+
|
36
|
+
elsif self_http_address = ConfigBus.http_gateway_address
|
37
|
+
@format = "http://#{host}:#{self_http_address.port}/direct/%r/%v/%k"
|
38
|
+
|
39
|
+
else
|
40
|
+
@format = nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def rpc_url_direct(okey)
|
45
|
+
unless @format
|
46
|
+
raise "redirect url is not configured"
|
47
|
+
end
|
48
|
+
|
49
|
+
unless StorageBus.exist(okey.vtime, okey.key)
|
50
|
+
return nil
|
51
|
+
end
|
52
|
+
|
53
|
+
format_url(okey)
|
54
|
+
end
|
55
|
+
|
56
|
+
ebus_connect :DSRPCBus,
|
57
|
+
:url_direct => :rpc_url_direct
|
58
|
+
|
59
|
+
private
|
60
|
+
def format_url(okey)
|
61
|
+
url = @format.dup
|
62
|
+
|
63
|
+
url.gsub!('%v', okey.vtime.to_s)
|
64
|
+
url.gsub!('%r', okey.rsid.to_s)
|
65
|
+
|
66
|
+
path_key_index = url.index('%p')
|
67
|
+
url_key_index = url.index('%k')
|
68
|
+
|
69
|
+
if path_key_index
|
70
|
+
path_key = DirectoryStorageService.encode_okey(okey)
|
71
|
+
url[path_key_index,2] = path_key
|
72
|
+
end
|
73
|
+
if url_key_index
|
74
|
+
url_key = CGI.escape(okey.key)
|
75
|
+
url[url_key_index,2] = url_key
|
76
|
+
end
|
77
|
+
|
78
|
+
url
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
end
|
@@ -0,0 +1,375 @@
|
|
1
|
+
#
|
2
|
+
# LS4
|
3
|
+
# Copyright (C) 2010-2011 FURUHASHI Sadayuki
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Affero General Public License as
|
7
|
+
# published by the Free Software Foundation, either version 3 of the
|
8
|
+
# License, or (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Affero General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
#
|
18
|
+
module LS4
|
19
|
+
|
20
|
+
|
21
|
+
class GatewayService < Service
|
22
|
+
def rpc_get(key)
|
23
|
+
rpc_get_impl(nil, key)
|
24
|
+
end
|
25
|
+
|
26
|
+
def rpc_get_data(key)
|
27
|
+
rpc_get_data_impl(nil, key)
|
28
|
+
end
|
29
|
+
|
30
|
+
def rpc_get_attrs(key)
|
31
|
+
rpc_get_attrs_impl(nil, key)
|
32
|
+
end
|
33
|
+
|
34
|
+
def rpc_read(key, offset, size)
|
35
|
+
rpc_read_impl(nil, key, offset, size)
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
def rpc_gett(vtime, key)
|
40
|
+
rpc_get_impl(vtime, key)
|
41
|
+
end
|
42
|
+
|
43
|
+
def rpc_gett_data(vtime, key)
|
44
|
+
rpc_get_data_impl(vtime, key)
|
45
|
+
end
|
46
|
+
|
47
|
+
def rpc_gett_attrs(vtime, key)
|
48
|
+
rpc_get_attrs_impl(vtime, key)
|
49
|
+
end
|
50
|
+
|
51
|
+
def rpc_readt(vtime, key, offset, size)
|
52
|
+
rpc_read_impl(vtime, key, offset, size)
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
def rpc_getv(vname, key)
|
57
|
+
rpc_get_impl(vname, key)
|
58
|
+
end
|
59
|
+
|
60
|
+
def rpc_getv_data(vname, key)
|
61
|
+
rpc_get_data_impl(vname, key)
|
62
|
+
end
|
63
|
+
|
64
|
+
def rpc_getv_attrs(vname, key)
|
65
|
+
rpc_get_attrs_impl(vname, key)
|
66
|
+
end
|
67
|
+
|
68
|
+
def rpc_readv(vname, key, offset, size)
|
69
|
+
rpc_read_impl(vname, key, offset, size)
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
def rpc_get_impl(version, key)
|
74
|
+
ar = MessagePack::RPC::AsyncResult.new
|
75
|
+
CachedMDSBus.get_okey_attrs(key, version) {|(okey,attrs),error|
|
76
|
+
if error
|
77
|
+
$log.warn("failed to get a key or attributes from MDS: key=#{key.inspect}: #{error}")
|
78
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
79
|
+
ar.error(error.to_s)
|
80
|
+
elsif okey
|
81
|
+
DataClientBus.get(okey, true) {|data,error|
|
82
|
+
if error
|
83
|
+
$log.warn(error)
|
84
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
85
|
+
end
|
86
|
+
#data ||= ""
|
87
|
+
ar.result([data,attrs])
|
88
|
+
}
|
89
|
+
else
|
90
|
+
ar.result([nil,nil])
|
91
|
+
end
|
92
|
+
}
|
93
|
+
ar
|
94
|
+
end
|
95
|
+
|
96
|
+
def rpc_get_data_impl(version, key)
|
97
|
+
ar = MessagePack::RPC::AsyncResult.new
|
98
|
+
CachedMDSBus.get_okey(key, version) {|okey,error|
|
99
|
+
if error
|
100
|
+
$log.warn("failed to get a key from MDS: key=#{key.inspect}: #{error}")
|
101
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
102
|
+
ar.error(error.to_s)
|
103
|
+
elsif okey
|
104
|
+
DataClientBus.get(okey, true) {|data,error|
|
105
|
+
if error
|
106
|
+
$log.warn(error)
|
107
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
108
|
+
end
|
109
|
+
#data ||= ""
|
110
|
+
ar.result(data, nil)
|
111
|
+
}
|
112
|
+
else
|
113
|
+
ar.result(nil)
|
114
|
+
end
|
115
|
+
}
|
116
|
+
ar
|
117
|
+
end
|
118
|
+
|
119
|
+
def rpc_get_attrs_impl(version, key)
|
120
|
+
ar = MessagePack::RPC::AsyncResult.new
|
121
|
+
CachedMDSBus.get_attrs(key, version) {|attrs,error|
|
122
|
+
if error
|
123
|
+
$log.warn("failed to get attributes from MDS: key=#{key.inspect}: #{error}")
|
124
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
125
|
+
ar.error(error.to_s)
|
126
|
+
elsif attrs
|
127
|
+
ar.result(attrs)
|
128
|
+
else
|
129
|
+
ar.result(nil)
|
130
|
+
end
|
131
|
+
}
|
132
|
+
ar
|
133
|
+
end
|
134
|
+
|
135
|
+
def rpc_read_impl(version, key, offset, size)
|
136
|
+
ar = MessagePack::RPC::AsyncResult.new
|
137
|
+
CachedMDSBus.get_okey(key, version) {|okey,error|
|
138
|
+
if error
|
139
|
+
$log.warn("failed to get a key from MDS: key=#{key.inspect}: #{error}")
|
140
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
141
|
+
ar.error(error.to_s)
|
142
|
+
elsif okey
|
143
|
+
DataClientBus.read(okey, offset, size, true) {|data,error|
|
144
|
+
if error
|
145
|
+
$log.warn("failed to get data from DS: key=#{key.inspect}: #{error} rsid=#{okey.rsid}")
|
146
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
147
|
+
end
|
148
|
+
#data ||= ""
|
149
|
+
ar.result(data)
|
150
|
+
}
|
151
|
+
else
|
152
|
+
ar.result(nil)
|
153
|
+
end
|
154
|
+
}
|
155
|
+
ar
|
156
|
+
end
|
157
|
+
|
158
|
+
|
159
|
+
def rpc_getd_data(okey)
|
160
|
+
ar = MessagePack::RPC::AsyncResult.new
|
161
|
+
DataClientBus.get(okey, true) {|data,error|
|
162
|
+
if error
|
163
|
+
$log.warn("failed to get data from DS: okey=#{okey}: #{error} rsid=#{okey.rsid}")
|
164
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
165
|
+
ar.error(error.to_s)
|
166
|
+
else
|
167
|
+
#data ||= ""
|
168
|
+
ar.result(data)
|
169
|
+
end
|
170
|
+
}
|
171
|
+
ar
|
172
|
+
end
|
173
|
+
|
174
|
+
def rpc_readd(okey, offset, size)
|
175
|
+
ar = MessagePack::RPC::AsyncResult.new
|
176
|
+
DataClientBus.read(okey, offset, size, true) {|data,error|
|
177
|
+
if error
|
178
|
+
$log.warn("failed to get data from DS: okey=#{okey}: #{error} rsid=#{okey.rsid}")
|
179
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
180
|
+
ar.error(error.to_s)
|
181
|
+
else
|
182
|
+
#data ||= ""
|
183
|
+
ar.result(data)
|
184
|
+
end
|
185
|
+
}
|
186
|
+
ar
|
187
|
+
end
|
188
|
+
|
189
|
+
|
190
|
+
def rpc_add(key, data, attrs)
|
191
|
+
rpc_add_impl(nil, key, data, attrs)
|
192
|
+
end
|
193
|
+
|
194
|
+
def rpc_add_data(key, data)
|
195
|
+
rpc_add_impl(nil, key, data, {})
|
196
|
+
end
|
197
|
+
|
198
|
+
|
199
|
+
def rpc_addv(vname, key, data, attrs)
|
200
|
+
rpc_add_impl(vname, key, data, attrs)
|
201
|
+
end
|
202
|
+
|
203
|
+
def rpc_addv_data(vname, key, data)
|
204
|
+
rpc_add_impl(vname, key, data, {})
|
205
|
+
end
|
206
|
+
|
207
|
+
|
208
|
+
def rpc_add_impl(vname, key, data, attrs)
|
209
|
+
ar = MessagePack::RPC::AsyncResult.new
|
210
|
+
CachedMDSBus.add(key, attrs, vname) {|okey,error|
|
211
|
+
if error
|
212
|
+
$log.warn("failed to set a key or attributes to MDS: key=#{key.inspect}: #{error}")
|
213
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
214
|
+
ar.error(error.to_s)
|
215
|
+
else
|
216
|
+
DataClientBus.set(okey, data) {|_,error|
|
217
|
+
if error
|
218
|
+
ar.error(error.to_s)
|
219
|
+
else
|
220
|
+
ar.result(okey)
|
221
|
+
end
|
222
|
+
}
|
223
|
+
end
|
224
|
+
}
|
225
|
+
ar
|
226
|
+
end
|
227
|
+
|
228
|
+
|
229
|
+
def rpc_update_attrs(key, attrs)
|
230
|
+
ar = MessagePack::RPC::AsyncResult.new
|
231
|
+
CachedMDSBus.update_attrs(key, attrs) {|okey,error|
|
232
|
+
if error
|
233
|
+
$log.warn("failed to set a key or attributes to MDS: key=#{key.inspect}: #{error}")
|
234
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
235
|
+
ar.error(error.to_s)
|
236
|
+
else
|
237
|
+
ar.result(okey)
|
238
|
+
end
|
239
|
+
}
|
240
|
+
ar
|
241
|
+
end
|
242
|
+
|
243
|
+
|
244
|
+
def rpc_remove(key)
|
245
|
+
ar = MessagePack::RPC::AsyncResult.new
|
246
|
+
CachedMDSBus.remove(key) {|okey,error|
|
247
|
+
if error
|
248
|
+
$log.warn("failed remove a key from MDS: key=#{key.inspect}: #{error}")
|
249
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
250
|
+
ar.error(error.to_s)
|
251
|
+
elsif okey
|
252
|
+
ar.result(true)
|
253
|
+
else
|
254
|
+
ar.result(false)
|
255
|
+
end
|
256
|
+
}
|
257
|
+
ar
|
258
|
+
end
|
259
|
+
|
260
|
+
|
261
|
+
def rpc_delete(key)
|
262
|
+
rpc_delete_impl(nil, key)
|
263
|
+
end
|
264
|
+
|
265
|
+
def rpc_deletet(vtime, key)
|
266
|
+
rpc_delete_impl(vtime, key)
|
267
|
+
end
|
268
|
+
|
269
|
+
def rpc_deletev(vname, key)
|
270
|
+
rpc_delete_impl(vname, key)
|
271
|
+
end
|
272
|
+
|
273
|
+
def rpc_delete_impl(version, key)
|
274
|
+
ar = MessagePack::RPC::AsyncResult.new
|
275
|
+
CachedMDSBus.delete(key, version) {|okey,error|
|
276
|
+
if error
|
277
|
+
$log.warn("failed delete a key from MDS: key=#{key.inspect}: #{error}")
|
278
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
279
|
+
ar.error(error.to_s)
|
280
|
+
elsif okey
|
281
|
+
DataClientBus.delete(okey) {|deleted,error|
|
282
|
+
if error
|
283
|
+
ar.error(error.to_s)
|
284
|
+
else
|
285
|
+
ar.result(deleted)
|
286
|
+
end
|
287
|
+
}
|
288
|
+
else
|
289
|
+
ar.result(false)
|
290
|
+
end
|
291
|
+
}
|
292
|
+
ar
|
293
|
+
end
|
294
|
+
|
295
|
+
|
296
|
+
def rpc_url(key)
|
297
|
+
rpc_url_impl(nil, key)
|
298
|
+
end
|
299
|
+
|
300
|
+
def rpc_urlt(vtime, key)
|
301
|
+
rpc_urlt_impl(vtime, key)
|
302
|
+
end
|
303
|
+
|
304
|
+
def rpc_urlv(vname, key)
|
305
|
+
rpc_urlv_impl(vname, key)
|
306
|
+
end
|
307
|
+
|
308
|
+
def rpc_url_impl(version, key)
|
309
|
+
ar = MessagePack::RPC::AsyncResult.new
|
310
|
+
CachedMDSBus.get_okey(key, version) {|okey,error|
|
311
|
+
if error
|
312
|
+
$log.warn("failed to get a key or attributes from MDS: key=#{key.inspect}: #{error}")
|
313
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
314
|
+
ar.error(error.to_s)
|
315
|
+
elsif okey
|
316
|
+
DataClientBus.url(okey, true) {|url,error|
|
317
|
+
if error
|
318
|
+
$log.warn(error)
|
319
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
320
|
+
end
|
321
|
+
ar.result(url)
|
322
|
+
}
|
323
|
+
else
|
324
|
+
ar.result(nil)
|
325
|
+
end
|
326
|
+
}
|
327
|
+
ar
|
328
|
+
end
|
329
|
+
|
330
|
+
def rpc_util_locate(key)
|
331
|
+
ar = MessagePack::RPC::AsyncResult.new
|
332
|
+
CachedMDSBus.util_locate(key) {|array,error|
|
333
|
+
if error
|
334
|
+
$log.warn(error)
|
335
|
+
$log.debug_backtrace error.backtrace if error.is_a?(Exception)
|
336
|
+
ar.error(error.to_s)
|
337
|
+
else
|
338
|
+
ar.result(array)
|
339
|
+
end
|
340
|
+
}
|
341
|
+
ar
|
342
|
+
end
|
343
|
+
|
344
|
+
ebus_connect :GWRPCBus,
|
345
|
+
:get => :rpc_get,
|
346
|
+
:get_data => :rpc_get_data,
|
347
|
+
:get_attrs => :rpc_get_attrs,
|
348
|
+
:read => :rpc_read,
|
349
|
+
:gett => :rpc_gett,
|
350
|
+
:gett_data => :rpc_gett_data,
|
351
|
+
:gett_attrs => :rpc_gett_attrs,
|
352
|
+
:readt => :rpc_readt,
|
353
|
+
:getv => :rpc_getv,
|
354
|
+
:getv_data => :rpc_getv_data,
|
355
|
+
:getv_attrs => :rpc_getv_attrs,
|
356
|
+
:readv => :rpc_readv,
|
357
|
+
:getd_data => :rpc_getd_data,
|
358
|
+
:readd => :rpc_readd,
|
359
|
+
:add => :rpc_add,
|
360
|
+
:add_data => :rpc_add_data,
|
361
|
+
:addv => :rpc_addv,
|
362
|
+
:addv_data => :rpc_addv_data,
|
363
|
+
:update_attrs => :rpc_update_attrs,
|
364
|
+
:remove => :rpc_remove,
|
365
|
+
:delete => :rpc_delete,
|
366
|
+
:deletet => :rpc_deletet,
|
367
|
+
:deletev => :rpc_deletev,
|
368
|
+
:url => :rpc_url,
|
369
|
+
:urlt => :rpc_urlt,
|
370
|
+
:urlv => :rpc_urlv,
|
371
|
+
:util_locate => :rpc_util_locate
|
372
|
+
end
|
373
|
+
|
374
|
+
|
375
|
+
end
|