static VALUE method_set_acl(VALUE self, VALUE reqid, VALUE path, VALUE acls, VALUE async, VALUE version) { STANDARD_PREAMBLE(self, zk, reqid, path, async, Qfalse, call_type); struct ACL_vector * aclptr = zkrb_ruby_to_aclvector(acls); int rc=ZOK, invalid_call_type=0; switch (call_type) { #ifdef THREADED case SYNC: rc = zkrb_call_zoo_set_acl(zk->zh, RSTRING_PTR(path), FIX2INT(version), aclptr); break; #endif case ASYNC: rc = zkrb_call_zoo_aset_acl(zk->zh, RSTRING_PTR(path), FIX2INT(version), aclptr, zkrb_void_callback, CTX_ALLOC(zk, reqid)); break; default: invalid_call_type=1; break; } deallocate_ACL_vector(aclptr); free(aclptr); if (invalid_call_type) raise_invalid_call_type_err(call_type); return INT2FIX(rc); }
static VALUE method_set_acl(VALUE self, VALUE reqid, VALUE path, VALUE acls, VALUE async, VALUE version) { VALUE watch = Qfalse; STANDARD_PREAMBLE(self, zk, reqid, path, async, watch, data_ctx, watch_ctx, call_type); struct ACL_vector * aclptr = zkrb_ruby_to_aclvector(acls); int rc; switch (call_type) { case SYNC: rc = zkrb_call_zoo_set_acl(zk->zh, RSTRING_PTR(path), FIX2INT(version), aclptr); break; case ASYNC: rc = zkrb_call_zoo_aset_acl(zk->zh, RSTRING_PTR(path), FIX2INT(version), aclptr, zkrb_void_callback, data_ctx); break; default: /* TODO(wickman) raise proper argument error */ return Qnil; break; } deallocate_ACL_vector(aclptr); free(aclptr); return INT2FIX(rc); }