slyphon-zookeeper 0.8.4-java → 0.9.0-java
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/CHANGELOG +14 -4
- data/Rakefile +1 -1
- data/ext/Rakefile +23 -1
- data/ext/depend +3 -1
- data/ext/extconf.rb +4 -0
- data/ext/generate_gvl_code.rb +332 -0
- data/ext/zkrb_wrapper.c +917 -0
- data/ext/zkrb_wrapper.h +330 -0
- data/ext/zkrb_wrapper_compat.c +15 -0
- data/ext/zkrb_wrapper_compat.h +11 -0
- data/ext/zookeeper_c.c +53 -49
- data/lib/zookeeper.rb +1 -4
- data/slyphon-zookeeper.gemspec +1 -1
- metadata +11 -6
data/CHANGELOG
CHANGED
@@ -1,8 +1,18 @@
|
|
1
|
-
v0.
|
2
|
-
|
3
|
-
*
|
1
|
+
v0.9.0 RELEASE THE KRAK..er, GIL!!
|
2
|
+
|
3
|
+
* In >= 1.9.2 the ruby interpreter allows you to release the GIL when
|
4
|
+
calling into native code, sounds like a good idea.
|
5
|
+
|
6
|
+
This release makes use of that code by parsing the zookeeper.h header file
|
7
|
+
and extracting the method signatures of all relevant zoo_* functions, then
|
8
|
+
generating boilerplate that allows us to call those functions via the
|
9
|
+
rb_thread_blocking_region function.
|
10
|
+
|
11
|
+
1.8.7 compatibility is maintained by stubbing out that functionality if built
|
12
|
+
under 1.8.7.
|
4
13
|
|
5
|
-
*
|
14
|
+
* 1.8.7 is deprecated! I will continue to support 1.8.7 for the near future
|
15
|
+
but sometime soon, you're gonna have to upgrade.
|
6
16
|
|
7
17
|
v0.8.3 fix NonLocalJump exception in event delivery thread shutdown code
|
8
18
|
|
data/Rakefile
CHANGED
data/ext/Rakefile
CHANGED
@@ -7,6 +7,28 @@ task :clean do
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
+
GENERATE_GVL_CODE_RB = 'generate_gvl_code.rb'
|
11
|
+
|
12
|
+
file 'c' do
|
13
|
+
if tarball = Dir['zkc-*.tar.gz'].first
|
14
|
+
sh "tar -zxf #{tarball}"
|
15
|
+
else
|
16
|
+
raise "couldn't find the tarball! wtf?!"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
file GENERATE_GVL_CODE_RB => 'c'
|
21
|
+
|
22
|
+
file 'zkrb_wrapper.c' => GENERATE_GVL_CODE_RB do
|
23
|
+
sh "ruby generate_gvl_code.rb code"
|
24
|
+
end
|
25
|
+
|
26
|
+
file 'zkrb_wrapper.h' => GENERATE_GVL_CODE_RB do
|
27
|
+
sh "ruby generate_gvl_code.rb headers"
|
28
|
+
end
|
29
|
+
|
30
|
+
ZKRB_WRAPPER = %w[zkrb_wrapper.c zkrb_wrapper.h]
|
31
|
+
|
10
32
|
task :clobber => :clean do
|
11
33
|
rm_rf %w[Makefile c lib bin include]
|
12
34
|
end
|
@@ -17,7 +39,7 @@ end
|
|
17
39
|
|
18
40
|
file 'Makefile' => :build_zkc
|
19
41
|
|
20
|
-
task :build => 'Makefile' do
|
42
|
+
task :build => [ZKRB_WRAPPER, 'Makefile'].flatten do
|
21
43
|
sh 'make'
|
22
44
|
end
|
23
45
|
|
data/ext/depend
CHANGED
@@ -1,3 +1,5 @@
|
|
1
1
|
zookeeper_lib.c: zookeeper_lib.h
|
2
|
-
|
2
|
+
zkrb_wrapper_compat.c: zkrb_wrapper_compat.h
|
3
|
+
zkrb_wrapper.c: zkrb_wrapper_compat.c zkrb_wrapper.h
|
4
|
+
zookeeper_c.c: zookeeper_lib.c zookeeper_lib.h zkrb_wrapper.c zkrb_wrapper.h dbg.h
|
3
5
|
|
data/ext/extconf.rb
CHANGED
@@ -19,6 +19,10 @@ $LDFLAGS = "#{$LDFLAGS}".gsub("$(ldflags)", "").gsub("-arch ppc", "")
|
|
19
19
|
$CXXFLAGS = " -std=gnu++98 #{$CFLAGS}"
|
20
20
|
$CPPFLAGS = $ARCH_FLAG = $DLDFLAGS = ""
|
21
21
|
|
22
|
+
if RUBY_VERSION == '1.8.7'
|
23
|
+
$CFLAGS << ' -DZKRB_RUBY_187'
|
24
|
+
end
|
25
|
+
|
22
26
|
ZK_DEBUG = (ENV['DEBUG'] or ARGV.any? { |arg| arg == '--debug' })
|
23
27
|
DEBUG_CFLAGS = " -O0 -ggdb3 -DHAVE_DEBUG"
|
24
28
|
|
@@ -0,0 +1,332 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
=begin
|
4
|
+
the idea here is to take each zoo_* function declaration in the header file, and turn it into
|
5
|
+
a calling arguments struct, a wrapper function and a macro for packing the values.
|
6
|
+
|
7
|
+
so for:
|
8
|
+
|
9
|
+
ZOOAPI int zoo_acreate(zhandle_t *zh, const char *path, const char *value,
|
10
|
+
int valuelen, const struct ACL_vector *acl, int flags,
|
11
|
+
string_completion_t completion, const void *data);
|
12
|
+
|
13
|
+
we want
|
14
|
+
|
15
|
+
typedef struct {
|
16
|
+
zhandle_t *zh;
|
17
|
+
const char *path;
|
18
|
+
const char *value;
|
19
|
+
int valuelen;
|
20
|
+
const struct ACL_vector *acl;
|
21
|
+
int flags;
|
22
|
+
string_completion_t completion;
|
23
|
+
const void *data;
|
24
|
+
} zkrb_zoo_acreate_args_t;
|
25
|
+
|
26
|
+
static VALUE zkrb_gvl_zoo_acreate(void *data) {
|
27
|
+
zkrb_zoo_acreate_args_t *a = (zkrb_zoo_acreate_args_t *)data;
|
28
|
+
|
29
|
+
a->rc = zoo_acreate(a->zh, a->path, a->value, a->valuelen, a->acl, a->flags, a->completion, a->data);
|
30
|
+
|
31
|
+
return Qnil;
|
32
|
+
}
|
33
|
+
|
34
|
+
static int zkrb_call_zoo_acreate(zhandle_t *zh, const char *path, const char *value,
|
35
|
+
int valuelen, const struct ACL_vector *acl, int flags,
|
36
|
+
string_completion_t completion, const void *data) {
|
37
|
+
|
38
|
+
int rc;
|
39
|
+
zkrb_zoo_acreate_args_t *ptr = malloc(sizeof(zkrb_zoo_acreate_args_t));
|
40
|
+
check_mem(ptr);
|
41
|
+
|
42
|
+
ptr->rc = 0;
|
43
|
+
ptr->zh = zh;
|
44
|
+
ptr->path = path;
|
45
|
+
ptr->value = value;
|
46
|
+
ptr->valuelen = valuelen;
|
47
|
+
ptr->acl = acl;
|
48
|
+
ptr->flags = flags;
|
49
|
+
ptr->completion = completion;
|
50
|
+
ptr->data = data;
|
51
|
+
|
52
|
+
rb_thread_blocking_region(zkrb_gvl_zoo_acreate, (void *)ptr, RUBY_UBF_IO, 0);
|
53
|
+
|
54
|
+
rc = ptr->rc;
|
55
|
+
free(ptr);
|
56
|
+
return rc;
|
57
|
+
|
58
|
+
error:
|
59
|
+
free(ptr);
|
60
|
+
return -1;
|
61
|
+
}
|
62
|
+
|
63
|
+
=end
|
64
|
+
|
65
|
+
REGEXP = /^ZOOAPI int (zoo_[^(]+)\(([^)]+)\);$/m
|
66
|
+
|
67
|
+
require 'forwardable'
|
68
|
+
require 'stringio'
|
69
|
+
|
70
|
+
ZKRB_WRAPPER_H_PATH = File.expand_path('../zkrb_wrapper.h', __FILE__)
|
71
|
+
ZKRB_WRAPPER_C_PATH = File.expand_path('../zkrb_wrapper.c', __FILE__)
|
72
|
+
|
73
|
+
# the struct that holds the call args for zoo_fn_name
|
74
|
+
class CallStruct
|
75
|
+
attr_reader :zoo_fn_name, :typed_args, :name
|
76
|
+
|
77
|
+
def initialize(zoo_fn_name, typed_args)
|
78
|
+
@zoo_fn_name, @typed_args = zoo_fn_name, typed_args
|
79
|
+
@name = "zkrb_#{zoo_fn_name}_args_t"
|
80
|
+
end
|
81
|
+
|
82
|
+
def body
|
83
|
+
@body ||= (
|
84
|
+
lines = ["typedef struct {"]
|
85
|
+
lines += typed_args.map{|n| " #{n};"}
|
86
|
+
lines << " int rc;"
|
87
|
+
lines << "} #{name};"
|
88
|
+
lines.join("\n")
|
89
|
+
)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
module MemberNames
|
94
|
+
def member_names
|
95
|
+
@member_names ||= typed_args.map { |n| n.split(/[ *]/).last }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# the zkrb_gvl_zoo_* function
|
100
|
+
class WrapperFunction
|
101
|
+
extend Forwardable
|
102
|
+
include MemberNames
|
103
|
+
|
104
|
+
PREFIX = 'zkrb_gvl'
|
105
|
+
|
106
|
+
def_delegators :struct, :typed_args
|
107
|
+
|
108
|
+
attr_reader :struct, :name, :zoo_fn_name
|
109
|
+
|
110
|
+
def initialize(zoo_fn_name, struct)
|
111
|
+
@zoo_fn_name = zoo_fn_name
|
112
|
+
@struct = struct
|
113
|
+
@name = "#{PREFIX}_#{zoo_fn_name}"
|
114
|
+
end
|
115
|
+
|
116
|
+
def fn_signature
|
117
|
+
@fn_signature ||= "static VALUE #{name}(void *data)"
|
118
|
+
end
|
119
|
+
|
120
|
+
def body
|
121
|
+
@body ||= (
|
122
|
+
lines = ["#{fn_signature} {"]
|
123
|
+
lines << " #{struct.name} *a = (#{struct.name} *)data;"
|
124
|
+
|
125
|
+
funcall = " a->rc = #{zoo_fn_name}("
|
126
|
+
funcall << member_names.map { |m| "a->#{m}" }.join(', ')
|
127
|
+
funcall << ');'
|
128
|
+
|
129
|
+
lines << funcall
|
130
|
+
|
131
|
+
lines << " return Qnil;"
|
132
|
+
lines << "}"
|
133
|
+
lines.join("\n")
|
134
|
+
)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# the zkrb_call_zoo_* function
|
139
|
+
class CallingFunction
|
140
|
+
extend Forwardable
|
141
|
+
include MemberNames
|
142
|
+
|
143
|
+
PREFIX = 'zkrb_call'
|
144
|
+
|
145
|
+
def_delegators :struct, :typed_args
|
146
|
+
|
147
|
+
attr_reader :struct, :wrapper_fn, :zoo_fn_name, :name
|
148
|
+
|
149
|
+
def initialize(zoo_fn_name, struct, wrapper_fn)
|
150
|
+
@zoo_fn_name, @struct, @wrapper_fn = zoo_fn_name, struct, wrapper_fn
|
151
|
+
|
152
|
+
@name = "#{PREFIX}_#{zoo_fn_name}"
|
153
|
+
end
|
154
|
+
|
155
|
+
def fn_signature
|
156
|
+
@fn_signature ||= "int #{name}(#{typed_args.join(', ')})"
|
157
|
+
end
|
158
|
+
|
159
|
+
def ptr_lines
|
160
|
+
@ptr_lines = (
|
161
|
+
lines = ["ptr->rc = rc;"]
|
162
|
+
lines += member_names.map { |n| "ptr->#{n} = #{n};" }
|
163
|
+
lines.map! { |n| " #{n}" }
|
164
|
+
lines.join("\n")
|
165
|
+
)
|
166
|
+
end
|
167
|
+
|
168
|
+
def top
|
169
|
+
<<-EOS
|
170
|
+
// wrapper that calls #{zoo_fn_name} via #{wrapper_fn.name} inside rb_thread_blocking_region
|
171
|
+
#{fn_signature} {
|
172
|
+
int rc = ZKRB_FAIL;
|
173
|
+
#{struct.name} *ptr = malloc(sizeof(#{struct.name}));
|
174
|
+
check_mem(ptr);
|
175
|
+
EOS
|
176
|
+
end
|
177
|
+
|
178
|
+
def rb_thread_blocking_region_call
|
179
|
+
" zkrb_thread_blocking_region(#{wrapper_fn.name}, (void *)ptr);"
|
180
|
+
end
|
181
|
+
|
182
|
+
def bottom
|
183
|
+
<<-EOS
|
184
|
+
|
185
|
+
rc = ptr->rc;
|
186
|
+
|
187
|
+
error:
|
188
|
+
free(ptr);
|
189
|
+
return rc;
|
190
|
+
}
|
191
|
+
EOS
|
192
|
+
end
|
193
|
+
|
194
|
+
def body
|
195
|
+
@body ||= [top, ptr_lines, nil, rb_thread_blocking_region_call, bottom].join("\n")
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
class GeneratedCode < Struct.new(:structs, :wrapper_fns, :calling_fns)
|
200
|
+
def initialize(*a)
|
201
|
+
super
|
202
|
+
|
203
|
+
self.structs ||= []
|
204
|
+
self.wrapper_fns ||= []
|
205
|
+
self.calling_fns ||= []
|
206
|
+
end
|
207
|
+
|
208
|
+
def self.from_zookeeper_h(text)
|
209
|
+
new.tap do |code|
|
210
|
+
while true
|
211
|
+
break unless text =~ REGEXP
|
212
|
+
zoo_fn_name, argstr = $1
|
213
|
+
argstr = $2
|
214
|
+
|
215
|
+
typed_args = argstr.split(',').map(&:strip)
|
216
|
+
|
217
|
+
# gah, fix up zoo_aset_acl which has a void_completion_t with no name assigned
|
218
|
+
if zoo_fn_name == 'zoo_aset_acl'
|
219
|
+
if idx = typed_args.index('void_completion_t')
|
220
|
+
typed_args[idx] = 'void_completion_t completion'
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
struct = CallStruct.new(zoo_fn_name, typed_args)
|
225
|
+
wrapper_fn = WrapperFunction.new(zoo_fn_name, struct)
|
226
|
+
calling_fn = CallingFunction.new(zoo_fn_name, struct, wrapper_fn)
|
227
|
+
|
228
|
+
code.structs << struct
|
229
|
+
code.wrapper_fns << wrapper_fn
|
230
|
+
code.calling_fns << calling_fn
|
231
|
+
|
232
|
+
text = $~.post_match
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
def render_header_file(code)
|
239
|
+
StringIO.new('zkrb_wrapper.h', 'w').tap do |fp|
|
240
|
+
fp.puts <<-EOS
|
241
|
+
#ifndef ZKRB_WRAPPER_H
|
242
|
+
#define ZKRB_WRAPPER_H
|
243
|
+
#if 0
|
244
|
+
|
245
|
+
AUTOGENERATED BY #{File.basename(__FILE__)}
|
246
|
+
|
247
|
+
#endif
|
248
|
+
|
249
|
+
#include "ruby.h"
|
250
|
+
#include "c-client-src/zookeeper.h"
|
251
|
+
#include "zkrb_wrapper_compat.h"
|
252
|
+
#include "dbg.h"
|
253
|
+
|
254
|
+
#define ZKRB_FAIL -1
|
255
|
+
|
256
|
+
EOS
|
257
|
+
|
258
|
+
code.structs.each do |struct|
|
259
|
+
fp.puts(struct.body)
|
260
|
+
fp.puts
|
261
|
+
end
|
262
|
+
|
263
|
+
code.calling_fns.each do |cf|
|
264
|
+
fp.puts "#{cf.fn_signature};"
|
265
|
+
end
|
266
|
+
|
267
|
+
fp.puts <<-EOS
|
268
|
+
|
269
|
+
#endif /* ZKRB_WRAPPER_H */
|
270
|
+
EOS
|
271
|
+
|
272
|
+
end.string
|
273
|
+
end
|
274
|
+
|
275
|
+
def render_c_file(code)
|
276
|
+
StringIO.new('zkrb_wrapper.c', 'w').tap do |fp|
|
277
|
+
fp.puts <<-EOS
|
278
|
+
/*
|
279
|
+
|
280
|
+
Autogenerated boilerplate wrappers around zoo_* function calls necessary for using
|
281
|
+
rb_thread_blocking_region to release the GIL when calling native code.
|
282
|
+
|
283
|
+
generated by ext/#{File.basename(__FILE__)}
|
284
|
+
|
285
|
+
*/
|
286
|
+
|
287
|
+
#include "ruby.h"
|
288
|
+
#include "zkrb_wrapper.h"
|
289
|
+
#include <errno.h>
|
290
|
+
#include <stdio.h>
|
291
|
+
#include <stdlib.h>
|
292
|
+
|
293
|
+
EOS
|
294
|
+
|
295
|
+
code.wrapper_fns.zip(code.calling_fns) do |wrap_fn, call_fn|
|
296
|
+
fp.puts "#{wrap_fn.body}\n\n"
|
297
|
+
fp.puts "#{call_fn.body}\n\n"
|
298
|
+
end
|
299
|
+
|
300
|
+
end.string
|
301
|
+
end
|
302
|
+
|
303
|
+
|
304
|
+
def help!
|
305
|
+
$stderr.puts "usage: #{File.basename(__FILE__)} {all|headers|code}"
|
306
|
+
exit 1
|
307
|
+
end
|
308
|
+
|
309
|
+
def main
|
310
|
+
help! if ARGV.empty?
|
311
|
+
|
312
|
+
text = File.read('c/include/zookeeper.h')
|
313
|
+
code = GeneratedCode.from_zookeeper_h(text)
|
314
|
+
|
315
|
+
cmd = ARGV.first
|
316
|
+
|
317
|
+
help! unless %w[headers all code].include?(cmd)
|
318
|
+
|
319
|
+
if %w[headers all].include?(cmd)
|
320
|
+
$stderr.puts "writing #{ZKRB_WRAPPER_H_PATH}"
|
321
|
+
File.open(ZKRB_WRAPPER_H_PATH, 'w') { |fp| fp.write(render_header_file(code)) }
|
322
|
+
end
|
323
|
+
|
324
|
+
if %w[code all].include?(cmd)
|
325
|
+
$stderr.puts "writing #{ZKRB_WRAPPER_C_PATH}"
|
326
|
+
File.open(ZKRB_WRAPPER_C_PATH, 'w') { |fp| fp.write(render_c_file(code)) }
|
327
|
+
end
|
328
|
+
|
329
|
+
end
|
330
|
+
|
331
|
+
main
|
332
|
+
|
data/ext/zkrb_wrapper.c
ADDED
@@ -0,0 +1,917 @@
|
|
1
|
+
/*
|
2
|
+
|
3
|
+
Autogenerated boilerplate wrappers around zoo_* function calls necessary for using
|
4
|
+
rb_thread_blocking_region to release the GIL when calling native code.
|
5
|
+
|
6
|
+
generated by ext/generate_gvl_code.rb
|
7
|
+
|
8
|
+
*/
|
9
|
+
|
10
|
+
#include "ruby.h"
|
11
|
+
#include "zkrb_wrapper.h"
|
12
|
+
#include <errno.h>
|
13
|
+
#include <stdio.h>
|
14
|
+
#include <stdlib.h>
|
15
|
+
|
16
|
+
static VALUE zkrb_gvl_zoo_recv_timeout(void *data) {
|
17
|
+
zkrb_zoo_recv_timeout_args_t *a = (zkrb_zoo_recv_timeout_args_t *)data;
|
18
|
+
a->rc = zoo_recv_timeout(a->zh);
|
19
|
+
return Qnil;
|
20
|
+
}
|
21
|
+
|
22
|
+
// wrapper that calls zoo_recv_timeout via zkrb_gvl_zoo_recv_timeout inside rb_thread_blocking_region
|
23
|
+
int zkrb_call_zoo_recv_timeout(zhandle_t *zh) {
|
24
|
+
int rc = ZKRB_FAIL;
|
25
|
+
zkrb_zoo_recv_timeout_args_t *ptr = malloc(sizeof(zkrb_zoo_recv_timeout_args_t));
|
26
|
+
check_mem(ptr);
|
27
|
+
|
28
|
+
ptr->rc = rc;
|
29
|
+
ptr->zh = zh;
|
30
|
+
|
31
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_recv_timeout, (void *)ptr);
|
32
|
+
|
33
|
+
rc = ptr->rc;
|
34
|
+
|
35
|
+
error:
|
36
|
+
free(ptr);
|
37
|
+
return rc;
|
38
|
+
}
|
39
|
+
|
40
|
+
|
41
|
+
static VALUE zkrb_gvl_zoo_state(void *data) {
|
42
|
+
zkrb_zoo_state_args_t *a = (zkrb_zoo_state_args_t *)data;
|
43
|
+
a->rc = zoo_state(a->zh);
|
44
|
+
return Qnil;
|
45
|
+
}
|
46
|
+
|
47
|
+
// wrapper that calls zoo_state via zkrb_gvl_zoo_state inside rb_thread_blocking_region
|
48
|
+
int zkrb_call_zoo_state(zhandle_t *zh) {
|
49
|
+
int rc = ZKRB_FAIL;
|
50
|
+
zkrb_zoo_state_args_t *ptr = malloc(sizeof(zkrb_zoo_state_args_t));
|
51
|
+
check_mem(ptr);
|
52
|
+
|
53
|
+
ptr->rc = rc;
|
54
|
+
ptr->zh = zh;
|
55
|
+
|
56
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_state, (void *)ptr);
|
57
|
+
|
58
|
+
rc = ptr->rc;
|
59
|
+
|
60
|
+
error:
|
61
|
+
free(ptr);
|
62
|
+
return rc;
|
63
|
+
}
|
64
|
+
|
65
|
+
|
66
|
+
static VALUE zkrb_gvl_zoo_acreate(void *data) {
|
67
|
+
zkrb_zoo_acreate_args_t *a = (zkrb_zoo_acreate_args_t *)data;
|
68
|
+
a->rc = zoo_acreate(a->zh, a->path, a->value, a->valuelen, a->acl, a->flags, a->completion, a->data);
|
69
|
+
return Qnil;
|
70
|
+
}
|
71
|
+
|
72
|
+
// wrapper that calls zoo_acreate via zkrb_gvl_zoo_acreate inside rb_thread_blocking_region
|
73
|
+
int zkrb_call_zoo_acreate(zhandle_t *zh, const char *path, const char *value, int valuelen, const struct ACL_vector *acl, int flags, string_completion_t completion, const void *data) {
|
74
|
+
int rc = ZKRB_FAIL;
|
75
|
+
zkrb_zoo_acreate_args_t *ptr = malloc(sizeof(zkrb_zoo_acreate_args_t));
|
76
|
+
check_mem(ptr);
|
77
|
+
|
78
|
+
ptr->rc = rc;
|
79
|
+
ptr->zh = zh;
|
80
|
+
ptr->path = path;
|
81
|
+
ptr->value = value;
|
82
|
+
ptr->valuelen = valuelen;
|
83
|
+
ptr->acl = acl;
|
84
|
+
ptr->flags = flags;
|
85
|
+
ptr->completion = completion;
|
86
|
+
ptr->data = data;
|
87
|
+
|
88
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_acreate, (void *)ptr);
|
89
|
+
|
90
|
+
rc = ptr->rc;
|
91
|
+
|
92
|
+
error:
|
93
|
+
free(ptr);
|
94
|
+
return rc;
|
95
|
+
}
|
96
|
+
|
97
|
+
|
98
|
+
static VALUE zkrb_gvl_zoo_adelete(void *data) {
|
99
|
+
zkrb_zoo_adelete_args_t *a = (zkrb_zoo_adelete_args_t *)data;
|
100
|
+
a->rc = zoo_adelete(a->zh, a->path, a->version, a->completion, a->data);
|
101
|
+
return Qnil;
|
102
|
+
}
|
103
|
+
|
104
|
+
// wrapper that calls zoo_adelete via zkrb_gvl_zoo_adelete inside rb_thread_blocking_region
|
105
|
+
int zkrb_call_zoo_adelete(zhandle_t *zh, const char *path, int version, void_completion_t completion, const void *data) {
|
106
|
+
int rc = ZKRB_FAIL;
|
107
|
+
zkrb_zoo_adelete_args_t *ptr = malloc(sizeof(zkrb_zoo_adelete_args_t));
|
108
|
+
check_mem(ptr);
|
109
|
+
|
110
|
+
ptr->rc = rc;
|
111
|
+
ptr->zh = zh;
|
112
|
+
ptr->path = path;
|
113
|
+
ptr->version = version;
|
114
|
+
ptr->completion = completion;
|
115
|
+
ptr->data = data;
|
116
|
+
|
117
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_adelete, (void *)ptr);
|
118
|
+
|
119
|
+
rc = ptr->rc;
|
120
|
+
|
121
|
+
error:
|
122
|
+
free(ptr);
|
123
|
+
return rc;
|
124
|
+
}
|
125
|
+
|
126
|
+
|
127
|
+
static VALUE zkrb_gvl_zoo_aexists(void *data) {
|
128
|
+
zkrb_zoo_aexists_args_t *a = (zkrb_zoo_aexists_args_t *)data;
|
129
|
+
a->rc = zoo_aexists(a->zh, a->path, a->watch, a->completion, a->data);
|
130
|
+
return Qnil;
|
131
|
+
}
|
132
|
+
|
133
|
+
// wrapper that calls zoo_aexists via zkrb_gvl_zoo_aexists inside rb_thread_blocking_region
|
134
|
+
int zkrb_call_zoo_aexists(zhandle_t *zh, const char *path, int watch, stat_completion_t completion, const void *data) {
|
135
|
+
int rc = ZKRB_FAIL;
|
136
|
+
zkrb_zoo_aexists_args_t *ptr = malloc(sizeof(zkrb_zoo_aexists_args_t));
|
137
|
+
check_mem(ptr);
|
138
|
+
|
139
|
+
ptr->rc = rc;
|
140
|
+
ptr->zh = zh;
|
141
|
+
ptr->path = path;
|
142
|
+
ptr->watch = watch;
|
143
|
+
ptr->completion = completion;
|
144
|
+
ptr->data = data;
|
145
|
+
|
146
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_aexists, (void *)ptr);
|
147
|
+
|
148
|
+
rc = ptr->rc;
|
149
|
+
|
150
|
+
error:
|
151
|
+
free(ptr);
|
152
|
+
return rc;
|
153
|
+
}
|
154
|
+
|
155
|
+
|
156
|
+
static VALUE zkrb_gvl_zoo_awexists(void *data) {
|
157
|
+
zkrb_zoo_awexists_args_t *a = (zkrb_zoo_awexists_args_t *)data;
|
158
|
+
a->rc = zoo_awexists(a->zh, a->path, a->watcher, a->watcherCtx, a->completion, a->data);
|
159
|
+
return Qnil;
|
160
|
+
}
|
161
|
+
|
162
|
+
// wrapper that calls zoo_awexists via zkrb_gvl_zoo_awexists inside rb_thread_blocking_region
|
163
|
+
int zkrb_call_zoo_awexists(zhandle_t *zh, const char *path, watcher_fn watcher, void* watcherCtx, stat_completion_t completion, const void *data) {
|
164
|
+
int rc = ZKRB_FAIL;
|
165
|
+
zkrb_zoo_awexists_args_t *ptr = malloc(sizeof(zkrb_zoo_awexists_args_t));
|
166
|
+
check_mem(ptr);
|
167
|
+
|
168
|
+
ptr->rc = rc;
|
169
|
+
ptr->zh = zh;
|
170
|
+
ptr->path = path;
|
171
|
+
ptr->watcher = watcher;
|
172
|
+
ptr->watcherCtx = watcherCtx;
|
173
|
+
ptr->completion = completion;
|
174
|
+
ptr->data = data;
|
175
|
+
|
176
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_awexists, (void *)ptr);
|
177
|
+
|
178
|
+
rc = ptr->rc;
|
179
|
+
|
180
|
+
error:
|
181
|
+
free(ptr);
|
182
|
+
return rc;
|
183
|
+
}
|
184
|
+
|
185
|
+
|
186
|
+
static VALUE zkrb_gvl_zoo_aget(void *data) {
|
187
|
+
zkrb_zoo_aget_args_t *a = (zkrb_zoo_aget_args_t *)data;
|
188
|
+
a->rc = zoo_aget(a->zh, a->path, a->watch, a->completion, a->data);
|
189
|
+
return Qnil;
|
190
|
+
}
|
191
|
+
|
192
|
+
// wrapper that calls zoo_aget via zkrb_gvl_zoo_aget inside rb_thread_blocking_region
|
193
|
+
int zkrb_call_zoo_aget(zhandle_t *zh, const char *path, int watch, data_completion_t completion, const void *data) {
|
194
|
+
int rc = ZKRB_FAIL;
|
195
|
+
zkrb_zoo_aget_args_t *ptr = malloc(sizeof(zkrb_zoo_aget_args_t));
|
196
|
+
check_mem(ptr);
|
197
|
+
|
198
|
+
ptr->rc = rc;
|
199
|
+
ptr->zh = zh;
|
200
|
+
ptr->path = path;
|
201
|
+
ptr->watch = watch;
|
202
|
+
ptr->completion = completion;
|
203
|
+
ptr->data = data;
|
204
|
+
|
205
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_aget, (void *)ptr);
|
206
|
+
|
207
|
+
rc = ptr->rc;
|
208
|
+
|
209
|
+
error:
|
210
|
+
free(ptr);
|
211
|
+
return rc;
|
212
|
+
}
|
213
|
+
|
214
|
+
|
215
|
+
static VALUE zkrb_gvl_zoo_awget(void *data) {
|
216
|
+
zkrb_zoo_awget_args_t *a = (zkrb_zoo_awget_args_t *)data;
|
217
|
+
a->rc = zoo_awget(a->zh, a->path, a->watcher, a->watcherCtx, a->completion, a->data);
|
218
|
+
return Qnil;
|
219
|
+
}
|
220
|
+
|
221
|
+
// wrapper that calls zoo_awget via zkrb_gvl_zoo_awget inside rb_thread_blocking_region
|
222
|
+
int zkrb_call_zoo_awget(zhandle_t *zh, const char *path, watcher_fn watcher, void* watcherCtx, data_completion_t completion, const void *data) {
|
223
|
+
int rc = ZKRB_FAIL;
|
224
|
+
zkrb_zoo_awget_args_t *ptr = malloc(sizeof(zkrb_zoo_awget_args_t));
|
225
|
+
check_mem(ptr);
|
226
|
+
|
227
|
+
ptr->rc = rc;
|
228
|
+
ptr->zh = zh;
|
229
|
+
ptr->path = path;
|
230
|
+
ptr->watcher = watcher;
|
231
|
+
ptr->watcherCtx = watcherCtx;
|
232
|
+
ptr->completion = completion;
|
233
|
+
ptr->data = data;
|
234
|
+
|
235
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_awget, (void *)ptr);
|
236
|
+
|
237
|
+
rc = ptr->rc;
|
238
|
+
|
239
|
+
error:
|
240
|
+
free(ptr);
|
241
|
+
return rc;
|
242
|
+
}
|
243
|
+
|
244
|
+
|
245
|
+
static VALUE zkrb_gvl_zoo_aset(void *data) {
|
246
|
+
zkrb_zoo_aset_args_t *a = (zkrb_zoo_aset_args_t *)data;
|
247
|
+
a->rc = zoo_aset(a->zh, a->path, a->buffer, a->buflen, a->version, a->completion, a->data);
|
248
|
+
return Qnil;
|
249
|
+
}
|
250
|
+
|
251
|
+
// wrapper that calls zoo_aset via zkrb_gvl_zoo_aset inside rb_thread_blocking_region
|
252
|
+
int zkrb_call_zoo_aset(zhandle_t *zh, const char *path, const char *buffer, int buflen, int version, stat_completion_t completion, const void *data) {
|
253
|
+
int rc = ZKRB_FAIL;
|
254
|
+
zkrb_zoo_aset_args_t *ptr = malloc(sizeof(zkrb_zoo_aset_args_t));
|
255
|
+
check_mem(ptr);
|
256
|
+
|
257
|
+
ptr->rc = rc;
|
258
|
+
ptr->zh = zh;
|
259
|
+
ptr->path = path;
|
260
|
+
ptr->buffer = buffer;
|
261
|
+
ptr->buflen = buflen;
|
262
|
+
ptr->version = version;
|
263
|
+
ptr->completion = completion;
|
264
|
+
ptr->data = data;
|
265
|
+
|
266
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_aset, (void *)ptr);
|
267
|
+
|
268
|
+
rc = ptr->rc;
|
269
|
+
|
270
|
+
error:
|
271
|
+
free(ptr);
|
272
|
+
return rc;
|
273
|
+
}
|
274
|
+
|
275
|
+
|
276
|
+
static VALUE zkrb_gvl_zoo_aget_children(void *data) {
|
277
|
+
zkrb_zoo_aget_children_args_t *a = (zkrb_zoo_aget_children_args_t *)data;
|
278
|
+
a->rc = zoo_aget_children(a->zh, a->path, a->watch, a->completion, a->data);
|
279
|
+
return Qnil;
|
280
|
+
}
|
281
|
+
|
282
|
+
// wrapper that calls zoo_aget_children via zkrb_gvl_zoo_aget_children inside rb_thread_blocking_region
|
283
|
+
int zkrb_call_zoo_aget_children(zhandle_t *zh, const char *path, int watch, strings_completion_t completion, const void *data) {
|
284
|
+
int rc = ZKRB_FAIL;
|
285
|
+
zkrb_zoo_aget_children_args_t *ptr = malloc(sizeof(zkrb_zoo_aget_children_args_t));
|
286
|
+
check_mem(ptr);
|
287
|
+
|
288
|
+
ptr->rc = rc;
|
289
|
+
ptr->zh = zh;
|
290
|
+
ptr->path = path;
|
291
|
+
ptr->watch = watch;
|
292
|
+
ptr->completion = completion;
|
293
|
+
ptr->data = data;
|
294
|
+
|
295
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_aget_children, (void *)ptr);
|
296
|
+
|
297
|
+
rc = ptr->rc;
|
298
|
+
|
299
|
+
error:
|
300
|
+
free(ptr);
|
301
|
+
return rc;
|
302
|
+
}
|
303
|
+
|
304
|
+
|
305
|
+
static VALUE zkrb_gvl_zoo_awget_children(void *data) {
|
306
|
+
zkrb_zoo_awget_children_args_t *a = (zkrb_zoo_awget_children_args_t *)data;
|
307
|
+
a->rc = zoo_awget_children(a->zh, a->path, a->watcher, a->watcherCtx, a->completion, a->data);
|
308
|
+
return Qnil;
|
309
|
+
}
|
310
|
+
|
311
|
+
// wrapper that calls zoo_awget_children via zkrb_gvl_zoo_awget_children inside rb_thread_blocking_region
|
312
|
+
int zkrb_call_zoo_awget_children(zhandle_t *zh, const char *path, watcher_fn watcher, void* watcherCtx, strings_completion_t completion, const void *data) {
|
313
|
+
int rc = ZKRB_FAIL;
|
314
|
+
zkrb_zoo_awget_children_args_t *ptr = malloc(sizeof(zkrb_zoo_awget_children_args_t));
|
315
|
+
check_mem(ptr);
|
316
|
+
|
317
|
+
ptr->rc = rc;
|
318
|
+
ptr->zh = zh;
|
319
|
+
ptr->path = path;
|
320
|
+
ptr->watcher = watcher;
|
321
|
+
ptr->watcherCtx = watcherCtx;
|
322
|
+
ptr->completion = completion;
|
323
|
+
ptr->data = data;
|
324
|
+
|
325
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_awget_children, (void *)ptr);
|
326
|
+
|
327
|
+
rc = ptr->rc;
|
328
|
+
|
329
|
+
error:
|
330
|
+
free(ptr);
|
331
|
+
return rc;
|
332
|
+
}
|
333
|
+
|
334
|
+
|
335
|
+
static VALUE zkrb_gvl_zoo_aget_children2(void *data) {
|
336
|
+
zkrb_zoo_aget_children2_args_t *a = (zkrb_zoo_aget_children2_args_t *)data;
|
337
|
+
a->rc = zoo_aget_children2(a->zh, a->path, a->watch, a->completion, a->data);
|
338
|
+
return Qnil;
|
339
|
+
}
|
340
|
+
|
341
|
+
// wrapper that calls zoo_aget_children2 via zkrb_gvl_zoo_aget_children2 inside rb_thread_blocking_region
|
342
|
+
int zkrb_call_zoo_aget_children2(zhandle_t *zh, const char *path, int watch, strings_stat_completion_t completion, const void *data) {
|
343
|
+
int rc = ZKRB_FAIL;
|
344
|
+
zkrb_zoo_aget_children2_args_t *ptr = malloc(sizeof(zkrb_zoo_aget_children2_args_t));
|
345
|
+
check_mem(ptr);
|
346
|
+
|
347
|
+
ptr->rc = rc;
|
348
|
+
ptr->zh = zh;
|
349
|
+
ptr->path = path;
|
350
|
+
ptr->watch = watch;
|
351
|
+
ptr->completion = completion;
|
352
|
+
ptr->data = data;
|
353
|
+
|
354
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_aget_children2, (void *)ptr);
|
355
|
+
|
356
|
+
rc = ptr->rc;
|
357
|
+
|
358
|
+
error:
|
359
|
+
free(ptr);
|
360
|
+
return rc;
|
361
|
+
}
|
362
|
+
|
363
|
+
|
364
|
+
static VALUE zkrb_gvl_zoo_awget_children2(void *data) {
|
365
|
+
zkrb_zoo_awget_children2_args_t *a = (zkrb_zoo_awget_children2_args_t *)data;
|
366
|
+
a->rc = zoo_awget_children2(a->zh, a->path, a->watcher, a->watcherCtx, a->completion, a->data);
|
367
|
+
return Qnil;
|
368
|
+
}
|
369
|
+
|
370
|
+
// wrapper that calls zoo_awget_children2 via zkrb_gvl_zoo_awget_children2 inside rb_thread_blocking_region
|
371
|
+
int zkrb_call_zoo_awget_children2(zhandle_t *zh, const char *path, watcher_fn watcher, void* watcherCtx, strings_stat_completion_t completion, const void *data) {
|
372
|
+
int rc = ZKRB_FAIL;
|
373
|
+
zkrb_zoo_awget_children2_args_t *ptr = malloc(sizeof(zkrb_zoo_awget_children2_args_t));
|
374
|
+
check_mem(ptr);
|
375
|
+
|
376
|
+
ptr->rc = rc;
|
377
|
+
ptr->zh = zh;
|
378
|
+
ptr->path = path;
|
379
|
+
ptr->watcher = watcher;
|
380
|
+
ptr->watcherCtx = watcherCtx;
|
381
|
+
ptr->completion = completion;
|
382
|
+
ptr->data = data;
|
383
|
+
|
384
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_awget_children2, (void *)ptr);
|
385
|
+
|
386
|
+
rc = ptr->rc;
|
387
|
+
|
388
|
+
error:
|
389
|
+
free(ptr);
|
390
|
+
return rc;
|
391
|
+
}
|
392
|
+
|
393
|
+
|
394
|
+
static VALUE zkrb_gvl_zoo_async(void *data) {
|
395
|
+
zkrb_zoo_async_args_t *a = (zkrb_zoo_async_args_t *)data;
|
396
|
+
a->rc = zoo_async(a->zh, a->path, a->completion, a->data);
|
397
|
+
return Qnil;
|
398
|
+
}
|
399
|
+
|
400
|
+
// wrapper that calls zoo_async via zkrb_gvl_zoo_async inside rb_thread_blocking_region
|
401
|
+
int zkrb_call_zoo_async(zhandle_t *zh, const char *path, string_completion_t completion, const void *data) {
|
402
|
+
int rc = ZKRB_FAIL;
|
403
|
+
zkrb_zoo_async_args_t *ptr = malloc(sizeof(zkrb_zoo_async_args_t));
|
404
|
+
check_mem(ptr);
|
405
|
+
|
406
|
+
ptr->rc = rc;
|
407
|
+
ptr->zh = zh;
|
408
|
+
ptr->path = path;
|
409
|
+
ptr->completion = completion;
|
410
|
+
ptr->data = data;
|
411
|
+
|
412
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_async, (void *)ptr);
|
413
|
+
|
414
|
+
rc = ptr->rc;
|
415
|
+
|
416
|
+
error:
|
417
|
+
free(ptr);
|
418
|
+
return rc;
|
419
|
+
}
|
420
|
+
|
421
|
+
|
422
|
+
static VALUE zkrb_gvl_zoo_aget_acl(void *data) {
|
423
|
+
zkrb_zoo_aget_acl_args_t *a = (zkrb_zoo_aget_acl_args_t *)data;
|
424
|
+
a->rc = zoo_aget_acl(a->zh, a->path, a->completion, a->data);
|
425
|
+
return Qnil;
|
426
|
+
}
|
427
|
+
|
428
|
+
// wrapper that calls zoo_aget_acl via zkrb_gvl_zoo_aget_acl inside rb_thread_blocking_region
|
429
|
+
int zkrb_call_zoo_aget_acl(zhandle_t *zh, const char *path, acl_completion_t completion, const void *data) {
|
430
|
+
int rc = ZKRB_FAIL;
|
431
|
+
zkrb_zoo_aget_acl_args_t *ptr = malloc(sizeof(zkrb_zoo_aget_acl_args_t));
|
432
|
+
check_mem(ptr);
|
433
|
+
|
434
|
+
ptr->rc = rc;
|
435
|
+
ptr->zh = zh;
|
436
|
+
ptr->path = path;
|
437
|
+
ptr->completion = completion;
|
438
|
+
ptr->data = data;
|
439
|
+
|
440
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_aget_acl, (void *)ptr);
|
441
|
+
|
442
|
+
rc = ptr->rc;
|
443
|
+
|
444
|
+
error:
|
445
|
+
free(ptr);
|
446
|
+
return rc;
|
447
|
+
}
|
448
|
+
|
449
|
+
|
450
|
+
static VALUE zkrb_gvl_zoo_aset_acl(void *data) {
|
451
|
+
zkrb_zoo_aset_acl_args_t *a = (zkrb_zoo_aset_acl_args_t *)data;
|
452
|
+
a->rc = zoo_aset_acl(a->zh, a->path, a->version, a->acl, a->completion, a->data);
|
453
|
+
return Qnil;
|
454
|
+
}
|
455
|
+
|
456
|
+
// wrapper that calls zoo_aset_acl via zkrb_gvl_zoo_aset_acl inside rb_thread_blocking_region
|
457
|
+
int zkrb_call_zoo_aset_acl(zhandle_t *zh, const char *path, int version, struct ACL_vector *acl, void_completion_t completion, const void *data) {
|
458
|
+
int rc = ZKRB_FAIL;
|
459
|
+
zkrb_zoo_aset_acl_args_t *ptr = malloc(sizeof(zkrb_zoo_aset_acl_args_t));
|
460
|
+
check_mem(ptr);
|
461
|
+
|
462
|
+
ptr->rc = rc;
|
463
|
+
ptr->zh = zh;
|
464
|
+
ptr->path = path;
|
465
|
+
ptr->version = version;
|
466
|
+
ptr->acl = acl;
|
467
|
+
ptr->completion = completion;
|
468
|
+
ptr->data = data;
|
469
|
+
|
470
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_aset_acl, (void *)ptr);
|
471
|
+
|
472
|
+
rc = ptr->rc;
|
473
|
+
|
474
|
+
error:
|
475
|
+
free(ptr);
|
476
|
+
return rc;
|
477
|
+
}
|
478
|
+
|
479
|
+
|
480
|
+
static VALUE zkrb_gvl_zoo_add_auth(void *data) {
|
481
|
+
zkrb_zoo_add_auth_args_t *a = (zkrb_zoo_add_auth_args_t *)data;
|
482
|
+
a->rc = zoo_add_auth(a->zh, a->scheme, a->cert, a->certLen, a->completion, a->data);
|
483
|
+
return Qnil;
|
484
|
+
}
|
485
|
+
|
486
|
+
// wrapper that calls zoo_add_auth via zkrb_gvl_zoo_add_auth inside rb_thread_blocking_region
|
487
|
+
int zkrb_call_zoo_add_auth(zhandle_t *zh, const char* scheme, const char* cert, int certLen, void_completion_t completion, const void *data) {
|
488
|
+
int rc = ZKRB_FAIL;
|
489
|
+
zkrb_zoo_add_auth_args_t *ptr = malloc(sizeof(zkrb_zoo_add_auth_args_t));
|
490
|
+
check_mem(ptr);
|
491
|
+
|
492
|
+
ptr->rc = rc;
|
493
|
+
ptr->zh = zh;
|
494
|
+
ptr->scheme = scheme;
|
495
|
+
ptr->cert = cert;
|
496
|
+
ptr->certLen = certLen;
|
497
|
+
ptr->completion = completion;
|
498
|
+
ptr->data = data;
|
499
|
+
|
500
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_add_auth, (void *)ptr);
|
501
|
+
|
502
|
+
rc = ptr->rc;
|
503
|
+
|
504
|
+
error:
|
505
|
+
free(ptr);
|
506
|
+
return rc;
|
507
|
+
}
|
508
|
+
|
509
|
+
|
510
|
+
static VALUE zkrb_gvl_zoo_create(void *data) {
|
511
|
+
zkrb_zoo_create_args_t *a = (zkrb_zoo_create_args_t *)data;
|
512
|
+
a->rc = zoo_create(a->zh, a->path, a->value, a->valuelen, a->acl, a->flags, a->path_buffer, a->path_buffer_len);
|
513
|
+
return Qnil;
|
514
|
+
}
|
515
|
+
|
516
|
+
// wrapper that calls zoo_create via zkrb_gvl_zoo_create inside rb_thread_blocking_region
|
517
|
+
int zkrb_call_zoo_create(zhandle_t *zh, const char *path, const char *value, int valuelen, const struct ACL_vector *acl, int flags, char *path_buffer, int path_buffer_len) {
|
518
|
+
int rc = ZKRB_FAIL;
|
519
|
+
zkrb_zoo_create_args_t *ptr = malloc(sizeof(zkrb_zoo_create_args_t));
|
520
|
+
check_mem(ptr);
|
521
|
+
|
522
|
+
ptr->rc = rc;
|
523
|
+
ptr->zh = zh;
|
524
|
+
ptr->path = path;
|
525
|
+
ptr->value = value;
|
526
|
+
ptr->valuelen = valuelen;
|
527
|
+
ptr->acl = acl;
|
528
|
+
ptr->flags = flags;
|
529
|
+
ptr->path_buffer = path_buffer;
|
530
|
+
ptr->path_buffer_len = path_buffer_len;
|
531
|
+
|
532
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_create, (void *)ptr);
|
533
|
+
|
534
|
+
rc = ptr->rc;
|
535
|
+
|
536
|
+
error:
|
537
|
+
free(ptr);
|
538
|
+
return rc;
|
539
|
+
}
|
540
|
+
|
541
|
+
|
542
|
+
static VALUE zkrb_gvl_zoo_delete(void *data) {
|
543
|
+
zkrb_zoo_delete_args_t *a = (zkrb_zoo_delete_args_t *)data;
|
544
|
+
a->rc = zoo_delete(a->zh, a->path, a->version);
|
545
|
+
return Qnil;
|
546
|
+
}
|
547
|
+
|
548
|
+
// wrapper that calls zoo_delete via zkrb_gvl_zoo_delete inside rb_thread_blocking_region
|
549
|
+
int zkrb_call_zoo_delete(zhandle_t *zh, const char *path, int version) {
|
550
|
+
int rc = ZKRB_FAIL;
|
551
|
+
zkrb_zoo_delete_args_t *ptr = malloc(sizeof(zkrb_zoo_delete_args_t));
|
552
|
+
check_mem(ptr);
|
553
|
+
|
554
|
+
ptr->rc = rc;
|
555
|
+
ptr->zh = zh;
|
556
|
+
ptr->path = path;
|
557
|
+
ptr->version = version;
|
558
|
+
|
559
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_delete, (void *)ptr);
|
560
|
+
|
561
|
+
rc = ptr->rc;
|
562
|
+
|
563
|
+
error:
|
564
|
+
free(ptr);
|
565
|
+
return rc;
|
566
|
+
}
|
567
|
+
|
568
|
+
|
569
|
+
static VALUE zkrb_gvl_zoo_exists(void *data) {
|
570
|
+
zkrb_zoo_exists_args_t *a = (zkrb_zoo_exists_args_t *)data;
|
571
|
+
a->rc = zoo_exists(a->zh, a->path, a->watch, a->stat);
|
572
|
+
return Qnil;
|
573
|
+
}
|
574
|
+
|
575
|
+
// wrapper that calls zoo_exists via zkrb_gvl_zoo_exists inside rb_thread_blocking_region
|
576
|
+
int zkrb_call_zoo_exists(zhandle_t *zh, const char *path, int watch, struct Stat *stat) {
|
577
|
+
int rc = ZKRB_FAIL;
|
578
|
+
zkrb_zoo_exists_args_t *ptr = malloc(sizeof(zkrb_zoo_exists_args_t));
|
579
|
+
check_mem(ptr);
|
580
|
+
|
581
|
+
ptr->rc = rc;
|
582
|
+
ptr->zh = zh;
|
583
|
+
ptr->path = path;
|
584
|
+
ptr->watch = watch;
|
585
|
+
ptr->stat = stat;
|
586
|
+
|
587
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_exists, (void *)ptr);
|
588
|
+
|
589
|
+
rc = ptr->rc;
|
590
|
+
|
591
|
+
error:
|
592
|
+
free(ptr);
|
593
|
+
return rc;
|
594
|
+
}
|
595
|
+
|
596
|
+
|
597
|
+
static VALUE zkrb_gvl_zoo_wexists(void *data) {
|
598
|
+
zkrb_zoo_wexists_args_t *a = (zkrb_zoo_wexists_args_t *)data;
|
599
|
+
a->rc = zoo_wexists(a->zh, a->path, a->watcher, a->watcherCtx, a->stat);
|
600
|
+
return Qnil;
|
601
|
+
}
|
602
|
+
|
603
|
+
// wrapper that calls zoo_wexists via zkrb_gvl_zoo_wexists inside rb_thread_blocking_region
|
604
|
+
int zkrb_call_zoo_wexists(zhandle_t *zh, const char *path, watcher_fn watcher, void* watcherCtx, struct Stat *stat) {
|
605
|
+
int rc = ZKRB_FAIL;
|
606
|
+
zkrb_zoo_wexists_args_t *ptr = malloc(sizeof(zkrb_zoo_wexists_args_t));
|
607
|
+
check_mem(ptr);
|
608
|
+
|
609
|
+
ptr->rc = rc;
|
610
|
+
ptr->zh = zh;
|
611
|
+
ptr->path = path;
|
612
|
+
ptr->watcher = watcher;
|
613
|
+
ptr->watcherCtx = watcherCtx;
|
614
|
+
ptr->stat = stat;
|
615
|
+
|
616
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_wexists, (void *)ptr);
|
617
|
+
|
618
|
+
rc = ptr->rc;
|
619
|
+
|
620
|
+
error:
|
621
|
+
free(ptr);
|
622
|
+
return rc;
|
623
|
+
}
|
624
|
+
|
625
|
+
|
626
|
+
static VALUE zkrb_gvl_zoo_get(void *data) {
|
627
|
+
zkrb_zoo_get_args_t *a = (zkrb_zoo_get_args_t *)data;
|
628
|
+
a->rc = zoo_get(a->zh, a->path, a->watch, a->buffer, a->buffer_len, a->stat);
|
629
|
+
return Qnil;
|
630
|
+
}
|
631
|
+
|
632
|
+
// wrapper that calls zoo_get via zkrb_gvl_zoo_get inside rb_thread_blocking_region
|
633
|
+
int zkrb_call_zoo_get(zhandle_t *zh, const char *path, int watch, char *buffer, int* buffer_len, struct Stat *stat) {
|
634
|
+
int rc = ZKRB_FAIL;
|
635
|
+
zkrb_zoo_get_args_t *ptr = malloc(sizeof(zkrb_zoo_get_args_t));
|
636
|
+
check_mem(ptr);
|
637
|
+
|
638
|
+
ptr->rc = rc;
|
639
|
+
ptr->zh = zh;
|
640
|
+
ptr->path = path;
|
641
|
+
ptr->watch = watch;
|
642
|
+
ptr->buffer = buffer;
|
643
|
+
ptr->buffer_len = buffer_len;
|
644
|
+
ptr->stat = stat;
|
645
|
+
|
646
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_get, (void *)ptr);
|
647
|
+
|
648
|
+
rc = ptr->rc;
|
649
|
+
|
650
|
+
error:
|
651
|
+
free(ptr);
|
652
|
+
return rc;
|
653
|
+
}
|
654
|
+
|
655
|
+
|
656
|
+
static VALUE zkrb_gvl_zoo_wget(void *data) {
|
657
|
+
zkrb_zoo_wget_args_t *a = (zkrb_zoo_wget_args_t *)data;
|
658
|
+
a->rc = zoo_wget(a->zh, a->path, a->watcher, a->watcherCtx, a->buffer, a->buffer_len, a->stat);
|
659
|
+
return Qnil;
|
660
|
+
}
|
661
|
+
|
662
|
+
// wrapper that calls zoo_wget via zkrb_gvl_zoo_wget inside rb_thread_blocking_region
|
663
|
+
int zkrb_call_zoo_wget(zhandle_t *zh, const char *path, watcher_fn watcher, void* watcherCtx, char *buffer, int* buffer_len, struct Stat *stat) {
|
664
|
+
int rc = ZKRB_FAIL;
|
665
|
+
zkrb_zoo_wget_args_t *ptr = malloc(sizeof(zkrb_zoo_wget_args_t));
|
666
|
+
check_mem(ptr);
|
667
|
+
|
668
|
+
ptr->rc = rc;
|
669
|
+
ptr->zh = zh;
|
670
|
+
ptr->path = path;
|
671
|
+
ptr->watcher = watcher;
|
672
|
+
ptr->watcherCtx = watcherCtx;
|
673
|
+
ptr->buffer = buffer;
|
674
|
+
ptr->buffer_len = buffer_len;
|
675
|
+
ptr->stat = stat;
|
676
|
+
|
677
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_wget, (void *)ptr);
|
678
|
+
|
679
|
+
rc = ptr->rc;
|
680
|
+
|
681
|
+
error:
|
682
|
+
free(ptr);
|
683
|
+
return rc;
|
684
|
+
}
|
685
|
+
|
686
|
+
|
687
|
+
static VALUE zkrb_gvl_zoo_set(void *data) {
|
688
|
+
zkrb_zoo_set_args_t *a = (zkrb_zoo_set_args_t *)data;
|
689
|
+
a->rc = zoo_set(a->zh, a->path, a->buffer, a->buflen, a->version);
|
690
|
+
return Qnil;
|
691
|
+
}
|
692
|
+
|
693
|
+
// wrapper that calls zoo_set via zkrb_gvl_zoo_set inside rb_thread_blocking_region
|
694
|
+
int zkrb_call_zoo_set(zhandle_t *zh, const char *path, const char *buffer, int buflen, int version) {
|
695
|
+
int rc = ZKRB_FAIL;
|
696
|
+
zkrb_zoo_set_args_t *ptr = malloc(sizeof(zkrb_zoo_set_args_t));
|
697
|
+
check_mem(ptr);
|
698
|
+
|
699
|
+
ptr->rc = rc;
|
700
|
+
ptr->zh = zh;
|
701
|
+
ptr->path = path;
|
702
|
+
ptr->buffer = buffer;
|
703
|
+
ptr->buflen = buflen;
|
704
|
+
ptr->version = version;
|
705
|
+
|
706
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_set, (void *)ptr);
|
707
|
+
|
708
|
+
rc = ptr->rc;
|
709
|
+
|
710
|
+
error:
|
711
|
+
free(ptr);
|
712
|
+
return rc;
|
713
|
+
}
|
714
|
+
|
715
|
+
|
716
|
+
static VALUE zkrb_gvl_zoo_set2(void *data) {
|
717
|
+
zkrb_zoo_set2_args_t *a = (zkrb_zoo_set2_args_t *)data;
|
718
|
+
a->rc = zoo_set2(a->zh, a->path, a->buffer, a->buflen, a->version, a->stat);
|
719
|
+
return Qnil;
|
720
|
+
}
|
721
|
+
|
722
|
+
// wrapper that calls zoo_set2 via zkrb_gvl_zoo_set2 inside rb_thread_blocking_region
|
723
|
+
int zkrb_call_zoo_set2(zhandle_t *zh, const char *path, const char *buffer, int buflen, int version, struct Stat *stat) {
|
724
|
+
int rc = ZKRB_FAIL;
|
725
|
+
zkrb_zoo_set2_args_t *ptr = malloc(sizeof(zkrb_zoo_set2_args_t));
|
726
|
+
check_mem(ptr);
|
727
|
+
|
728
|
+
ptr->rc = rc;
|
729
|
+
ptr->zh = zh;
|
730
|
+
ptr->path = path;
|
731
|
+
ptr->buffer = buffer;
|
732
|
+
ptr->buflen = buflen;
|
733
|
+
ptr->version = version;
|
734
|
+
ptr->stat = stat;
|
735
|
+
|
736
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_set2, (void *)ptr);
|
737
|
+
|
738
|
+
rc = ptr->rc;
|
739
|
+
|
740
|
+
error:
|
741
|
+
free(ptr);
|
742
|
+
return rc;
|
743
|
+
}
|
744
|
+
|
745
|
+
|
746
|
+
static VALUE zkrb_gvl_zoo_get_children(void *data) {
|
747
|
+
zkrb_zoo_get_children_args_t *a = (zkrb_zoo_get_children_args_t *)data;
|
748
|
+
a->rc = zoo_get_children(a->zh, a->path, a->watch, a->strings);
|
749
|
+
return Qnil;
|
750
|
+
}
|
751
|
+
|
752
|
+
// wrapper that calls zoo_get_children via zkrb_gvl_zoo_get_children inside rb_thread_blocking_region
|
753
|
+
int zkrb_call_zoo_get_children(zhandle_t *zh, const char *path, int watch, struct String_vector *strings) {
|
754
|
+
int rc = ZKRB_FAIL;
|
755
|
+
zkrb_zoo_get_children_args_t *ptr = malloc(sizeof(zkrb_zoo_get_children_args_t));
|
756
|
+
check_mem(ptr);
|
757
|
+
|
758
|
+
ptr->rc = rc;
|
759
|
+
ptr->zh = zh;
|
760
|
+
ptr->path = path;
|
761
|
+
ptr->watch = watch;
|
762
|
+
ptr->strings = strings;
|
763
|
+
|
764
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_get_children, (void *)ptr);
|
765
|
+
|
766
|
+
rc = ptr->rc;
|
767
|
+
|
768
|
+
error:
|
769
|
+
free(ptr);
|
770
|
+
return rc;
|
771
|
+
}
|
772
|
+
|
773
|
+
|
774
|
+
static VALUE zkrb_gvl_zoo_wget_children(void *data) {
|
775
|
+
zkrb_zoo_wget_children_args_t *a = (zkrb_zoo_wget_children_args_t *)data;
|
776
|
+
a->rc = zoo_wget_children(a->zh, a->path, a->watcher, a->watcherCtx, a->strings);
|
777
|
+
return Qnil;
|
778
|
+
}
|
779
|
+
|
780
|
+
// wrapper that calls zoo_wget_children via zkrb_gvl_zoo_wget_children inside rb_thread_blocking_region
|
781
|
+
int zkrb_call_zoo_wget_children(zhandle_t *zh, const char *path, watcher_fn watcher, void* watcherCtx, struct String_vector *strings) {
|
782
|
+
int rc = ZKRB_FAIL;
|
783
|
+
zkrb_zoo_wget_children_args_t *ptr = malloc(sizeof(zkrb_zoo_wget_children_args_t));
|
784
|
+
check_mem(ptr);
|
785
|
+
|
786
|
+
ptr->rc = rc;
|
787
|
+
ptr->zh = zh;
|
788
|
+
ptr->path = path;
|
789
|
+
ptr->watcher = watcher;
|
790
|
+
ptr->watcherCtx = watcherCtx;
|
791
|
+
ptr->strings = strings;
|
792
|
+
|
793
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_wget_children, (void *)ptr);
|
794
|
+
|
795
|
+
rc = ptr->rc;
|
796
|
+
|
797
|
+
error:
|
798
|
+
free(ptr);
|
799
|
+
return rc;
|
800
|
+
}
|
801
|
+
|
802
|
+
|
803
|
+
static VALUE zkrb_gvl_zoo_get_children2(void *data) {
|
804
|
+
zkrb_zoo_get_children2_args_t *a = (zkrb_zoo_get_children2_args_t *)data;
|
805
|
+
a->rc = zoo_get_children2(a->zh, a->path, a->watch, a->strings, a->stat);
|
806
|
+
return Qnil;
|
807
|
+
}
|
808
|
+
|
809
|
+
// wrapper that calls zoo_get_children2 via zkrb_gvl_zoo_get_children2 inside rb_thread_blocking_region
|
810
|
+
int zkrb_call_zoo_get_children2(zhandle_t *zh, const char *path, int watch, struct String_vector *strings, struct Stat *stat) {
|
811
|
+
int rc = ZKRB_FAIL;
|
812
|
+
zkrb_zoo_get_children2_args_t *ptr = malloc(sizeof(zkrb_zoo_get_children2_args_t));
|
813
|
+
check_mem(ptr);
|
814
|
+
|
815
|
+
ptr->rc = rc;
|
816
|
+
ptr->zh = zh;
|
817
|
+
ptr->path = path;
|
818
|
+
ptr->watch = watch;
|
819
|
+
ptr->strings = strings;
|
820
|
+
ptr->stat = stat;
|
821
|
+
|
822
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_get_children2, (void *)ptr);
|
823
|
+
|
824
|
+
rc = ptr->rc;
|
825
|
+
|
826
|
+
error:
|
827
|
+
free(ptr);
|
828
|
+
return rc;
|
829
|
+
}
|
830
|
+
|
831
|
+
|
832
|
+
static VALUE zkrb_gvl_zoo_wget_children2(void *data) {
|
833
|
+
zkrb_zoo_wget_children2_args_t *a = (zkrb_zoo_wget_children2_args_t *)data;
|
834
|
+
a->rc = zoo_wget_children2(a->zh, a->path, a->watcher, a->watcherCtx, a->strings, a->stat);
|
835
|
+
return Qnil;
|
836
|
+
}
|
837
|
+
|
838
|
+
// wrapper that calls zoo_wget_children2 via zkrb_gvl_zoo_wget_children2 inside rb_thread_blocking_region
|
839
|
+
int zkrb_call_zoo_wget_children2(zhandle_t *zh, const char *path, watcher_fn watcher, void* watcherCtx, struct String_vector *strings, struct Stat *stat) {
|
840
|
+
int rc = ZKRB_FAIL;
|
841
|
+
zkrb_zoo_wget_children2_args_t *ptr = malloc(sizeof(zkrb_zoo_wget_children2_args_t));
|
842
|
+
check_mem(ptr);
|
843
|
+
|
844
|
+
ptr->rc = rc;
|
845
|
+
ptr->zh = zh;
|
846
|
+
ptr->path = path;
|
847
|
+
ptr->watcher = watcher;
|
848
|
+
ptr->watcherCtx = watcherCtx;
|
849
|
+
ptr->strings = strings;
|
850
|
+
ptr->stat = stat;
|
851
|
+
|
852
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_wget_children2, (void *)ptr);
|
853
|
+
|
854
|
+
rc = ptr->rc;
|
855
|
+
|
856
|
+
error:
|
857
|
+
free(ptr);
|
858
|
+
return rc;
|
859
|
+
}
|
860
|
+
|
861
|
+
|
862
|
+
static VALUE zkrb_gvl_zoo_get_acl(void *data) {
|
863
|
+
zkrb_zoo_get_acl_args_t *a = (zkrb_zoo_get_acl_args_t *)data;
|
864
|
+
a->rc = zoo_get_acl(a->zh, a->path, a->acl, a->stat);
|
865
|
+
return Qnil;
|
866
|
+
}
|
867
|
+
|
868
|
+
// wrapper that calls zoo_get_acl via zkrb_gvl_zoo_get_acl inside rb_thread_blocking_region
|
869
|
+
int zkrb_call_zoo_get_acl(zhandle_t *zh, const char *path, struct ACL_vector *acl, struct Stat *stat) {
|
870
|
+
int rc = ZKRB_FAIL;
|
871
|
+
zkrb_zoo_get_acl_args_t *ptr = malloc(sizeof(zkrb_zoo_get_acl_args_t));
|
872
|
+
check_mem(ptr);
|
873
|
+
|
874
|
+
ptr->rc = rc;
|
875
|
+
ptr->zh = zh;
|
876
|
+
ptr->path = path;
|
877
|
+
ptr->acl = acl;
|
878
|
+
ptr->stat = stat;
|
879
|
+
|
880
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_get_acl, (void *)ptr);
|
881
|
+
|
882
|
+
rc = ptr->rc;
|
883
|
+
|
884
|
+
error:
|
885
|
+
free(ptr);
|
886
|
+
return rc;
|
887
|
+
}
|
888
|
+
|
889
|
+
|
890
|
+
static VALUE zkrb_gvl_zoo_set_acl(void *data) {
|
891
|
+
zkrb_zoo_set_acl_args_t *a = (zkrb_zoo_set_acl_args_t *)data;
|
892
|
+
a->rc = zoo_set_acl(a->zh, a->path, a->version, a->acl);
|
893
|
+
return Qnil;
|
894
|
+
}
|
895
|
+
|
896
|
+
// wrapper that calls zoo_set_acl via zkrb_gvl_zoo_set_acl inside rb_thread_blocking_region
|
897
|
+
int zkrb_call_zoo_set_acl(zhandle_t *zh, const char *path, int version, const struct ACL_vector *acl) {
|
898
|
+
int rc = ZKRB_FAIL;
|
899
|
+
zkrb_zoo_set_acl_args_t *ptr = malloc(sizeof(zkrb_zoo_set_acl_args_t));
|
900
|
+
check_mem(ptr);
|
901
|
+
|
902
|
+
ptr->rc = rc;
|
903
|
+
ptr->zh = zh;
|
904
|
+
ptr->path = path;
|
905
|
+
ptr->version = version;
|
906
|
+
ptr->acl = acl;
|
907
|
+
|
908
|
+
zkrb_thread_blocking_region(zkrb_gvl_zoo_set_acl, (void *)ptr);
|
909
|
+
|
910
|
+
rc = ptr->rc;
|
911
|
+
|
912
|
+
error:
|
913
|
+
free(ptr);
|
914
|
+
return rc;
|
915
|
+
}
|
916
|
+
|
917
|
+
|